Solve triangle solitaire puzzle: Difference between revisions
Content added Content deleted
(→{{header|Ruby}}: change output format, each -> for (scope)) |
|||
Line 210: | Line 210: | ||
=={{header|Ruby}}== |
=={{header|Ruby}}== |
||
<lang ruby> |
<lang ruby># Solitaire Like Puzzle Solver |
||
# Solitaire Like Puzzle Solver |
|||
// |
|||
// Nigel Galloway: October 18th., 2014 |
|||
N = [0,1,1,1,1,1,1,1,1,1,1,1,1,1,1] |
N = [0,1,1,1,1,1,1,1,1,1,1,1,1,1,1] |
||
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]] |
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]] |
||
FORMAT = (1..5).map{|i| " "*(5-i) + "%d "*i + "\n"}.join + "\n" |
|||
def b2s n |
def b2s n |
||
FORMAT % n |
|||
" #{n[0]}\n #{n[1]} #{n[2]}\n #{n[3]} #{n[4]} #{n[5]}\n #{n[6]} #{n[7]} #{n[8]} #{n[9]}\n#{n[10]} #{n[11]} #{n[12]} #{n[13]} #{n[14]}\n\n" |
|||
end |
end |
||
def solve n,i,g |
def solve n,i,g |
||
return "Solved" if i == 14 |
return "Solved" if i == 14 |
||
return |
return if n[g[1]]==0 |
||
if n[g[0]] == 0 |
if n[g[0]] == 0 |
||
return |
return if n[g[2]]==0 |
||
s = |
s = "#{g[2]} to #{g[0]}\n" |
||
else |
else |
||
return |
return if n[g[2]]==1 |
||
s = "#{g[0]} to #{g[2]}\n" |
s = "#{g[0]} to #{g[2]}\n" |
||
end |
end |
||
a = n.clone |
a = n.clone |
||
g.each{|n| a[n] = 1 - a[n]} |
|||
for g in G |
|||
⚫ | |||
break if l = solve(a,i+1,g) |
|||
end |
|||
⚫ | |||
end |
end |
||
puts b2s |
puts b2s(N) |
||
l=false; G.each{|g| l=solve(N,1,g); break if l} |
|||
for g in G |
|||
⚫ | |||
break if l = solve(N,1,g) |
|||
</lang> |
|||
end |
|||
⚫ | |||
{{out}} |
{{out}} |
||
<pre style="height:64ex;overflow:scroll"> |
|||
<pre> |
|||
0 |
0 |
||
1 1 |
1 1 |
||
1 1 1 |
1 1 1 |
||
1 1 1 1 |
1 1 1 1 |
||
1 1 1 1 1 |
1 1 1 1 1 |
||
3 to 0 |
3 to 0 |
||
1 |
1 |
||
0 1 |
0 1 |
||
0 1 1 |
0 1 1 |
||
1 1 1 1 |
1 1 1 1 |
||
1 1 1 1 1 |
1 1 1 1 1 |
||
8 to 1 |
8 to 1 |
||
1 |
1 |
||
1 1 |
1 1 |
||
0 0 1 |
0 0 1 |
||
1 1 0 1 |
1 1 0 1 |
||
1 1 1 1 1 |
1 1 1 1 1 |
||
10 to 3 |
10 to 3 |
||
1 |
1 |
||
1 1 |
1 1 |
||
1 0 1 |
1 0 1 |
||
0 1 0 1 |
0 1 0 1 |
||
0 1 1 1 1 |
0 1 1 1 1 |
||
1 to 6 |
1 to 6 |
||
1 |
1 |
||
0 1 |
0 1 |
||
0 0 1 |
0 0 1 |
||
1 1 0 1 |
1 1 0 1 |
||
0 1 1 1 1 |
0 1 1 1 1 |
||
11 to 4 |
11 to 4 |
||
1 |
1 |
||
0 1 |
0 1 |
||
0 1 1 |
0 1 1 |
||
1 0 0 1 |
1 0 0 1 |
||
0 0 1 1 1 |
0 0 1 1 1 |
||
2 to 7 |
2 to 7 |
||
1 |
1 |
||
0 0 |
0 0 |
||
0 0 1 |
0 0 1 |
||
1 1 0 1 |
1 1 0 1 |
||
0 0 1 1 1 |
0 0 1 1 1 |
||
9 to 2 |
9 to 2 |
||
1 |
1 |
||
0 1 |
0 1 |
||
0 0 0 |
0 0 0 |
||
1 1 0 0 |
1 1 0 0 |
||
0 0 1 1 1 |
0 0 1 1 1 |
||
0 to 5 |
0 to 5 |
||
0 |
0 |
||
0 0 |
0 0 |
||
0 0 1 |
0 0 1 |
||
1 1 0 0 |
1 1 0 0 |
||
0 0 1 1 1 |
0 0 1 1 1 |
||
6 to 8 |
6 to 8 |
||
0 |
0 |
||
0 0 |
0 0 |
||
0 0 1 |
0 0 1 |
||
0 0 1 0 |
0 0 1 0 |
||
0 0 1 1 1 |
0 0 1 1 1 |
||
13 to 11 |
13 to 11 |
||
0 |
0 |
||
0 0 |
0 0 |
||
0 0 1 |
0 0 1 |
||
0 0 1 0 |
0 0 1 0 |
||
0 1 0 0 1 |
0 1 0 0 1 |
||
5 to 12 |
5 to 12 |
||
0 |
0 |
||
0 0 |
0 0 |
||
0 0 0 |
0 0 0 |
||
0 0 0 0 |
0 0 0 0 |
||
0 1 1 0 1 |
0 1 1 0 1 |
||
11 to 13 |
11 to 13 |
||
0 |
0 |
||
0 0 |
0 0 |
||
0 0 0 |
0 0 0 |
||
0 0 0 0 |
0 0 0 0 |
||
0 0 0 1 1 |
0 0 0 1 1 |
||
14 to 12 |
14 to 12 |
||
0 |
0 |
||
0 0 |
0 0 |
||
0 0 0 |
0 0 0 |
||
0 0 0 0 |
0 0 0 0 |
||
0 0 1 0 0 |
0 0 1 0 0 |
||
Solved |
Solved |