24 game/Solve: Difference between revisions

Content added Content deleted
(→‎{{header|Picat}}: Added tags + removed space)
Line 6,214: Line 6,214:


=={{header|Picat}}==
=={{header|Picat}}==
{{trans|Raku}}
<lang Picat>import util.
<lang Picat>import util.


Line 6,257: Line 6,258:
R := replace(R, F,T.to_string())
R := replace(R, F,T.to_string())
end,
end,
Res = R.
Res = R.</lang>

</lang>

Test:


{{out}}
<pre>
<pre>
Picat> main
Picat> main
Line 6,290: Line 6,288:
(8 * 6) / (7 - 5)
(8 * 6) / (7 - 5)
8 * (6 / (7 - 5))
8 * (6 / (7 - 5))
len = 24
len = 24</pre>

</pre>


Another approach:
Another approach:
Line 6,303: Line 6,299:
_ = findall(Expr, solve_num2(Nums,Target)),
_ = findall(Expr, solve_num2(Nums,Target)),
nl.
nl.



solve_num2(Nums, Target) =>
solve_num2(Nums, Target) =>
Line 6,342: Line 6,337:
check(A,X,B,Y,C,Z,D,Target,Expr) =>
check(A,X,B,Y,C,Z,D,Target,Expr) =>
Expr = [A,X,"(","(",B,Y,C,")", Z,D,")"].to_string2(),
Expr = [A,X,"(","(",B,Y,C,")", Z,D,")"].to_string2(),
Target =:= Expr.eval().
Target =:= Expr.eval().</lang>
</lang>


{{out}}
Test:
<pre>> main

<pre>
> main
6*(5+(7-8)) = 24
6*(5+(7-8)) = 24
6*(7+(5-8)) = 24
6*(7+(5-8)) = 24
Line 6,366: Line 6,358:
8/((7-5)/6) = 24
8/((7-5)/6) = 24
(6*8)/(7-5) = 24
(6*8)/(7-5) = 24
(8*6)/(7-5) = 24
(8*6)/(7-5) = 24</pre>

</pre>


=={{header|PicoLisp}}==
=={{header|PicoLisp}}==