Use integer division to compute which room it is. All tests pass.
Chris Pressey
1 year, 3 days ago
187 | 187 | room = self.rooms[self.roomCoords((x, y))] |
188 | 188 | roomX = x % self.roomsize |
189 | 189 | roomY = y % self.roomsize |
190 | if DEBUG: | |
191 | sys.stdout.write('XY {}: room {}, roomXY {}\n'.format( | |
192 | (x, y), self.roomCoords((x, y)), (roomX, roomY) | |
193 | )) | |
190 | 194 | return room[roomX, roomY] |
191 | 195 | |
192 | 196 | def __init__(self, room, io_system): |
218 | 222 | |
219 | 223 | def roomCoords(self, v): |
220 | 224 | (x, y) = v |
221 | return (int(x / self.roomsize), int(y / self.roomsize)) | |
225 | return (x // self.roomsize, y // self.roomsize) | |
222 | 226 | |
223 | 227 | def advanceIP(self): |
224 | 228 | newIP = addvec(self.ip, self.dir) |
248 | 252 | def step(self): |
249 | 253 | command = self[self.ip] |
250 | 254 | if DEBUG: |
251 | sys.stderr.write('({}) @ {}\n'.format(command, self.ip)) | |
255 | sys.stdout.write('({}) @ {}\n'.format(command, self.ip)) | |
252 | 256 | ccwrot = { |
253 | 257 | self.LEFT: self.DOWN, |
254 | 258 | self.RIGHT: self.UP, |