RosettaCodeData/Task/Dinesmans-multiple-dwelling-problem/Ceylon/dinesmans-multiple-dwelling-problem.ceylon
2018-08-17 15:15:24 +01:00

24 lines
662 B
Ceylon

shared void run() {
function notAdjacent(Integer a, Integer b) => (a - b).magnitude >= 2;
function allDifferent(Integer* ints) => ints.distinct.size == ints.size;
value solutions = [
for (baker in 1..4)
for (cooper in 2..5)
for (fletcher in 2..4)
for (miller in 2..5)
for (smith in 1..5)
if (miller > cooper &&
notAdjacent(smith, fletcher) &&
notAdjacent(fletcher, cooper) &&
allDifferent(baker, cooper, fletcher, miller, smith))
"baker lives on ``baker``
cooper lives on ``cooper``
fletcher lives on ``fletcher``
miller lives on ``miller``
smith lives on ``smith``"
];
print(solutions.first else "No solution!");
}