Quadrados parecem simétricos, assim como os códigos necessários.
Objetivo : Escreva um programa cujo código-fonte seja um quadrado sólido (N linhas com N caracteres imprimíveis em branco, cada espaço em branco) e imprima um quadrado do mesmo tamanho. Um programa (ou saída) com largura e altura inconsistentes é inválido. (por exemplo, 6x5)
Exemplo (HQ9 +)
QAA
AAA
AAA
Exigências
- Tanto a origem quanto a saída devem conter N linhas e N caracteres imprimíveis em cada linha, seguidos por 1 avanço de linha. Seu programa não deve conter ou gerar caracteres de controle (exceto LF ou CR-LF) ou espaços em branco (espaço, tabulação, VTab)
- As brechas padrão são chatas, não as use.
- Um programa (e saída) com apenas um caractere é fundamentalmente nada. N deve ser pelo menos dois.
- O conteúdo da saída não importa, desde que cumpra a regra 1
- Regra especial : não use comentários ou códigos que não afetem a saída para "preencher" seu código.
Para ser claro, você pode usar emi++;i++;... i++;
vez dei+=10;
, mas não deve definir uma variável,string s="placeholder"
mas nunca usá-la mais tarde. É muito fácil contornar essa regra, portanto, não seja muito rigoroso. - Se você deseja gerar uma nova linha antes de todo o resto, tudo bem, mas declare que está usando esta regra.
Se você deseja gerar a última linha sem um avanço de linha bem-sucedido, tudo bem também e você não precisa declará-la. No entanto, isso não afeta a pontuação.
Adicional : forneça o número N (largura / altura) que seu programa está usando. Forneça descrições do seu código, se possível.
Não há necessidade de fornecer o comprimento (em bytes) do seu programa porque o N diz tudo.
Por ser um código de boliche , o programa com o maior N e a maior complexidade vencerá.
Respostas:
JavaScript (ES6), N = 5
Com uma nova linha principal em vez de uma nova linha à direita.
JavaScript (ES6), N = 6
JavaScript, N = 7
JavaScript, N = 202
fonte
N = 4
(apenas não tenho certeza se a nova linha no início é permitida).Perl 5, 5 × 5
Isso é um pouco ofuscado para torná-lo mais interessante, então aqui está uma explicação:
q.u.
é exatamente o mesmo que'u'
. O que se seguex
é o operador de repetição , então'u'
é repetido$]
vezes.$]
está entre 5 e 6 , então'u'
é repetido 5 vezes. Em seguida, você acrescenta a nova linha$/
eprint
a coisa toda. Tudo isso é feito uma vez para cada membro da listat..x
:t
ex
como palavras de barra são atribuídos os valores't'
e'x'
respectivamente, e a lista é assim't','u','v','w','x'
. Então a saída é:fonte
Rubi, 3x3
Impressões
Experimente online!
Como funciona
p
é um método que imprime cada um de seus argumentos e, em seguida, retorna o valor (ou uma matriz dos valores) impressos. Se for chamado sem argumento, ele não imprime nada e retornanil
. Assim, osp
s nas linhas 2 e 3 avaliam todosnil
e o primeirop
imprime essesnil
s.fonte
Python 3 , 29 bytes
Experimente online!
5x5 pode ser feito. Impressões:
fonte
Carvão , n = 2
Solução chata (o carvão apenas imprime ASCII literalmente):
Experimente online!
fonte
<?
/<?php
.C, N = 7
Imprime uma grade 7x7 de
%
, ou seja,fonte
brainfuck , 9x9
Experimente online!
Emite um quadrado de
+
(a função mais fundamental do cérebro).Estarei de volta quando descobrir como converter isso em uma solução, tão grosseiras três semanas ou mais ...
fonte
Haskell,
7x76x6Saídas
Experimente online!
Como funciona:
Com os sinalizadores do compilador permitidos, há uma solução 5x5:
Haskell, 5x5 (com sinalizador de compilador -cpp)
Experimente online!
-cpp
chama o pré-processador cpp que permite dobrar linhas via\
.fonte
SOGL V0.12 , N =
32Experimente aqui!
A primeira linha -
H$
significain the continuing lines replace $ with H
, resultando na próxima linhaHQ
. Isso então é executado:Achei isso forçando brutalmente todos os programas no comprimento 2 (como qualquer programa como
..\n..
sempre se resume a um programa de 2 caracteres)fonte
Python 2 , n = 6
Experimente online!
Não é tão golfe quanto poderia ser, mas ... tenho que preencher as lacunas de alguma forma, não tenho: P
fonte
print
si é de 6 bytes e 1 byte '\' é a menor compulsão."print"
e depoiseval
disso, mas eu acho que você vai ir longe demais para caber em um5x5
...Ruby , n =
65Economizou 12 bytes graças a m-chrzan
Experimente online!
Sim, pretendo fazer o Leaky Nun nestaEDIT:: / restrições de fonte são piores do que eu pensava para a maioria dos esolangs e também para idiomas normaisfonte
puts
.> <> , N = 3
Imprime
Experimente online ou assista no playground de peixes !
Isso é um pouco complicado, então tenha paciência comigo. O peixe começa no canto superior esquerdo e entra imediatamente no modo de corda. Ele envia os códigos de "v" e "n" para a pilha, que são 118 e 110, respectivamente. O peixe então envolve e bate
"
novamente, saindo do modo de corda. Emv
seguida, ele envia o peixe para baixo e o/
reflete, deixando:
o topo da pilha: a pilha agora é 118, 110, 110.O peixe então envolve e
^
envia um loop:Esse loop imprime a parte superior da pilha como um número (
n
), envolve e salta, empurraa
= 10 = avanço de linha para a pilha, depois imprime como um caractere (o
) e inicia o loop novamente. Quando a pilha está vazia, ocorren
um erro e o programa é interrompido.Foi observado nos comentários que interromper com um erro é bastante insatisfatório. Portanto, ofereço uma alternativa que para naturalmente, em um quadrado 4x4:
Imprime
Experimente online!
fonte
something smells fishy...
não conta, já que tecnicamente é impressa quando o programa falha (o IIRC é impresso em STDOUT).V , 11 bytes
Experimente online!
Deve ser uma solução válida de 5 bytes, mas infelizmente essa funcionalidade está ausente. :(
fonte
CJam, n = ∞
Versão raiz: n = 2
Experimente Online
Impressões
Pode ser estendido para qualquer n acrescentando números a cada linha. Por exemplo:
n = 11
Impressões
Experimente Online
fonte
Próton , N = 5
Experimente online!
fonte
Ly , 11 bytes
Experimente online!
Um quine padrão colocado na forma de um quadrado.
fonte
Perl 5 , 4x4
Experimente online!
Requer
-M5.010
na linha de comando.fonte
-M5.010
tem o mesmo efeito que uma linha no arquivo que lêuse 5.010;
?use 5.010
ou-M5.010
pode ser considerado gratuito, uma vez que a maioria dos recursos importados pode ser acessada executando o script via emperl -E
vez de terperl -e
o mesmo tamanho.perlvar
qualquer maneira), caso contrário, você poderia obter um 3x3 com algo parecido com isto ... Mas ainda hoje brinca com isso hoje!cérebro , N = 6
Indiscutivelmente, isso não é válido, pois eu escolhi arbitrariamente o caractere de saída como sendo 3 pontos de código mais baixos para corrigir o quadrado ...
Experimente online!
fonte
Python 3 , N = 13 (181 bytes)
Experimente online!
Não vejo por que isso não seria válido, já que não há uma regra que me obriga a não usar essa técnica (eu acho). Isso imprime uma grade 13x13 de octothorpes.
fonte
Aceto , 3x3
Converta o zero implícito em float (
0.0
), duplicar, imprimir, nova linha, duplicar, imprimir, nova linha, imprimir, nova linha.Versão antiga que pode ser inválida:
Aceto é meio que feito para esse tipo de desafio; todos os programas são quadrados, pelo menos internamente. Pode ou não ser válido, pois na saída a linha final não termina com um avanço de linha. Simplesmente calculamos 2 ^ 7, ativamos o modo fixo e imprimimos três vezes com novas linhas entre elas.
fonte
Gaia , 3 x 3
Experimente online!
Explicação
Gaia, 2 x 2
Não tenho certeza se isso é válido, já que é uma trapaça (
Øg
lê o arquivo de origem do programa).fonte
PHP, n = ∞
Não sei se isso é uma brecha, mas aqui está a
2
versão:Impressões
Experimente online!
Com n = 10
Experimente online!
Pode ser estendido para qualquer número.
fonte
Python 3 , n = 6
Experimente online!
Quase o mesmo que a resposta do Python 2, apenas com parens: /
Posso torná-lo mais diferente se alguém quiser: P
fonte
TI-BASIC, N = 2
Observe que
Disp
(incluindo o espaço) eXmax
são cada um caractere. Como Xmax é 10 por padrão, a saída é:fonte
WendyScript , 5x5
produz:
Experimente online!
fonte
Python 2 , n = 5
Experimente online!
Variante Python 2 da resposta de Sísifo
fonte
VBA do Excel, n = 15
Sub-rotina declarada que recebe uma variável de entrada vazia, (para saída) e as saídas variam
[A1]
, através de uma caixa de mensagens e janela imediata do VBE, e através da variável de entradaOs formatos automáticos acima para
e saídas
fonte
Encantos Rúnicos , n = ∞ (mínimo 7x7)
Experimente online!
Alavanca fortemente a capacidade da Runic de lidar com vários indicadores de instruções simultaneamente. O que uma quine dobrou? Ora, uma dose duas vezes mais.
Todos os
.
comandos são como a expressão básica de quine"'<~S@|
pode ser expandida para ter largura arbitrária. Cópias adicionais do quine expandem o quadrado verticalmente. As novas linhas e a saída são tratadas pela última linha, canalizando todos os IPs quine para uma única expressão terminadora, a seguirRak@
, que pressiona um caractere de nova linha e despeja toda a pilha de cima para baixo na saída. A última linha em si também produz uma linha de saída,.@kaR<00
para manter o tamanho da estrutura necessário. Como a última linha sai primeiro, não há nova linha inicial ou final.Existem quines mais curtos (a saber
'<~@|"
), no entanto, a última linha é limitada a 7 caracteres ou ela não pode produzir saída com a largura correta (@"<Rak
tem 6 caracteres, mas gera apenas 5 caracteres).Eu também tentei codificar o menor quadrado possível. Foi o melhor que pude fazer.
Encantos Rúnicos , n = 6
Experimente online!
Clona repetidamente a parte superior da pilha, imprime-a e alterna os dois itens principais para imprimir
100000
seis vezes com 5 novas linhas entrelaçadas.E então, porque eu poderia:
Encantos Rúnicos , n = 9
Experimente online!
Programa quadrado 9x9 que gera uma solução quadrada 9x9 (com nova linha principal).
Isso é feito criando o quine de 9 bytes como uma sequência e depois
E
valorizando-a 4 vezes, multiplicando-a por 5 ("abc"*3
->"abcabcabc"
) e avaliando mais uma vez as últimas 5 cópias. Isso é feito dessa maneira para preencher o quadrado 9x9 até a borda.fonte
Língua Wolfram (Mathematica) , n = 5
Saídas
Suponha que você não conte
>>
que seria o menor, porque apenas a função de impressão éPrint
eEcho
. Você também deve colocar pelo menos 1 caractere após a função para chamá-lo.Experimente online!
Saídas
com uma nova linha à direita
n = 7
Experimente online!
Saídas
com uma nova linha à direita
fonte
Perl 5, 9x9
Explicação
O
for
loop externo está sobre a sequência1 .. ($= / 7)
. $ = é 60, então o loop é executado de 1 ao piso 60/7, que é 8.A primeira instrução no loop externo
$qq = ($q=$_)**7
, atribui à variável$q
o valor do índice$_
do loop e atribui$qq
o valor$q
à sétima potência.Depois vem o loop interno, que está sobre a sequência
$qq % 7 .. $q / 7
(%
é módulo).Assim, o loop interno é executado três vezes no total: duas vezes quando o índice do loop externo é 7 e uma vez quando o índice do loop externo é 8.
O loop interno faz o
map{...} 0..2
que é outro loop, desta vez sobre a sequência0 .. 2
, e faz o seguinte três vezes:Os
qq
são o operador de aspas duplas , portanto, apenas imprimeqqq
eqqqqqq<newline>
.Assim, a saída é
Experimente online.
fonte