Para aquellos que no están familiarizados con el patrón de guisante , es un patrón matemático simple.
Existen múltiples variaciones de este patrón, pero nos centraremos en uno:
Patrón de guisante ascendente
Se parece a esto:
1
11
21
1112
3112
211213
...
Parece realmente difícil obtener la siguiente línea, pero es realmente fácil. La forma de obtener la siguiente línea es contando la cantidad de veces que un dígito se repite en la línea anterior (comience a contar con la más baja, la más grande):
one
one one
two ones
one one, one two
three ones, one two
two ones, one two, one three
...
Requisitos / Reglas:
- Empezaremos a las
1
- Será un fragmento
- Debe haber una manera de especificar el número de líneas que genera (por ejemplo
5
, dará las primeras 5 líneas) - El código debe ser lo más corto posible
- Debe comenzar a contar de menor a mayor (la variación ascendente)
21322314
. ¿Es esto correcto?Respuestas:
APL, 32 caracteres
Esto genera líneas a partir de 0 (es decir ,
0
genera1
,1
genera1
seguido de1 1
, etc.), según lo especificado por la entrada del usuario. Utilicé Dyalog APL para esto, y⎕IO
debería establecerse en su valor predeterminado de 1.Ejemplo:
Una vez que tenga más tiempo, escribiré una explicación. ⍨
fuente
Python (2.x),
8180 caracteresTodos los consejos o comentarios son bienvenidos!
fuente
Perl, 83
Estoy bastante seguro de que algún gurú de Perl podría superar esto, pero aquí va:
Expandido:
El número de filas se pasa a través de STDIN.
fuente
J,
60463926 caracteresEdición 3 : se le ocurrió una forma mucho más agradable de expresar esto.
Edición 2 : Finalmente encontré una manera de mover el argumento al final de la secuencia y deshacerse de las tareas innecesarias.
Previamente:
Edición 1 : corrige la salida que debería ser
y
filas en lugar de lay
fila th. También acorta un poco las cosas. Lástima de los0
s, parece que no puede deshacerse de las malditas cosas.Uso:
Es cierto que el uso es más feo ahora, pero la belleza no es el nombre del juego aquí ...
fuente
Haskell, 116
Uso:
fuente
Lisp común, 140 caracteres
Esto es Lisp, por lo que la función devuelve una lista de listas. (mx) genera X sublistas.
fuente
Mathematica, 70
fuente
Jelly ,
1311 bytes (se agradece su opinión)Pruébalo en línea!
fuente
U€
simplemente puede serU
, se vectoriza hasta el nivel de fila. Luego puede guardar otro byte en líneaṢŒrUF
, utilizandoƲ
(los últimos 4 enlaces como mónada):1ṢŒrUFƲСṖY
ṢŒrU€FƲ
habría funcionado muy bien - que rueda [Ṣ
,Œr
,U€
,F
.] En una mónada Tal vez mi uso de "continuación" era un poco engañosa ^^; Del mismo modo, en algo así comoabc$de$fƲ
operará en los 4 enlaces [a
,bc$
,de$
,f
] y conviértalos en una mónada. Este es el sentido en el que puedes pensar en las rápidas como "operadores de pila de tiempo de análisis": su resultado se devuelve a una pila y actúa como si fuera un enlace para futuras rápidas. )