Dado un número N
, genera un triángulo en ángulo recto NxN, donde cada fila i
se llena con números hasta i
.
Ejemplo
n = 0
(ninguna salida)
n = 4
1
1 2
1 2 3
1 2 3 4
n = 10
1
1 2
1 2 3
.
.
.
1 2 3 4 5 6 7 8 9 10
(no se necesita alineación)
n = N
1
1 2
1 2 3
.
.
.
1 2 3 4 .... N
No hay espacio final al final de cada línea.
Se gana el menor número de bytes y no se permiten las lagunas estándar.
Respuestas:
Joe ,
53 bytes (+2 o +3 para-t
bandera)Bueno, aparentemente no utilicé todo el potencial de Joe. Esto fue posible cuando publiqué esto por primera vez.
Aquí,
R
da el rango de 0 a n, exclusivo. Luego\A
toma sucesivos prefijos (A
es la función de identidad). Ejemplos:Con
-t
bandera (nota: esta es ahora la salida estándar incluso sin la bandera):Sin ello:
Las reglas cambiaron un poco. Mi código anterior no se comportó correctamente con N = 0. Además, ahora la salida podría ser solo una lista anidada, por lo que
-t
se puede descartar.Ahora,
Rn
da un rango de 0 a n, exclusivo. Si se le da 0, devuelve una lista vacía.1+
agrega 1 a cada elemento de ese rango.1R
asigna los valores a rangos de 1 a x. Los pasivos vacíos, cuando se asignan, devuelven listas vacías.Salida de ejemplo:
Actualización: acabo de notar algo. La función se asigna automáticamente a elementos de rango 0. El siguiente ejemplo se ejecuta con
-t
flag.Antiguo: 5 bytes (con la
-t
bandera)Esta es una función anónima que toma un número, crea una lista de 1 a N (
1Rn
) y asigna esos valores al rango anterior, dando un rango de 1 a x para cada elemento del rango 1 a N.La
-t
bandera da salida como una tabla tipo J.Nota: el lenguaje es muy nuevo y no está completo, pero la última versión se lanzó antes de este desafío.
fuente
Python 3,
4845 bytesHurra por los efectos secundarios.
fuente
print
de ejecutar elprint
s en orden inverso.APL, 5
crea un vector 1..n y para cada elemento otro vector de este tipo.
Entonces ⍪ forma una columna con todos los vectores. Esto evita el problema con los espacios en blanco finales.
Pruébalo en tryapl.org
Solución anterior:
Crea un vector 1..n
{⎕ ← ⍳⍵} es una función que genera para cada elemento (¨) un vector 1..n en una línea separada
Desafortunadamente, este no se puede probar en tryapl.org, porque ⎕ ← no funciona allí.
fuente
J, 27 bytes
J no es bueno con salida numérica sin matriz. Esta función crea una cadena con el formato adecuado a partir de los números.
Pruébelo en línea aquí.
fuente
]\@i.
para obtener;@(<@,&LF@":@:>:@:]\@i.)
PHP, 53 bytes
Edición 2: Ismael Miguel sugirió leer desde la entrada en lugar de definir una función, por lo que la puntuación ahora es de 53 bytes para PHP:
Y una vez más, se puede mejorar si PHP está configurado para ignorar errores (52 bytes):
Editar: Austin sugirió una versión de 60 bytes en los comentarios:
Que se puede mejorar si no mostramos errores de PHP (59 bytes):
$a
almacena la siguiente línea que se imprimirá, y cada vez que se imprime un espacio y el siguiente número (print
siempre devuelve1
) se concatenan.Funciones recursivas (65 bytes):
Función recursiva más corta, con informe de errores deshabilitado (64 bytes):
Función recursiva aún más corta, con informe de errores deshabilitado y una línea vacía antes de la salida real (62 bytes):
Solo por diversión, funciones no recursivas:
fuente
for($a=1;@$i<$n;$a.=" ".(@++$i+print"$a\n"));
for($a=1;@$i++<$n;$a.=" ".($i+print"$a\n"));
(44 bytes)function f($n){for($a=1;@$i++<$n;$a.=" ".($i+print"$a\n"));}
, que es 60 bytes.for($a=1;$i++<$n=$_GET[n];$a.=" ".($i+print"$a\n"));
-> prueba esto (código completo, usando el parámetro urln
con el número)CJam,
1312 bytesCómo funciona :
Pruébalo en línea aquí
fuente
Pyth, 9 bytes
Realmente pensé que esto se puede hacer más corto, pero no lo parece.
Pruébalo en línea .
fuente
VQaYhNjdY
. Si soloa
devuelve la lista, entonces algo asíVQjdaYhN
sería 8.a
brevemente utilizado para devolver la lista adjunta.N+1+1-1
?r
es la función de rango de Python, por lo tanto, el -1 (r1N
crea la lista[1, 2, ..., N-1]
). Pero en la iteración enésima del bucle, quiero la lista[1, 2, ..., N+1]
, por lo tanto, tengo que añadir2
aN
.r1hhN
se traduce directamente arange(1, N+1+1)
. Otra posibilidad seríar1+N2
(range(1, N+2)
).mhdhN
, pero ese es un enfoque completamente diferente.JavaScript (ES6) 49
52Una tarea tan simple, me pregunto si esto se puede acortar en JS (Actualización: sí, usando recursividad)
Recursivo 49
Iteraive 52
fuente
Java,
8584 bytesEsto es sorprendentemente corto en Java.
Sangrado:
1 byte gracias a Bigtoes / Geobits
fuente
b+=...
enprintln(b+=...)
.Prólogo - 119
fuente
Python 2 -
62 625465 bytesfuente
n
debe dar como entrada al programa, no inicializado en una variable.N
haciendoN=input()
o algo similar, para que tu programa pueda ejecutarse como tal. Aquí hay una Meta discusión sobre el tema.J, 9 caracteres
Como verbo tácito, monádico.
i. y
- los números de0
ay - 1
.1 + i. y
- los números de1
ay
.": y
- el vectory
representado como una cadena.":\ y
- cada prefijo dey
representado como una cadena.":\ 1 + i. y
- cada prefijo de los números de1
ay
representados como una matriz de caracteres.fuente
> <> (Pez) ,
4037 + 3 = 40 bytesUna vez más,> <> funciona decentemente bien en otro ejercicio de impresión de números. Ejecutar con la
-v
bandera de entrada, por ejemploExplicación
fuente
C (sin bucles, ¡sí!) - 72 bytes
Esto crea una función
r(n)
que se puede usar de esta manera:Véalo en acción, aquí en tutorialspoint.com
Requiere unos pocos trucos fáciles de explicar. Creo que se puede mejorar mucho.
fuente
b(n,c){if(n){b(n-1,32);printf("%d%c",n,c);}}r(n){if(n){r(n-1);b(n,10);}}
b(n,c){n&&b(n-1,32)^printf("%d%c",n,c);}r(n){n&&r(n-1)^b(n,10);}
Wandbox dePython 2 - 72
fuente
p
. En otra nota, puede eliminar dos espacios, uno entreprint
y'\n'
y el otro entre)))
yfor
.def p(N):print'\n'.join(' '.join(map(str,range(1,i+2)))for i in range(N))
Perl, 28
Lee el parámetro de stdin.
Desde la línea de comando:
pero ahora no sé cómo contar eso (probablemente entre 25 y 29).
fuente
Pitón
fuente
for i in range(int(input())):print(' '.join("123456789"[:i+1]))
cuenta que las cadenas se tratan como listas.Golfscript 14
Espera que el número de entrada esté presente en la pila.
Ejemplo en línea: enlace
fuente
Clip , 16
Explicación
fuente
Ir,
9381789390 bytesActual sin golf
Si necesitamos manejar N> 9, podemos usar lo siguiente en 78 bytes, sin embargo, requiere importar el
fmt
paquete.Si incluimos la declaración de importación, ahora estoy de vuelta en mi inicial
939290 bytesPruébelo en línea aquí: http://play.golang.org/p/BWLQ9R6ilw
La versión con
fmt
está aquí: http://play.golang.org/p/hQEkLvpiqtfuente
!=
a>
.import
declaraciónZX / Sinclair BASIC - 39 bytes
ZX Basic utiliza 1 byte por palabra clave (todas las palabras en mayúscula), por lo que ayuda a mantener un poco el tamaño del byte ...
Usando n = 8
fuente
VAL("1")
(6 bytes ya que VAL es 1) en lugar de1
(7 bytes))R, 28
fuente
[1]
de cada línea infringe la especificación.1; 1 0
. (Pretender que;
es un salto de línea.)cat(1:i,"\n")
. Aunque es un poco más largo queprint(1:i)
, no incluye un inicio[1]
en cada línea.TI-Basic, 28 bytes
fuente
C, 89 caracteres
Para eliminar la confusión sobre
puts("");
. Esto simplemente imprime un carácter de nueva línea (como se ve aquí ):Lo hice un poco más corto con el algoritmo java de @ TheBestOne:
fuente
puts("");
no hace nada. Puede usar enchar b[999]=""
lugar dechar b[999]={0}
guardar 1 personaje.puts("");
Imprime un carácter de nueva línea.Perl: 34 caracteres
Este código obtiene el número de entrada proporcionado a través de la variable especial
$_
.fuente
print"@$_\n"for map[1..$_],1..$_
también funciona.C # - 94 bytes
Escrito como una función anónima que devuelve una cadena, que no parece estar prohibida por la especificación.
Aquí hay una versión sin golf (los comentarios se leen en orden BDCA):
fuente
Bash + coreutils, 26 bytes
seq
simplemente genera los números 1 a nsed
guarda la salida completa para una línea dada en el espacio de espera y luego agrega la siguiente línea.fuente
Haskell,
6257 bytesEstilo sin puntos. Ejemplo de uso:
fuente
e=enumFromTo 1
ahorra 7 bytes.enumFromTo 1
, también tengo que darle un nombre a la función principal, por lo que son 5 bytes. Sin el nombre sería unalet
construcción:let e=enumFromTo 1 in (putStr.unlines.map(unwords.map show.e).e) 5
Mathematica, 32
fuente
TableForm[Range/@Range@#]&
?Grid[Range/@Range@#]&
Grid
).Scala,
736562 bytesSin golf
fuente