SEND + MORE = MONEY: Difference between revisions
Content deleted Content added
Added Vala |
No edit summary |
||
Line 407: | Line 407: | ||
Took 1.149804ms. |
Took 1.149804ms. |
||
</pre> |
</pre> |
||
=={{header|J}}== |
|||
'''Tacit Solution''' |
|||
<syntaxhighlight lang="j">SEND=. 10 #. 0 1 2 3&{ |
|||
MORE=. 10 #. 4 5 6 1&{ |
|||
MONEY=. 10 #. 4 5 2 1 7&{ |
|||
M=. 4&{ |
|||
entry=. 0&{:: |
|||
try=. 1&{:: |
|||
sample=. (10 ?~ 8:) ; 1 + try NB. counting tries to avoid a premature convergence |
|||
good=. (not=. -.) (o=.@:) (0 = M) (and=. *.) (SEND + MORE) = MONEY |
|||
answer=. (": o SEND , ' + ' , ": o MORE , ' = ' , ": o MONEY) o entry |
|||
tries=. ', random tries ' , ": o try |
|||
while=. ^: (^:_) |
|||
solve=. (answer , tries) o (sample while (not o good o entry)) o ( 0 ;~ i.) o 8: f.</syntaxhighlight> |
|||
Example use: |
|||
<syntaxhighlight lang="j"> solve '' |
|||
9567 + 1085 = 10652, random tries 248241 |
|||
solve '' |
|||
9567 + 1085 = 10652, random tries 246504 |
|||
solve '' |
|||
9567 + 1085 = 10652, random tries 3291556</syntaxhighlight> |
|||
The code is tacit and fixed (in other words, it is point-free): |
|||
<syntaxhighlight lang="j"> _80 [\ (5!:5)<'solve' |
|||
((":@:(10 (#.) 0 1 2 3&({ )) , ' + ' , ":@:(10 (#.) 4 5 6 1&({ )) , ' = ' , ":@: |
|||
(10 (#.) 4 5 2 1 7&({ )))@:(0&({::)) , ', random tries ' , ":@:(1&({::)))@:(((10 |
|||
?~ 8:) ; 1 + 1&({::))^:(-.@:(-.@:(0 = 4&({ )) *. ((10 (#.) 0 1 2 3&({ )) + 10 ( |
|||
#.) 4 5 6 1&({ )) = 10 (#.) 4 5 2 1 7&({ ))@:(0&({::)))^:_)@:(0 ;~ i.)@:8:</syntaxhighlight> |
|||
=={{header|jq}}== |
=={{header|jq}}== |