Um Octothorpe (também chamado de sinal numérico, hash ou hashtag ou sinal de libra) é o seguinte caractere ASCII:
#
Não é uma forma divertida? Vamos fazer versões maiores dele! Então, aqui está o seu desafio:
Dado um número inteiro positivo N , uma saída hashtag ASCII de tamanho N .
Por exemplo, uma hashtag ASCII de tamanho 1 se parece com isso:
# #
#####
# #
#####
# #
O espaço em branco à direita em cada linha é permitido, mas não obrigatório.
A entrada sempre será um número inteiro positivo válido; portanto, você não precisa manipular números não negativos, ou 0. Sua saída pode estar em qualquer formato razoável; portanto, envie para STDOUT, retornando uma lista de cadeias ou cadeias com novas linhas, uma matriz 2D de caracteres, gravar em um arquivo etc. estão bem.
Casos de teste
2:
## ##
## ##
##########
##########
## ##
## ##
##########
##########
## ##
## ##
3:
### ###
### ###
### ###
###############
###############
###############
### ###
### ###
### ###
###############
###############
###############
### ###
### ###
### ###
4:
#### ####
#### ####
#### ####
#### ####
####################
####################
####################
####################
#### ####
#### ####
#### ####
#### ####
####################
####################
####################
####################
#### ####
#### ####
#### ####
#### ####
5:
##### #####
##### #####
##### #####
##### #####
##### #####
#########################
#########################
#########################
#########################
#########################
##### #####
##### #####
##### #####
##### #####
##### #####
#########################
#########################
#########################
#########################
#########################
##### #####
##### #####
##### #####
##### #####
##### #####
Como este é um código de golfe, tente escrever a solução mais curta possível e, acima de tudo, divirta-se!
Respostas:
MATL ,
20161211 bytes3 bytes graças a DJMcMayhem.
1 byte graças a Luis Mendo.
Experimente online!
Explicação
fonte
Zc
vez de35*c
e~
(NOT lógico) em vez de0=
Q
em vez de2<
!t*
para&*
. Estes últimos meios de multiplicação de um "input", que multiplica (elemento a elemento) a entrada por sua transpostaFlak cerebral , 420 bytes
Experimente online!
Não, a pontuação de 420 não foi intencional. Eu prometo. Versão legível:
fonte
Código da máquina 6502 (C64),
5956 bytesDemonstração online
Uso:
SYS49152,N
onde N é um número entre 1 e 255.(valores maiores que 4 já serão muito grandes para a tela C64, a partir de 8, a saída é muito ampla)
Explicação :
fonte
Haskell , 43 bytes
Experimente online!
Produz uma lista de strings.
fonte
Python 2 , 55 bytes
Experimente online!
Isso retorna uma lista 2D de caracteres.
Python 2 , 65 bytes
Experimente online!
Python 2 , 66 bytes
Experimente online!
fonte
f(i);
armazenar o resultado em uma temperatura eprint
acessá-lo.f(i)
prints eprint
no Python 2 adiciona uma nova linha: PCarvão , 21 bytes
Experimente online! Link é a versão detalhada do código. Originalmente, eu tentei uma abordagem de bitmap atraente:
Experimente online! Link é a versão detalhada do código. Explicação: Funciona considerando-o
#
como uma matriz de 5 × 5 quadrados. Os quadrados que estão em linhas ou colunas ímpares precisam ser preenchidos.fonte
J, 22 bytes
Experimente online!
Muita semelhança com a outra resposta J, embora eu não entenda bem os trens com muitos substantivos, então minha resposta tem três bytes em potencial a serem cortados (dois parênteses e um reflexivo
~
).Explicação
Gerando o octothorpe
O octothorpe é feito por tudo entre parênteses, reproduzido abaixo por conveniência.
Na maior parte das vezes eu faço o octothorpe é um abuso da maneira como J aperta suas matrizes quando elas não são longas o suficiente.
21,0
simplesmente cria a matriz21 0
.5$
remodela essa matriz em uma matriz de 5-omo:21 0 21 0 21
.#:
converte cada átomo em um número binário. Como#:
opera em cada átomo, a saída é uma matriz. Cada um21
é substituído por1 0 1 0 1
conforme o esperado, mas cada um0
é substituído por0 0 0 0 0
! Isso ocorre porque os J pads não são longos o suficiente para corresponder ao formato da matriz 2D resultante, o que é forçado a ocorrer5 5
devido às1 0 1 0 1
linhas. Felizmente, para números com os quais ele se encaixa0
, obtemos a matriz resultante'# '{~
converte cada1
um em um espaço e0
em#
.{
significa "pegar" e~
significa "alternar os argumentos diádicos, então J olha para cada elemento da matriz como índices para a cadeia de caracteres, o que'# '
significa que cada um0
se torna o elemento zeroth#
e cada um1
se torna o primeiro elemento, um espaço. Isso gera o tamanho de um oitavo.Redimensionando o octothorpe
Isso é simplesmente uma questão de
n
tempos de cópia ao longo de cada eixo, feito usandoo primeiro
#
(que faz parte de um gancho) e#~"1]
.#
copia ao longo do eixo horizontal e#"1
copia ao longo do eixo vertical.fonte
##"1&('# '{~#:5$21,0)
salva um byte.CJam,
272625 bytesExperimente online!
Curiosidade: Originalmente, isso começou com 29 bytes e os bytes foram removidos um a um desde então, alternando entre o modo de bloco e o programa completo.
Explicação:
fonte
Casca ,
1210 bytesExperimente online! Observe o espaço à direita.
Explicação
fonte
J ,
2319 bytesGuardado 4 bytes graças a @LeakyNun.
Experimente online!
Explicação
fonte
[:|:f
poderia ser0|:f
' # '{~]#"1]#+./~@i:@2
salva um bytef=:' #'{~1=]+./~@#i:@2
Geléia ,
141311 bytesGuardado 2 bytes graças a @JonathanAllen
Um link monádico retornando uma lista de linhas. Observe o espaço à direita.
Experimente online!
Como funciona
fonte
µ
(ou o que⁸
você poderia ter lá) ...5ẋ€Ẏ&þ`ị⁾ #
5Ḷẋ€
exige oµ
, mas não5ẋ€
?Ẏ
agirn
e depois passá-lo para a direitaẋ€
, já que com uma cadeia principal de nilad-díade sendo chamada monadicamente, não é necessário. No entanto, não tenho muita certeza de como`
parece colocar 5 (ou talvez a lista desse comprimento) à direita da apresentação&
.Linguagem do Game Maker,
138108 bytesPretendido como um script (nome do Game Maker para funções definidas pelo usuário), portanto, o
n=argument0
ereturn s
. 20 bytes podem ser raspados pegandon
diretamente da instância atual e usandos
como resultado. (A instância obtém essas variáveis de qualquer maneira porque elas não foram declaradas comvar
).Cuidado,
#
é claro, que é usado pelo material gráfico do Game Maker como um caractere de nova linha alternativa; portanto, você pode prefixá-lo\
se quiser exibir na tela;)Observe também que estou usando a versão GML do Game Maker 8.0 aqui; versões modernas de GML podem ter recursos que podem salvar bytes adicionais.
Algumas idéias são cortesia dos amigos wareya e chordbug.
fonte
Perl 5 , 49 + 1 (-p) = 50 bytes
Experimente online!
Quão?
Armazene implicitamente a entrada em $ _ através do
-p
sinalizador. Comece com a linha superior mais básica possível" # # "
com sua nova linha à direita. Replicar cada um desses caracteres pelo número de entrada. Em seguida, replique isso pelo número de entrada para formar a parte superior do octothorpe, armazenando tudo isso em $ . Em seguida, acrescente a linha com todos os caracteres substituídos por '#' vezes o número de entrada. Em seguida, acrescente a seção superior. Faça essas duas últimas frases no total duas vezes. A saída do $ está implícita no-p
sinalizador.fonte
05AB1E ,
252221 bytesExperimente online!
-1 porque Emigna odeia transliterar e, felizmente, me lembra que eu também deveria: P.
Tem que ser uma maneira melhor do que bitmap, ainda trabalhando.
fonte
5ôεS„# èJ¹F=
salva um byte.JavaScript (ES6), 79 bytes
Porta da abordagem de bitmap que eu usei para minha tentativa original de carvão.
fonte
Python 2 ,
124,116,113,112,98,9666 bytesNovo (Crédito: HyperNeutrino):
Velho:
Experimente online!
Obviamente, não é a solução mais curta, mas acho que é decente. Qualquer opinião será apreciada!
fonte
a,b,c=input()," #"
deve salvar alguns bytes.a,b,c=input(),"#"," "
? O que não é mais curto ... Agradeço a ajuda!a,b="# "
funciona.a=input();b,c="# "
funcionará e salvará bytes(i==2)
e adicionar um espaço ao começo.Flak cerebral ,
338332 bytes6 bytes graças a Riley.
Experimente online!
Versão mais "legível"
Experimente online!
fonte
(({})<>)(())<>({}<>)
no início pode ser substituído por(({}<>)<(())>)
SOGL (confirmação SOGLOnline 2940dbe) , 15 bytes
Para executar isso, baixe este e executar o código no
index.html
arquivo.Usa que naquele commit (e antes dele)
*
repetiu cada caractere, não a string inteira.Explicação:
Bônus: adicione 2 entradas para o comprimento X e Y separado!
fonte
ø─Ζ┘Χ⁴‘
que empurra isso?#
e os dados de base 2 necessários para essa sequência.brainfuck , 224 bytes
Experimente online!
Realização de
Eu tentei criar esse código manualmente e passei algumas horas, então decidi fazer um transpiler em Python.
Aqui está o código que inseri para criar esse código:
Experimente online!
fonte
C (gcc) ,
9893 bytes5 bytes graças a Felix Palmen.
Experimente online!
fonte
Gaia , 9 bytes
Praticamente um porto da grande resposta de Zgarb
Experimente online! (o rodapé é apenas para imprimir, o próprio programa retorna uma lista 2D de caracteres)
Explicação
fonte
Befunge ,
105103 bytesExperimente online!
fonte
Python,
888477 bytesExperimente online!
Retorna uma lista 2D de caracteres.
fonte
PowerShell ,
72686360 bytesExperimente online!
Recebe entrada
$a
. Em seguida, fazemos um monte de manipulação de string e arraymágicos.Você pode separar as partes da explicação começando de baixo para ver como a saída é construída, por isso espero que minha explicação faça sentido.
fonte
Haskell, 72 bytes
Retorna uma lista de strings. Experimente online!
Como funciona:
fonte
Mathematica, 63 bytes
Explicação
(1)
-##
analisa emTimes[-1, ##]
fonte
ArrayFlatten
é muito legal.Python 2, 113 bytes
Como uma matriz de strings:
Como arte ASCII:
Python 3, 115 bytes
Python 3, 117 bytes
Como uma matriz de booleanosPython 2, 75 bytes
fonte
Java 8, 103 bytes
O Lambda aceita
Integer
e imprime o octothorpe na saída padrão. Transmitir paraConsumer<Integer>
.Experimente Online
Lambda ungolfed
A observação principal aqui é que, em uma grade de 5 por 5 de n por n células, os octotorpes aparecem sempre que o número da linha ou coluna (baseado em 0) é ímpar. Tenho certeza de que essa é a abordagem geral mais barata, mas parece ainda mais jogável.
Agradecimentos
fonte
int s=5*n,x=0,y
loop for para salvar um byte no ponto e vírgula.Pitão ,
2822 bytes-6 bytes graças a @LeakyNun
Suíte de teste.
fonte
R ,
878562 bytes2 bytes salvos representando c (F, T) como! 1: 0, graças a LeakyNun
23 bytes salvos graças a Giuseppe
Experimente online!
Explicação (não destruída):
fonte