På en modern processor skulla jag gissa att man löser det där på ~1 sekund. Nu kör du iofs på en rpi4 men 5 minuter är fortfarande väldigt lång tid. Mängden arbete som krävs för att testa villkoren i varje loop är inte speciellt stort. Visst kan en optimal sortering av villkoren göra att du sparar några % körtid men i ditt fall ligger antagligen den stora kostnaden i ineffektiv generering av permutationer i haskell.
Gör en snabb överslagsräkning hur mycket jobb du faktiskt måste göra och hur snabb din hårdvara är. Även om man gissar 5-10x fel så märker man om koden verkar vara 100-1000x långsammare än den borde, vilket inte är helt ovanligt idag.
Du har knappast nåt underlag för 1 sek?
För 5 hyresgäster som de har på rosettacode tar det på RPi4:
cpp 12 ms
haskell 53 ms
go 52 ms
python3 146 ms
Tiden för python3 fördubblas med 7 hyresgäster men det är betydligt värre från 11 till 12...
Troligen spelar cache stor roll- en Intel/AMD har ju betydligt mer än RPi4.
Enbart enkla likheter som villkor går snabbast på 5 hyresgäster men inte på 11 eller 12
Nu har jag jämfört 10 och 12 hyresgäster i Haskell (enbart enkla olikheter):
10 hyresgäster 1,7 sek
12 hyresgäster 228 sek