Soyut cebirdeki birçok önemli konu bir kümeye etki eden ikili bir fonksiyonu içerir. Bu tür konuların araştırılmasında bu işlevlerin bir dizi özelliği tanımlanmıştır.
Sorun, belirli bir alandaki belirli bir ikili işlevin bu özelliklerin beşine sahip olup olmadığını belirlemek olacaktır.
Özellikleri
Etki alanında her olası çıkış varsa ikili bir işlev kapatılır.
Bir ikili girdiye işlevin uygulanma sırası sonucu etkilemezse, ikili işlev ilişkilendirilebilir. Yani, her zaman eşitse $
çağrışımsaldır . Değer giriş olarak kullanıldığından ilişkilendirilebilir işlevlerin kapatılması gerektiğini unutmayın.(a $ b) $ c
a $ (b $ c)
(a $ b)
Girişlerin sırasını değiştirmek sonucu değiştirmezse, ikili işlev değişebilir. Diğer bir deyişle, a $ b
her zaman eşitse b $ a
.
e
Etki alanında, etki alanındaki a $ e = a = e $ a
herkes için böyle bir öğe varsa, ikili işlevin bir kimlik öğesi vardır a
.
İkili işlev, iki özdeş girişe uygulanırsa, bu sayıyı çıktı olarak verirse idempotenttir. Diğer bir deyişle, alan adındaki a $ a = a
herkes için a
.
Giriş
Bir matris formunda bir işlev verilecektir ve fonksiyon alan sayılar olur 0 ... n-1
, n
matris yan uzunluğudur.
Değer (a $ b)
, matriste, a
th. Satırın b
th öğesi olarak kodlanır . Giriş matrisi ise Q
, a $ b
=Q[a][b]
Örneğin **
, etki alanındaki üs alma işlevi ( Python'da) [0, 1, 2]
şu şekilde kodlanır:
[[1, 0, 0]
[1, 1, 1]
[1, 2, 4]]
Sol ve sağ etki alanları aynıdır, bu nedenle matris her zaman kare olacaktır.
Listeler listesi, satır veya sütun ana düzeninde tek bir liste, dilinizin yerel matris nesnesi vb. Gibi giriş olarak herhangi bir uygun matris biçimini kullanabilirsiniz. Ancak, bir işlevi doğrudan giriş olarak alamazsınız.
Basit olması için, matris girişlerinin tümü tamsayı olacaktır. Dilinizin yerel tamsayı türüne uyduğunu varsayabilirsiniz.
Çıktı
Booleans listesi, her özellik için farklı bir karaktere sahip bir dize vb. Dahil olmak üzere yukarıdaki özelliklerden hangisini seçtiğinizi belirtebilirsiniz. Ancak, olası 24 alt kümenin her biri için ayrı, benzersiz bir çıktı olmalıdır. özellikleri. Bu çıktı kolaylıkla insan tarafından okunabilir olmalıdır.
Örnekler
Etki alanı n = 4'teki maksimum işlev:
[[0, 1, 2, 3]
[1, 1, 2, 3]
[2, 2, 2, 3]
[3, 3, 3, 3]]
Bu fonksiyon kapatma, ilişkilendirilebilirlik, değişebilirlik, kimlik ve idempotence özelliklerine sahiptir.
Etki alanı n = 3'teki üs alma işlevi:
[[1, 0, 0]
[1, 1, 1]
[1, 2, 4]]
Bu işlev yukarıdaki özelliklerden hiçbirine sahip değildir.
Etki alanı n = 3'teki toplama işlevi:
[[0, 1, 2]
[1, 2, 3]
[2, 3, 4]]
Bu işlev değişebilirlik ve kimlik özelliklerine sahiptir.
N = 3 alan adındaki K birleştiricisi:
[[0, 0, 0]
[1, 1, 1]
[2, 2, 2]]
Bu fonksiyon kapatma, ilişkilendirilebilirlik ve idempotence özelliklerine sahiptir.
Alan n = 3'teki mutlak fark işlevi:
[[0, 1, 2]
[1, 0, 1]
[2, 1, 0]]
Bu işlev kapatma, değişme ve kimlik özelliklerine sahiptir.
N = 3 alan adında çift yönlü ortalama işlev:
[[0, 0, 1]
[0, 1, 2]
[1, 2, 2]]
Bu fonksiyon kapatma, değişme, kimlik ve idempotence özelliklerine sahiptir.
N = 3 alan adındaki eşitlik işlevi:
[[1, 0, 0]
[0, 1, 0]
[0, 0, 1]]
Bu fonksiyon, kapatma ve değişme özelliklerine sahiptir.
Meydan okuma
Bu kod golf. Standart boşluklar geçerlidir. En az bayt kazanır.
c=all(l>)
?