Entrada
Uma matriz binária não vazia que consiste em sub-matrizes 3x3 colocadas lado a lado.
Tarefa
Sua tarefa é identificar padrões de dados válidos (conforme descrito abaixo) entre as sub-matrizes 3x3. Cada padrão válido vale o valor dos dados correspondentes. Padrões inválidos valem 0.
Saída
A soma dos valores válidos dos dados.
Padrões de dados
Exemplo
O resultado esperado para a matriz a seguir é 14 porque contém os dados 5 , 6 e 3 , seguidos por um padrão inválido (da esquerda para a direita e de cima para baixo).
Regras
- A largura e a altura da matriz são garantidas como múltiplos de 3.
- Você deve ignorar as sub-matrizes que não estão alinhadas corretamente na grade (consulte o terceiro caso de teste). Mais formalmente e assumindo a indexação 0: as coordenadas da célula superior esquerda de cada sub-matriz a ser considerada têm a forma .
- Isso é código-golfe .
Casos de teste
// 0
[ [ 1,0,0 ],
[ 0,0,1 ],
[ 1,0,0 ] ]
// 2
[ [ 0,0,1 ],
[ 0,0,0 ],
[ 1,0,0 ] ]
// 0 (0 + 0)
[ [ 0,0,1,0,1,0 ],
[ 0,0,0,1,0,0 ],
[ 0,0,1,0,1,0 ] ]
// 9 (3 + 3 + 3)
[ [ 1,0,0,0,0,1,1,0,0 ],
[ 0,1,0,0,1,0,0,1,0 ],
[ 0,0,1,1,0,0,0,0,1 ] ]
// 6 (6 + 0)
[ [ 1,0,1 ],
[ 1,0,1 ],
[ 1,0,1 ],
[ 1,0,1 ],
[ 1,0,0 ],
[ 1,0,1 ] ]
// 14 (5 + 6 + 3 + 0)
[ [ 1,0,1,1,1,1 ],
[ 0,1,0,0,0,0 ],
[ 1,0,1,1,1,1 ],
[ 1,0,0,0,0,0 ],
[ 0,1,0,0,1,0 ],
[ 0,0,1,0,1,0 ] ]
// 16 (1 + 2 + 3 + 4 + 0 + 6)
[ [ 0,0,0,1,0,0,1,0,0 ],
[ 0,1,0,0,0,0,0,1,0 ],
[ 0,0,0,0,0,1,0,0,1 ],
[ 1,0,1,1,1,1,1,0,1 ],
[ 0,0,0,1,0,1,1,0,1 ],
[ 1,0,1,1,1,1,1,0,1 ] ]
//3
e uso'0'+''.join...
para salvar dois bytes :)R , 134 bytes
Experimente online!
Percebi que tinha a mesma ideia da @Heteira
História:
171: -10 bytes graças a @JayCe!161: -3 bytes graças a @ Giuseppe!158: -13 bytes salvos!145: -2 bytes graças a @ Giuseppe!143: -6 bytes salvos!137: -3 bytes graças a @JayCe!fonte
dim
(2^(8:0))
qual pode ser removido.cat
da saída deintToUtf8
: save 3 bytesPerl 6 ,
113 105 9794 bytesExperimente online!
Divide a matriz em sub-matrizes de 3x3, converte os nove 1s e 0s na base 2 e depois a indexa em uma lista de números inteiros para o valor.
Explicação:
fonte
Geléia ,
2928 bytes-1 graças a Mr. Xcoder (use
Ṁ
para substituirṢṪ
)Um link monádico.
Experimente online! Ou execute os testes .
Quão?
Por exemplo, quando uma sub-matriz é:
Então
ZU,Ɗ
produz:... que simplifica
[0, 0, 0, 1, 1, 1, 1, 1, 1]
, que, convertendo do binário, é63
a sexta entrada na lista de índices da página de códigos“°€⁼-Ḍ?‘
(?
sendo byte3F
na página de códigos de Jelly )fonte
Ṁ
pode funcionar em vez deṢṪ
para -1.M
>. <). Pode algo inteligente ser feito comŒṪ
Pergunto-me ...Japonês
-x
, 36 bytesAgora está ficando interessante. Tenho certeza de que você pode jogar golfe ainda mais
Experimente online!
fonte
Retina 0.8.2 , 90 bytes
Experimente online! Explicação:
Junte todos os blocos e divida-os novamente em linhas de 9 colunas.
Mantenha apenas padrões de dados válidos (dois padrões para
6
, então um corresponde a qualquer número de0
até5
, embora, é0
claro, não contribua para a contagem abaixo.)Conte os pips nos dados válidos.
fonte
Ruby , 151 bytes
Experimente online!
Um lambda aceitando uma matriz 2D de entradas (ou cordas, eu acho). Inspira-se na resposta de Jo King . Sinto que cortar os dados para fora da matriz de entrada ocupava muito espaço, por isso posso ser superado. Felizmente, lidar com nils só me custou um punhado de bytes.
Ungolfed:
fonte
Clojure, 197 bytes
Eu deveria ter pensado em algo mais inteligente.
fonte
Python 2 , 159 bytes
Experimente online!
Dica para Jonathan Frech pela abordagem de codificação unicode.
fonte