|
Sihirli Kare
Sonsuz büyüklüğe kadar tek sayıda uzunluklu sihirli kareler oluşturulmak için
aşağıdaki yöntemi kullanabilirsiniz. Yöntemin sahibini bilmiyor olmakla
birlikte, 770-840 yıllarında yaşamış, Cebir'in kurucusu, "Sıfır"ın
ve "Sayı sistemleri"nin mucidi
El-Harezmi'nin buluşu olduğunu duymuştum.
Bu yöntemde, N tek sayı olmak üzere NxN boyutlu sihirli karenizi dış tarafından
45 derece eğimle daha büyük bir başka kare ile sarmak gerekiyor. Soldan başlayıp
sağ yukarı gidecek şekilde 1'den başlayarak N^2'ye kadarki tüm sayıları
sırayla yerleştirin.
Ortadaki ilk karenin dışında kalan hücrelerde bulunan sayıları kendi
doğrultularında içeri almak gerekiyor. Kural olarak her sayı, kendi
doğrultusunda N uzaklıktaki hücreye yerleştirilmelidir.

1-65025 arası sayıların yatay, dikey ve çapraz toplamlarının aynı olacak şekilde
yerleştirildiği 255x255 boyutlu sihirli kare örneğini
buradan açın.
[MS Excel]
Sub SihirliKare()
'''Serkan Şahinoğlu, 2005/11
'''http://BilgiTeknoloji.net
Const BOYUT = 255
Dim YARIM As Long
YARIM = BOYUT \ 2
Dim i As Long, j As Long
Dim satir As Long, sutun As Long, sayi As Long
For i = 1 To BOYUT
For j = 1 To BOYUT
satir = BOYUT - j + i
sutun = j + i - 1
sayi = (i - 1) * BOYUT + j
If satir <= YARIM Then
Cells(satir + BOYUT - YARIM + 1, sutun - YARIM + 1) = sayi
ElseIf sutun <= YARIM Then
Cells(satir - YARIM + 1, sutun + BOYUT - YARIM + 1) = sayi
ElseIf satir > BOYUT + YARIM Then
Cells(satir - BOYUT - YARIM + 1, sutun - YARIM + 1) = sayi
ElseIf sutun > BOYUT + YARIM Then
Cells(satir - YARIM + 1, sutun - BOYUT - YARIM + 1) = sayi
Else
Cells(satir - YARIM + 1, sutun - YARIM + 1) = sayi
End If
Next
Next
End Sub
|
Tüm sihirli karelerin kısıtlama olmaksızın oluşturulması hakkında bilgiler için
Prof. Dr. Asker Ali ABİYEV'in sitesini
www1.gantep.edu.tr/~abiyev/ adresinden ziyaret
edebilirsiniz. Kendisi sihirli karelerin doğal şifresini 1997 yılında
Barcelona'da sunmuştur.
Örnek excel dosyasını yükleyin.
sihirli_kare.rar (34 kb.)
Serkan Şahinoğlu
18.11.2005
|