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 ntarafından ngirdi olarak ikili matrisin - minimum numarası nedir 0size sette gerekir bit 1geç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 ntarafı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 0iç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 1tüm 1s 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