Meydan okuma:
ve sekiz farklı 'katlama seçeneğinin' olduğu bir NxN matrisi göz önüne alındığında , çıkartılan değerlerle birlikte bir 2D dizi / liste çıkar.
Sekiz katlama seçeneği: soldan sağa; sağdan sola; üst-tabanı; alt-üst; topleft-için-bottomRight; topright-için-bottomleft; bottomleft-için-topright; bottomright-to-topleft.
Adım adım örnekler:
Giriş matrisi:
[[ 1, 3, 5, 7],
[ 0, 8, 6, 4],
[ 1, 1, 1, 1], (a'th row in the explanation below)
[ 1,25, 0,75]]
Yukarıdan aşağıya doğru katlama seçeneği ile aşağıdakileri çıktı olarak veririz:
[[ 1,-7,-5,-3],
[ 0,22,-5,68]]
Niye ya? Yukarıdan aşağıya doğru katlanırız. Matris boyutları eşit olduğundan, koruyacak orta katman yoktur. 'inci satır [1, 1, 1, 1]
ile çıkarılacaktır ' inci satır (olurdu 'tek boyut matrisleri için inci satır); öyle [1-0, 1-8, 1-6, 1-4]
olur [1, -7, -5, -3]
. 'inci satır [1, 25, 0, 75]
o sırada çıkartılır olacak ' inci satır (olurdu 'tek boyut matrisleri için inci satır); yani[1-1, 25-3, 0-5, 75-7]
olur [0, 22, -5, 68]
.
Bunun yerine alttan tepeye katlama seçeneğiyle (yukarıdaki aynı giriş matrisi ile) sonuç olarak aşağıdakileri çıkarırız:
[[-74, 2, 1, 7],
[ 0, 7, 6],
[-24, 1],
[ 1]]
Aşağıdaki katlama çıkarma işlemleriyle:
[[1-75, 3-1, 5-4, 7],
[ 0-0, 8-1, 6],
[1-25, 1],
[ 1]]
Meydan okuma kuralları:
- Katlama seçenekleri için [ - 99 , 99 ]
[A-Za-z]
aralığında sekiz farklı harf veya farklı rakam kullanabilirsiniz . Sayılar [ 1..8 ] veya [ 0..7 ] muhtemelen en yaygın seçenek vardır, ancak bazı akıllı hesaplamalar için aralık içinde farklı sayılar kullanmak istiyorsanız, bunu yapmak için çekinmeyin. Lütfen cevabınızda hangi katlama seçeneklerini kullandığınızı belirtin. - Giriş matrisi her zaman bir kare NxN matrisi olacak, böylece herhangi bir dikdörtgen NxM matrisi ile çalışmak zorunda değilsiniz. , her zaman en az 2 olacaktır, çünkü boş veya 1x1'lik bir matris katlanamaz.
- Matrisin girişi her zaman aralığında negatif olmayan sayılar içerecektir (çıktıdaki sayılar aralığında olacaktır ).
- (Anti-) çapraz katlama veya tek boyutlu dikey / yatay katlama ile, orta 'katman' değişmeden kalacaktır.
- G / Ç esnektir. 2B dizi / tamsayı listesi olabilir; boşluk ve newline ayrılmış bir dize olarak döndürülebilir veya yazdırılabilir; giriş matrisini değiştirebilir ve gitmiş olduklarını belirtmek için gitmesi gereken sayıları
null
veya[-999, 999]
aralığın dışındaki bir sayıyı değiştirebilirsiniz; vesaire vesaire.
Genel kurallar:
- Bu kod golf , bayt cinsinden en kısa cevap kazanır.
Code-golf dillerinin, codegolfing olmayan dillerle cevap göndermekten vazgeçmesine izin vermeyin. Herhangi bir programlama dili için mümkün olduğunca kısa bir cevap bulmaya çalışın. - Standart G / Ç kurallarına cevabınız için standart kurallar geçerlidir , bu nedenle STDIN / STDOUT işlevlerini, uygun parametreleri içeren fonksiyonlar / yöntemleri ve dönüş tipini, tam programları kullanmanıza izin verilir. Senin çağrı.
- Varsayılan Loopholes yasaktır.
- Mümkünse, lütfen kodunuzu test eden bir bağlantı ekleyin (ör. TIO ).
- Ayrıca, cevabınız için bir açıklama eklemek şiddetle tavsiye edilir.
Test durumları:
Giriş matrisi 1:
Input-matrix (for the following eight test cases):
[[ 1, 3, 5, 7],
[ 0, 8, 6, 4],
[ 1, 1, 1, 1],
[ 1,25, 0,75]]
Input-folding option: left-to-right
Output: [[2,6],[-2,4],[0,0],[-25,74]]
Input-folding option: right-to-left
Output: [[-6,-2],[-4,2],[0,0],[-74,25]]
Input-folding option: top-to-bottom
Output: [[1,-7,-5,-3],[0,22,-5,68]]
Input-folding option: bottom-to-top
Output: [[0,-22,5,-68],[-1,7,5,3]]
Input-folding option: topleft-to-bottomright
Output: [[7],[6,-1],[1,-7,-2],[1,24,0,74]]
Input-folding option: topright-to-bottomleft
Output: [[1],[-3,8],[-4,-5,1],[-6,21,-1,75]]
Input-folding option: bottomleft-to-topright
Output: [[1,3,4,6],[8,5,-21],[1,1],[75]]
Input-folding option: bottomright-to-topleft
Output: [[-74,2,1,7],[0,7,6],[-24,1],[1]]
Giriş matrisi 2:
Input-matrix (for the following eight test cases):
[[17, 4, 3],
[ 8, 1,11],
[11, 9, 7]]
Input-folding option: left-to-right
Output: [[4,-14],[1,3],[9,-4]]
Input-folding option: right-to-left
Output: [[14,4],[-3,1],[4,9]]
Input-folding option: top-to-bottom
Output: [[8,1,11],[-6,5,4]]
Input-folding option: bottom-to-top
Output: [[6,-5,-4],[8,1,11]]
Input-folding option: topleft-to-bottomright
Output: [[3],[1,7],[11,1,-10]]
Input-folding option: topright-to-bottomleft
Output: [[17],[4,1],[8,-2,7]]
Input-folding option: bottomleft-to-topright
Output: [[17,-4,-8],[1,2],[7]]
Input-folding option: bottomright-to-topleft
Output: [[10,-7,3],[-1,1],[11]]
A-Za-z
, aralıktaki herhangi bir harfi veya herhangi bir tam sayıyı kullanabilirsiniz [-999,999]
; Maalesef, girdiyi temel alarak doğru kapağı çıkarmanız gerekir, bu yüzden sekiz değerinin de çıkmasına izin verilmez.