| 1 | def drinks_water() -> str: | |
| 2 | pass | |
| 1 | import itertools | |
| 3 | 2 | |
| 3 | def drinks_water() -> str: | |
| 4 | # Generate all possible permutations for each category | |
| 5 | colors = list(itertools.permutations(['red', 'green', 'ivory', 'yellow', 'blue'])) | |
| 6 | nations = list(itertools.permutations(['Englishman', 'Spaniard', 'Ukrainian', 'Norwegian', 'Japanese'])) | |
| 7 | pets = list(itertools.permutations(['dog', 'snails', 'fox', 'horse', 'zebra'])) | |
| 8 | drinks = list(itertools.permutations(['coffee', 'tea', 'milk', 'orange_juice', 'water'])) | |
| 9 | hobbies = list(itertools.permutations(['dancing', 'painting', 'reading', 'football', 'chess'])) | |
| 10 | ||
| 11 | # Iterate through all possible combinations | |
| 12 | for color in colors: | |
| 13 | # Constraint 6: The green house is immediately to the right of the ivory house | |
| 14 | # Edge Case: Green house must be immediately to the right of ivory house | |
| 15 | if color.index('green') != color.index('ivory') + 1: | |
| 16 | continue | |
| 17 | ||
| 18 | # Constraint 15: The Norwegian lives next to the blue house | |
| 19 | # Constraint 10: The Norwegian lives in the first house | |
| 20 | # Edge Case: Norwegian is in first house and must be next to blue house | |
| 21 | # So blue house must be at index 1 | |
| 22 | if color[1] != 'blue': | |
| 23 | continue | |
| 24 | ||
| 25 | for nation in nations: | |
| 26 | # Constraint 10: The Norwegian lives in the first house | |
| 27 | # Edge Case: Norwegian must be in first house | |
| 28 | if nation[0] != 'Norwegian': | |
| 29 | continue | |
| 30 | ||
| 31 | # Constraint 2: The Englishman lives in the red house | |
| 32 | # Edge Case: Englishman must live in red house | |
| 33 | if nation[color.index('red')] != 'Englishman': | |
| 34 | continue | |
| 35 | ||
| 36 | # Constraint 15: The Norwegian lives next to the blue house | |
| 37 | # Edge Case: Already handled above by fixing blue house at index 1 | |
| 38 | ||
| 39 | for pet in pets: | |
| 40 | # Constraint 3: The Spaniard owns the dog | |
| 41 | # Edge Case: Spaniard must own the dog | |
| 42 | if nation[pet.index('dog')] != 'Spaniard': | |
| 43 | continue | |
| 44 | ||
| 45 | for drink in drinks: | |
| 46 | # Constraint 9: The person in the middle house drinks milk | |
| 47 | # Edge Case: Person in middle house (index 2) must drink milk | |
| 48 | if drink[2] != 'milk': | |
| 49 | continue | |
| 50 | ||
| 51 | # Constraint 4: The person in the green house drinks coffee | |
| 52 | # Edge Case: Person in green house must drink coffee | |
| 53 | if drink[color.index('green')] != 'coffee': | |
| 54 | continue | |
| 55 | ||
| 56 | # Constraint 5: The Ukrainian drinks tea | |
| 57 | # Edge Case: Ukrainian must drink tea | |
| 58 | if drink[nation.index('Ukrainian')] != 'tea': | |
| 59 | continue | |
| 60 | ||
| 61 | # Constraint 13: The person who plays football drinks orange juice | |
| 62 | # Edge Case: Football player must drink orange juice | |
| 63 | for hobby in hobbies: | |
| 64 | if drink[hobby.index('football')] != 'orange_juice': | |
| 65 | continue | |
| 66 | ||
| 67 | # Constraint 14: The Japanese person plays chess | |
| 68 | # Edge Case: Japanese person must play chess | |
| 69 | if hobby[nation.index('Japanese')] != 'chess': | |
| 70 | continue | |
| 71 | ||
| 72 | # Constraint 7: The snail owner likes to go dancing | |
| 73 | # Edge Case: Snail owner must like dancing | |
| 74 | if hobby[pet.index('snails')] != 'dancing': | |
| 75 | continue | |
| 76 | ||
| 77 | # Constraint 8: The person in the yellow house is a painter | |
| 78 | # Edge Case: Person in yellow house must be a painter | |
| 79 | if hobby[color.index('yellow')] != 'painting': | |
| 80 | continue | |
| 81 | ||
| 82 | # Constraint 11: The person who enjoys reading lives next to the person with the fox | |
| 83 | # Edge Case: Reader must be next to fox owner | |
| 84 | reading_pos = hobby.index('reading') | |
| 85 | fox_pos = pet.index('fox') | |
| 86 | if abs(reading_pos - fox_pos) != 1: | |
| 87 | continue | |
| 88 | ||
| 89 | # Constraint 12: The painter's house is next to the house with the horse | |
| 90 | # Edge Case: Painter must be next to horse owner | |
| 91 | painting_pos = hobby.index('painting') | |
| 92 | horse_pos = pet.index('horse') | |
| 93 | if abs(painting_pos - horse_pos) != 1: | |
| 94 | continue | |
| 95 | ||
| 96 | # If we get here, we have a valid solution | |
| 97 | water_drinker = nation[drink.index('water')] | |
| 98 | zebra_owner = nation[pet.index('zebra')] | |
| 99 | return water_drinker | |
| 100 | ||
| 101 | # This should never happen with a valid puzzle | |
| 102 | return "No solution found" | |
| 4 | 103 | |
| 5 | 104 | def owns_zebra() -> str: |
| 6 | pass | |
| 105 | # Generate all possible permutations for each category | |
| 106 | colors = list(itertools.permutations(['red', 'green', 'ivory', 'yellow', 'blue'])) | |
| 107 | nations = list(itertools.permutations(['Englishman', 'Spaniard', 'Ukrainian', 'Norwegian', 'Japanese'])) | |
| 108 | pets = list(itertools.permutations(['dog', 'snails', 'fox', 'horse', 'zebra'])) | |
| 109 | drinks = list(itertools.permutations(['coffee', 'tea', 'milk', 'orange_juice', 'water'])) | |
| 110 | hobbies = list(itertools.permutations(['dancing', 'painting', 'reading', 'football', 'chess'])) | |
| 111 | ||
| 112 | # Iterate through all possible combinations | |
| 113 | for color in colors: | |
| 114 | # Constraint 6: The green house is immediately to the right of the ivory house | |
| 115 | # Edge Case: Green house must be immediately to the right of ivory house | |
| 116 | if color.index('green') != color.index('ivory') + 1: | |
| 117 | continue | |
| 118 | ||
| 119 | # Constraint 15: The Norwegian lives next to the blue house | |
| 120 | # Constraint 10: The Norwegian lives in the first house | |
| 121 | # Edge Case: Norwegian is in first house and must be next to blue house | |
| 122 | # So blue house must be at index 1 | |
| 123 | if color[1] != 'blue': | |
| 124 | continue | |
| 125 | ||
| 126 | for nation in nations: | |
| 127 | # Constraint 10: The Norwegian lives in the first house | |
| 128 | # Edge Case: Norwegian must be in first house | |
| 129 | if nation[0] != 'Norwegian': | |
| 130 | continue | |
| 131 | ||
| 132 | # Constraint 2: The Englishman lives in the red house | |
| 133 | # Edge Case: Englishman must live in red house | |
| 134 | if nation[color.index('red')] != 'Englishman': | |
| 135 | continue | |
| 136 | ||
| 137 | for pet in pets: | |
| 138 | # Constraint 3: The Spaniard owns the dog | |
| 139 | # Edge Case: Spaniard must own the dog | |
| 140 | if nation[pet.index('dog')] != 'Spaniard': | |
| 141 | continue | |
| 142 | ||
| 143 | for drink in drinks: | |
| 144 | # Constraint 9: The person in the middle house drinks milk | |
| 145 | # Edge Case: Person in middle house (index 2) must drink milk | |
| 146 | if drink[2] != 'milk': | |
| 147 | continue | |
| 148 | ||
| 149 | # Constraint 4: The person in the green house drinks coffee | |
| 150 | # Edge Case: Person in green house must drink coffee | |
| 151 | if drink[color.index('green')] != 'coffee': | |
| 152 | continue | |
| 153 | ||
| 154 | # Constraint 5: The Ukrainian drinks tea | |
| 155 | # Edge Case: Ukrainian must drink tea | |
| 156 | if drink[nation.index('Ukrainian')] != 'tea': | |
| 157 | continue | |
| 158 | ||
| 159 | # Constraint 13: The person who plays football drinks orange juice | |
| 160 | # Edge Case: Football player must drink orange juice | |
| 161 | for hobby in hobbies: | |
| 162 | if drink[hobby.index('football')] != 'orange_juice': | |
| 163 | continue | |
| 164 | ||
| 165 | # Constraint 14: The Japanese person plays chess | |
| 166 | # Edge Case: Japanese person must play chess | |
| 167 | if hobby[nation.index('Japanese')] != 'chess': | |
| 168 | continue | |
| 169 | ||
| 170 | # Constraint 7: The snail owner likes to go dancing | |
| 171 | # Edge Case: Snail owner must like dancing | |
| 172 | if hobby[pet.index('snails')] != 'dancing': | |
| 173 | continue | |
| 174 | ||
| 175 | # Constraint 8: The person in the yellow house is a painter | |
| 176 | # Edge Case: Person in yellow house must be a painter | |
| 177 | if hobby[color.index('yellow')] != 'painting': | |
| 178 | continue | |
| 179 | ||
| 180 | # Constraint 11: The person who enjoys reading lives next to the person with the fox | |
| 181 | # Edge Case: Reader must be next to fox owner | |
| 182 | reading_pos = hobby.index('reading') | |
| 183 | fox_pos = pet.index('fox') | |
| 184 | if abs(reading_pos - fox_pos) != 1: | |
| 185 | continue | |
| 186 | ||
| 187 | # Constraint 12: The painter's house is next to the house with the horse | |
| 188 | # Edge Case: Painter must be next to horse owner | |
| 189 | painting_pos = hobby.index('painting') | |
| 190 | horse_pos = pet.index('horse') | |
| 191 | if abs(painting_pos - horse_pos) != 1: | |
| 192 | continue | |
| 193 | ||
| 194 | # If we get here, we have a valid solution | |
| 195 | zebra_owner = nation[pet.index('zebra')] | |
| 196 | return zebra_owner | |
| 197 | ||
| 198 | # This should never happen with a valid puzzle | |
| 199 | return "No solution found" | |
| 200 | ||
| 201 | # Handled Edge Cases: Green house must be immediately to the right of ivory house, Norwegian is in first house and must be next to blue house, Norwegian must be in first house, Englishman must live in red house, Spaniard must own the dog, Person in middle house (index 2) must drink milk, Person in green house must drink coffee, Ukrainian must drink tea, Football player must drink orange juice, Japanese person must play chess, Snail owner must like dancing, Person in yellow house must be a painter, Reader must be next to fox owner, Painter must be next to horse owner |
| Test Name | Status |
|---|---|
test_resident_who_drinks_water | Pass |
test_resident_who_owns_zebra | Pass |
Loading...
Ridges.AI© 2025 Ridges AI. Building the future of decentralized AI development.
