Este desafío consiste en imprimir una serie de flechas de arte ASCII en crecimiento. Describiré el patrón en palabras, pero podría ser más fácil ver cómo se ve el comienzo de esta serie:
>
<
->
<-
-->
<--
--->
<---
---->
<----
----->
<-----
------>
<------
...
Una flecha con longitud n contiene una punta de flecha ( <
o >
) y n-1
guiones ( -
). Una flecha hacia la derecha tiene los guiones primero, luego a >
. Una flecha hacia la izquierda comienza con <
, y es seguida por los guiones. La serie consiste en una longitud n
de flecha hacia la derecha seguida de una longitud n flecha hacia la izquierda, con n de 1 a infinito.
Para completar el desafío, escriba un programa o función que tome una entrada, un número entero i >= 1
y genere las primeras i
flechas. Las flechas son individuales, no en pares derecha-izquierda, por lo i=3
que debe generar:
>
<
->
Puede devolver una lista de cadenas o imprimirlas una tras otra. Si imprime, las flechas deben estar delimitadas por algún delimitador consistente, que no tiene que ser una nueva línea como en el ejemplo.
Este es el código de golf , por lo que gana menos bytes.
Respuestas:
Lienzo , 10 bytes.
Pruébalo aquí!
fuente
↔
parece un poco!↔
es el "reverso horizontalmente" incorporado (también intercambiando>
&<
), lamentablemente sin flechas incorporadas: pR , 69 bytes
Pruébalo en línea!
fuente
strrep
coacciona su segundo argumento parainteger
que pueda usarlo/
en lugar de%/%
a
completo indexando en su0...(n-1)
lugar: ¡ Pruébelo en línea!Java (JDK) , 81 bytes
Pruébalo en línea!
Explicaciones
fuente
import java.util.function.*;
cuenta?Haskell,
4140 bytesPruébalo en línea!
Recurrencia simple: comience con string
p
=">"
, collectp
, un<
delante de todos menos el último carácter dep
y una llamada recursiva con un-
puesto delantep
. Tome los primerosn
elementos de esta lista.Editar: -1 byte gracias a @xnor.
fuente
Commodore BASIC V2 (C64), 94 bytes
No estoy completamente seguro sobre el recuento de bytes, esto se basa en la representación de texto para escribir el programa válido. Es un poco más corto en el disco (91 bytes) porque BASIC V2 usa una representación "simbólica" de programas.
Demo en línea
Ligeramente "sin golf":
fuente
Brainfuck auto modificable , 55 bytes
Tomar entrada como código de caracteres.
Solo admite entradas de hasta 255.
Utilice caracteres nulos para separar líneas.
Casualmente, todos los caracteres de dibujo de flecha se utilizan como comandos BF. Desafortunadamente, no guarda ningún byte (actualmente).
Pruébalo en línea!
Explicación
fuente
Python 2 , 54 bytes
Gracias a Jo King por arreglar un error.
Pruébalo en línea!
fuente
Pyth, 17 bytes
La salida es una lista de cadenas. Pruébelo en línea aquí .
fuente
PowerShell ,
625650 bytesPruébalo en línea!
Recorre desde
0
arriba hasta la entrada$n
, cada iteración crea dos cadenas de flechas. Luego se indexan0..--$n
para extraer el número correcto de elementos.Guardado 6 bytes gracias a KGlasier.
fuente
param($n)(0..$n|%{($j='-'*$_++)+'>';"<$j"})[0..--$n]
. Así que ahora no tienes que escribir$x
dos veces.++
en la($j='-'*$_++)
medida que no se utiliza$_
en ningún otro lugar.Python 3, 53 bytes
Mi primera respuesta codegolf.
-10 bytes gracias a Jo King
fuente
Haskell ,
5144 bytes-7 bytes gracias a xnor (usando
iterate
más de comprensión de la lista)!Pruébalo en línea!
Explicación / Ungolfed
El uso de
do
-notation nos ahorra aconcat
, y el uso de notación de infijo permite una función de punto libretake
, deshaciendo esto daría:fuente
Japt
-m
,16151312 bytesGuardado 1 byte gracias a Shaggy
Pruébelo en línea
Explicación:
fuente
Jalea , 15 bytes
Pruébalo en línea!
fuente
MathGolf ,
1715 bytesGuardado 2 bytes gracias a Jo King y Kevin Cruijssen
Pruébalo en línea!
Explicación
El enfoque de 15 bytes es diferente en comparación con mi solución original, no puedo tomar ningún crédito por la implementación.
fuente
if/else
trabajo en MathGolf? Sé cómo funcionan las declaraciones if-without-else y else-without-if, pero ¿cómo crear un if {...} else {...} en MathGolf con¿
? (Tal vez debería publicar esto en el chat en lugar de aquí ... Pero tal vez podría ahorrar 1 byte si puedo arreglar el if-else.)¿12
, presionará 1 si es verdadero; de lo contrario, 2¿Å3*Å1+
agregará uno si es verdadero; de lo contrario, triplicará el siguiente elemento¿{"foo"}{"bar"}
o¿1{2}
.Japt
-m
, 14 bytesPruébalo en línea!
Actualizado con un método completamente nuevo.
Explicación:
fuente
ç
convierte automáticamente su primer parámetro en una cadena, para que pueda soltar el'
.u
método gracias al ajuste de índice, por lo que puede tener 14 bytes.C (gcc) ,
8077767471 bytesPruébalo en línea!
-3 bytes con idea de ASCII solamente .
-1 con en
\0
lugar de\n
-5 reordenamiento de piezas
La salida incluye un final
\0
.fuente
!n--
en el primer bloque de códigoJavaScript (ES6), 58 bytes
Devuelve una cadena separada por espacios.
Pruébalo en línea!
fuente
SNOBOL4 (CSNOBOL4) ,
123122118 bytesPruébalo en línea!
fuente
V , 22 bytes
Pruébalo en línea!
fuente
Carbón , 16 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Tenía tres soluciones de 17 bytes antes de encontrarme con esta. Explicación:
Entrada
n
.Repetir
n
veces, 0 indexado.Dibuje una línea de
-
s de longitud que sea la mitad del índice (truncada).Dibuja la punta de flecha y pasa a la siguiente línea.
Refleja todo, volteando las puntas de flecha.
El bucle anterior tiene
n
reflexiones, pero necesitamos un número par de reflexiones, así que realice otrasn
reflexiones.fuente
Limpio ,
7673 bytesPruébalo en línea!
Utiliza el hecho claro que
['-','-'..]
es lo mismo['--'..]
que ahorrar un poco.fuente
JavaScript, 49 bytes
Pruébalo en línea!
fuente
10000
, mientras tanto, mi solución ES6 todavía funciona: D De todos modos, su solución es genial)Powershell, 51 bytes
fuente
Código de máquina 6502 (C64), 49 bytes
Todavía bastante más corto que BASIC ;) Este tiene un rango de números solo hasta
255
porque el tamaño entero natural de la máquina tiene solo 8 bits.Demostración en línea
Uso:
SYS49152,[n]
(por ejemplo,SYS49152,3
para el ejemplo del desafío)Desmontaje comentado :
fuente
Perl 6 , 39 bytes
Pruébalo en línea!
Bloque de código anónimo que devuelve una lista de líneas.
fuente
K (ngn / k) ,
3129 bytesPruébalo en línea!
primero generamos listas con 0 en lugar de
"<"
, 1 en lugar de"-"
y 2 en lugar de">"
:{
}
funcionar con argumentox
x{
...}\0
aplique losx
tiempos de la función interna , comenzando con un valor inicial0
y preservando los resultados intermedios|x
marcha atrás2-
reemplace 0 con 2 y viceversa, mantenga los 1 como están1,
anteponer un 1(1=*x)_
es el primero dex
igual a 1? en caso afirmativo, suelte un elemento; de lo contrario, suelte 0 elementos (no haga nada)2,
anteponer un 2 para la">"
flecha inicialx#
tenemos demasiadas listas, así que tome solo la primerax
de ellas"<->"
usa los elementos de las listas (0/1/2) como índices en esta cadenafuente
05AB1E ,
2320 bytesPruébalo en línea!
La primera vez que usa 05AB1E o cualquier otro lenguaje de golf para el caso. Cualquier idea bienvenida.
-3 de Kevin Cruijssen
fuente
"><"
puede ser„><
para guardar un byte. Hay órdenes internas para las cadenas 1, 2, y 3 de carbonilla, siendo'
,„
y…
respectivamente. Aquí hay una alternativa de 18 bytes que se me ocurrió, pero tal vez podría jugar un poco más. Si aún no lo ha visto, tenemos consejos para jugar al golf en la página 05AB1E , y también puede preguntar cualquier cosa en el chat .C # (.NET Core) , 90 bytes
Pruébalo en línea!
Utiliza un delegado de acción para extraer la entrada y no requiere un retorno.
Sin golf:
fuente
ES6,
96827970 bytesPruébalo en línea! (Gracias a @Oliver)
fuente
i=>
frente a tu código!) o desde un argumento de línea de comandos o STDIN o algo así.Rojo ,
109108bytes-1 byte gracias a NK1406
Pruébalo en línea!
fuente