Solve triangle solitaire puzzle: Difference between revisions
Content added Content deleted
(+ D entry) |
(Does replacing "return false unless" with "return if" work? Didn't for me. I'll steal the FORMAT though!!) |
||
Line 366: | Line 366: | ||
=={{header|Ruby}}== |
=={{header|Ruby}}== |
||
<lang ruby># Solitaire Like Puzzle Solver |
<lang ruby># 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] |
PEGS = (N = [0,1,1,1,1,1,1,1,1,1,1,1,1,1,1]).inject(:+) |
||
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]] |
||
⚫ | |||
⚫ | |||
def b2s n |
|||
⚫ | |||
end |
|||
def solve n,i,g |
def solve n,i,g |
||
return "Solved" if i == |
return "Solved" if i == PEGS |
||
return |
return false unless n[g[1]]==1 |
||
if n[g[0]] == 0 |
if n[g[0]] == 0 |
||
return |
return false unless n[g[2]]==1 |
||
s = "#{g[2]} to #{g[0]}\n" |
s = "#{g[2]} to #{g[0]}\n" |
||
else |
else |
||
return |
return false unless n[g[2]]==0 |
||
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]} |
||
l=false; G.each{|g| l=solve(a,i+1,g); break if l} |
|||
⚫ | |||
for g in G |
|||
break if l = solve(a,i+1,g) |
|||
end |
|||
⚫ | |||
end |
|||
puts b2s(N) |
|||
for g in G |
|||
break if l = solve(N,1,g) |
|||
end |
end |
||
⚫ | |||
⚫ | |||
l=false; G.each{|g| l=solve(N,1,g); break if l} |
|||
⚫ | |||
</lang> |
|||
{{out}} |
{{out}} |
||
<pre style="height:64ex;overflow:scroll"> |
<pre style="height:64ex;overflow:scroll"> |