Courses/CS 460/Fall 2005/Homework/Josh Cain/Nov 5

From CSWiki

Jump to: navigation, search

LET + THERE + BE = LIGHT

local
    proc {Light ?Solution}
        L E T H R B I G
        Vars = [L E T H R B I G]
    in
        Solution = [L E T]#[T H E R E]#[B E]#[L I G H T]
        Vars ::: 0#9
        {FD.distinct Vars}
        L \=: 0
        T \=: 0
        B \=: 0
                              100*L + 10*E + T
        +  10000*T + 1000*H + 100*E + 10*R + E
        +                             10*B + E
        =: 10000*L + 1000*I + 100*G + 10*H + T
        {FD.distribute ff Vars}
    end
in
    {Browse {SearchAll Light}}
end

Rotating Digits

local
    proc {Rotating ?Solution}
        A B C D E F
        Vars = [A B C D E F]
    in
        Solution = Vars
        Vars ::: 1#9
        {FD.distinct Vars}
        {MakeInt Vars} * 3 =: {MakeInt [B C D E F A]}
        {MakeInt Vars} * 2 =: {MakeInt [C D E F A B]}
        {MakeInt Vars} * 6 =: {MakeInt [D E F A B C]}
        {MakeInt Vars} * 4 =: {MakeInt [E F A B C D]}
        {MakeInt Vars} * 5 =: {MakeInt [F A B C D E]}
        {FD.distribute ff Vars}
    end
    proc {MakeInt List ?I}
        I = {FoldL List fun {$ I J} {FD.plus {FD.times 10 I} J} end 0}
    end
in
    {Browse {SearchAll Rotating}}
end

Divisible Digits

local
    proc {Divisible ?Solution}
        D1 D2 D3 D4 D5 D6 D7 D8 D9 D10
        Vars = [D1 D2 D3 D4 D5 D6 D7 D8 D9 D10]
    in
        Solution = Vars
        Vars ::: 0#9
        {FD.distinct Vars}
        {MyMod List 9} := 0
        {MyMod List 8} := 0
        {MyMod List 7} := 0
        {MyMod List 6} := 0
        {MyMod List 5} := 0
        {MyMod List 4} := 0
        {MyMod List 3} := 0
        {MyMod List 2} := 0
        {FD.distribute ff Vars}
    end
    proc {MyMod List N ?M}
        D1 D2 D3 D4 D5 D6 D7 D8 D9 D10
    in
        List = [D1 D2 D3 D4 D5 D6 D7 D8 D9 D10]
        M = (D1*1000000000 + D2*100000000 + D3*10000000 + D4*1000000 + D5*100000 + D6*10000 + D7*1000 + D8*100 + D9*10 + D10) FD.modI N
    end
in
    {Browse {SearchAll Divisible}}
end