Jump to content

Solve triangle solitaire puzzle: Difference between revisions

Algol 68 - tweak and add count of backtracks for starting at each position
(Added Algol 68)
(Algol 68 - tweak and add count of backtracks for starting at each position)
Line 220:
MODE MOVE = STRUCT( INT from, to );
 
INT empty start = 1; # initial removed peg #
INT number of pegs = 15;
INT empty start := 1;
 
[ number of pegs ]BOOL board;
Line 278:
[ number of pegs ]CHAR pegs;
FOR i TO number of pegs DO
pegs[ i ] := IF board[ i ] THEN TOHEX i ELSE " ." FI
OD;
println( " " + pegs[ 1 ] );
Line 287:
END; # draw board #
 
PROC solved = BOOL: s size = number of pegs - 2;
BEGIN
INT count := 0;
FOR b pos TO number of pegs DO
IF board[ b pos ] THEN count +:= 1 FI
OD;
count = 1 # solved if just one peg left #
END; # solved #
 
PROC solve = VOID:
Line 324 ⟶ 317:
FI; # solve #
 
 
init board;
FOR start peg TO number of pegs DO
init solution;
empty start := start peg;
solve;
init board;
draw board init solution;
solve;
print( ( "Starting with peg ", TOHEX empty start, " removed", newline, newline ) );
FOR pos TO s sizeIF DOempty start = 1 THEN
SOLUTION solution = solutions[ posinit ]board;
INT peg, over, land; draw board
FI;
split solution( peg, over, land, solution );
board[print( ( "Starting with peg ", TOHEX empty start, " ]removed" :=) FALSE);
board[IF overempty ]start := FALSE;1 THEN
board[ land ] := TRUEprint( ( newline, newline ) );
draw board; FOR pos TO s size DO
SOLUTION solution = solutions[ pos ];
print( ( "Peg ", TOHEX peg, " jumped over ", TOHEX over, " to land on ", TOHEX land ) );
print( ( newline, newline ) ) INT peg, over, land;
split solution( peg, over, land, solution );
OD;
board[ peg ] := FALSE;
print( ( whole( backtracks, 0 ), " backtracks were required", newline ) )
board[ over ] := FALSE;
board[ land ] := TRUE;
draw board;
print( ( "Peg ", TOHEX peg, " jumped over ", TOHEX over, " to land on ", TOHEX land ) );
print( ( newline, newline ) )
OD
FI;
print( ( whole( backtracks, -8 ), " backtracks were required", newline ) )
OD
END
</syntaxhighlight>
{{out}}
<pre style="height:80ex;overflow:scroll">
.
 
 
2 3
4 5 6
Line 355 ⟶ 356:
 
1
. 3
. 5 6
7 8 9 A
B C D E F
Line 362 ⟶ 363:
 
1
. 3
4 . .
7 8 9 A
B C D E F
Peg 6 jumped over 5 to land on 4
 
.
 
. .
 
4 . 6
7 8 9 A
B C D E F
Peg 1 jumped over 3 to land on 6
 
.
 
2 .
. . 6
. 8 9 A
B C D E F
Peg 7 jumped over 4 to land on 2
 
.
 
2 .
. 5 6
. . 9 A
B . D E F
Peg C jumped over 8 to land on 5
 
.
 
2 .
. 5 6
. . 9 A
B C . . F
Peg E jumped over D to land on C
 
.
 
2 .
. 5 .
. . . A
B C D . F
Peg 6 jumped over 9 to land on D
 
.
 
. .
 
. . .
 
. . 9 A
B C D . F
Peg 2 jumped over 5 to land on 9
 
.
 
. .
 
. . .
 
. . 9 A
B . . E F
Peg C jumped over D to land on E
 
.
 
. .
 
. . 6
. . 9 9.
B . . E E.
Peg F jumped over A to land on 6
 
.
 
. .
 
. . .
 
. . . .
 
B . D E .
Peg 6 jumped over 9 to land on D
 
.
 
. .
 
. . .
 
. . . .
 
B C . . .
Peg E jumped over D to land on C
 
.
 
. .
 
. . .
 
. . . .
 
. . D . D.
Peg B jumped over C to land on D
 
814 backtracks were required
Starting with peg 2 removed 22221 backtracks were required
Starting with peg 3 removed 12274 backtracks were required
Starting with peg 4 removed 15782 backtracks were required
Starting with peg 5 removed 1948 backtracks were required
Starting with peg 6 removed 71565 backtracks were required
Starting with peg 7 removed 814 backtracks were required
Starting with peg 8 removed 98940 backtracks were required
Starting with peg 9 removed 5747 backtracks were required
Starting with peg A removed 814 backtracks were required
Starting with peg B removed 22221 backtracks were required
Starting with peg C removed 19097 backtracks were required
Starting with peg D removed 814 backtracks were required
Starting with peg E removed 18563 backtracks were required
Starting with peg F removed 10240 backtracks were required
</pre>
 
3,048

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.