Esse desafio consiste em imprimir uma série de setas crescentes da arte ASCII. Descreverei o padrão em palavras, mas pode ser mais fácil ver como é o início desta série:
>
<
->
<-
-->
<--
--->
<---
---->
<----
----->
<-----
------>
<------
...
Uma seta com comprimento n contém uma ponta de seta ( <
ou >
) e n-1
traços ( -
). Uma seta voltada para a direita tem os traços primeiro, depois a >
. Uma seta voltada para a esquerda começa com <
e é seguida pelos traços. A série consiste em uma n
seta voltada para a direita, seguida de uma seta voltada para a esquerda, com n de 1 ao infinito.
Para concluir o desafio, escreva um programa ou função que use uma entrada, um número inteiro i >= 1
e solte as primeiras i
setas. As setas são individuais, não em pares direita-esquerda, portanto, i=3
você deve gerar:
>
<
->
Você pode retornar uma lista de cadeias ou imprimi-las uma após a outra. Se estiver imprimindo, as setas devem ser delimitadas por algum delimitador consistente, que não precisa ser uma nova linha, como no exemplo.
Isso é código-golfe , e o menor número de bytes vence.
Respostas:
Tela , 10 bytes
Experimente aqui!
fonte
↔
meio que parece!↔
é o "reverso horizontalmente" embutido (também trocando>
&<
), infelizmente não seta embutidos: pR , 69 bytes
Experimente online!
fonte
strrep
coage seu segundo argumento parainteger
que você possa usar/
no lugar de%/%
a
completamente indexando0...(n-1)
: Experimente online!Java (JDK) , 81 bytes
Experimente online!
Explicações
fonte
import java.util.function.*;
conta?Haskell,
4140 bytesExperimente online!
Recursão antiga simples: comece com string
p
=">"
, coletep
, a<
na frente de todos, exceto o último caractere dep
e uma chamada recursiva com uma-
colocada na frente dep
. Pegue os primeirosn
itens desta lista.Edit: -1 byte graças a @xnor.
fonte
Comodoro BASIC V2 (C64), 94 bytes
Não totalmente certo sobre a contagem de bytes, isso se baseia na representação de texto para digitar o programa válido. É um pouco menor no disco (91 bytes) porque o BASIC V2 usa uma representação de programas "tokenizada".
Demo Online
Ligeiramente "não-destruído":
fonte
Brainfuck auto-modificável , 55 bytes
Tome entrada como código de caractere.
Somente suporta entrada de até 255.
Use caracteres nulos para separar linhas.
Coincidentemente, todos os caracteres de desenho de seta são usados como comandos BF. Infelizmente, ele não salva nenhum bytes (atualmente).
Experimente online!
Explicação
fonte
Python 2 , 54 bytes
obrigado ao e Jo King por corrigir um erro.
Experimente online!
fonte
Pitão, 17 bytes
Saída é uma lista de strings. Experimente online aqui .
fonte
PowerShell ,
625650 bytesExperimente online!
Loops de
0
até entrada$n
, cada iteração criando duas seqüências de setas. Esses são indexados com0..--$n
para extrair o número correto de elementos.Economizou 6 bytes graças ao KGlasier.
fonte
param($n)(0..$n|%{($j='-'*$_++)+'>';"<$j"})[0..--$n]
. Então agora você não precisa escrever$x
duas vezes.++
em($j='-'*$_++)
que você não usar$_
qualquer outro lugar.Python 3, 53 bytes
Minha primeira resposta codegolf.
-10 bytes graças a Jo King
fonte
Haskell ,
5144 bytes-7 bytes graças ao xnor (usando
iterate
mais de lista de compreensão)!Experimente online!
Explicação / Ungolfed
O uso de
do
-notation nos salva aconcat
, e o uso de infix-notation permite uma função sem pontotake
, desfazendo isso daria:fonte
Japt
-m
,16151312 bytesGuardado 1 byte graças a Shaggy
Teste on-line
Explicação:
fonte
Gelatina , 15 bytes
Experimente online!
fonte
MathGolf ,
1715 bytesEconomizou 2 bytes graças a Jo King e Kevin Cruijssen
Experimente online!
Explicação
A abordagem de 15 bytes é diferente em comparação com a minha solução original, não posso levar nenhum crédito pela implementação.
fonte
if/else
work in MathGolf? I know how the if-without-else and else-without-if statements work, but how to create an if{ ... } else{ ... } in MathGolf with¿
? (Maybe I should post this in the chat instead of here.. But I might perhaps have a save of 1 byte if I can fix the if-else.)¿12
, pressionará 1 se verdadeiro, mais 2,¿Å3*Å1+
adicionará um se verdadeiro mais, triplicará o próximo elemento #¿{"foo"}{"bar"}
ou¿1{2}
.Japonês
-m
, 14 bytesExperimente online!
Atualizado com um método completamente novo.
Explicação:
fonte
ç
auto-lança seu primeiro parâmetro em uma string, para que você possa soltar o'
.u
método, graças ao empacotamento de índice, podendo ser de 14 bytes.C (gcc) ,
8077767471 bytesExperimente online!
-3 bytes com ideia somente de ASCII .
-1 com em
\0
vez de\n
-5 peças reorganizando
A saída inclui um final
\0
.fonte
!n--
no primeiro código de bloqueioJavaScript (ES6), 58 bytes
Retorna uma string separada por espaço.
Experimente online!
fonte
SNOBOL4 (CSNOBOL4) ,
123122118 bytesExperimente online!
fonte
V , 22 bytes
Experimente online!
fonte
Carvão , 16 bytes
Experimente online! Link é a versão detalhada do código. Eu tinha três soluções de 17 bytes antes de me deparar com essa. Explicação:
Entrada
n
.n
Tempos de repetição , indexados em 0.Desenhe uma linha de
-
s de comprimento com metade do índice (truncado).Desenhe a ponta da seta e vá para a próxima linha.
Reflita tudo, lançando as pontas das setas.
O loop acima tem
n
reflexões, mas precisamos de um número par de reflexões; portanto, faça outrasn
reflexões.fonte
Limpo ,
7673 bytesExperimente online!
Usa o fato puro que
['-','-'..]
é o mesmo que['--'..]
economizar um pouco.fonte
JavaScript, 49 bytes
Experimente online!
fonte
10000
, entretanto minha solução ES6 ainda funciona: D De qualquer forma, a solução é muito legal)Powershell, 51 bytes
fonte
Código da máquina 6502 (C64), 49 bytes
Ainda um pouco menor que o BASIC ;) Esse número tem um intervalo apenas até
255
porque o tamanho inteiro natural da máquina possui apenas 8 bits.Demonstração online
Uso:
SYS49152,[n]
(por exemplo,SYS49152,3
para o exemplo do desafio)Desmontagem comentada :
fonte
Perl 6 , 39 bytes
Experimente online!
Bloco de código anônimo que retorna uma lista de linhas.
fonte
K (ngn / k) ,
3129 bytesExperimente online!
primeiro, geramos listas com 0 em vez de
"<"
, 1 em vez de"-"
e 2 em vez de">"
:{
}
função com argumentox
x{
...}\0
aplique osx
tempos da função interna , começando com um valor inicial de0
e preservando resultados intermediários|x
marcha ré2-
substitua 0 por 2 e vice-versa, mantenha os 1s como estão1,
anexar um 1(1=*x)_
é o primeirox
igual a 1? se sim, solte um elemento, caso contrário, solte 0 elementos (não faça nada)2,
coloque um 2 na">"
seta inicialx#
temos um pouco demais listas, de modo a ter apenas o primeirox
deles"<->"
use os elementos das listas (0/1/2) como índices nessa sequênciafonte
05AB1E ,
2320 bytesExperimente online!
Primeira vez usando 05AB1E ou qualquer outro idioma de golfe para esse assunto. Todas as idéias são bem-vindas.
-3 de Kevin Cruijssen
fonte
"><"
pode ser„><
para salvar um byte. Existem builtins para cordas 1, 2, e 3 de resíduo carbonado, sendo'
,„
e,…
respectivamente. Aqui está uma alternativa de 18 bytes que eu criei, mas talvez pudesse ser um pouco mais golfe. Se você ainda não o viu, temos algumas dicas para jogar golfe na página 05AB1E , e também fique à vontade para perguntar qualquer coisa no chat .C # (.NET Core) , 90 bytes
Experimente online!
Usa um delegado de Ação para receber a entrada e não exigir um retorno.
Ungolfed:
fonte
ES6,
96827970 bytesExperimente online! (Graças a @Oliver)
fonte
i=>
na frente do seu código!) ou a partir de um argumento da linha de comando ou STDIN ou algo assim.Vermelho ,
109108 bytes-1 byte graças a NK1406
Experimente online!
fonte