Ana diyagonal üzerinde 1'ler kare bloklara sahip olan ve her yerde 0 olan ikili blok çapraz matrisleri düşünün . Bu matrislere "geçerli" matrisler diyelim.
Örneğin, bazı geçerli 4x4 matrisleri şunlardır:
1 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1 1 1 1
0 1 0 0 1 1 0 0 0 1 1 0 0 1 1 1 1 1 0 0 1 1 1 1
0 0 1 0 0 0 1 0 0 1 1 0 0 1 1 1 0 0 1 1 1 1 1 1
0 0 0 1 0 0 0 1 0 0 0 1 0 1 1 1 0 0 1 1 1 1 1 1
Bu matrisleri tarif etmenin alternatif bir yolunun, soldan sağa, sağdan sağa, köşeden köşeye değen 1 blokluk bir kare zincirinin ve diğer her yerde 0 olduğunu unutmayın.
Buna karşılık, bazı geçersiz 4x4 matrisleri şunlardır:
1 0 1 0 1 0 1 0 1 1 0 0 0 1 1 1 1 1 0 0 0 0 0 0
0 1 1 1 0 1 0 1 1 1 0 0 0 1 1 1 1 1 0 0 0 0 0 0
1 0 0 1 1 0 1 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0
0 0 1 0 0 1 0 1 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0
Bir verilecektir n
tarafından n
girdi olarak ikili matrisin - minimum numarası nedir 0
size sette gerekir bit 1
geçerli bir matris elde etmek için?
Bir temsil uygun herhangi bir dize, liste veya matris biçiminde bir işlev veya program alma yazabilirsiniz n
tarafından n
(sürece preprocessed değil gibi) 0 ve 1 matrisi. Satırlar bir şekilde açıkça ayrılmalıdır, bu nedenle 1D bit dizisi gibi biçimlere izin verilmez.
Bu kod golf , bu nedenle amaç programınızdaki bayt sayısını en aza indirmektir.
Örnekler
Örneğin, giriş
0 0 0 0 0
0 0 1 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 1
almak 0
için beş bit ayarlayabilirsiniz, çünkü cevap 5'tir.1
1 0 0 0 0
0 1 1 0 0
0 1 1 0 0
0 0 0 1 0
0 0 0 0 1
ve bu gerekli olan minimum sayıdır. Ancak, giriş
0 0 0 0 1
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
o zaman cevap 24'tür, çünkü sağ üstteki tek geçerli 5x5 matris 1
tüm 1
s matrisidir .
Test senaryoları
Testler burada bir 2 tam sayı dizisi olarak temsil edilir.
[[0]] -> 1
[[1]] -> 0
[[0,1],[0,0]] -> 3
[[1,0],[0,0]] -> 1
[[0,0,0],[0,1,0],[0,0,0]] -> 2
[[0,1,0],[0,0,0],[0,1,0]] -> 7
[[0,1,0],[1,0,0],[0,0,1]] -> 2
[[1,1,1],[1,1,1],[1,1,1]] -> 0
[[0,0,0,0],[0,0,1,0],[0,1,0,0],[0,0,0,0]] -> 4
[[0,0,1,0],[0,0,0,0],[0,0,0,0],[0,0,0,1]] -> 8
[[0,0,1,0],[0,0,0,0],[0,0,0,0],[0,0,1,0]] -> 14
[[0,0,1,0],[0,0,0,0],[0,0,0,0],[0,1,0,0]] -> 14
[[0,0,0,0,0],[0,0,0,0,0],[0,1,0,0,0],[0,0,0,0,1],[0,0,0,0,0]] -> 7
[[0,0,0,0,0],[0,0,0,0,0],[1,0,0,0,0],[0,0,0,0,1],[0,0,0,0,0]] -> 11
[[0,0,0,0,0],[0,0,1,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,1]] -> 5
[[0,0,0,0,1],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]] -> 24
[[0,0,0,1,0],[0,0,0,0,1],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]] -> 23
[[0,1,0,0,0],[1,0,0,0,0],[0,0,1,0,0],[0,0,0,0,1],[0,0,0,1,0]] -> 4
[[0,1,1,1,0],[0,1,1,0,1],[0,1,1,1,0],[0,1,0,0,1],[0,0,0,0,0]] -> 14
notlar
- İlgili zorluk: Bir Blok-Çapraz Matris yazdır
- İlham: Freedom Factory, Google Code Jam 2016 Sorun 2D