โจทย์ · อัลกอริทึม ง่าย Python ·
Valid Sudoku
A partially filled 9×9 Sudoku board is given as 9 strings of 9 characters, each a digit 1–9 or "." for an empty cell. Return True if no row, no column and no 3×3 box contains the same digit twice. The board doesn't have to be solvable.
โครงสร้างฟังก์ชัน
def valid_sudoku(board: list[str]) -> bool:ตัวอย่าง
valid_sudoku(['53..7....', '6..195...', '.98....6.', '8...6...3', '4..8.3..1', '7...2...6', '.6....28.', '...419..5', '....8..79']) # -> True
valid_sudoku(['83..7....', '6..195...', '.98....6.', '8...6...3', '4..8.3..1', '7...2...6', '.6....28.', '...419..5', '....8..79']) # -> Falseพร้อม 6 การทดสอบแบบซ่อน และ 0 การทดสอบชุดข้อมูลขนาดใหญ่ ภายใต้เวลาจำกัด โดยไม่แสดงข้อมูลนำเข้า โจทย์ที่ส่งให้โมเดลเป็นภาษาอังกฤษ
อันดับ #1DeepSeek V4 Pro 0423แก้ผ่าน · ผ่าน 8 จาก 8 การทดสอบตอบใน 5.7 วินาที · เวลาประมวลผล 6 มิลลิวินาที · $0.0006 ✓ valid_sudoku(['53..7....', '6..195...', '.98....6.', '8...6...3', '4..8.3..1', '7...2...6', '.6....28.', '...419..5', '....8..79'])ค่าที่คาดหวัง True <1 มิลลิวินาที ✓ valid_sudoku(['83..7....', '6..195...', '.98....6.', '8...6...3', '4..8.3..1', '7...2...6', '.6....28.', '...419..5', '....8..79'])ค่าที่คาดหวัง False <1 มิลลิวินาที ✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ 2 มิลลิวินาทีโค้ด
def valid_sudoku(board: list[str]) -> bool: # Check rows for row in board: seen = 0 for ch in row: if ch == '.': continue d = int(ch) mask = 1 << d if seen & mask: return False seen |= mask # Check columns for c in range(9): seen = 0 for r in range(9): ch = board[r][c] if ch == '.': continue d = int(ch) mask = 1 << d if seen & mask: return False seen |= mask # Check 3x3 boxes for box_r in range(0, 9, 3): for box_c in range(0, 9, 3): seen = 0 for r in range(box_r, box_r + 3): for c in range(box_c, box_c + 3): ch = board[r][c] if ch == '.': continue d = int(ch) mask = 1 << d if seen & mask: return False seen |= mask return Trueอันดับ #1OpenAI GPT-6 Lunaแก้ผ่าน · ผ่าน 8 จาก 8 การทดสอบตอบใน 1.8 วินาที · เวลาประมวลผล 8 มิลลิวินาที · $0.0001 ✓ valid_sudoku(['53..7....', '6..195...', '.98....6.', '8...6...3', '4..8.3..1', '7...2...6', '.6....28.', '...419..5', '....8..79'])ค่าที่คาดหวัง True <1 มิลลิวินาที ✓ valid_sudoku(['83..7....', '6..195...', '.98....6.', '8...6...3', '4..8.3..1', '7...2...6', '.6....28.', '...419..5', '....8..79'])ค่าที่คาดหวัง False <1 มิลลิวินาที ✓ 1 มิลลิวินาที✓ 2 มิลลิวินาที✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ <1 มิลลิวินาทีโค้ด
def valid_sudoku(board: list[str]) -> bool: rows = [0] * 9 cols = [0] * 9 boxes = [0] * 9 for r, line in enumerate(board): for c, ch in enumerate(line): if ch == ".": continue bit = 1 << (ord(ch) - ord("1")) box = (r // 3) * 3 + c // 3 if rows[r] & bit or cols[c] & bit or boxes[box] & bit: return False rows[r] |= bit cols[c] |= bit boxes[box] |= bit return Trueอันดับ #1MiniMax M3.1 Flashแก้ผ่าน · ผ่าน 8 จาก 8 การทดสอบตอบใน 805 มิลลิวินาที · เวลาประมวลผล 8 มิลลิวินาที · $0.0001 ✓ valid_sudoku(['53..7....', '6..195...', '.98....6.', '8...6...3', '4..8.3..1', '7...2...6', '.6....28.', '...419..5', '....8..79'])ค่าที่คาดหวัง True <1 มิลลิวินาที ✓ valid_sudoku(['83..7....', '6..195...', '.98....6.', '8...6...3', '4..8.3..1', '7...2...6', '.6....28.', '...419..5', '....8..79'])ค่าที่คาดหวัง False <1 มิลลิวินาที ✓ 2 มิลลิวินาที✓ 1 มิลลิวินาที✓ 1 มิลลิวินาที✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ <1 มิลลิวินาทีโค้ด
def valid_sudoku(board: list[str]) -> bool: rows = [0] * 9 cols = [0] * 9 boxes = [0] * 9 for r, row in enumerate(board): for c, ch in enumerate(row): if ch == ".": continue bit = 1 << (ord(ch) - ord("1")) b = (r // 3) * 3 + c // 3 if (rows[r] | cols[c] | boxes[b]) & bit: return False rows[r] |= bit cols[c] |= bit boxes[b] |= bit return Trueอันดับ #1Anthropic Claude Opus 5.5แก้ผ่าน · ผ่าน 8 จาก 8 การทดสอบตอบใน 2.7 วินาที · เวลาประมวลผล 8 มิลลิวินาที · $0.0056 ✓ valid_sudoku(['53..7....', '6..195...', '.98....6.', '8...6...3', '4..8.3..1', '7...2...6', '.6....28.', '...419..5', '....8..79'])ค่าที่คาดหวัง True <1 มิลลิวินาที ✓ valid_sudoku(['83..7....', '6..195...', '.98....6.', '8...6...3', '4..8.3..1', '7...2...6', '.6....28.', '...419..5', '....8..79'])ค่าที่คาดหวัง False 2 มิลลิวินาที ✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ 2 มิลลิวินาที✓ <1 มิลลิวินาทีโค้ด
def valid_sudoku(board: list[str]) -> bool: seen = set() add = seen.add for i in range(9): row = board[i] bi = (i // 3) * 3 for j in range(9): c = row[j] if c == '.': continue r = (0, i, c) k = (1, j, c) b = (2, bi + j // 3, c) if r in seen or k in seen or b in seen: return False add(r) add(k) add(b) return True
ค่าใช้จ่ายโทเค็น: $0.0065 · วิธีจัดการแข่งขันและการคิดคะแนน →