|
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 www.gantep.edu.tr
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
|