På rosettacode.org finns bla Dinesman's multiple dwelling problem bestående av 5 hyresgäster. Det ser ut som om Haskell och Python är bra på detta (relativt enkel kod). Jag har utökat till 12 hyresgäster:
[code]
import Data.List (permutations)
main :: IO ()
main =
print
[ ( "Alrich on " <> show a,
"Baker on " <> show b,
"Cooper on " <> show c,
"Davidson on " <> show d,
"Elliot on " <> show e,
"Fletcher on " <> show f,
"Miller on " <> show m,
"Olson on " <> show o,
"Smith on " <> show s,
"Tammer on " <> show t,
"Wilson on " <> show w,
"Young on " <> show y
)
| [a, b, c, d, e, f, m, o, s, t, w, y] <- permutations [1 .. 12],
abs (a - t) > 5,
abs (s - f) > 3,
abs (w - t) > 6,
abs (c - f) > 2,
abs (d - y) < 3,
a /= 6,
b /= 5,
c /= 1,
f /= 1,
f /= 5,
t /= 3,
w /= 4,
d /= 9,
e /= 8,
d < e,
a < d,
d < e,
o < t,
t < w,
t < s,
m > c,
y > e
]
[ /code ]
Frågan är: vilken ordning på villkoren ger snabbast kod?
Med Rpi4 får jag nästan 5 min med ghc -O2 namn.hs