bug-apl
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Bug-apl] Best way to solve my daughter's maths problem


From: enztec
Subject: Re: [Bug-apl] Best way to solve my daughter's maths problem
Date: Thu, 26 Jan 2017 09:29:17 -0700

is   4÷(4-4)   one of the  instances?   giving domain error ?

On Thu, 26 Jan 2017 09:30:09 +0000
Jay Foad <address@hidden> wrote:

> Simpler f and g:
> 
> e←{⍵,⊂f ⍵}
> f←{↑,/⍵ g¨⌽⍵}
> g←{↑,/,⍺∘.h ⍵}
> h←{(⊂'(',⍺),¨'+-×÷',¨⊂(⍵,')')}
> 
> Jay.
> 
> On 25 January 2017 at 10:59, Jay Foad <address@hidden> wrote:
> > How about this, based on enumerating binary trees:
> >
> >       e←{⍵,⊂f ⍵}
> >       f←{↑,/(⊂⍵)g¨⍳≢⍵}
> >       g←{↑,/,(⍵⊃⍺)∘.h ⍵⊃⌽⍺}
> >       h←{(⊂'(',⍺),¨'+-×÷',¨⊂(⍵,')')}
> >       t1←,⊂,'4' ⍝ vec of charvecs representing trees of size 1
> >       t←,⊂t1 ⋄ t←e⍣4⊢t
> >       (t1 t2 t3 t4 t5)←t
> >
> > Now t5 is a list of parenthesised expressions of "size" 5, i.e.
> > containing 5 4s. At this point in Dyalog APL I would do:
> >
> >       ⊃t5/⍨7={11::0 ⋄ ⍎⍵}¨t5 ⍝ 11::0 means return 0 if ⍎ signalled DOMAIN 
> > ERROR
> > (4+((4+(4+4))÷4))
> > (4-((4-(4×4))÷4))
> > (4+(((4+4)+4)÷4))
> > (4+(((4×4)-4)÷4))
> > (((4+(4+4))÷4)+4)
> > (((4×(4+4))-4)÷4)
> > ((((4+4)+4)÷4)+4)
> > ((((4+4)×4)-4)÷4)
> > ((((4×4)-4)÷4)+4)
> >
> > I am sure there is a simple equivalent in GNU APL.
> >
> > For bonus marks I guess you might want to remove from this list any
> > expressions that are equivalent due to + and × being commutative and
> > associative.
> >
> > Jay.
> >
> > On 24 January 2017 at 15:47, Elias Mårtenson <address@hidden> wrote:
> >> My daughter had this maths problem, and quote it from memory:
> >>
> >> Given five 4's, separated by the mathematical functions +, -, × and ÷ form
> >> the number 7. The problem also allowed her to use parentheses.
> >>
> >> I decided to write an APL expression to solve this, and this is what I came
> >> up with:
> >>
> >>     d ← {⍵÷⍺}
> >>     (↑¨ 7 = ⍎¨ v) / v ← {"4 " , ↑,/ {{⍵," 4 "}¨⍵} ⍵}¨ ,↑∘.,/4 ⍴ ⊂'+-×d'
> >>
> >> Now, this program finds two solutions, which is good enough for me. 
> >> However,
> >> my program doesn't find solutions that require parentheses.
> >>
> >> Problem 1: Can anyone simplify my program?
> >> Problem 2: Can anyone come up with a solution that also checks for
> >> parentheses?
> >>
> >> Regards,
> >> Elias
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]