Usted también crea un programa que toma un número entero como entrada y emite el primero, cualquiera que sea ese número de la secuencia de mirar y decir .
Por ejemplo:
$ ./LAS
8
[1,11,21,1211,111221,312211,13112221,1113213211]
La forma exacta en que genera la lista no es importante, siempre que los usuarios puedan ver claramente los diferentes números de la secuencia. Aquí está la trampa sin embargo. No puede usar ningún tipo de variable definida por el usuario.
Por ejemplo:
- Sin variables, incluidas las variables de ámbito.
- Cuando tiene funciones, no pueden tener un nombre. (Excepción, si su idioma requiere una función principal o similar al trabajo, puede tener esa función).
- Cuando tiene funciones, no pueden tener argumentos con nombre.
Además, no puede usar una biblioteca con capacidades específicas relacionadas con la secuencia de mirar y decir, y no puede acceder a la red ni proporcionar a su programa ningún archivo (aunque puede generar y usar el suyo). Este es el código golf, ¡Entonces el código más corto en caracteres gana!
code-golf
restricted-source
PyRulez
fuente
fuente
When you have functions, they can not have named arguments.
?Respuestas:
GolfScript (31 caracteres)
Adaptado de mi respuesta a una pregunta previa de mirar y decir . Este tiene una restricción menos onerosa para los lenguajes funcionales, lo que permite guardar 5 caracteres, pero debido a que la mayoría de las respuestas a la pregunta anterior no se pueden adaptar (es una restricción locamente onerosa para los lenguajes no funcionales) No creo que tenga sentido para cerrarlo como un engañado.
fuente
Haskell 206 Chars
Funciona usando la función de grupo para agruparlos en grupos de cosas iguales. Luego usa aplicativos con funciones para construir una función que lee simultáneamente la longitud y la agrega con uno de los elementos. Utiliza una solución y un mapa para crear una definición recursiva (sin puntos). Y listo.
fuente
J (42 caracteres)
La programación sin puntos (también llamada tácita) es natural en J.
Esa es una función, para usarla escribes el código, un espacio y el número de entrada. Por ejemplo,
Observe los cuadros bonitos en la salida.
Anexo : Aquí hay un par de "trucos" que al principio era demasiado tímido para usar, pero ahora que he visto a otros usarlos primero ...
Aquí hay una versión de 36 caracteres con una "convención de llamada" diferente: reemplace 8 con el número de términos que desee.
Y si tener ceros adicionales en la salida está bien, aquí hay una versión de 32 caracteres:
fuente
GolfScript, 36 caracteres
Las variables rara vez se usan en GolfScript, y esta tarea ciertamente no las necesita. La entrada está en stdin, salida a stdout. Por ejemplo, la entrada
8
da la salida:Puedo escribir una explicación detallada de este código más adelante, pero al menos puedes decir fácilmente que no usa variables por el hecho de que no incluye el operador de asignación de variables en
:
ningún lado.fuente
Haskell, 118 caracteres (80 sin importaciones)
fuente
Bash y Coreutils
11173 caracteresuniq -c
está haciendo el trabajo pesado para producir el siguiente número en la secuencia.yes
,sed
Yeval
crear el número necesario de repeticiones de la canalización de procesamiento. El resto es solo formatear.La salida se coloca en un archivo llamado
o
.:fuente
Mathematica, 65 caracteres
Ejemplo:
fuente
J, 37 caracteres
Basado en mi respuesta a la pregunta del patrón de guisantes . Puede haber algún potencial para acortar aquí. El uso es como para la otra respuesta J:
También tiene el problema de ceros adicionales que tenía mi respuesta de patrón de guisante.
fuente
Perl 6:
6353 caracteresCree una lista perezosa de la secuencia Look and Say (
1,*.subst(/(\d)$0*/,{.chars~.[0]},:g)...*
), y luego obtenga tantos elementos como especifique el usuario ([^get]
que es un subíndice de matriz y medios[0..(get-1)]
), ysay
todos ellos.La lista perezosa funciona tomando primero 1, luego para generar cada número sucesivo, toma el último que encontró y sustituye todas las secuencias del mismo dígito, según corresponda
/(\d)$0*/
, y las reemplaza con {cuántos} + {qué dígito} o.chars~.[0]
.Las únicas variables en este código son
$0
, la primera captura de la coincidencia, y la$_
variable tópica implícita que se.method
llama, y ninguna de estas son definidas por el usuario.fuente
GolfScript,
5743 caracteresMi propio enfoque Terminó más tiempo que el existente tristemente = (.
Salida de muestra para stdin de
8
:Versión alternativa sin el
9
centinela, pero es más larga con 47 caracteres. Sospecho que tiene más potencial:fuente
Scala 178
fuente
i
eni=>
es una variable.Dyalog APL, 35 caracteres
(⊢,⊂∘∊∘((≢,⊃)¨⊃⊂⍨2≢/0,⊃)∘⌽)⍣(⎕-1)⊢1
⎕
Se evalúa la entrada. En el enlace lo he reemplazado por 8, ya que tryapl.org no permite la entrada del usuario.Sin variables con nombre (
a←1
), sin funciones con nombre (f←{}
), sin argumentos (⍺
,⍵
).Única composición de funciones:
f¨
reducir:,f/
conmutar:f⍨
f⍣n
componer:f∘g
(f g h)B ←→ (f B)g(h B)
;A(f g h)B ←→ (A f B)g(A h B)
(f g)B ←→ f(g B)
;A(f g)B ←→ f(A g B)
(f g h k) ←→ (f (g h k))
Funciones primitivas utilizadas:
A⊢B ←→ B
⌽B
⊃B
A,B
A≢B
cuenta:≢B
⊂B
partición:A⊂B
∊B
En tryapl.org, si elimina el final
⊢1
, que es el argumento de esta cosa compuesta masiva, puede ver un diagrama de cómo se analiza:fuente
J 66 (con E / S)
sin IO, puntajes 43:
Pregunta divertida para hacerte, ¿cuándo aparecerán los primeros 9?
fuente