RosettaCodeData/Task/Dinesmans-multiple-dwelling-problem/EasyLang/dinesmans-multiple-dwelling-problem.easy
2026-02-01 16:33:20 -08:00

30 lines
690 B
Text

names$[] = [ "Baker" "Cooper" "Fletcher" "Miller" "Smith" ]
BAKER = 1
COOPER = 2
FLETCHER = 3
MILLER = 4
SMITH = 5
#
floors[] = [ 1 2 3 4 5 ]
#
proc check .
if floors[BAKER] <> 5 and floors[COOPER] <> 1 and floors[FLETCHER] <> 1 and floors[FLETCHER] <> 5
if floors[MILLER] > floors[COOPER] and abs (floors[SMITH] - floors[FLETCHER]) <> 1 and abs (floors[FLETCHER] - floors[COOPER]) <> 1
for i to 5
print names$[i] & " lives on floor " & floors[i]
.
.
.
.
proc permute k .
if k = 0
check
return
.
for i = 1 to k
swap floors[i] floors[k]
permute k - 1
swap floors[k] floors[i]
.
.
permute len floors[]