Solve the no connection puzzle: Difference between revisions

Content added Content deleted
(Added XPL0 example (which now runs on the Raspberry Pi))
Line 1,014: Line 1,014:
2 8 1 7
2 8 1 7
6 4
6 4
</pre>

=={{header|XPL0}}==
<lang XPL0>include c:\cxpl\codes;

int Hole, Max, I;
char Box(8), Str;
def A, B, C, D, E, F, G, H;
[for Hole:= 0 to 7 do Box(Hole):= Hole+1;
Max:= 7;
while abs(Box(D)-Box(A)) < 2 or abs(Box(D)-Box(C)) < 2 or
abs(Box(D)-Box(G)) < 2 or abs(Box(D)-Box(E)) < 2 or
abs(Box(A)-Box(C)) < 2 or abs(Box(C)-Box(G)) < 2 or
abs(Box(G)-Box(E)) < 2 or abs(Box(E)-Box(A)) < 2 or
abs(Box(E)-Box(B)) < 2 or abs(Box(E)-Box(H)) < 2 or
abs(Box(E)-Box(F)) < 2 or abs(Box(B)-Box(D)) < 2 or
abs(Box(D)-Box(H)) < 2 or abs(Box(H)-Box(F)) < 2 or
abs(Box(F)-Box(B)) < 2 do
loop [I:= Box(0); \next permutation
for Hole:= 0 to Max-1 do Box(Hole):= Box(Hole+1);
Box(Max):= I;
if I # Max+1 then [Max:= 7; quit]
else Max:= Max-1];
Str:= "
# #
/|\ /|\
/ | X | \
/ |/ \| \
# - # - # - #
\ |\ /| /
\ | X | /
\|/ \|/
# #
";
Hole:= 0; I:= 0;
repeat if Str(I)=^# then [Str(I):= Box(Hole)+^0; Hole:= Hole+1];
I:= I+1;
until Hole = 8;
Text(0, Str);
]</lang>

{{out}}
<pre>
5 6
/|\ /|\
/ | X | \
/ |/ \| \
7 - 1 - 8 - 2
\ |\ /| /
\ | X | /
\|/ \|/
3 4
</pre>
</pre>