Verilen 3x3 liste bir sihirli kare mi?
Satır, sütun ve iki çapraz toplamların hepsi eşit olmalı.
İpuçları
💡 İpucu 1: Hedef toplamı belirle: target = sum(grid[0])
💡 İpucu 2: Sütunlar için: sum(grid[r][c] for r in range(3)) şeklinde döngü kur.
💡 İpucu 3: Çaprazlar: grid[0][0]+grid[1][1]+grid[2][2] ve grid[0][2]+grid[1][1]+grid[2][0]
Yaklaşım & Açıklama
Sihirli kare (magic square), 3x3 matrisin tüm satır, sütun ve çapraz toplamlarının eşit olup olmadığını kontrol eder.
**Matematik:** 1-9 toplamı 45. 3 satıra bölünürse satır toplamı 15. Ortanca (1,1) hücre **her zaman 5**'tir.
**Çözüm:**
```python
def is_magic_square(square):
target = sum(square[0]) # İlk satır toplamı
# Satırlar
for row in square:
if sum(row) != target:
return False
# Sütunlar
for col in range(3):
if sum(square[r][col] for r in range(3)) != target:
return False
# Çaprazlar
if sum(square[i][i] for i in range(3)) != target:
return False
if sum(square[i][2-i] for i in range(3)) != target:
return False
return True
```
**Optimizasyon:** zip() ile sütun kontrolünü tek satıra indirge: `if any(sum(col) != target for col in zip(*square)): return False`