(Inspirado por esta pergunta )
Objetivo
Sua tarefa é escrever um programa ou função para imprimir uma versão ASCII do logotipo Stack Overflow no STDOUT
\|/
(-)
(-)
(-)
(-)
Seu programa deve receber duas entradas, chamadas aqui de H e N. A altura da pilha "contêiner" (os parênteses) é determinada por H. O número de itens na pilha é determinado por N. Se N> H, o pilha "transbordará".
Entrada / Saída
H determinará a altura dos contêineres
Por exemplo:
H = 1:
( )
H = 2:
( )
( )
H = 3:
( )
( )
( )
H sempre será pelo menos 1
N determinará quantos itens estão na pilha. Os exemplos a seguir são todos H = 2:
N = 0
( )
( )
N = 1
( )
(-)
N = 2
(-)
(-)
N = 3
\
(-)
(-)
N = 4
\|
(-)
(-)
N = 5
\|/
(-)
(-)
N = 6
\|/
(-)-
(-)
N = 7
\|/
(-)-
(-)-
N nunca será maior que 2H+3
(Em outras palavras, a pilha nunca passará pelo chão).
Regras
- Sem brechas padrão.
- Seu programa não deve produzir erros.
- Todos os casos de teste devem passar.
- Você pode inserir H e N da maneira que desejar.
- Eu duvido seriamente que seu idioma tenha um embutido para isso.
- Cada linha pode opcionalmente ter um espaço extra no final. Uma linha em branco acima de uma pilha em que N <= H é opcional, assim como uma nova linha à direita.
- Isso é código-golfe , então o código mais curto em bytes vence!
Casos de teste
Além de todos os casos de teste H = 2 da seção Entrada / Saída, todos os seguintes casos de teste devem ser aprovados:
H = 1, N = 1
(-)
H = 1, N = 5
\|/
(-)-
H = 4, N = 7
\|/
(-)
(-)
(-)
(-)
H = 5, N = 0
( )
( )
( )
( )
( )
Classificação
Aqui está um snippet de pilha para gerar uma classificação regular e uma visão geral dos vencedores por idioma.
Para garantir que sua resposta seja exibida, inicie-a com um título, usando o seguinte modelo de remarcação:
# Language Name, N bytes
onde N
está o tamanho do seu envio. Se você melhorar sua pontuação, poderá manter as pontuações antigas no título, identificando-as. Por exemplo:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Se você quiser incluir vários números no cabeçalho (por exemplo, porque sua pontuação é a soma de dois arquivos ou você deseja listar as penalidades do sinalizador de intérpretes separadamente), verifique se a pontuação real é o último número no cabeçalho:
# Perl, 43 + 2 (-p flag) = 45 bytes
Você também pode transformar o nome do idioma em um link que será exibido no snippet do placar de líderes:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
Respostas:
Pitão,
434140 bytesExperimente online. Suíte de teste.
Primeira passagem, rápida e suja. Entrada para STDIN como
N\nH
.Explicação
J
(JE
) e subtraia-a da primeira entrada (o número de itens). (-QJE
)K
. (K-QJE
)hK-QJE
)max(0, previous)
. Isso é necessário, pois números negativos quebrariam o próximo passo. (g#0hK-QJE
)" \|/"
para obter a primeira linha e imprimir. (<" \|/"g#0hK-QJE
)N
overrange(0, J)
. (VJ
) Para cadaN
impressão, a concatenação do seguinte: (s[
)"("
(\(
)" "
se houver pelo menosN+1
espaços livres na pilha (<N_K
),"-"
caso contrário. (?<N_Kd\-
)")"
(\)
)"-"
se houver pelo menosN+4
pedaços transbordando na pilha (<N-K3
),""
caso contrário. (*<N-K3\-
)fonte
JavaScript (ES6),
105102 bytes@Edit: salvou 3 bytes graças a @PatrickRoberts.
fonte
substring
porsubstr
para salvar 3 bytes e substituiri+n<h?' ':'-'
por'- '[i+n<h]
para salvar 2 bytes e substituiri+h+3<n?'-':''
por' -'[i+h+3<n]
para salvar 1 byte. Isso vai levá-lo sob 100substr
os subscritos negativos foram ignorados ou não, mas não posso usar suas outras dicas porque os subscritos de string são strings, portanto, os booleanos não são bons o suficiente.JavaScript (ES6),
126122112 bytesTeste
Teste alternativo (se o seu navegador não suportar ES6)
Veja o teste em Babeljs.io e marque "avaliar".
Abordagem alternativa interessante em 136 bytes
Isso move os valores de repetição para a cadeia de modelo e usa uma regexp e substitui para injetar os grupos de repetição. Infelizmente, a assinatura
.replace()
é muito longa.fonte
C ++ 14 (função lambda), 196
Guardado 1 byte graças a Quentin.
Economizou 2 bytes graças a Adam Martin.
A própria função leva 157 bytes.
Veja em ação aqui .
Versão não destruída:
fonte
include
s eusing namespace std;
na contagem de bytes, a menos que a sua resposta é um programa completo (que não é).CJam, 57 bytes
Teste aqui.
Definitivamente poderia usar alguma melhoria. A idéia é construir uma grade onde as
-\|/-
células sejam substituídas por números inteiros consecutivos, por exemploE depois substituí-los pelos caracteres corretos (potencialmente espaços) no final.
fonte
Python 2,
10110098 bytesfonte
print
são desnecessáriosJavaScript (ES6),
8780 bytesUsa recursão para criar a sequência de saída de baixo para cima.
EDIT : Graças a @ Neil por raspar 7 bytes de 87 bytes
Original
Snippet de teste:
fonte
SyntaxError
para mim.JavaScript (ES6),
149139137 bytesGostei da ideia da @ MartinEnder sobre a indexação dos
-\|/
personagens e queria ver como ela se sairia no ES6. Aparentemente, não me saí tão bem. Tentando descobrir se isso poderia ser melhorado usandofor...of
.Editar% s
.replace
, movendo a indexação diretamente para og()
lugar.f=
na contagem de segundo byteTeste
fonte
Java,
186177 bytesTentativa sem golfe online
fonte
Excel, 131 bytes
Entrada tomada como uma tupla, Altura
H
emA1
,N
emB1
. A fórmula que contém células precisa ter o Quebra de texto ativado. Sugira o uso de uma fonte com espaçamento mono.fonte
A1
eB1
e adicione a nota simples que este exige que o celular chamando para ter a opção de texto envoltório para ser verdade. Também talvez que para obter o alinhamento adequado ele deve ter uma fonte mono-espaçada, como Courier New ou Console LucidiaC ++ 11,
155148145 bytesUngolfed :
Uso :
fonte
Python 3,
134121118111 bytesTeste aqui: https://repl.it/CYL1/0
Sem golfe:
Eu gostaria de adicionar o excesso de lado à compreensão da lista, mas não consegui compactá-lo, então tive que seguir o loop while.13 bytes salvos!fonte
'\|/'[:max(0,n-h)]
para ser semelhante à solução Python 2.Perl 5 , 91 bytes
Experimente online!
fonte
Pip , 50 bytes
Experimente online!
Ugh, isso é muito longo ... embora não saiba como encurtá-lo. A indexação cíclica, que geralmente é útil, custa bytes extras dessa vez.
fonte
PowerShell ,
109108104 bytesExperimente online!
Perdeu muito na indexação cara, mas ainda decente. Não tenho certeza se meu índice de matemática é ideal, no entanto. Roubou alguma lógica das outras respostas para salvar um byte. Também foi lembrada a precedência de exibir alguns parênteses para -4 bytes.
fonte
05AB1E , 45 bytes
Definitivamente pode ser jogado .. Não muito feliz com isso em sua forma atual tbh.
Experimente online ou verifique todos os casos de teste .
Explicação:
fonte
LR'(ì')«¹x‚3+¬UŸ¦ζJ¹XŸJ¦1úr)˜»
e isso é apenas a metade.