2025-06-11 20:16:52 -04:00
|
|
|
names$[] = [ "Baker" "Cooper" "Fletcher" "Miller" "Smith" ]
|
2024-03-06 22:25:12 -08:00
|
|
|
BAKER = 1
|
|
|
|
|
COOPER = 2
|
|
|
|
|
FLETCHER = 3
|
|
|
|
|
MILLER = 4
|
|
|
|
|
SMITH = 5
|
|
|
|
|
#
|
2025-06-11 20:16:52 -04:00
|
|
|
floors[] = [ 1 2 3 4 5 ]
|
|
|
|
|
#
|
|
|
|
|
proc check .
|
2024-03-06 22:25:12 -08:00
|
|
|
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]
|
|
|
|
|
.
|
|
|
|
|
.
|
|
|
|
|
.
|
|
|
|
|
.
|
2025-06-11 20:16:52 -04:00
|
|
|
proc permute k .
|
2026-02-01 16:33:20 -08:00
|
|
|
if k = 0
|
|
|
|
|
check
|
|
|
|
|
return
|
|
|
|
|
.
|
|
|
|
|
for i = 1 to k
|
2025-06-11 20:16:52 -04:00
|
|
|
swap floors[i] floors[k]
|
2026-02-01 16:33:20 -08:00
|
|
|
permute k - 1
|
2025-06-11 20:16:52 -04:00
|
|
|
swap floors[k] floors[i]
|
|
|
|
|
.
|
|
|
|
|
.
|
2026-02-01 16:33:20 -08:00
|
|
|
permute len floors[]
|