Solve triangle solitaire puzzle: Difference between revisions

Line 3,281:
Same as Kotlin entry.
</pre>
 
=={{header|Yabasic}}==
{{trans|Phix}}
<lang Yabasic>// Rosetta Code problem: http://rosettacode.org/wiki/Solve_triangle_solitare_puzzle
// by Galileo, 04/2022
 
m$ = "-11,-9,2,11,9,-2"
 
sub solve$(board$, left, m$)
local moves$(1), nmov, i, j, mj, over, tgt, res$
nmov = token(m$, moves$(), ",")
if left = 1 return ""
for i = 1 to len(board$)
if mid$(board$, i, 1) = "1" then
for j = 1 to nmov
mj = val(moves$(j)) : over = i + mj : tgt = i + 2 * mj
if tgt >= 1 and tgt <= len(board$) and mid$(board$, tgt, 1) = "0" and mid$(board$, over, 1) = "1" then
mid$(board$, i, 1) = "0" : mid$(board$, over, 1) = "0" : mid$(board$, tgt, 1) = "1"
res$ = solve$(board$, left - 1, m$)
if len(res$) != 4 return board$+res$
mid$(board$, i, 1) = "1" : mid$(board$, over, 1) = "1" : mid$(board$, tgt, 1) = "0"
end if
next
end if
next
return "oops"
end sub
start$ = "\n\n 0 \n 1 1 \n 1 1 1 \n 1 1 1 1 \n1 1 1 1 1"
print start$, solve$(start$, 14, m$)
</lang>
{{out}}
<pre>
 
0
1 1
1 1 1
1 1 1 1
1 1 1 1 1
 
1
0 1
0 1 1
1 1 1 1
1 1 1 1 1
 
1
0 1
1 0 0
1 1 1 1
1 1 1 1 1
 
0
0 0
1 0 1
1 1 1 1
1 1 1 1 1
 
0
1 0
0 0 1
0 1 1 1
1 1 1 1 1
 
0
1 1
0 0 0
0 1 1 0
1 1 1 1 1
 
0
1 1
0 1 0
0 0 1 0
1 0 1 1 1
 
0
1 1
0 1 1
0 0 0 0
1 0 0 1 1
 
0
0 1
0 0 1
0 0 1 0
1 0 0 1 1
 
0
0 0
0 0 0
0 0 1 1
1 0 0 1 1
 
0
0 0
0 0 1
0 0 1 0
1 0 0 1 0
 
0
0 0
0 0 0
0 0 0 0
1 0 1 1 0
 
0
0 0
0 0 0
0 0 0 0
1 1 0 0 0
 
0
0 0
0 0 0
0 0 0 0
0 0 1 0 0
---Program done, press RETURN---</pre>
 
=={{header|zkl}}==
672

edits