I thought briefly about doing this but it didn't gel in my mind as
quickly
as the substitution method I used. I quite like how this turned out!
I realized after posting my versions that my version of problem5 could
be even more succinct code-wise:
function problem5
local tResults
repeat with i = 0 to 3^8
local tScheme, tSum
put empty into tSum
put format("%08s", baseConvert(i, 10, 3)) & "0" into tScheme
repeat with j = 1 to 9
put j after tSum
put item (char j of tScheme + 1) of ",+,-" after tSum
end repeat
if value(tSum) is 100 then
put tSum & return after tResults
end if
end repeat
return tResults
end problem5
Although it is perhaps a little more opaque.
It's an interesting problem - the 'enumerate all permutations and then
evaluate' approach (which I think is essential what both your's and mine
are) certainly works in this smaller case as there are only 3^8
permutations.
Generally though I suspect some element of dynamic programming (i.e.
caching the value of subsequences) and recursion would be more tractable
if the number of digits was greater.
--
Mark Waddingham ~ m...@livecode.com ~ http://www.livecode.com/
LiveCode: Everyone can create apps
_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode