Desafio
Dado um tamanho s, imprima uma rede de cubos desse tamanho feita de símbolos de hash ( #
) e espaços ( ).
Exemplos:
1:
#
# # #
#
#
2:
# #
# #
# # # # # #
# # # # # #
# #
# #
# #
# #
3:
# # #
# # #
# # #
# # # # # # # # #
# # # # # # # # #
# # # # # # # # #
# # #
# # #
# # #
# # #
# # #
# # #
A rede pode realmente ser qualquer rede de cubos válida que possa ser dobrada em um cubo, por exemplo:
# #
# #
# # # # # # # #
# # # # # # # #
# #
# #
# # # #
# # # #
# #
# #
# #
# #
# # # #
# # # #
Regras
- A rede resultante deve ser geometricamente válida (dobrável em um cubo)
- Lacunas padrão proibidas
- Leia as regras cuidadosamente
- Este é o código-golfe , a resposta mais curta vence, mas não será selecionado
Respostas:
Python 2, 47 bytes
Experimente online!
Imprime esta rede, escolhida por ser justificada à esquerda:
As linhas têm
n
ou4*n
cópias de'# '
. Para cada um deles1,4,1
, imprimimosn
o número de cópias, on
tempo dasn
linhas. Ter umexec
loop dentro de umfor
loop parece um desperdício, mas não vi melhor.Alternativas que testei:
(As
def
funções podem ser todas mais curtas como um programa.)fonte
Oitava,
58444232 bytesparcialmente inspirado na resposta python do @xnor.
cria um padrão squre de '#' para a entrada 2 resulta no seguinte padrão:
quatro
z
s são concatenados horizontalmente:z
ey
ez
são concatenados verticalmenteExperimente Online!
Resposta anterior:
Experimente Online!
Gera um em forma de T
fonte
Mathematica,
776052 bytesObrigado a Martin Ender por jogar 8 bytes de distância!
Função sem nome, usando um argumento inteiro positivo
#
e retornando uma string com novas linhas (incluindo uma nova linha à direita); cada linha também tem um espaço à direita. Primeiro, definimos±
como uma função que repete seus#
tempos de entrada ; entãoa
é definido como±"# "
(este#
é um caractere, não a entrada!), e a partir dissob
é definido como o conjunto de#
linhas curtas, enquanto±{a,a,a,a}<>n
é o conjunto de#
linhas longas. (Nos dois casos, há um avanço de linha literal entre aspas correspondentes.) O final<>b
concatena a lista de seqüências resultante com a segunda cópia do conjunto de linhas curtas. Exemplo de saída quando#=2
( a resposta do xnor me ensinou que essa orientação é mais eficiente):Versão anterior desta implementação:
Submissão original:
Constrói um a série de
4*(3#+1)
peças, cada uma das quais é ou"# "
," "
, ou"\n"
; simplesmente calcula quais peças usar com base no índicen
. Exemplo de saída quando#=2
:fonte
JavaScript (ES6), 59 bytes
A saída inclui um espaço à direita no final de cada linha e uma nova linha à direita.
fonte
Ruby, 36 bytes
Uso:
Ruby, 38 bytes
Essa forma é mais longa no Ruby, mas espero que haja alguns idiomas em que seja mais curta.
Uso:
Ambas as respostas podem ser mais curtas se for permitido retornar (preferencialmente) uma matriz de cadeias ou (menos preferencialmente) uma única cadeia em vez de imprimir.
fonte
Scala, 56 bytes
fonte
JavaScript (ES6), 71
Teste
fonte
Java 8, 99 bytes
fonte
V ,
2423201820 bytesCom todos os caracteres ocultos mostrados
^[
is0x1b
(caractere de escape literal) e^V
is0x16
(C-v
)Experimente online!
Eu tive que aumentar o número porque o
Ä
comando estava sendo buggy nessa nova tração em VSaídas neste formato:
com uma nova linha líder
Hexdump:
Explicação
Agora que uma face da rede foi concluída, temos que criar a rede
Solução alternativa se não produzirmos os espaços:
2120181618 bytes(pelo mesmo motivo da solução principal, esse link do TIO é modificado)
Experimente online!
fonte
V , 14 bytes (não concorrente)
Experimente online!
Por qualquer motivo, esse desafio descobriu vários bugs. Agora que estão todos corrigidos, infelizmente esta versão não é competitiva, mas é bom ver como deve ser uma resposta em V para esse desafio quando não for necessário adicionar toneladas de bytes para acompanhar minha codificação desleixada.
Explicação:
fonte
J
problema não era a codificação desleixada do AFAIK, acho que era apenas o padrão nvim?Geléia ,
2019 bytesExperimente online!
-1 graças a 44874 (steenbergh).
NÃO POSSO SABER MUDDYFISH AJUDAR!
Isso é golfável ???
2019 bytes parecem demais , vendo o Link 1.Explicação:
fonte
@
, mas trocando os operandos parax
si mesmo:”#xẋ³Wẋ³K€Y
.Carvão , 20 bytes
O código termina com um espaço. Experimente online!
Explicação
O carvão vegetal é uma linguagem especializada na arte ASCII. Também está incompleto, com erros e com pouca documentação. Basta dizer que isso levou uma quantidade razoável de tentativa e erro antes de fazer o que deveria.
Nλ
insere um número emλ
.G
é o comando polygon, que usaremos aqui para desenhar um retângulo.↑λ←×⁶λ↓λ
especifica a borda do polígono:λ
etapas para cima , para a esquerda 6 vezesλ
e para baixoλ
. (São trêsλ
porλ
blocos lado a lado.) A borda inferior do retângulo é inferida. O polígono é então preenchido com a sequência#
.D
despeja a tela atual em stdout, resultando em algo como isto:G
comando, o cursor está no canto inferior esquerdo da tela.M×⁴λ←
move-o para a esquerda quatro vezesλ
(equivalente a doisλ
emλ
blocos).Coloque-os juntos e você terá uma rede de cubos.
fonte
Utilitários Bash / Unix,
72696866 bytesExperimente online!
Isso funciona usando o fato de que [4 ^ k / 3], quando escrito na base 2, é 10101010 ... 01, com k 1's. (Os colchetes aqui indicam a função do piso.)
fonte
Pyke, 16 bytes
Experimente aqui!
Equivalente a
Por causa dos imprimíveis
Isso usa alguns truques para diminuir a contagem de bytes:
[1, 4, 1]
XF
despeja automaticamente a saída na pilha"#
no final é trocada pela última*
, o que significa que o fechamento"
não é necessário. Isso acontece implicitamente quando o último token é uma string.fonte
Python 2 ,
687165 bytes-6 com agradecimentos a @sagiksp
Experimente online!
Na falta de uma maneira de vencer o @xnor, postarei minha função recursiva simplesmente como uma abordagem alternativa. Para impressões f (5)
Esse padrão foi escolhido simplesmente porque pode ser dividido em duas partes, diferente de todas as outras.
fonte
PHP,
6462 bytesEconomizou 2 bytes graças a Christoph .
Imprime uma rede como esta:
(com uma nova linha líder)
fonte
while($a="282"[$i++/$s=$argv[1]]*$s)echo str_pad("\n",$a,"# ");
economiza 2 bytes.Lote, 111 bytes
fonte
Pushy ,
322928 bytesImprime a rede do cubo justificada à esquerda. Foi difícil jogar golfe ...
Experimente online!
fonte
Retina ,
3937 bytesEsta é a primeira vez que uso Retina, ainda estou tentando entender como fazer as coisas.
(com dois espaços à direita após as linhas 4 e 5)
Agradecimentos a Martin Ender por jogar 2 bytes!
Experimente online!
fonte
$_
na parte inferior, alternando algumas coisas após remover a linha vazia. tio.run/nexus/… é a mesma contagem de bytes, mas um pouco mais feia.QBIC ,
526740 bytesReescrita completa:
Agora, esse padrão é usado:
Onde o
-
são preenchidos com espaços.fonte
Pip ,
281716 bytes15 bytes de código, +1 para
-n
sinalizador.Toma o tamanho como um argumento de linha de comando. Experimente online!
Explicação
A seguir, não é exatamente como os dados são modificados, mas fornece a ideia básica (para
a=2
):fonte
05AB1E , 13 bytes
Experimente online!
Explicação
Exemplo de entrada
n=2
fonte
C #, 152 bytes
fonte
SmileBASIC,
5750 bytesExplicado:
Após a primeira impressão (tamanho = 2, @ é a posição do cursor):
Após o SCROLL:
Após a segunda impressão:
fonte
Lisp comum,
838179 bytesUso:
(funcall #'(lambda(x)(format t"~v@{~v@{# ~}~:*~%~}~v@{~vt~0@*~v{# ~}~%~}"x(* x 3)(* x 2)))2)
Saída:
Como funciona?
Idéias para melhoria são bem-vindas.
fonte