Solve the no connection puzzle: Difference between revisions
Content added Content deleted
Thundergnat (talk | contribs) (→{{header|Perl 6}}: Syntax fix, "0" is true now. (didn't actually affect this particular problem)) |
No edit summary |
||
Line 1,286: | Line 1,286: | ||
</pre> |
</pre> |
||
=={{header|M2000 Interpreter}}== |
|||
<lang M2000 Interpreter> |
|||
Module no_connection_puzzle { |
|||
\\ Holes |
|||
Inventory Connections="A":="CDE","B":="DEF","C":="ADG", "D":="ABCEGH" |
|||
Append Connections, "E":="ABDFGH","F":="HEB", "G":="CDE","H":="DEF" |
|||
Inventory Holes |
|||
For i=0 to 7 : Append Holes, Chr$(65+i):=i : Next i |
|||
CheckValid=lambda Holes, Connections (a$, arr) -> { |
|||
val=Array(arr, Holes(a$)) |
|||
con$=Connections$(a$) |
|||
res=true |
|||
For i=1 to Len(con$) { |
|||
if Abs(Array(Arr, Holes(mid$(con$,i,1)))-val)<2 then res=false: exit |
|||
} |
|||
=res |
|||
} |
|||
a=(1,3,2,5,4,6,7,8) |
|||
h=(,) |
|||
solution=(,) |
|||
done=false |
|||
Print "Waut..." |
|||
P(h, a) |
|||
If done then Disp(solution) |
|||
Sub P(h, a) |
|||
if done then exit sub |
|||
if len(a)<=1 then process(cons(h, a)) : exit sub |
|||
local b=cons(a) |
|||
For i=1 to len(b) { |
|||
b=cons(cdr(b),car(b)) |
|||
P(cons(h,car(b)), cdr(b)) |
|||
if done then exit |
|||
} |
|||
End sub |
|||
Sub Process(a) |
|||
Rem Print a |
|||
hole=each(Holes) |
|||
done=True |
|||
While hole { |
|||
if not CheckValid(Eval$(hole, hole^), a) then done=false : exit |
|||
} |
|||
if done then solution=a |
|||
end sub |
|||
Sub Disp(a) |
|||
Print format$(" {0} {1}", array(a), array(a,1)) |
|||
Print " /|\ /|\" |
|||
Print " / | X | \" |
|||
Print " / |/ \| \" |
|||
Print Format$("{0} - {1} - {2} - {3}", array(a,2),array(a,3), array(a,4), array(a,5)) |
|||
Print " \ |\ /| /" |
|||
Print " \ | X | /" |
|||
Print " \|/ \|/" |
|||
Print Format$(" {0} {1}", array(a,6), array(a,7)) |
|||
End sub |
|||
} |
|||
no_connection_puzzle |
|||
</lang> |
|||
{{out}} |
|||
<pre> |
|||
3 5 |
|||
/|\ /|\ |
|||
/ | X | \ |
|||
/ |/ \| \ |
|||
7 - 1 - 8 - 2 |
|||
\ |\ /| / |
|||
\ | X | / |
|||
\|/ \|/ |
|||
4 6 |
|||
</pre > |
|||
=={{header|Mathematica}}== |
=={{header|Mathematica}}== |
||
This one simply takes all permutations of the pegs and filters out invalid solutions. |
This one simply takes all permutations of the pegs and filters out invalid solutions. |