İşte tüm 2x2 ikili matrisler
#0 #1 #2 #3 #4 #5 #6 #7 #8 #9 #10 #11 #12 #13 #14 #15
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
00 00 00 00 01 01 01 01 10 10 10 10 11 11 11 11
00 01 10 11 00 01 10 11 00 01 10 11 00 01 10 11
İki ikili kare matris , yatay veya dikey eksenlerdeki herhangi bir sayıda yansıma ile~
diğerine eşlenebiliyorsa , ilişki altında eşdeğerdir .
#1 ~ #2
dikey eksendeki yansıma altında, sadece bunlardan birini tutmamız gerekiyor (hangisinin önemli olduğu önemli değil). Aynı şekilde #3 ~ #12
, #6 ~ #9
vb.
HEDEF tek bir girdi alan ve çıktıdaki tüm matrisler yukarıdaki ilişki altında farklı olacak şekilde mevcut N
olduğu kadar çok sayıda N x N
ikili matris basan bir program üretmektir .
Elle dalgalanan sahte kodda, kabul edilebilir bir çözüm
define M[i] = N by N matrix with bit pattern equal to i
for i = 0 to (2^(N^2)) - 1
valid = true
for j = i+1 to (2^(N^2)) - 1
if (equivalent(M[i], M[j]))
valid = false
break
if (valid)
print (M[i])
Giriş için N=2
geçerli bir çıkış
00 00 00 01 10 01 11
00 01 11 01 01 11 11
Fakat aynı eşdeğerlik sınıfından farklı matrisler seçerek başka bir geçerli çıktı
00 10 11 11 11 10 01
00 00 00 10 11 10 10
Matrislerin sırası önemli değildir, eşdeğer matrislerden belirli bir seçim önemli değildir ve boşluk önemli değildir, ancak okunabilir olduğu sürece istediğiniz matrisleri çıktılar.
Çıktı ayrıntılı olmalıdır.
En kısa kod kazanır.
EDIT: Bu benim ilk golf yazı ve kazanan kriterler fikrimi değiştirdim.
Özellikle kısalık / golf için tasarlanmamış bir dilde en kısa kod kazanır.
Umarım bu kriteri post-hoc değiştirmek kötü bir davranış değildir, ancak bence bunu "normal" bir dilde yapmak çok daha ilginç bir öneridir.