Solve triangle solitaire puzzle: Difference between revisions
Content added Content deleted
m (add punctuation to the task's preamble.) |
(Added Sidef) |
||
Line 1,152: | Line 1,152: | ||
l=false; G.each{|g| l=solve(N,pegs,g); break if l} |
l=false; G.each{|g| l=solve(N,pegs,g); break if l} |
||
puts l ? l : "No solution found"</lang> |
puts l ? l : "No solution found"</lang> |
||
{{out}} |
|||
<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|Sidef}}== |
|||
{{trans|Ruby}} |
|||
<lang ruby>const N = [0,1,1,1,1,1,1,1,1,1,1,1,1,1,1] |
|||
const G = [ |
|||
[ 0, 1, 3],[ 0, 2, 5],[ 1, 3, 6], |
|||
[ 1, 4, 8],[ 2, 4, 7],[ 2, 5, 9], |
|||
[ 3, 4, 5],[ 3, 6,10],[ 3, 7,12], |
|||
[ 4, 7,11],[ 4, 8,13],[ 5, 8,12], |
|||
[ 5, 9,14],[ 6, 7, 8],[ 7, 8, 9], |
|||
[10,11,12],[11,12,13],[12,13,14], |
|||
] |
|||
const format = (5.of {|i| "#{' '*(5-i)}#{'%d '*i}\n" }.join + "\n") |
|||
func solve(n, i, g) is cached { |
|||
i == N.end && return "Solved" |
|||
n[g[1]] == 0 && return nil |
|||
var s = given(n[g[0]]) { |
|||
when(0) { |
|||
n[g[2]] == 0 && return nil |
|||
"#{g[2]} to #{g[0]}\n" |
|||
} |
|||
default { |
|||
n[g[2]] == 1 && return nil |
|||
"#{g[0]} to #{g[2]}\n" |
|||
} |
|||
} |
|||
var a = n.clone |
|||
g.each {|n| a[n] = 1-a[n] } |
|||
var r = '' |
|||
G.each {|g| (r = solve(a, i+1, g)) && break } |
|||
r ? (s + (format % (a...)) + r) : r |
|||
} |
|||
format.printf(N...) |
|||
var r = '' |
|||
G.each {|g| (r = solve(N, 1, g)) && break } |
|||
say (r ? r : "No solution found")</lang> |
|||
{{out}} |
{{out}} |
||
<pre style="height:64ex;overflow:scroll"> |
<pre style="height:64ex;overflow:scroll"> |