Desafio
Dado um número inteiro positivo , repetir cada um dos seus algarismos um número de vezes correspondente à sua posição em . Em outras palavras, cada dígito deve ser repetido vezes (para cada , indexado 1), criando assim o novo número:
Em seguida, escreva na horizontal e na vertical e preencha os espaços em branco com cópias do dígito que corresponde ao maior índice entre o índice da coluna e o índice da linha do espaço em branco. A saída final deve ficar assim:
Especificações
Você pode usar como um número inteiro, uma sequência de caracteres, uma lista de dígitos ou uma lista de caracteres que representam os dígitos. A saída pode ser uma sequência separada por nova linha, uma lista de seqüências de caracteres / números inteiros ou uma lista de listas de caracteres / dígitos, mas por favor inclua também uma versão com impressão bonita, se possível. Se a saída for uma sequência separada por nova linha, também é aceitável:
- tem espaço em branco à esquerda / à direita, desde que a aparência visual da saída não mude
- separe as colunas usando espaços consistentes ou as linhas com uma quantidade consistente (diferente de zero) de novas linhas
Você pode obter entrada e fornecer saída por qualquer método padrão , observando que essas brechas são proibidas por padrão. Isso é código-golfe , então tente concluir a tarefa no mínimo de bytes que você puder gerenciar no seu idioma preferido.
Casos de teste
65:
655
555
555
---------------
203:
200333
000333
000333
333333
333333
333333
--------------
233:
233333
333333
333333
333333
333333
333333
---------------
5202:
5220002222
2220002222
2220002222
0000002222
0000002222
0000002222
2222222222
2222222222
2222222222
2222222222
---------------
12345:
122333444455555
222333444455555
222333444455555
333333444455555
333333444455555
333333444455555
444444444455555
444444444455555
444444444455555
444444444455555
555555555555555
555555555555555
555555555555555
555555555555555
555555555555555
Respostas:
JavaScript (ES7), 70 bytes
Recebe a entrada como uma sequência. Retorna uma string com um avanço de linha à direita.
Experimente online!
Quão?
Método
Construímos o caractere de saída por caractere percorrendo uma matriz quadrada e convertendo cada célula em um índice na string de entrada.Eux , y
Coordenadas para o índice de cadeias
O limite superior da área de dígitos (indexado 0) ao longo de cada eixo é dado por A000096 : n t hvocên nt h
u0=0,u1=2,u2=5,u3=9,u4=14,u5=20,…
Dado um número inteiro , podemos descobrir em que área está localizado resolvendo:n = ⌊ x ⌋ + 1k n = ⌊ x ⌋ + 1
Levando a:
n=⌊ √
Para cada célula , definimos:( x , y)
Esses valores são convertidos nos índices na cadeia de entrada, fazendo o seguinte:vx , y Eux , y
Paradas
Sabemos que alcançamos:
o limite direito da matriz quando o caractere em não existe e temos x > yEux , y x > y
o limite inferior da matriz quando o caractere não existe e temosx ≤ y
fonte
J ,
1615 bytes-1 byte graças a FrownyFrog!
Experimente online!
Toma
N
como uma corda.Explicação da solução inicial:
Sessão de teste com entrada
203
:fonte
)
, sua resposta no APL é a mesma que a minha.[:<:@
parece bastante caro. Em vez disso, você poderia acrescentar algo à lista na qual você está indexando para contabilizar a indexação 1 (por exemplo, acrescentar um 0 para mover cada posição necessária do elemento 1 para a direita)?{⍵[∘.⌈⍨(/⍨)⍳⍴⍵]}
?Haskell ,
605958 bytesExperimente online!
Versão sem pontos (68 bytes)
Experimente online!
fonte
Python 2 , 71 bytes
Experimente online!
Primeiro gera a primeira linha
r
e depois iterar
para imprimir cada linha.fonte
R , 59 bytes
Experimente online!
fonte
a
como vetor de caracteres, permitindo definirg=seq(a)
diretamente.Geléia , 7 bytes
Experimente online!
Saída esclarecida.
fonte
05AB1E ,
141110 bytesGuardado 1 byte graças a Magic Octopus Urn / Adnan
Experimente online!
Explicação
fonte
APL (Dyalog Classic) , 16 bytes
Estou separando esta solução do post com minha resposta em J, conforme sugerido por Jo King
Experimente online!
fonte
Python 2 , 74 bytes
Experimente online!
fonte
Excel VBA, 95 bytes
Uma função de janela imediata anônima do VBE que recebe
[A1]
e envia para o consoleUngolfed e comentou
fonte
MATL ,
1512 bytesExperimente online!
Eu suspeito que isso pode ser encurtado, mas não é tão ruim ...
fonte
Adicionar ++ , 35 bytes
Experimente online!
Como funciona
Tomamos entrada como uma lista de dígitos, enquanto nos impede de a) ter que converter para dígitos com
BD
, e também de salvar os dígitos, o que levaria dois bytes.bLR
dBcB]
£X
¦Ω+
Em seguida, duplicamos essa matriz e a colocamos no máximo
d‽b>
,. Ou seja, cada elemento da matriz é emparelhado com outro elemento da segunda matriz e o comando máximo diádico é executado sobre o par. Para um exemplo de entrada de [6 5] , isso cria a matriz [1 2 2 2 2 2 2 2 2]] , que é uma versão nivelada do mosaico, como os índices da matriz. Infelizmente, Adicionar ++ usa matrizes 0-indexados, por isso precisamos para diminuir cada elemento:1€Ω_
.A
€Ω:
AbLR¦+
T
$
T
fonte
Carvão , 17 bytes
Experimente online! Explicação:
Faça um loop sobre os índices dos caracteres na ordem inversa.
Calcular o tamanho do quadrado.
Desenhe o quadrado usando o caractere atual.
fonte
Tela , 12 bytes
Experimente aqui!
fonte
Python 2 ,
7673 bytes-3 bytes graças a Lynn .
Experimente online!
fonte
Carvão , 14 bytes
Experimente online!
Quão?
... este método pode ser jogado no golfe?
fonte
×⊕κι
duas vezes.ι
eκ
mudam a cada iteração do loop Each.Stax , 12 bytes
Execute e depure
Usando este algoritmo .
Explicação:
Stax ,
20191816 bytesExecute e depure
Explicação:
fonte
Anexo , 34 bytes
Experimente online!
Explicação
Funciona de maneira semelhante à resposta J de Galen Ivanov .
fonte
K (ngn / k) , 16 bytes
Experimente online!
fonte
C (gcc) , 130 bytes
Quem precisa de matemática sofisticada quando pode bruteforce?
Experimente online!
fonte
QBasic 1.1 , 127 bytes
-4 graças ao DLosc .
Usa uma versão modificada do algoritmo Python 2 do xnor .
Entrada é uma cadeia de caracteres não citada. A saída é
\n
separada sem espaços ou\n
s extras .fonte
QBasic , 111 bytes
Uma função anônima que solicita entrada e saída para o console.
fonte
Php 7.1 , 163 bytes
Via CLI, fornecendo o número como argumento:
Não é tão golfe:
Saída:
Método:
Construa basicamente quadrados de matriz multidimensionais que consistem no dígito e sobreponha todos eles (array_replace_recursive).
(Sim, eu sei que isso é embaraçosamente longo.)
fonte
Ruby , 80 bytes
Experimente online!
Semelhante à resposta ovs
fonte
Japonês, 12 bytes
Recebe a entrada como uma string, gera uma matriz de strings.
Tente
Explicação
fonte
uBASIC , 120 bytes
Uma função anônima que recebe a entrada foprm STDIN e sai para STDOUT
Experimente online!
fonte
Visual Basic .NET (VBC) , 198 bytes
Uma
Sub
rotina que recebe entrada de STDIN e sai para STDOUT.Não foi possível fazer o StrDup funcionar: /
Experimente online!
fonte
Lua,
149140 bytesFunção que aceita uma lista de cadeias de dígitos e imprime o resultado em stdout. Esta é minha primeira tentativa de código de golfe (e a escolha do idioma também não está ajudando), então tenha paciência comigo :)
Experimente online!
Ungolfed:
fonte
Perl 5 +
-nalF -M5.010
, 67 bytesExperimente online!
fonte
Yabasic , 108 bytes
Uma função anônima que recebe entrada de STDIN e sai para STDOUT
Experimente online!
fonte