Escreva um programa ou uma função em qualquer linguagem de programação que utilize uma entrada / argumento hexadecimal de 6 dígitos. A entrada / argumento pode ter 6 valores ou uma cadeia de 6 caracteres.
Seu programa deve gerar um bloco retangular de exatamente 8 caracteres de largura, contendo apenas os hexadecimais fornecidos combinados com espaços (+ Alimentação de linha). O bloco retangular é uma combinação de formas de bloco menores, uma para cada um dos 6 valores fornecidos.
A seguir, duas entradas de amostra demonstrativas e saídas válidas de amostra:
Entrada de amostra :
"464fa6" or [4, 6, 4, 15, 10, 6]
Uma saída de solução válida :
44 66 ff
44 66 ff
66 ff
aa f
aaa ffff
aa ffff
aaa
6 44
66666 44
Entrada de amostra :
"35bf12"
Uma saída de solução válida :
55555 22
bbbbbbbb
b b b
33
fffff 3
ff ff
ffffff 1
Regras:
A saída deve ser uma forma retangular
A saída pode ter qualquer altura vertical, mas deve ter exatamente 8 caracteres de largura
Os "blocos internos", referidos como "formas de bloco", não podem se conectar a nenhuma outra forma de bloco; as formas de bloco devem ser separadas por uma parede de espaços em branco com exatamente 1 caractere de largura na horizontal, na vertical e na diagonal.
A parede dos espaços em branco não pode ser paralela às bordas externas, apenas bordas de parede com 1 caractere de largura podem existir nas bordas de saída. Não deve haver espaços vinculados em nenhum lugar na borda do retângulo mais externo na saída.
A largura da parede dos espaços em branco não deve, em nenhum momento, exceder 1 caractere.
As formas do bloco interno devem ser uniformes com a área de x caracteres, onde x é o valor hexadecimal fornecido e a forma deve consistir no caractere x em que x é o representante hexadecimal do caractere.
As formas do bloco interno podem ter qualquer forma, desde que todos os caracteres da forma se conectem vertical ou horizontalmente e não valiam as regras para a parede dos espaços em branco.
As 6 formas de bloco podem ser colocadas em qualquer "ordem" interna dentro do retângulo de saída.
Faixa de entrada válida: 1 ... 15 ("1" ... "f") para cada forma. A entrada para o seu programa não deve conter outras informações além dos 6 números hexadecimais e a entrada não deve ser classificada de nenhuma outra maneira que não as amostras antes de ser fornecida ao seu programa / função. Diga-nos qual formato de entrada sua solução usa (a entrada não pode conter outras informações além dos valores hexadecimais).
Uma forma de bloco interno pode ser oca. O furo deve ter caracteres de espaço em branco, que conta como parede de espaços em branco, o que significa que o furo em forma de bloco interno oco não pode ter mais de 1 caractere de largura.
Três exemplos de formas ocas válidas:
aaa
a aaa
aaa
999
9 9
999
9
ffffff
f ff
ffffff
Um exemplo de uma forma oca inválida:
ffffff
f f
f f
fffff
Suponho que todas as combinações de entradas não sejam possíveis de "resolver" de acordo com as regras acima; portanto, listo 10 entradas de amostra que seu programa deve ser capaz de "resolver" (tudo é verificável):
1. 464fa6 (same as the first sample)
2. 35bf12 (second example input seen above)
3. 111126
4. ff7fff
5. 565656
6. abcdef
7. 1357bd
8. 8c6a42
9. ab7845
10. 349a67
Seu programa deve ser capaz de resolver qualquer uma das 10 entradas de amostra em tempo razoável. traduza o tempo de ressonância para 1 hora em um computador desktop padrão. Diga como: 3 Ghz Dual core, 4 GB de memória para uma referência.
Este é o código de golfe, a solução mais curta vence. A solução pode ser um programa totalmente funcional ou uma função
Respostas:
Haskell, 156
Bem, este estende um pouco as regras. Não tenho paredes em branco, exceto as quebras de linha; portanto, todas as minhas paredes têm o comprimento 1.
saída para 464fa6:
fonte
BrainF * ck - 134 (nova linha intr
Eu acho que essa é a resposta simplista
Entrada obtida por meio de 6 caracteres hexadecimais para stdin, seguida por uma nova linha para envio.
EDIT: Isso falha devido à regra 6, que eu não percebi completamente até agora: /
fonte