Escreva um programa ou função que obtenha um número inteiro não negativo N de stdin ou como argumento de função. Ele deve imprimir ou retornar uma sequência de um quadrado oco de arte ASCII, cujos lados são feitos cada um com N cópias do número N.
Especificamente:
Se N for 0
, nenhuma cópia de N será usada; portanto, não deverá haver saída (ou apenas uma única nova linha à direita).
Se N for 1
, a saída é:
1
Se N é 2
:
22
22
Se N é 3
:
333
3 3
333
Se N é 4
:
4444
4 4
4 4
4444
Se N é 5
:
55555
5 5
5 5
5 5
55555
O padrão continua 6
até o fim 9
.
Se N for 10
, a saída é:
10101010101010101010
10 10
10 10
10 10
10 10
10 10
10 10
10 10
10 10
10101010101010101010
Observe que isso não é realmente quadrado. Tem 10 linhas de altura, mas 20 colunas de largura porque 10
tem dois caracteres. Isto é pretendido. O ponto é que cada lado do "quadrado" contém N cópias de N. Portanto, todas as entradas além 9
serão tecnicamente retângulos ASCII.
Por exemplo, se N for 23
, a saída é:
2323232323232323232323232323232323232323232323
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
2323232323232323232323232323232323232323232323
Aqui estão Pastebins das saídas necessárias para 99
, 100
, 111
e 123
(eles podem olhar errado em um navegador, mas em um editor de texto que vai olhar correto). A saída para 1000
é grande para Pastebin, mas ela teria 1000 linhas e 4000 colunas. Números com 4 ou mais dígitos devem funcionar como números menores.
Detalhes:
- N deve ser escrito na representação usual do número decimal, sem nenhum
+
sinal ou outro dígito. - A área oca deve ser preenchida apenas com espaços.
- Nenhuma linha deve ter espaços à esquerda ou à direita.
- Uma única nova linha após a última linha dos quadrados é opcionalmente permitida.
- Os idiomas escritos depois que esse desafio foi feito são bem-vindos, eles simplesmente não são elegíveis para ganhar .
- O código mais curto em bytes vence!
fonte
Respostas:
Jolf,
31272523 bytesIsso é codificado na codificação ISO-8859-7 e contém não imprimíveis, então aqui está um hexdump:
Experimente este violino online ou verifique todos os casos de teste de uma só vez (use o botão de execução completa) .
Isso sai com um erro para n = 0, que é permitido por padrão.
Agradecimentos massivos a Conor por jogar golfe fora
46! bytes. inb4 riscado quatro ainda parece um comentário de quatroExplicação
fonte
xxd -r
.Shtriped , 317 bytes
Enquanto estou fazendo a pergunta, posso mostrar minha nova linguagem "purista".
(definitivamente funciona na v1.0.0 )
Não há operações matemáticas embutidas no Shtriped, exceto incremento e decremento. Também não há loop ou condicionais, portanto, tudo isso precisa ser construído do zero em todos os programas.
Isso é o que meu programa faz, por exemplo,
@
é essencialmente um loop for,+
é uma função disso,}
é>=
. A saída real é produzida apenas nas últimas 8 linhas do programa.Também não há strings no Shtriped. Você pode receber e imprimir seqüências de caracteres, mas todas elas são representadas internamente como números inteiros de precisão arbitrários que só podem ser incrementados e decrementados. Portanto, não há uma maneira fácil de obter o comprimento da corda
10
para preencher o centro do quadrado com a quantidade certa de espaços. Eu tive que juntar a função~
que efetivamente calculafloor(log10(N)) + 1
para encontrar o comprimento de N em decimal.Isto poderia provavelmente ser golfed um pouco mais, reorganizando onde e como que as variáveis são usadas, mas não que muito mais. Não há como contornar as limitações inerentes ao Shtriped. (Nunca foi para ser uma linguagem de golfe de qualquer maneira.)
Código comentado (uma barra invertida é um comentário):
fonte
Sério,
32313029 bytesExperimente online!
Explicação:
fonte
JavaScript (ES6),
73 8278 bytesSalvo bytes a4 graças a @ user81655
Pega uma string, não um número para entrada.
Experimente online (todos os navegadores funcionam)
fonte
*(n-2)
por*~-~-n
para salvar um byte.MATL ,
342926 bytesIsso funciona com a versão atual (13.0.0) do idioma / compilador
Experimente online!
fonte
T-SQL / SQL Server 2012 ou superior,
167161 bytesResultado:
LiveDemo
Digite o tamanho desejado e clique Run querypara obter a representação do texto.
Observe que esta demonstração não exibe fonte de largura fixa . Então
7
é mais grosso que1
.EDITAR:
Se tratarmos a entrada como uma string:
LiveDemo2
fonte
Julia, 78 bytes
Essa é uma função anônima que aceita um número inteiro e imprime o retângulo ASCII em STDOUT. Para chamá-lo, atribua-o a uma variável.
Ungolfed:
Experimente online
fonte
Ruby, 100 bytes
Pena que eu não conseguia nem vencer JS. Qualquer ajuda adicional a ser apreciada seria apreciada.
Aqui está uma versão mais ou menos ungolfed:
fonte
n.to_s
já que a usa muito, fornecendom*n
a primeira em+" "*[(n-2)*m.length,0].max+m
a segunda parte.Retina, 76 bytes
A explicação talvez venha amanhã.
Experimente online aqui.
fonte
C ++ 14, 156 caracteres
Eu pensei que era uma solução muito legal, mas obviamente não pode bater a maioria das outras entradas aqui.
Ungolfed:
E, como sempre, para chamar a função use
[](string t) { ... }("10");
fonte
TSQL,
112104 bytesfonte
Minkolang 0.15 , 57 bytes
Experimente aqui!
Explicação
fonte
Perl,
797674 bytesBem direto. O primeiro argumento da linha de comando é considerado o número. Coloque o script em um arquivo e execute com
perl file.pl 1
.fonte
shift
pode ser substituído porpop
.Perl,
626058 + 2 = 60 bytesRequer
-nlE
sinalizadores:Com espaços adicionados:
fonte
R, 90 bytes
Isso cria uma matriz de
x*x
tamanho e, em seguida, preenche espaços de tamanhonchar(x)
. Sex
menor que 2, nada está sendo preenchido.fonte
x=scan();m=matrix(x,x,x);m[k<--c(1,x),k]=format("",w=nchar(x));write(m,"",x,,"")
é 10 bytes a menos usando a indexação negativa e substituindon=x,s=''
porx,,''
tio.run/nexus/r#DYpBCsAgDAT/…write("[<-"(matrix(x<-scan(),x,x),k<--c(1,x),k,gsub("."," ",x)),1,x,,"")
por 72 bytes.Pitão - 26 bytes
Experimente online aqui .
fonte
Pip
-l
, 21 bytesUsa recursos de idioma mais recentes que a pergunta, permitida pela política atual; se o texto da pergunta for interpretado para substituir a política, consulte a resposta de 25 bytes abaixo.
Experimente online!
Obrigado à resposta de Luis Mendo no MATL pelo
(a+1)%n<2
truque.Explicação
Yq
lê uma linha de stdin e a puxay
. Então:Resposta original de 2016, 25 bytes (
-l
sinalizador positivo ):Changelog:
MC
foi adicionado mais recentemente; na época, eu useiMMCG
(mapa-mapa + grade de coordenadas).++
em listas, então eu tive que fazer++*
(aplicar++
a cada elemento).M
ap foi estendido: agora<string1> M <string2>
retorna uma lista delen(<string2>)
cópias de<string1>
; Na época, eu usei osX#y
espaço de repetição de caracteres porlen(y)
.fonte
Pitão,
3730 bytesExperimente aqui.
fonte
Retina , 90
Mais uma vez, tenho certeza de que isso será bastante praticável pelos especialistas:
Experimente online.
fonte
¶
em vez de;
se livrar da última etapa?)[^¶]+
é prático.+
.Gelatina, 28 bytes
Grr, não posso dizer se Jelly é ruim em cordas, ou se eu sou ruim em Jelly.
Experimente online.
fonte
Pyke , 33 bytes (não competitivo)
Explicação:
fonte
CJam, 27 bytes
Obrigado a @ MartinBüttner por sugerir
ff
. Oa+[0X(]&
é bastante suspeito, mas tudo bem.Experimente online!
fonte
Python 2, 70 caracteres
fonte
Haskell, 78 bytes
Exemplo de uso:
A função
>>
é útil:<list> >> <string>
fazlength <list>
cópias de<string>
, por exemplo, as linhas superior e inferior dex=10
are[1..10] >> "10"
->"10101010101010101010"
.fonte
1
qual um grito produz um único1
. Além disso, você retorna uma lista de cadeias, enquanto o desafio solicita uma única cadeia. Tínhamos regras de E / S muito mais rígidas na época, regras de E / S flexíveis são uma coisa mais recente.Perl, 72 bytes
Depende dos recursos modernos do Perl:
está disponível automaticamente desde o Perl 5.10 (basta usar a v5.10 ou posterior).
aceita muito bem para trabalhar em um rvalue (um str_expr não necessariamente reduzida para uma variável escalar) para se obter um r esultado (o ' r opção' no final da regex) sem alterar o str_expr inicial.
fonte
PHP, 151 bytes
Bagunça absoluta, precisa de mais tempo para otimizar.
s(Number)
fornece a saída.fonte
Java 8, 280 bytes
É apenas cerca de 10 vezes contanto que as respostas mais curtas, o que é realmente bom para Java!
Exemplo de execução:
fonte
Python 3,
10896148 bytesUngolfed / explicou:
Como esta é minha primeira resposta ao código-golfe , algumas críticas e / ou sugestões construtivas seriam úteis!
fonte
while b!=0:print(a+" "*int(len(a))*c+1);b-=1
. Além disso,while b:
é equivalente awhile b!=0
, então são mais 3 bytes.Ferrugem,
141137 bytesAbusou de algumas coisas de formatação, caso contrário, isso levaria muito mais tempo.
Desembalado:
Link para parque infantil
fonte
Powershell,
989695838275 bytesScript de teste simples e explicado:
Resultado:
fonte