Search All of the Math Forum:
Views expressed in these public forums are not endorsed by
NCTM or The Math Forum.


Math Forum
»
Discussions
»
sci.math.*
»
sci.math
Notice: We are no longer accepting new posts, but the forums will continue to be readable.
Topic:
make 100 by using 1, 7, 7, 7, 7
Replies:
41
Last Post:
Nov 15, 2007 6:13 PM




Re: make 100 by using 1, 7, 7, 7, 7
Posted:
Nov 15, 2007 6:13 PM


In article <fher2p$j0d$03$1@news.tonline.com>, Thomas Nordhaus <thnord2002@yahoo.de> wrote:
> Robert Israel schrieb: > > Kira Yamato <kirakun@earthlink.net> writes: > > > >> On 20071113 13:22:13 0500, Robert Israel > >> <israel@math.MyUniversitysInitials.ca> said: > >> > >>> "Benjamin A. Bartsch" <benjamin.a.bartsch@gmail.com> writes: > >>> > >>>> dangerousgam...@gmail.com schrieb: > >>>>> So, using only +, , x, /, and parentheses, and ONLY these numbers: > >>>>> > >>>>> 1, 7, 7, 7, 7 > >>>>> > >>>>> how can you make 100? Is there more than one solution? > >>>> > (1/7+7)*(7+7) > >>>> > >>>> Benjamin > >>> Yes, and that's the only solution (up to commutativity). > >> I'm very curious how you concluded this. Was it by a program that > >> tests through all possible combinations? > >> > >> I tried to write a program too, but I stop when I couldn't quickly find > >> a way to list out all possible trees with 7 leaves. > > > > Here's my search program, written in Maple. > > > > trees:= proc(S) > > option remember; > > local oper,SL,L,res,ret,V,W,v,w,R,r; > > if nops(S) = 1 then {[op(S),op(S)]} > > else > > res:= {}; ret:= {}; > > for oper in [`+`,``,`/`,`*`] do > > for SL in combinat[powerset]({$1..nops(S)}) do > > if nops(SL) > 0 and nops(SL) < nops(S) then > > L:= sort([seq(S[j],j=SL)]); > > R:= sort([seq(S[j],j=({$1..nops(S)} minus SL))]); > > V:= trees(L); > > W:= trees(R); > > for v in V do > > for w in W do > > if ((oper = `+`) or (oper = `*`)) and (v[1] > w[1]) then next > > end if; > > try > > r:= oper(v[1],w[1]); > > catch: next; > > end try; > > res:= res union {r}; > > ret:= ret union {[r, [v[2],oper,w[2]]]}; > > end do > > end do > > end if > > end do > > end do; > > ret > > end if > > end proc; > > > >> select(t > (t[1]=100), T); > > > > {[100, [[[1, /, 7], +, 7], *, [7, +, 7]]]} > > Would the program be any simpler if you encoded RPN, that is > +,,/,E(nter)? The solution then is: > > 1E7/7+7E7+*
Try it! I have not coded them up, but it looks to me that generating the infix strings and generating the postfix strings is equal work.
A neat exercise is to write a code that produces the equivalent infix expression from the postfix or prefix expression.
 Michael Press



