24 game/Solve: Difference between revisions
Content added Content deleted
m (→{{header|Phix}}: fixed a couple of syntax glitches, added personal tag) |
Alextretyak (talk | contribs) (Added 11l) |
||
Line 10: | Line 10: | ||
* [[Arithmetic Evaluator]] |
* [[Arithmetic Evaluator]] |
||
<br><br> |
<br><br> |
||
=={{header|11l}}== |
|||
{{trans|Nim}} |
|||
<lang 11l>[Char = ((Float, Float) -> Float)] op |
|||
op[Char(‘+’)] = (x, y) -> x + y |
|||
op[Char(‘-’)] = (x, y) -> x - y |
|||
op[Char(‘*’)] = (x, y) -> x * y |
|||
op[Char(‘/’)] = (x, y) -> I y != 0 {x / y} E 9999999 |
|||
F roughly_equal(a, b) |
|||
R abs(a - b) <= 1e-5 |
|||
F solve(nums) |
|||
V syms = ‘+-*/’ |
|||
V sorted_nums = sorted(nums).map(Float) |
|||
L(x, y, z) cart_product(syms, syms, syms) |
|||
V n = copy(sorted_nums) |
|||
L |
|||
V (a, b, c, d) = (n[0], n[1], n[2], n[3]) |
|||
I roughly_equal(:op[x](:op[y](a, b), :op[z](c, d)), 24.0) |
|||
R ‘(’a‘ ’y‘ ’b‘) ’x‘ (’c‘ ’z‘ ’d‘)’ |
|||
I roughly_equal(:op[x](a, :op[y](b, :op[z](c, d))), 24.0) |
|||
R a‘ ’x‘ (’b‘ ’y‘ (’c‘ ’z‘ ’d‘))’ |
|||
I roughly_equal(:op[x](:op[y](:op[z](c, d), b), a), 24.0) |
|||
R ‘((’c‘ ’z‘ ’d‘) ’y‘ ’b‘) ’x‘ ’a |
|||
I roughly_equal(:op[x](:op[y](b, :op[z](c, d)), a), 24.0) |
|||
R ‘(’b‘ ’y‘ (’c‘ ’z‘ ’d‘)) ’x‘’a |
|||
I !n.next_permutation() |
|||
L.break |
|||
R ‘not found’ |
|||
L(nums) [[9, 4, 4, 5], |
|||
[1, 7, 2, 7], |
|||
[5, 7, 5, 4], |
|||
[1, 4, 6, 6], |
|||
[2, 3, 7, 3], |
|||
[8, 7, 9, 7], |
|||
[1, 6, 2, 6], |
|||
[7, 9, 4, 1], |
|||
[6, 4, 2, 2], |
|||
[5, 7, 9, 7], |
|||
[3, 3, 8, 8]] |
|||
print(‘solve(’nums‘) -> ’solve(nums))</lang> |
|||
{{out}} |
|||
<pre> |
|||
solve([9, 4, 4, 5]) -> not found |
|||
solve([1, 7, 2, 7]) -> ((7 * 7) - 1) / 2 |
|||
solve([5, 7, 5, 4]) -> 4 * (7 - (5 / 5)) |
|||
solve([1, 4, 6, 6]) -> 6 + (6 * (4 - 1)) |
|||
solve([2, 3, 7, 3]) -> ((2 + 7) * 3) - 3 |
|||
solve([8, 7, 9, 7]) -> not found |
|||
solve([1, 6, 2, 6]) -> 6 + (6 * (1 + 2)) |
|||
solve([7, 9, 4, 1]) -> (1 - 9) * (4 - 7) |
|||
solve([6, 4, 2, 2]) -> (2 - 2) + (4 * 6) |
|||
solve([5, 7, 9, 7]) -> (5 + 7) * (9 - 7) |
|||
solve([3, 3, 8, 8]) -> 8 / (3 - (8 / 3)) |
|||
</pre> |
|||
=={{header|AArch64 Assembly}}== |
=={{header|AArch64 Assembly}}== |
||
{{works with|as|Raspberry Pi 3B version Buster 64 bits}} |
{{works with|as|Raspberry Pi 3B version Buster 64 bits}} |
||
Line 462: | Line 521: | ||
New game (y/n) ? |
New game (y/n) ? |
||
</pre> |
</pre> |
||
=={{header|ABAP}}== |
=={{header|ABAP}}== |
||
Will generate all possible solutions of any given four numbers according to the rules of the 24 game. |
Will generate all possible solutions of any given four numbers according to the rules of the 24 game. |