Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
127
Task/Zebra-puzzle/AppleScript/zebra-puzzle-1.applescript
Normal file
127
Task/Zebra-puzzle/AppleScript/zebra-puzzle-1.applescript
Normal file
|
|
@ -0,0 +1,127 @@
|
|||
on zebraPuzzle()
|
||||
-- From statement 10, the Norwegian lives in the first house,
|
||||
-- so from statement 15, the blue house must be the second one.
|
||||
-- From these and statements 5, 6, and 9, the green and white houses can only be the 4th & 5th,
|
||||
-- and the Englishman's red house (statement 2) must be the middle one, where (9) they drink
|
||||
-- milk. This only leaves the first house to claim the yellow colour and the Dunhill smokers
|
||||
-- (statement 8), which means the second house must have the the horse (statement 12).
|
||||
-- Initialise the house data accordingly.
|
||||
set mv to missing value
|
||||
set streetTemplate to {¬
|
||||
{resident:"Norwegian", colour:"yellow", pet:mv, drink:mv, smoke:"Dunhill"}, ¬
|
||||
{resident:mv, colour:"blue", pet:"horse", drink:mv, smoke:mv}, ¬
|
||||
{resident:"Englishman", colour:"red", pet:mv, drink:"milk", smoke:mv}, ¬
|
||||
{resident:mv, colour:"green", pet:mv, drink:"coffee", smoke:mv}, ¬
|
||||
{resident:mv, colour:"white", pet:mv, drink:mv, smoke:mv} ¬
|
||||
}
|
||||
|
||||
-- Test all permutations of the remaining values.
|
||||
set solutions to {}
|
||||
set drinkPermutations to {{"beer", "water"}, {"water", "beer"}}
|
||||
set residentPermutations to {{"Swede", "Dane", "German"}, {"Swede", "German", "Dane"}, ¬
|
||||
{"Dane", "German", "Swede"}, {"Dane", "Swede", "German"}, ¬
|
||||
{"German", "Swede", "Dane"}, {"German", "Dane", "Swede"}}
|
||||
set petPermutations to {{"birds", "cats", "ZEBRA"}, {"birds", "ZEBRA", "cats"}, ¬
|
||||
{"cats", "ZEBRA", "birds"}, {"cats", "birds", "ZEBRA"}, ¬
|
||||
{"ZEBRA", "birds", "cats"}, {"ZEBRA", "cats", "birds"}}
|
||||
set smokePermutations to {{"Pall Mall", "Blend", "Blue Master"}, {"Pall Mall", "Blue Master", "Blend"}, ¬
|
||||
{"Blend", "Blue Master", "Pall Mall"}, {"Blend", "Pall Mall", "Blue Master"}, ¬
|
||||
{"Blue Master", "Pall Mall", "Blend"}, {"Blue Master", "Blend", "Pall Mall"}}
|
||||
repeat with residentPerm in residentPermutations
|
||||
-- Properties associated with resident.
|
||||
copy streetTemplate to sTemplate2
|
||||
set {r, OK} to {0, true}
|
||||
repeat with h in {2, 4, 5} -- House numbers with unknown residents.
|
||||
set thisHouse to sTemplate2's item h
|
||||
set r to r + 1
|
||||
set thisResident to residentPerm's item r
|
||||
if (thisResident is "Swede") then
|
||||
if (thisHouse's pet is not mv) then
|
||||
set OK to false
|
||||
exit repeat
|
||||
end if
|
||||
set thisHouse's pet to "dog"
|
||||
else if (thisResident is "Dane") then
|
||||
if (thisHouse's drink is not mv) then
|
||||
set OK to false
|
||||
exit repeat
|
||||
end if
|
||||
set thisHouse's drink to "tea"
|
||||
else
|
||||
set thisHouse's smoke to "Prince"
|
||||
end if
|
||||
set thisHouse's resident to thisResident
|
||||
end repeat
|
||||
-- Properties associated with cigarette brand.
|
||||
if (OK) then
|
||||
repeat with smokePerm in smokePermutations
|
||||
-- Fit in this permutation of smokes.
|
||||
copy sTemplate2 to sTemplate3
|
||||
set s to 0
|
||||
repeat with thisHouse in sTemplate3
|
||||
if (thisHouse's smoke is mv) then
|
||||
set s to s + 1
|
||||
set thisHouse's smoke to smokePerm's item s
|
||||
end if
|
||||
end repeat
|
||||
repeat with drinkPerm in drinkPermutations
|
||||
-- Try to fit this permutation of drinks.
|
||||
copy sTemplate3 to sTemplate4
|
||||
set {d, OK} to {0, true}
|
||||
repeat with h from 1 to 5
|
||||
set thisHouse to sTemplate4's item h
|
||||
if (thisHouse's drink is mv) then
|
||||
set d to d + 1
|
||||
set thisDrink to drinkPerm's item d
|
||||
if (((thisDrink is "beer") and (thisHouse's smoke is not "Blue Master")) or ¬
|
||||
((thisDrink is "water") and not ¬
|
||||
(((h > 1) and (sTemplate4's item (h - 1)'s smoke is "Blend")) or ¬
|
||||
((h < 5) and (sTemplate4's item (h + 1)'s smoke is "Blend"))))) then
|
||||
set OK to false
|
||||
exit repeat
|
||||
end if
|
||||
set thisHouse's drink to thisDrink
|
||||
end if
|
||||
end repeat
|
||||
if (OK) then
|
||||
repeat with petPerm in petPermutations
|
||||
-- Try to fit this permutation of pets.
|
||||
copy sTemplate4 to sTemplate5
|
||||
set {p, OK} to {0, true}
|
||||
repeat with h from 1 to 5
|
||||
set thisHouse to sTemplate5's item h
|
||||
if (thisHouse's pet is mv) then
|
||||
set p to p + 1
|
||||
set thisPet to petPerm's item p
|
||||
if ((thisPet is "birds") and (thisHouse's smoke is not "Pall Mall")) or ¬
|
||||
((thisPet is "cats") and not ¬
|
||||
(((h > 1) and (sTemplate5's item (h - 1)'s smoke is "Blend")) or ¬
|
||||
((h < 5) and (sTemplate5's item (h + 1)'s smoke is "Blend")))) then
|
||||
set OK to false
|
||||
exit repeat
|
||||
end if
|
||||
set thisHouse's pet to thisPet
|
||||
end if
|
||||
end repeat
|
||||
if (OK) then set end of solutions to sTemplate5
|
||||
end repeat
|
||||
end if
|
||||
end repeat
|
||||
end repeat
|
||||
end if
|
||||
end repeat
|
||||
|
||||
set solutionCount to (count solutions)
|
||||
set owners to {}
|
||||
repeat with thisSolution in solutions
|
||||
repeat with thisHouse in thisSolution
|
||||
if (thisHouse's pet is "zebra") then
|
||||
set owners's end to thisHouse's resident
|
||||
exit repeat
|
||||
end if
|
||||
end repeat
|
||||
end repeat
|
||||
return {zebraOwners:owners, numberOfSolutions:solutionCount, solutions:solutions}
|
||||
end zebraPuzzle
|
||||
|
||||
zebraPuzzle()
|
||||
1
Task/Zebra-puzzle/AppleScript/zebra-puzzle-2.applescript
Normal file
1
Task/Zebra-puzzle/AppleScript/zebra-puzzle-2.applescript
Normal file
|
|
@ -0,0 +1 @@
|
|||
{zebraOwners:{"German"}, numberOfSolutions:1, solutions:{{{resident:"Norwegian", colour:"yellow", pet:"cats", drink:"water", smoke:"Dunhill"}, {resident:"Dane", colour:"blue", pet:"horse", drink:"tea", smoke:"Blend"}, {resident:"Englishman", colour:"red", pet:"birds", drink:"milk", smoke:"Pall Mall"}, {resident:"German", colour:"green", pet:"ZEBRA", drink:"coffee", smoke:"Prince"}, {resident:"Swede", colour:"white", pet:"dog", drink:"beer", smoke:"Blue Master"}}}}
|
||||
Loading…
Add table
Add a link
Reference in a new issue