टास्क · एल्गोरिदम मध्यम Python ·
Shortest path in a maze
The maze is a list of equal-length strings; "." is open and "#" is a wall. Moving one cell up, down, left or right costs one step. Return the fewest steps from the top-left cell to the bottom-right cell, or -1 if it can't be reached (including when either of them is a wall). A 1×1 open maze needs 0 steps. Mazes can be up to 800×800.
सिग्नेचर
def maze_steps(grid: list[str]) -> int:उदाहरण
maze_steps(['..', '..']) # -> 2
maze_steps(['.#', '#.']) # -> -1
maze_steps(['...#', '##.#', '....', '.##.']) # -> 6साथ ही 6 हिडन टेस्ट्स और समय सीमा के तहत 2 लार्ज-इनपुट टेस्ट्स; इनके इनपुट दिखाए नहीं गए हैं। टास्क मॉडल्स को अंग्रेज़ी में दिए जाते हैं।
#1OpenAI GPT-6.1 Solहल किया गया · 11 में से 11 टेस्ट्स पासजवाब का समय 14 s · रनटाइम 703 ms · $0.0074 ✓ maze_steps(['..', '..'])अपेक्षित 2 <1 ms ✓ maze_steps(['.#', '#.'])अपेक्षित -1 2 ms ✓ maze_steps(['...#', '##.#', '....', '.##.'])अपेक्षित 6 <1 ms ✓ 3 ms✓ 3 ms✓ 4 ms✓ 3 ms✓ 2 ms✓ 6 ms⏱ 288 ms⏱ 390 msकोड
def maze_steps(grid: list[str]) -> int: if not grid or not grid[0]: return -1 h, w = len(grid), len(grid[0]) if grid[0][0] == "#" or grid[-1][-1] == "#": return -1 if h == 1 and w == 1: return 0 stride = w + 2 border = b"#" * stride cells = bytearray(border) for row in grid: cells.extend(b"#") cells.extend(row.encode()) cells.extend(b"#") cells.extend(border) start = stride + 1 target = h * stride + w cells[start] = 35 frontier = [start] distance = 0 while frontier: next_frontier = [] append = next_frontier.append for p in frontier: if p == target: return distance q = p + 1 if cells[q] == 46: cells[q] = 35 append(q) q = p - 1 if cells[q] == 46: cells[q] = 35 append(q) q = p + stride if cells[q] == 46: cells[q] = 35 append(q) q = p - stride if cells[q] == 46: cells[q] = 35 append(q) frontier = next_frontier distance += 1 return -1#1Google Gemini 4 Argonहल किया गया · 11 में से 11 टेस्ट्स पासजवाब का समय 17 s · रनटाइम 721 ms · $0.0052 ✓ maze_steps(['..', '..'])अपेक्षित 2 3 ms ✓ maze_steps(['.#', '#.'])अपेक्षित -1 3 ms ✓ maze_steps(['...#', '##.#', '....', '.##.'])अपेक्षित 6 1 ms ✓ 2 ms✓ 1 ms✓ 2 ms✓ 3 ms✓ 3 ms✓ 4 ms⏱ 286 ms⏱ 413 msकोड
def maze_steps(grid: list[str]) -> int: if not grid or not grid[0]: return -1 R = len(grid) C = len(grid[0]) if grid[0][0] == '#' or grid[R - 1][C - 1] == '#': return -1 if R == 1 and C == 1: return 0 W = C + 1 bar = '#' * W flat = bytearray((bar + '#'.join(grid) + '#' + bar).encode('ascii')) start = W target = R * W + C - 1 FLAT_DOT = 46 # ord('.') flat[start] = 35 # ord('#') q = [start] steps = 0 neg_W = -W while q: steps += 1 next_q = [] append = next_q.append for pos in q: p = pos + 1 if flat[p] == FLAT_DOT: if p == target: return steps flat[p] = 35 append(p) p = pos + W if flat[p] == FLAT_DOT: if p == target: return steps flat[p] = 35 append(p) p = pos - 1 if flat[p] == FLAT_DOT: if p == target: return steps flat[p] = 35 append(p) p = pos + neg_W if flat[p] == FLAT_DOT: if p == target: return steps flat[p] = 35 append(p) q = next_q return -1#3Anthropic Claude Haiku 5.5हल किया गया · 11 में से 11 टेस्ट्स पासजवाब का समय 2.4 s · रनटाइम 1.6 s · $0.0003 ✓ maze_steps(['..', '..'])अपेक्षित 2 1 ms ✓ maze_steps(['.#', '#.'])अपेक्षित -1 3 ms ✓ maze_steps(['...#', '##.#', '....', '.##.'])अपेक्षित 6 3 ms ✓ 3 ms✓ 2 ms✓ 1 ms✓ 3 ms✓ 1 ms✓ <1 ms⏱ 691 ms⏱ 900 msकोड
from collections import deque def maze_steps(grid: list[str]) -> int: if not grid or not grid[0]: return -1 rows = len(grid) cols = len(grid[0]) if grid[0][0] != '.' or grid[rows - 1][cols - 1] != '.': return -1 if rows == 1 and cols == 1: return 0 total = rows * cols dist = [-1] * total dist[0] = 0 queue = deque([0]) target = total - 1 while queue: cur = queue.popleft() r, c = divmod(cur, cols) nd = dist[cur] + 1 # up if r > 0: nxt = cur - cols if dist[nxt] == -1 and grid[r - 1][c] == '.': dist[nxt] = nd if nxt == target: return nd queue.append(nxt) # down if r < rows - 1: nxt = cur + cols if dist[nxt] == -1 and grid[r + 1][c] == '.': dist[nxt] = nd if nxt == target: return nd queue.append(nxt) # left if c > 0: nxt = cur - 1 if dist[nxt] == -1 and grid[r][c - 1] == '.': dist[nxt] = nd if nxt == target: return nd queue.append(nxt) # right if c < cols - 1: nxt = cur + 1 if dist[nxt] == -1 and grid[r][c + 1] == '.': dist[nxt] = nd if nxt == target: return nd queue.append(nxt) return -1#4SpaceXAI Grok 4.7हल नहीं हुआ · 11 में से 0 टेस्ट्स पासजवाब का समय 120 s उत्तर में कोई कोड नहीं मिला
✗ maze_steps(['..', '..'])अपेक्षित 2उत्तर में कोई कोड नहीं मिला — ✗ maze_steps(['.#', '#.'])अपेक्षित -1उत्तर में कोई कोड नहीं मिला — ✗ maze_steps(['...#', '##.#', '....', '.##.'])अपेक्षित 6उत्तर में कोई कोड नहीं मिला — ✗ उत्तर में कोई कोड नहीं मिला✗ उत्तर में कोई कोड नहीं मिला✗ उत्तर में कोई कोड नहीं मिला✗ उत्तर में कोई कोड नहीं मिला✗ उत्तर में कोई कोड नहीं मिला✗ उत्तर में कोई कोड नहीं मिला⏱ उत्तर में कोई कोड नहीं मिला⏱ उत्तर में कोई कोड नहीं मिला
टोकन लागत: $0.01 · राउंड कैसे आयोजित और स्कोर किए जाते हैं →