Sua tarefa é escrever um programa ou uma função que imprima um triângulo ASCII. Eles se parecem com isso:
|\
| \
| \
----
Seu programa terá uma única entrada numérica n
, com as restrições 0 <= n <= 1000
. O triângulo acima tinha um valor de n=3
.
O triângulo ASCII terá n
barras invertidas ( \
) e barras verticais ( |
), n+1
linhas e traços ( -
), e cada linha terá uma quantidade de espaços igual ao número da linha (com base em 0, ou seja, a primeira linha é a linha 0) além da linha final .
Exemplos:
Entrada:
4
Saída:
|\
| \
| \
| \
-----
Entrada:
0
Saída:
Nesse caso de teste, a saída deve estar vazia. Sem espaço em branco.
Entrada:
1
Saída:
|\
--
Entrada e saída devem ser exatamente como eu especifiquei.
Este é o código-golfe , então procure o código mais curto possível!
code-golf
ascii-art
code-golf
rubiks-cube
code-golf
path-finding
maze
regular-expression
code-golf
math
rational-numbers
code-golf
kolmogorov-complexity
graphical-output
code-golf
tips
code-golf
string
permutations
code-golf
sorting
base-conversion
binary
code-golf
tips
basic
code-golf
number
number-theory
fibonacci
code-golf
date
code-golf
restricted-source
quine
file-system
code-golf
code-golf
math
code-golf
ascii-art
code-golf
math
primes
code-golf
code-golf
math
matrix
code-golf
string
math
logic
factorial
code-golf
palindrome
code-golf
quine
stateful
code-golf
interactive
code-golf
board-game
code-golf
math
arithmetic
code-golf
string
code-golf
math
matrix
code-golf
math
abstract-algebra
polynomials
code-golf
date
code-golf
string
array-manipulation
sorting
code-golf
game
code-golf
string
code-golf
ascii-art
decision-problem
code-golf
number
sequence
code-golf
code-golf
code-golf
sequence
fibonacci
code-golf
math
geometry
random
code-golf
code-golf
math
decision-problem
fractal
rational-numbers
code-golf
number
number-theory
code-golf
combinatorics
permutations
card-games
code-golf
math
sequence
array-manipulation
fibonacci
code-golf
sequence
decision-problem
graph-theory
code-golf
ascii-art
parsing
lisp
code-golf
string
math
natural-language
logic
code-golf
math
logic
code-golf
string
alphabet
code-golf
string
code-golf
string
Okx
fonte
fonte
0
pode ter qualquer saída inesperada uma vez que é um caso extremo (especialmente desde que você solicitou que o número de traços deve ser um a mais que o número de entrada)Respostas:
Gelatina , 14 bytes
Experimente online!
Como funciona.
fonte
C, 58 bytes
-
Graças à @Steadybox, os comentários sobre esta resposta me ajudaram a raspar alguns bytes na minha solução acima
fonte
2*n
lá duas vezes e isso me incomoda, alguém pode pensar em uma maneira inteligente de encurtá-lo de alguma forma?Javascript (ES6),
9785817574 bytesAcontece que eu não estava usando recursão suficiente
fonte
05AB1E ,
161516 bytesGuardou um byte graças a Adnan
Experimente online!
Explicação
fonte
ð×.svy¦…|ÿ\}¹>'-×»
, acho que minha ideia.s
não foi tão boa quanto eu pensava. Bom uso deÿ
, não vi isso antes..s
, além de começar,<Ýð×
mas tive problemas com o caso especial desses métodos.FðN×…|ÿ\}Dg'-×»
para 15 bytesDg
! Obrigado :).s
também resultou em matrizes aninhadas e nivelamento, o que exigiu mais bytes.V ,
181716 bytes1 byte economizado graças ao @ nmjcman101 por usar outra maneira de não produzir nada se a entrada for
0
Experimente online!
Hexdump:
Explicação (desatualizada)
Primeiro temos um loop para verificar se o argumento é
0
. Nesse caso, o código abaixo é executado (|\
está escrito). Caso contrário, nada será gravado e o buffer estará vazio.Agora que chegamos ao topo do triângulo, precisamos criar seu corpo.
Agora temos uma linha extra na parte inferior do buffer. Isso deve ser substituído por
-
s.Esta resposta seria mais curta se pudéssemos o que queremos para entrada
0
V ,
1413 bytesExperimente online!
fonte
«
claro. Inteligente! :)C #, 93 bytes
Função anônima que retorna o triângulo ASCII como uma string.
Programa completo com funções comentadas e não testadas:
fonte
Python 2 , 69 bytes
Experimente online!
fonte
"".join
e substituindo-o pelo*
operador e pelosep
argumento na função sleep, entãolambda x:print(*['|'+' '*n+'\\'for n in range(x)]+['-'*-~x*(x>0)],sep="\n")
CJam ,
242221 bytesGuardado 1 byte graças a Martin Ender
Experimente online!
Explicação
fonte
SmileBASIC, 51 bytes
fonte
PowerShell ,
5167 bytesExperimente online!
(Aumento de bytes para explicar a nova linha sem retorno)
Recebe a entrada
$n
e verifica se é diferente de zero. Em seguida, faz laços para construir o triângulo e termina com uma linha de-
. ImplícitoWrite-Output
acontece na conclusão do programa.fonte
Retina , 39 bytes
Experimente online
Converta a entrada decimal em unário. Substitua cada um
1
por|<N-1 spaces>\¶
, imprima e desfaça a substituição. Substitua cada1
um com um hífen, e o último com dois hífens. Tadaa!fonte
Lisp comum,
8986 bytesCria uma função anônima que pega a entrada n e imprime o triângulo em
*standard-output*
(stdout, por padrão).Golfe
Ungolfed
Tenho certeza de que poderia tornar isso mais curto de alguma forma.
fonte
C
1019375 bytesVersão ungolfed
@Steadybox Obrigado por apontar, faz muito sentido.
fonte
printf("%c",'_');
tão detalhado?i;f(n){for(i=0;i++<n;)printf("%c%*c\n",124,i,92);for(;n--+1;)printf("-");}
i;f(n){for(i=0;i++<n;)printf("|%*c\n",i,92);for(;n--+1;)printf("-");}
n--+1
pode ser encurtado para~n--
Carvão , 15 bytes
Experimente online!
Demolir
fonte
»
pode ser omitido.Japonês , 20 bytes
Economizou 2 bytes graças a @ETHproductions
Experimente online!
Explicação
fonte
o@'|+SpX +'\Ãp'-pUÄ)·
e devido a um bug (realmente um efeito colateral não intencional das funções automáticas), é possível remover o'
in'-
.p
. Isso é para que você pode fazer por exemplo,m*2
dobrar cada elemento, oump2
aos quadrados cadaJ, 20 bytes
-13 bytes graças a bob
Experimente online!
original: 33 bytes
destroçado
Experimente online!
fonte
*,&'-' '|',.'\'{."0~_1-i.
*,&'-' '|',.' \'{~=@i.
Pyke,
1817 bytesExperimente aqui!
fonte
Python2, 73 bytes
Um programa completo. Eu também tentei interpolação de strings para a última linha, mas acabou sendo alguns bytes a mais: /
Outra solução em 73 bytes:
Casos de teste
fonte
MATL , 19 bytes
Experimente online!
fonte
QBIC , 41 bytes
Explicação
fonte
R, 101 bytes
Este código está em conformidade com o
n=0
caso de teste se você considerar apenasSTDOUT
!Na verdade, a
stopifnot(n>0)
parte pára a execução do script, exibe nadaSTDOUT
, mas escreveError: n > 0 is not TRUE
paraSDTERR
.Ungolfed:
fonte
Python 2 , 62 bytes
Experimente online!
Imprime linha por linha, sempre adicionando outro espaço antes da barra invertida. Se uma função que não imprime seria permitida, provavelmente seria mais curta.
fonte
JavaScript (ES6), 71 bytes
Saídas para o console. Economize 6 bytes se a impressão no shell SpiderMonkey JavaScript for aceitável. Salve 13 bytes se o retorno da saída for aceitável.
fonte
$`
padrão, mas não sei se ainda pensaria nisso. Agradável.Python 2 , 67 bytes
Outra função no Python 2, usando
rjust
.Experimente online!
fonte
Python 3 , 60 bytes
Experimente online!
Mais duas soluções com a mesma contagem de bytes.
fonte
Perl, 63 bytes
Ungolfed:
$"
é o separador de lista, cujo padrão é "".$/
é o separador de registros de saída, cujo padrão é "\ n".$_
é a variável implícita do loop.fonte
$n=<>
?Haskell ,
8265 bytesExperimente online! Uso:
Ou melhor:
fonte
Pitão,
2318 bytesConjunto de testes disponível online.
Agradecimentos a Ven por jogar fora 5 bytes.
Explicação
fonte
|
por um byte adicional.Javascript 101 (programa completo), 94 (saída de função), 79 bytes (retorno)
Programa completo
Não será executado no Chrome (como o processo aparentemente não existe)
Não será executado no TIO (pois o prompt aparentemente não é permitido)
Função com impressão EXATA
Experimente Online
Função com string de retorno
Experimente Online
A repetição de caracteres em Javascript é idiota e também suprime novas linhas na saída
fonte
Python 2 , 82 bytes
Experimente online!
Mais tempo que o outro Python responde, mas uma função recursiva apenas para ser diferente.
Parece um desperdício usando duas
print
declarações, mas não consigo encontrar uma maneira mais curta de contornar isso. Também osexit()
resíduos 7 para impedir a impressão de um número decrescente de-
baixo do triângulo.fonte
-~c*(c>0)
na última linha para salvar 3 bytes :) #c and-~c
.