Resultado
# # # # # ##### ## # ## #### ####### # # ## #### ## ## # ### ####### # # # # ##### ### # # # # ### ##### ##### # # # # ####### ### # ### # ## #### ## # # ### # ####### ## # ## ##### ##### # # # # ## # # # # ##### # ## ## ####### # ####### #### ## # ### ### # # # # # ##### # # # # ### ##### # #### ####### ### # ## ## ## # # ####### # # ####### # # # # ##### ## # # ####### # # ## ## ## # ### ####### #### # ##### ### # # # # ##### # # # # # ### ### # ## #### ####### # ####### ## ## # ##### # # # # ## # # # ##### ##### ## # ## ####### # ### # # ## #### ## # ### # ### ####### # # # ##### ##### ### # # # # ### ##### # # # # ####### ### # ## ## #### ## # # ####### #### ## # ## ##### # # # # # # ## #### # # # # ### ####### ## # # ## ##### ## # ### # # ## # ### ####### ##### ### # # # # # ## #### #### ## # # # # # # # # ##### ## #### ####### # #### ## ## # ### # # # # ##### # # ### ##### ##### # # ####### ### # ### # ## ## # # ### # ####### # ## ##### ##### # # ## # # # ## ## ####### #### ### # # # # # # # # ### #### ####### ## ## # # # ##
Espaços à direita permitidos. A solução mais curta vence.
dica1:
obrigado @Tahg por corrigir a dica1
Respostas:
SOGL V0.12 ,
171614 bytesExperimente aqui!
Em uma atualização posterior,
č▓
poderia ser removido por 12 bytes - que converte ToS de uma matriz de matrizes de caracteres em uma cadeia de linhas multilinhas em uma matriz de cadeias de caracteres -[["#","#"],[" ","#"]] -> ["##"," #"]
- porque┼
- anexo horizontal - não lida bem com matrizes de matrizes de caracteres - queI
cria, porque também é usado para rotação de array. No SOGL, uma matriz de matrizes de caracteres deve ser = matriz de strings, mas muitas coisas ainda não suportam isso.Explicação:
fonte
JavaScript (ES6),
233217213198182170163122 bytesEdit: Salvo
1418 bytes graças a @Shaggy. Economizou 3 bytes graças a @ngn. Economizou mais 12 bytes graças aos dois trabalhando juntos. Economizou 41 bytes roubando as observações de @ user202729 de que os trimestres usam reflexos em vez de rotações. Ungolfed:fonte
f=
aqui? Bem feito, a propósito.f=
da contagem de bytes, mas o snippet de código não funciona sem ele.LOGO,
375341297295278 + 3 bytesAdicione 3 bytes por causa do
-p
sinalizador, que habilita o modo de perspectiva por padrão e, portanto, não precisa executar operspective
comando, economiza 9 bytes no geral.Use o FMSLogo no Windows com o formato de nova linha Unix (LF) (FMSLogo tem problema ao analisar o formato de nova linha CR)
Infelizmente, não há "Experimente online!" link porque não consigo encontrar nenhum modo de perspectiva de suporte ao intérprete online.
Idéia: desenhe uma imagem da imagem, recupere os pixels da imagem e imprima como saída.
Repartição da imagem em partes simples e repetidas:
.
Faça uso da dica acima. No entanto, como o LOGO não suporta reflexão, só podemos simular isso entrando no modo 3D (
perspective
) e girar a tartaruga 180 graus em torno de um eixo paralelo à tela do computador.Isso define uma função auxiliar
g
, que, com 2 parâmetrosl
(comprimento do lado da imagem) ew
(procedimento usado para desenhar a imagem), desenha 3 cópias da imagem refletida. (consulte a dica na pergunta) O procedimentoh
executa o procedimento principal.fonte
90 fd
->90fd
e salvar alguns bytes.05AB1E ,
3026 bytesExperimente online!
fonte
CJam , 30 bytes
Experimente online!
fonte
Python 2 ,
205195 ... 145144142144 bytesExperimente online!
Inspirado pela resposta JS de Neil .
fonte
n>>1
én/=2
.a
é definido e usado uma vez. Substituir sua referência por seu valor poderia economizar quatro bytes.[...[x],...[x]][z]
seleção .Haskell,
126125113106103 bytesUma implementação direta do hint1 no spoiler.
A função
m
gera a próxima iteração. As principais funções se aplicamm
6 vezes. Detalhes param
:Edit: @ngn salvou um byte e @Laikoni outro 3. Obrigado!
fonte
n$n$n$n$n$n["#"]
é mais curto do queiterate n["#"]!!6
:)e=[]:e;foldr(zipWith(:))e
vez deimport Data.List;transpose
e depois encurtarzipWith
.Java 7,
259238237200bytesEconomizou 2 bytes removendo o {} no loop x, obrigado ngn
Economizou 19 bytes de várias alterações de atribuição, obrigado Jonathan
Economizou 24 bytes para impressão versus retorno (não sabia que isso era permitido) e
salvou 13 bytes para alterações de loop, obrigado Nevay
Experimente online!
Meu primeiro desafio, e acho respeitável para Java. Usa a dica 1, (que está errada, mas não posso escrever comentários). Provavelmente pode ser ainda mais jogado, esse passe foi basicamente como está, sem uma impressão bonita.
fonte
s=1
do loop for e substituindoint s,t,x,y;
porint s=1,t,x,y;
.n[s-1-y][x]=o[y][x];n[y][t-1-x]=o[y][x];
->n[s-1-y][x]=n[y][t-1-x]=o[y][x];
.J ,
3027 bytesExperimente online!
Versão original.
Experimente online!
fonte
Python 2, 586 bytes
Experimente online.
Python 2,
10321025 bytesEu gosto mais deste. Mas é muito mais longo. Poderia ser jogado para baixo, mas não há necessidade disso. A abordagem de officialaimm é muito mais curta.
-7 graças a Jonathan Frech
Experimente online.
fonte
[t]railing spaces
, embora sua solução omita alguns espaços.x=='!'
->x<'#'
if x.isdigit()
->if"/"<x<"@"
Mathematica,
11290 bytesObrigado a Jonathan Frech pela ajuda em salvar 2 bytes!
Experimente online! (Matemática)
Por alguns motivos, o Mathics imprime espaços à esquerda em todas as linhas, exceto a primeira ao imprimir uma sequência de linhas múltiplas. Também Mathics não suporta operador
.Explicação:
{{Reverse@#,Reverse/@#},{" "+0#,#}}
: Representa o reverso na horizontal, o reverso na vertical, substituir todos por" "
e transpor (
é operador de transposição no Mathematica), correspondendo a diferentes maneiras de refletir ou girar a imagem.~Flatten~{{1,3},{2,4}}
: Achatar em dimensões particulares.Nest[ ... ,{{"#"}},6]
: Aplique a função dentro de{{"#"}}
6 vezes.~Riffle~"<literal newline character>"
: Reproduz um caractere de nova linha entre cada linha.""<>
: Junte todas as cordas.fonte
Reverse
porR
e definirR=Reverse;
para salvar dois bytes.C # (.NET Core) ,
10161002980955 bytesEconomizou 14 bytes graças a Kevin Cruijssen!
Economizou 47 bytes graças a Jonathan Frech!
Experimente online!
Explicação
O formato da saída é armazenado em uma matriz de números assinados de 64 bits, que se encaixa perfeitamente, pois cada linha possui 64 caracteres. Os espaços vazios são representados por
0
e#
são representados por1
.Os números são então convertidos em sua sequência binária, os zeros são preenchidos à esquerda até que a cadeia tenha 64 caracteres de largura e os caracteres
e
0
e1
sejam substituídos por#
.O código é armazenado dentro de uma função lamba, mais especificamente um
System.Func<string>
.Algumas constantes no
long[]
são encurtadas executando algumas alterações de bits.fonte
long[] n=new[]
?l
não for necessário, você provavelmente poderá salvar ainda mais bytes .Carvão , 42 bytes
Experimente online! Link é a versão detalhada do código. Seriam 25 bytes se isso funcionasse:
Explicação:
Gere manualmente a primeira recursão, pois não é possível girar (1, 0,5). (Essa rotação só faria sentido se fosse 180 °.)
Faça um loop sobre as cinco primeiras potências de 2 (1, 2, 4, 8, 16).
Reflita a tela verticalmente. Isso completa o quarto superior esquerdo do resultado.
Gire a tela 180 ° em torno de um ponto na metade do lado direito. A cópia acaba na posição correta para o quarto superior direito do resultado.
Gire a tela 90 ° ao redor do canto inferior direito. A cópia do canto superior direito termina na posição correta para o canto inferior direito do resultado. A cópia do canto superior esquerdo é estranha.
Apare a tela no tamanho desejado. O corte começa no cursor ou no canto superior esquerdo da tela, o que estiver mais abaixo no canto direito. O cursor é, portanto, enviado para (0, -1000) para garantir que não interfira com o corte.
fonte
Dyalog APL , 29 bytes
Experimente online!
fonte
((⊖,⌽)⍪∊,⍉)⍣6⍪⍕#
com⎕ML←0
.Python 2 ,
715711bytesExperimente online!
fonte
Perl 5 , 452 bytes
Código de 451 bytes + 1 para
-p
.Pacotes de todos os dados na seqüência, em vez de roubar @ Neil 's resposta correta .
Saída reversível de
xxd
para o arquivo de 451 bytes:Experimente online!
fonte
Jq 1.5 ,
538535488476 bytesEsta é uma representação direta.
Ainda não tentei nenhuma codificação sofisticada.Pares 0,0 substituídos pela função Z.Agradecemos novamente a Jonathan Frech por ajudar a eliminar 3 bytes!
Contador de caracteres
Amostra de execução
fonte
B: rec
e16) as $l|
.if.==0then" "else"#"end
->if.>0then"#"else" "end
.Python 2 ,
174164154 bytes (com base em operações de matriz)Experimente online!
fonte
import *
->import*
;in s.tolist()
->in s
Tela , 10 bytes
Experimente aqui!
fonte
JavaScript (Node.js) , 1233 bytes
Experimente online!
fonte
C # (.NET Core) ,
976969 bytesExperimente online!
fonte
<s>969</s>
para atravessar os bytes anteriores.C # (.NET Core) , 739 bytes
Experimente online!
Usa a mesma abordagem é esta outra resposta .
fonte
K (ngn / k) ,
323127 bytesExperimente online!
6{
}/
6 vezes+x
transpor|x
inverter verticalmente+|+x
inverter horizontalmente,
concatenar verticalmente,'
concatenar horizontalmente,[A;B]
é o mesmo queA,B
. ajuda a evitar parênteses ao redorA
e ao redor de toda a expressão""x
use os elementos dex
como índices na string vazia. A indexação fora dos limites produz espaços, portanto, essa expressão retornará uma matriz de todos os espaços, do mesmo tamanho quex
fonte