| 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 | try: | |
| 16 | if color.index('ivory') + 1 != color.index('green'): | |
| 17 | continue | |
| 18 | except ValueError: | |
| 19 | continue | |
| 20 | ||
| 21 | for nation in nations: | |
| 22 | # Constraint 10: The Norwegian lives in the first house | |
| 23 | # Edge Case: Norwegian must be in the first house (index 0) | |
| 24 | if nation[0] != 'Norwegian': | |
| 25 | continue | |
| 26 | ||
| 27 | # Constraint 15: The Norwegian lives next to the blue house | |
| 28 | # Edge Case: Norwegian in first house must have blue house at index 1 | |
| 29 | if color[1] != 'blue': | |
| 30 | continue | |
| 31 | ||
| 32 | # Constraint 2: The Englishman lives in the red house | |
| 33 | # Edge Case: Englishman and red house must have same index | |
| 34 | try: | |
| 35 | if nation.index('Englishman') != color.index('red'): | |
| 36 | continue | |
| 37 | except ValueError: | |
| 38 | continue | |
| 39 | ||
| 40 | for pet in pets: | |
| 41 | # Constraint 3: The Spaniard owns the dog | |
| 42 | # Edge Case: Spaniard and dog must have same index | |
| 43 | try: | |
| 44 | if nation.index('Spaniard') != pet.index('dog'): | |
| 45 | continue | |
| 46 | except ValueError: | |
| 47 | continue | |
| 48 | ||
| 49 | for drink in drinks: | |
| 50 | # Constraint 9: The person in the middle house drinks milk | |
| 51 | # Edge Case: Middle house (index 2) must have milk | |
| 52 | if drink[2] != 'milk': | |
| 53 | continue | |
| 54 | ||
| 55 | # Constraint 4: The person in the green house drinks coffee | |
| 56 | # Edge Case: Green house and coffee must have same index | |
| 57 | try: | |
| 58 | if drink[color.index('green')] != 'coffee': | |
| 59 | continue | |
| 60 | except ValueError: | |
| 61 | continue | |
| 62 | ||
| 63 | # Constraint 5: The Ukrainian drinks tea | |
| 64 | # Edge Case: Ukrainian and tea must have same index | |
| 65 | try: | |
| 66 | if nation.index('Ukrainian') != drink.index('tea'): | |
| 67 | continue | |
| 68 | except ValueError: | |
| 69 | continue | |
| 70 | ||
| 71 | for hobby in hobbies: | |
| 72 | # Constraint 7: The snail owner likes to go dancing | |
| 73 | # Edge Case: Snails and dancing must have same index | |
| 74 | try: | |
| 75 | if pet.index('snails') != hobby.index('dancing'): | |
| 76 | continue | |
| 77 | except ValueError: | |
| 78 | continue | |
| 79 | ||
| 80 | # Constraint 8: The person in the yellow house is a painter | |
| 81 | # Edge Case: Yellow house and painting must have same index | |
| 82 | try: | |
| 83 | if color.index('yellow') != hobby.index('painting'): | |
| 84 | continue | |
| 85 | except ValueError: | |
| 86 | continue | |
| 87 | ||
| 88 | # Constraint 11: The person who enjoys reading lives next to the person with the fox | |
| 89 | # Edge Case: Reading and fox must be in adjacent houses | |
| 90 | try: | |
| 91 | reading_index = hobby.index('reading') | |
| 92 | fox_index = pet.index('fox') | |
| 93 | if abs(reading_index - fox_index) != 1: | |
| 94 | continue | |
| 95 | except ValueError: | |
| 96 | continue | |
| 97 | ||
| 98 | # Constraint 12: The painter's house is next to the house with the horse | |
| 99 | # Edge Case: Painting and horse must be in adjacent houses | |
| 100 | try: | |
| 101 | painting_index = hobby.index('painting') | |
| 102 | horse_index = pet.index('horse') | |
| 103 | if abs(painting_index - horse_index) != 1: | |
| 104 | continue | |
| 105 | except ValueError: | |
| 106 | continue | |
| 107 | ||
| 108 | # Constraint 13: The person who plays football drinks orange juice | |
| 109 | # Edge Case: Football and orange juice must have same index | |
| 110 | try: | |
| 111 | if hobby.index('football') != drink.index('orange_juice'): | |
| 112 | continue | |
| 113 | except ValueError: | |
| 114 | continue | |
| 115 | ||
| 116 | # Constraint 14: The Japanese person plays chess | |
| 117 | # Edge Case: Japanese and chess must have same index | |
| 118 | try: | |
| 119 | if nation.index('Japanese') != hobby.index('chess'): | |
| 120 | continue | |
| 121 | except ValueError: | |
| 122 | continue | |
| 123 | ||
| 124 | # If all constraints are satisfied, we found the solution | |
| 125 | try: | |
| 126 | water_index = drink.index('water') | |
| 127 | return nation[water_index] | |
| 128 | except ValueError: | |
| 129 | continue | |
| 130 | ||
| 131 | # This should never be reached if the puzzle has a solution | |
| 132 | return "" | |
| 4 | 133 | |
| 5 | 134 | def owns_zebra() -> str: |
| 6 | pass | |
| 135 | # Generate all possible permutations for each category | |
| 136 | colors = list(itertools.permutations(['red', 'green', 'ivory', 'yellow', 'blue'])) | |
| 137 | nations = list(itertools.permutations(['Englishman', 'Spaniard', 'Ukrainian', 'Norwegian', 'Japanese'])) | |
| 138 | pets = list(itertools.permutations(['dog', 'snails', 'fox', 'horse', 'zebra'])) | |
| 139 | drinks = list(itertools.permutations(['coffee', 'tea', 'milk', 'orange_juice', 'water'])) | |
| 140 | hobbies = list(itertools.permutations(['dancing', 'painting', 'reading', 'football', 'chess'])) | |
| 141 | ||
| 142 | # Iterate through all possible combinations | |
| 143 | for color in colors: | |
| 144 | # Constraint 6: The green house is immediately to the right of the ivory house | |
| 145 | # Edge Case: Green house must be immediately to the right of ivory house | |
| 146 | try: | |
| 147 | if color.index('ivory') + 1 != color.index('green'): | |
| 148 | continue | |
| 149 | except ValueError: | |
| 150 | continue | |
| 151 | ||
| 152 | for nation in nations: | |
| 153 | # Constraint 10: The Norwegian lives in the first house | |
| 154 | # Edge Case: Norwegian must be in the first house (index 0) | |
| 155 | if nation[0] != 'Norwegian': | |
| 156 | continue | |
| 157 | ||
| 158 | # Constraint 15: The Norwegian lives next to the blue house | |
| 159 | # Edge Case: Norwegian in first house must have blue house at index 1 | |
| 160 | if color[1] != 'blue': | |
| 161 | continue | |
| 162 | ||
| 163 | # Constraint 2: The Englishman lives in the red house | |
| 164 | # Edge Case: Englishman and red house must have same index | |
| 165 | try: | |
| 166 | if nation.index('Englishman') != color.index('red'): | |
| 167 | continue | |
| 168 | except ValueError: | |
| 169 | continue | |
| 170 | ||
| 171 | for pet in pets: | |
| 172 | # Constraint 3: The Spaniard owns the dog | |
| 173 | # Edge Case: Spaniard and dog must have same index | |
| 174 | try: | |
| 175 | if nation.index('Spaniard') != pet.index('dog'): | |
| 176 | continue | |
| 177 | except ValueError: | |
| 178 | continue | |
| 179 | ||
| 180 | for drink in drinks: | |
| 181 | # Constraint 9: The person in the middle house drinks milk | |
| 182 | # Edge Case: Middle house (index 2) must have milk | |
| 183 | if drink[2] != 'milk': | |
| 184 | continue | |
| 185 | ||
| 186 | # Constraint 4: The person in the green house drinks coffee | |
| 187 | # Edge Case: Green house and coffee must have same index | |
| 188 | try: | |
| 189 | if drink[color.index('green')] != 'coffee': | |
| 190 | continue | |
| 191 | except ValueError: | |
| 192 | continue | |
| 193 | ||
| 194 | # Constraint 5: The Ukrainian drinks tea | |
| 195 | # Edge Case: Ukrainian and tea must have same index | |
| 196 | try: | |
| 197 | if nation.index('Ukrainian') != drink.index('tea'): | |
| 198 | continue | |
| 199 | except ValueError: | |
| 200 | continue | |
| 201 | ||
| 202 | for hobby in hobbies: | |
| 203 | # Constraint 7: The snail owner likes to go dancing | |
| 204 | # Edge Case: Snails and dancing must have same index | |
| 205 | try: | |
| 206 | if pet.index('snails') != hobby.index('dancing'): | |
| 207 | continue | |
| 208 | except ValueError: | |
| 209 | continue | |
| 210 | ||
| 211 | # Constraint 8: The person in the yellow house is a painter | |
| 212 | # Edge Case: Yellow house and painting must have same index | |
| 213 | try: | |
| 214 | if color.index('yellow') != hobby.index('painting'): | |
| 215 | continue | |
| 216 | except ValueError: | |
| 217 | continue | |
| 218 | ||
| 219 | # Constraint 11: The person who enjoys reading lives next to the person with the fox | |
| 220 | # Edge Case: Reading and fox must be in adjacent houses | |
| 221 | try: | |
| 222 | reading_index = hobby.index('reading') | |
| 223 | fox_index = pet.index('fox') | |
| 224 | if abs(reading_index - fox_index) != 1: | |
| 225 | continue | |
| 226 | except ValueError: | |
| 227 | continue | |
| 228 | ||
| 229 | # Constraint 12: The painter's house is next to the house with the horse | |
| 230 | # Edge Case: Painting and horse must be in adjacent houses | |
| 231 | try: | |
| 232 | painting_index = hobby.index('painting') | |
| 233 | horse_index = pet.index('horse') | |
| 234 | if abs(painting_index - horse_index) != 1: | |
| 235 | continue | |
| 236 | except ValueError: | |
| 237 | continue | |
| 238 | ||
| 239 | # Constraint 13: The person who plays football drinks orange juice | |
| 240 | # Edge Case: Football and orange juice must have same index | |
| 241 | try: | |
| 242 | if hobby.index('football') != drink.index('orange_juice'): | |
| 243 | continue | |
| 244 | except ValueError: | |
| 245 | continue | |
| 246 | ||
| 247 | # Constraint 14: The Japanese person plays chess | |
| 248 | # Edge Case: Japanese and chess must have same index | |
| 249 | try: | |
| 250 | if nation.index('Japanese') != hobby.index('chess'): | |
| 251 | continue | |
| 252 | except ValueError: | |
| 253 | continue | |
| 254 | ||
| 255 | # If all constraints are satisfied, we found the solution | |
| 256 | try: | |
| 257 | zebra_index = pet.index('zebra') | |
| 258 | return nation[zebra_index] | |
| 259 | except ValueError: | |
| 260 | continue | |
| 261 | ||
| 262 | # This should never be reached if the puzzle has a solution | |
| 263 | return "" | |
| 264 | ||
| 265 | # Handled Edge Cases: All constraints from the puzzle are checked as edge cases |
| 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.
