(Inspirado aleatoriamente em https://codegolf.meta.stackexchange.com/a/17272/42963 )
Dada uma matriz retangular de dígitos (isto é, 0 - 9
), imprima as "partes" da matriz como se os dígitos estivessem conectados juntos, formando uma única peça, em ordem crescente pelos dígitos. É garantido que as peças se conectem apenas ortogonalmente - nenhuma peça se conectará na diagonal. Só haverá no máximo 10 peças (ou seja, uma 3
peça não aparecerá duas vezes na mesma matriz).
Por exemplo, dada a matriz
0 1 1 1
0 0 1 2
3 3 2 2
a seguir estão as peças e um exemplo de saída:
0
0 0
1 1 1
1
2
2 2
3 3
O espaçamento é importante para manter a forma das peças, mas as peças não precisam necessariamente de espaçamento interior. As peças em si devem, de alguma forma, ser diferenciadas de maneira consistente (por exemplo, uma nova linha entre as peças, garantindo que cada uma seja um personagem diferente etc.). Além disso, espaços em branco externos (por exemplo, novas linhas à direita ou colunas à esquerda) não são permitidos. Por exemplo, o seguinte também seria válido:
0
00
111
1
2
22
33
ou
#
##
###
#
#
##
##
Mas o seguinte não seria (observe os espaços à direita atrás dos 0
):
0
0 0
Rotações ou reflexões também não são permitidas. Por exemplo, saída
1
111
para a matriz acima também é inválida.
As peças da matriz podem ter furos ou ser apenas um elemento:
0 0 0 1
0 2 0 1
0 0 0 3
Ou, a peça pode ser toda a matriz:
0 0 0
0 0 0
Aqui está um caso de teste maior e mais complicado:
1 1 1 1 1 2 2
3 4 4 4 2 2 2
5 5 4 4 2 0 0
5 6 6 6 6 7 7
5 6 8 8 6 6 7
9 6 6 6 7 7 7
E um exemplo de saída:
00
11111
22
222
2
3
444
44
55
5
5
6666
6 66
666
77
7
777
88
9
Regras e E / S
- A entrada e a saída podem ser fornecidas por qualquer método conveniente .
- Você pode imprimi-lo em STDOUT ou retorná-lo como resultado de uma função.
- Um programa completo ou uma função são aceitáveis.
- É necessário um espaço em branco à esquerda para manter a forma (por exemplo, a forma "T"
1
do exemplo), um espaço em branco consistente para diferenciar as peças e uma única linha nova à direita no final é permitida, mas nenhum outro espaço em branco é permitido. - Você pode assumir com segurança que as peças são numeradas
0
de formaN
contígua, o que significa que (por exemplo)3
não seria ignorado em uma matriz de seis peças. - As brechas padrão são proibidas.
- Isso é código-golfe, portanto todas as regras usuais de golfe se aplicam e o código mais curto (em bytes) vence.
0
como valor de preenchimento? Portanto, cada peça seria impressa com o restante dos valores na matriz configurados para0
-1
ou algum outro valor em vez de nada / espaço em branco não seria bom, no entanto.
' '
) deve ser usado nesse caso?
-1
ou um espaço representando um espaço vazio ou a ausência de um elemento, se possível)?