Bu zorluk, Mayıs 2018 Ayın Dili etkinliğinin bir parçası olarak, bazı MATL dil özellikleri ile ilgilidir .
Giriş
MATL'de, birçok iki giriş işlevi , yayınla eleman olarak çalışır . Bu, şu anlama gelir:
Element bilge (veya vectorized ): fonksiyon, eşleşen boyutlara sahip iki diziyi girdi olarak alır. İşlev tarafından tanımlanan işlem, karşılık gelen girişlerin her çiftine uygulanır. Örneğin, düzeltme sonrası gösterimini kullanarak:
[2 4 6] [10 20 30] +
verir çıktıya
[12 24 36]
Bu aynı zamanda çok boyutlu dizilerle de çalışır. Gösterim
[1 2 3; 4 5 6]
,2
x3
dizisini temsil eder (matris)1 2 3 4 5 6
2
birinci boyut (dikey) ve3
ikinci (yatay) boyunca büyüklüğe sahip olan . Yani[2 4 6; 3 5 7] [10 20 30; 40 60 80] *
[20 80 180; 120 300 560]
Yayın veya ( tekton genişletme ): iki giriş dizisinin eşleşen boyutları yoktur, ancak eşleşen her bir boyutta dizilerin birinin boyutu vardır
1
. Bu dizi, boyutları eşleştirmek için diğer boyutlar boyunca örtük olarak çoğaltılır; ve daha sonra işlem, yukarıdaki gibi element şeklinde uygulanır. Örneğin,1
×2
ve3
× boyutlarında iki giriş dizisini göz önünde bulundurun1
:[10 20] [1; 2; 5] /
Yayın sayesinde, bu eşdeğerdir
[10 20; 10 20; 10 20] [1 1; 2 2; 5 5] /
ve böylece verir
[10 20; 5 10; 2 4]
Benzer şekilde,
3
×2
ve3
× boyutlarında1
(yayın şimdi yalnızca ikinci boyut boyunca etki eder),[9 8; 7 6; 5 4] [10; 20; 30] +
[19 18; 27 26; 35 34]
Boyutların sayısı bile farklı olabilir. Örneğin, 3 × 2 ve 3 × 1 × 5 boyutlarındaki girişler uyumludur ve 3 × 2 × 5 sonuç verir. Aslında, 3 × 2 büyüklüğü, 3 × 2 × 1 ile aynıdır (keyfi olarak çok sayıda takip eden tekil boyutlar vardır).
Öte yandan, bir çift
2
×2
ve3
×1
dizisi hata verirdi, çünkü birinci boyut boyunca boyutlar2
ve3
: eşit değiller ve hiçbiri değil1
.
Modüler yayının tanımı
Modüler yayın, eşleşmeyen boyutlardan hiçbiri olmasa bile çalışan yayınların genellemesidir 1
. Örneğin , fonksiyonun girdisi olarak aşağıdaki 2
× 2
ve 3
× 1
dizilerini göz önünde bulundurun +
:
[2 4; 6 8] [10; 20; 30] +
Kural şu şekildedir: her boyut için, bu boyut boyunca daha küçük olan dizi , diğer dizinin boyutuyla eşleşecek şekilde modüler olarak (döngüsel olarak) çoğaltılır . Bu yukarıda belirtilen eşdeğer yapar
[2 4; 6 8; 2 4] [10 10; 20 20; 30 30] +
sonuçla beraber
[12 14; 26 28; 32 34]
İkinci bir örnek olarak,
[5 10; 15 20] [0 0 0 0; 1 2 3 4; 0 0 0 0; 5 6 7 8; 0 0 0 0] +
üretmek
[5 10 5 10; 16 22 18 24; 5 10 5 10; 20 26 22 28; 5 10 5 10]
Genel olarak, boyutları ile giriş a
x b
ve c
x d
vermek büyüklükte bir sonucu max(a,b)
x max(c,d)
.
Meydan okuma
Uygulama ilave için iki boyutlu diziler modüler yayın yukarıda tanımlandığı gibidir.
Diziler dikdörtgen olacak (düzensiz değil), yalnızca negatif olmayan tam sayılar içerecek ve en azından1
her boyutta boyutta olacaktır.
Ek kurallar:
Giriş ve çıkış herhangi bir makul yoldan alınabilir . Biçimleri her zamanki gibi esnektir.
Herhangi bir programlama dilinde programlara veya fonksiyonlara izin verilir . Standart boşluklar yasaktır .
Bayt cinsinden en kısa kod kazanır.
Test durumları
Aşağıdaki ;
satır ayırıcı olarak kullanılır (yukarıdaki örneklerde olduğu gibi). Her test durumu iki girişi ve ardından çıkışı gösterir.
[2 4; 6 8]
[10; 20; 30]
[12 14; 26 28; 32 34]
[5 10; 15 20]
[0 0 0 0; 1 2 3 4; 0 0 0 0; 5 6 7 8; 0 0 0 0]
[5 10 5 10; 16 22 18 24; 5 10 5 10; 20 26 22 28; 5 10 5 10]
[1]
[2]
[3]
[1; 2]
[10]
[11; 12]
[1 2 3 4 5]
[10 20 30]
[11 22 33 14 25]
[9 12 5; 5 4 2]
[4 2; 7 3; 15 6; 4 0; 3 3]
[13 14 9;12 7 9;24 18 20;9 4 6;12 15 8]
[9 12 5; 5 4 2]
[4 2 6 7; 7 3 7 3; 15 6 0 1; 4 0 1 16; 3 3 3 8]
[13 14 11 16; 12 7 9 8; 24 18 5 10; 9 4 3 21; 12 15 8 17]
[6 7 9]
[4 2 5]
[10 9 14]
1
x n
(örneğin [1 2 3]
) ya da n
X 1
(örneğin [1; 2; 3]
)