Solve triangle solitaire puzzle: Difference between revisions
Content added Content deleted
(Updated D entry) |
(→{{header|Ruby}}: Added zkl) |
||
Line 995: | Line 995: | ||
{{out}} |
{{out}} |
||
<pre style="height:64ex;overflow:scroll"> |
<pre style="height:64ex;overflow:scroll"> |
||
0 |
|||
1 1 |
|||
1 1 1 |
|||
1 1 1 1 |
|||
1 1 1 1 1 |
|||
3 to 0 |
|||
1 |
|||
0 1 |
|||
0 1 1 |
|||
1 1 1 1 |
|||
1 1 1 1 1 |
|||
8 to 1 |
|||
1 |
|||
1 1 |
|||
0 0 1 |
|||
1 1 0 1 |
|||
1 1 1 1 1 |
|||
10 to 3 |
|||
1 |
|||
1 1 |
|||
1 0 1 |
|||
0 1 0 1 |
|||
0 1 1 1 1 |
|||
1 to 6 |
|||
1 |
|||
0 1 |
|||
0 0 1 |
|||
1 1 0 1 |
|||
0 1 1 1 1 |
|||
11 to 4 |
|||
1 |
|||
0 1 |
|||
0 1 1 |
|||
1 0 0 1 |
|||
0 0 1 1 1 |
|||
2 to 7 |
|||
1 |
|||
0 0 |
|||
0 0 1 |
|||
1 1 0 1 |
|||
0 0 1 1 1 |
|||
9 to 2 |
|||
1 |
|||
0 1 |
|||
0 0 0 |
|||
1 1 0 0 |
|||
0 0 1 1 1 |
|||
0 to 5 |
|||
0 |
|||
0 0 |
|||
0 0 1 |
|||
1 1 0 0 |
|||
0 0 1 1 1 |
|||
6 to 8 |
|||
0 |
|||
0 0 |
|||
0 0 1 |
|||
0 0 1 0 |
|||
0 0 1 1 1 |
|||
13 to 11 |
|||
0 |
|||
0 0 |
|||
0 0 1 |
|||
0 0 1 0 |
|||
0 1 0 0 1 |
|||
5 to 12 |
|||
0 |
|||
0 0 |
|||
0 0 0 |
|||
0 0 0 0 |
|||
0 1 1 0 1 |
|||
11 to 13 |
|||
0 |
|||
0 0 |
|||
0 0 0 |
|||
0 0 0 0 |
|||
0 0 0 1 1 |
|||
14 to 12 |
|||
0 |
|||
0 0 |
|||
0 0 0 |
|||
0 0 0 0 |
|||
0 0 1 0 0 |
|||
Solved |
|||
</pre> |
|||
=={{header|zkl}}== |
|||
{{trans|D}} |
|||
{{Trans|Ruby}} |
|||
<lang zkl>var N=T(0,1,1,1,1,1,1,1,1,1,1,1,1,1,1); |
|||
var G=T( T(0,1, 3), T(0,2, 5), T(1,3, 6), T( 1, 4, 8), T( 2, 4, 7), T( 2, 5, 9), |
|||
T(3,4, 5), T(3,6,10), T(3,7,12), T( 4, 7,11), T( 4, 8,13), T( 5, 8,12), |
|||
T(5,9,14), T(6,7, 8), T(7,8, 9), T(10,11,12), T(11,12,13), T(12,13,14)); |
|||
fcn b2s(n){ |
|||
var fmt=[1..5].pump(String,fcn(i){ String(" "*(5 - i),"%d "*i,"\n") }); |
|||
fmt.fmt(n.xplode()) |
|||
} |
|||
fcn solve(n,i,g){ // --> False|String |
|||
if (i==N.len() - 1) return("\nSolved"); |
|||
if (n[g[1]]==0) return(False); |
|||
reg s; |
|||
if (n[g[0]]==0){ |
|||
if(n[g[2]]==0) return(False); |
|||
s="\n%d to %d\n".fmt(g[2],g[0]); |
|||
} else { |
|||
if(n[g[2]]==1) return(False); |
|||
s="\n%d to %d\n".fmt(g[0],g[2]); |
|||
} |
|||
a:=n.copy(); |
|||
foreach gi in (g){ a[gi]=1 - a[gi]; } |
|||
reg l; // auto sets to Void |
|||
foreach gi in (G){ if(l=solve(a,i + 1,gi)) break; } |
|||
l and String(s,b2s(a),l) |
|||
} |
|||
b2s(N).print(); |
|||
reg l; |
|||
foreach g in (G){ if(l=solve(N,1,g)) break; } |
|||
println(l and l or "No solution found.");</lang> |
|||
{{out}} |
|||
<pre style="height:32ex;overflow:scroll"> |
|||
0 |
0 |
||
1 1 |
1 1 |