Desafio
Crie uma função ou programa que, quando fornecido um número inteiro size
, faça o seguinte:
Se size
for igual a 1, a saída
H H
HHH
H H
Se size
for maior que 1, a saída
X X
XXX
X X
onde X
é a saída do programa / função parasize - 1
(Se preferir, você pode corresponder ao caso base 0
, desde que você especifique em sua resposta)
Qualquer um dos seguintes formatos de saída é aceitável, o que for mais conveniente para você:
Uma sequência da estrutura necessária com dois caracteres distintos correspondentes a
H
espace
Uma matriz bidimensional com a estrutura necessária, com quaisquer dois valores distintos correspondentes a
H
espace
Uma matriz / lista de cadeias, com uma linha da saída em cada cadeia, com quaisquer dois valores distintos correspondentes a
H
espace
Os espaços à esquerda são permitidos, desde que haja uma quantidade constante de espaços à esquerda em cada linha. Os dois caracteres de saída distintos podem depender de qualquer coisa que você escolher, desde que sejam diferentes.
Especifique qual formato de saída seu código está retornando.
Casos de teste
1
H H
HHH
H H
2
H H H H
HHH HHH
H H H H
H HH HH H
HHHHHHHHH
H HH HH H
H H H H
HHH HHH
H H H H
3
H H H H H H H H
HHH HHH HHH HHH
H H H H H H H H
H HH HH H H HH HH H
HHHHHHHHH HHHHHHHHH
H HH HH H H HH HH H
H H H H H H H H
HHH HHH HHH HHH
H H H H H H H H
H H H HH H H HH H H H
HHH HHHHHH HHHHHH HHH
H H H HH H H HH H H H
H HH HH HH HH HH HH HH HH H
HHHHHHHHHHHHHHHHHHHHHHHHHHH
H HH HH HH HH HH HH HH HH H
H H H HH H H HH H H H
HHH HHHHHH HHHHHH HHH
H H H HH H H HH H H H
H H H H H H H H
HHH HHH HHH HHH
H H H H H H H H
H HH HH H H HH HH H
HHHHHHHHH HHHHHHHHH
H HH HH H H HH HH H
H H H H H H H H
HHH HHH HHH HHH
H H H H H H H H
Isso é código-golfe , então a contagem de bytes mais baixa para cada idioma vence!
fonte
Respostas:
Wolfram Language (Mathematica) , 46 bytes
Devolve uma matriz 2-D de
0
s e1
s.Experimente online!
fonte
Nest
(repetidamente) a função várias vezes. Como quaisquer outros envios (Jelly?) OArrayFlatten
é ... bem, embutido, mas se comporta de maneira semelhante a umFlatten[#,{{1,3},{2,4}}]
neste caso. (não testou) #Tela ,
1412 bytesExperimente aqui!
Explicação:Onde
I
está a entrada,X
é o padrão gerado pelo loop anterior ("H" para o primeiro loop) e<space>
é o espaço vazio na primeira e terceira linha do padrão, incluído implicitamente por+
.-2 bytes graças ao dzaima !
fonte
MATL ,
1211 bytesDada a entrada
n
, isso gera uma matriz contendo0
en
.Experimente online!
Para converter isso em uma matriz de caracteres
H
e espaço, adicioneg72*c
no cabeçalho. Experimente online também!Ou adicione
]1YC
para ver a matriz exibida graficamente. Experimente no MATL Online!Explicação
fonte
Stax ,
1615 bytesExecute e depure
Esta é a representação ascii do programa com comentários. Este programa constrói o H lateralmente e depois transpõe uma vez no final.
Programa de 14 bytes de bônus - usa sua entrada como caractere de saída. Teoricamente, isso não produziria a forma correta aos 10 anos, pois possui 2 dígitos, mas a tentativa de executar isso trava meu navegador.
fonte
Ruby , 72 bytes
Saída é uma lista de cadeias, uma cadeia por linha.
Experimente online!
fonte
Haskell , 50 bytes
Experimente online!
Cria uma grade de 0 e 1. Um personagem a mais para espaços e Hs.
Haskell , 51 bytes
Experimente online!
fonte
Geléia ,
171615 bytesEste é um programa completo que imprime uma matriz 2D de 1 e 0 .
Experimente online! ou veja a saída com H e espaços.
fonte
APL (Dyalog Classic) , 14 bytes
Experimente online!
⎕
entrada avaliada f—,⍳⎕⍴3
todas as n-tuplas com elementos de 0 1 22|
mod 2×/¨∘.≥⍨
forme uma matriz comparando todos os pares de tuplas aeb - se todos os elementos de a forem ≥ os elementos correspondentes de b, será a 1, caso contrário, 0fonte
SOGL V0.12 , 13 bytes
Experimente aqui!
fonte
R , 64 bytes
Experimente online!
Reduz pelo produto Kronecker, como uma porta descarada da resposta de Luis Mendo .
O rodapé imprime bem o resultado, mas essa é uma função anônima que retorna um
matrix
de1
paraH
e0
um espaço.fonte
Java (OpenJDK 9) , 135 bytes
Experimente online!
Retorna um
int[][]
com0
paraH
e1
paraspace
. Isso na verdade "esculpe" uma parede deH
em vez de "empilhar"H
.Explicações
fonte
V , 22 bytes
Experimente online!
Hexdump:
Esta é basicamente a mesma abordagem que o tapete de Sierpinski e The Fractal Plus no Anarchy Golf.
fonte
Python 2 , 70 bytes
Experimente online!
A função gera uma lista de strings.
Python 2 , 84 bytes
Experimente online!
Usa o mesmo modelo que outros padrões de fractal 3 * 3:
fonte
J ,
2522 bytesExperimente online!
fonte
Haskell,
73676455 bytesIsso funciona apenas com a versão mais recente do
Prelude
, porque exporta<>
deData.Semigroup
. Para executá-lo no TIO, adicione uma importação conforme feito aqui: Experimente online!Edit: -9 bytes graças a @ Potato44.
fonte
(#)
para baixo parag#f=g<>f<>g
se você usar GHC 8.4. Isso ocorre porqueSemigroup
agora está no prelúdio.Perl 5 ,
4644434140 bytes1 contagem baseada. Usa
0
e1
paraH
e espaço, tem um líder1
(espaço)Baseado em uma idéia clássica de mtve.
Experimente online!
fonte
\321
é necessário, qualquer personagem parece funcionar.//
e$'
também pode substituir//g
e$`
, mas não tenho certeza se isso leva a uma melhoria.\321
estava o complemento de bit.
(usado para gerar outro padrão fractal). Mas eu larguei o complemento de bits, então é claro que não preciso mais disso. Eu usei//g
e $ `para que eu possa testar facilmente o código a partir da linha de comando (//
e$'
não levar a um ganho que eu possa ver, o byte ganho é desperdiçado com um espaço ou!
mais)Vim -
665654 bytesA @ c H esc " r d ^ q c { ctrl-v } " a y g v r space g v d " a P P " a P V G " b y P g v ctrl-v $ d " a P . . G " b p q @ r
A entrada é tomada como um número no buffer.
fonte
:set nowrap
para ver o resultado, por 4 e mais.APL (Dyalog Unicode) ,
3834 bytes SBCSA saída é uma matriz bidimensional com
1
representação H e0
espaço representativo.Experimente online!
fonte
f←
e contar caracteres como 1 byte cada um: codegolf.meta.stackexchange.com/questions/9428/... É também considerada legal para receber a entrada de⎕
, ou seja, substituir⍣⍵
com⍣⎕
e soltar chaves do DFN exterior.1 1⍴1
pode ser gravado à medida que⍪1
as parênteses ao redor do operador se tornam desnecessárias. Se você conhece os trens, eles podem ajudar muito aqui.⍨
é seu amigo:(⍵,(0×⍵),⍵)
=>(⍵,⍵,⍨0×⍵)
Carvão ,
3029 bytesExperimente online! Link é a versão detalhada do código. Explicação:
Imprima o original
H
.Faça um loop sobre as primeiras
size
potências de 3.Mova o cursor de volta à origem.
Trim
precisa disso, pois a impressão originalH
e a reflexão abaixo movem o cursor.Copie a iteração anterior para baixo, criando um dominó.
Copie o resultado para baixo e para a direita, criando um tetromino.
Apare a tela em uma
L
forma triomino.Reflita a tela horizontalmente e verticalmente com sobreposição, concluindo a iteração.
O carvão é melhor em alguns fractais do que outros. Aqui está uma ideia semelhante, mas em quase metade do tamanho:
Experimente online! Link é a versão detalhada do código.
fonte
Python 2 , 143 bytes
Experimente online!
-30 bytes graças ao recurso recursivo
O código do wrapper é para uma boa formatação. funciona bem se você removê-lo
fonte
PHP 7,
125109 bytesuma abordagem diferente: em vez de aninhar e achatar o resultado recursivamente, isso apenas percorre as linhas e colunas e usa um terceiro loop para descobrir se imprimir
H
ou_
.Editar: economizou muito combinando os loops de linha / coluna a um, embora demorasse um pouco para corrigir a diminuição do loop interno. Requer PHP 7 para o operador de energia.
Experimente-os online !
imprime o resultado. Executar como tubo com
-nR
.função qualificada,
147130 bytesretorna uma única string. Execute com a configuração padrão (não
php.ini
).fonte
%3==1
pode ser substituído por%3&1
.Geléia , 25 bytes
Experimente online!
Embora isso seja mais longo que o envio existente do Jelly , ele tenta gerar cada caractere independentemente, apenas a partir da coordenada.
Em particular, se a coordenada é
, respectivamente.
(x,y)
(1-indexação), a primeira ligação retornos0
e1
corresponde aH
eAlém disso, os 5 bytes
ị⁾ HY
são usados para formatação, portanto, este programa (20 bytes) também é válido (mas a saída não parece tão boa):fonte
T-SQL ,
267261 bytesfonte
PHP 7, 153 bytes
Execute com a configuração padrão (não
php.ini
) ou tente online .fonte
Perl, 64 bytes
Requer
-p
, a entrada é retirada do stdin. A saída é um H deH
s.Experimente online!
fonte
-p
mais (eu acho que é demasiado branda para perl, mas é assim que é agora)PHP (5.6 ou superior), 94 bytes
Usado com a
-F
opção de linha de comando. Assume os padrões do intérprete (-n
). Não funcionará em versões anteriores à 5.6, devido ao operador de energia.Uso da amostra
Experimente online!
fonte
$s.$s.$s
vez de$s.=$s.$s
. E você não precisa de,<?
em-R
vez de-F
.-R
, você pode me mostrar o uso completo?-nF
:echo <input> | php -nR '<code>'
.-r
é quase o mesmo:php -nr '<code>' <arguments>
.preg_filter
é iterar cada linha enquanto preserva novas linhas, aproximadamente equivalente ajoin("\n",array_map(function(){...},split("\n",$s.$s.$s)))
, mas significativamente menos detalhada. Inicialmente, eustr_pad
mudei parasprintf
porque é um byte mais curto:'"\0".str_pad($$i++/$i&1?"\0":"",$i)."\0"'
CJam -
103978776 bytesEste programa faz uma recursão "codificada à mão" bastante detalhada. Nenhuma multiplicação de matriz inteligente. Durante a recursão, no topo da pilha, há uma matriz que reúne a saída obtida com as chamadas pai. Logo após cada conjunto de chamadas recursivas, a saída das chamadas recursivas precisa ser compactada, para garantir que a saída esteja correta quando a pilha for impressa linearmente no final do programa. A pilha de argumentos a ser transmitida a recursividade é mantido na variável
A
.Experimente on-line
fonte
K (ngn / k) , 18 bytes
Experimente online!
fonte
Japonês , 23 bytes
Experimente online!
Descompactado e como funciona
Usando o padrão transposto
é muito mais fácil de manusear do que o
H
padrão original , pelo menos em Japt, onde issoI
pode ser feito com repetição de cordas e preenchimento central.fonte
C ++ 11 - 138 bytes
Não tenho certeza se esta resposta tem uma sintaxe válida aqui, no entanto.
Ungolfed com código de trabalho
fonte