La secuencia "Mira y dice" o "Di lo que ves" es una serie de números donde cada uno describe el último.
1
11 (one one)
21 (two ones)
1211 (one two, one one)
111221 (one one, one two, two ones)
312211 (three ones, two twos, one one)
y sigue y sigue ... https://oeis.org/A005150
De todos modos, este es un desafío de código de golf regular (gana menos conteo de bytes) para hacer un programa que tome dos argumentos, un número inicial y la cantidad de iteraciones. Por ejemplo, si conectó "1" y "2", el resultado sería "21". Si conectó "2" y "4", el resultado sería "132112". ¡Que te diviertas!
Respuestas:
Pyth,
108 bytes-2 bytes por @FryAmTheEggman
Explicación:
Probarlo aquí .
fuente
ussrG8Qz
CJam, 8 bytes
El formato de entrada es el número inicial primero, las iteraciones segundo, separadas por un espacio en blanco.
Pruébalo aquí.
Explicación
La matriz también se aplana antes de imprimirse, por lo que el resultado es solo el número requerido.
fuente
JavaScript, 57 bytes
La recursión funciona bien para este problema. El primer parámetro es el número inicial como una cadena, y el segundo es el número de iteraciones.
fuente
b=>F=a=>b--?F(a.replace(/(.)\1*/g,c=>c.length+c[0])):a
descubrí que mientras jugaba mi respuesta antes deMATL , 9 bytes
Las entradas son: número de iteraciones, número inicial.
Pruébalo en línea!
fuente
R, 87 bytes
Ungolfed y explicado
fuente
Perl 6, 63 bytes
Esto es lo más corto que podría obtener por ahora, puede haber algunas banderas difíciles que podrían reducirlo, no estoy seguro
fuente
Ruby, 63 bytes
Un programa completo, ya que la pregunta parece pedir eso. Toma datos como argumentos de línea de comando.
No,
gsub!
no se puede usar, ya que las cadenas$*
están congeladas: /fuente
-p
bandera para guardar bytes? Si lo usa,gsub
opera en una línea de STDIN como si fuera$_.gsub!
. Entonces el argumento de la línea de comando son las iteraciones, entoncesn,=$*
, y la otra entrada se lee desde STDIN.Retina ,
464527 bytesMartin hizo mucho para ayudar a jugar golf.
Pruébalo en línea
Toma entrada en el formato:
<start>
Es el número inicial.<count>
está en unario, todos los guiones bajos, y es cuántas iteraciones se realizan.Iteración simple,
2016 bytes:fuente
Haskell , 62 bytes
Pruébalo en línea!
fuente
JavaScript ES6, 71 bytes
Toma la entrada como una cadena y un número.
fuente
('1',2)
me da12
, cuando debería ser21
. Tu longitud debe venir antes del personaje en el reemplazo.Perl 5, 50 bytes
Los argumentos están en orden inverso (número de iteraciones luego semilla). Ejemplo:
fuente
$_
lugar desay
, supongo, pero no lo he probado. La solución actual es un programa.05AB1E , 9 bytes (no competidor)
Corregido debido a los comentarios de Emigna, ver abajo / ediciones.
Pruébalo en línea!
fuente
F
al principio y tomar los argumentos comoiterations,initialNo
Dgs
congy
.y
hacer en ese contexto?R ,
6157 bytes-4 gracias a @JayCe, ¡justo cuando estaba seguro de que no podía hacerse más simple!
Pruébalo en línea!
fuente
t(sapply(z,c))
llamada es inteligente.Mathematica,
8173 bytesfuente
Gelatina , 6 bytes (no competitiva)
Pruébalo en línea!
fuente
Stax , 10 bytes
¡Ejecute y depure en línea!
Pasé demasiados bytes en el formato IO adecuado ...
Explicación
Utiliza la versión desempaquetada para explicar.
La parte esencial es
D|R{rm:f
(8 bytes).Si la primera entrada se puede tomar como una matriz de dígitos, todo el programa se puede escribir en 9 bytes: ¡ Ejecute y depure en línea!
fuente
Python 3, 138 bytes
Usé un enfoque recursivo.
La función acepta dos entradas
a
yb
como se describe.¡Estoy sorprendido de lo breves que son las entradas aquí! Tal vez alguien venga con un mejor método de Python también.
fuente
Perl, 38 + 2 bytes
Requiere la
-p
bandera:La entrada es una cadena de varias líneas:
Si también se requieren todos los pasos, podemos cambiarlo a lo siguiente, que es 44 + 2 bytes:
fuente
Pilones , 11
Cómo funciona:
fuente
SmileBASIC,
10098 bytesImprime todos los pasos.
T/T
está ahí para finalizar el programa cuando T es 0.fuente
APL (Dyalog Classic) , 22 bytes
Pruébalo en línea!
fuente
Retina , 27 bytes
Pruébalo en línea!
fuente
K (ngn / k) , 30 bytes
Pruébalo en línea!
fuente
Python 3.6,
1009893 bytesPruébalo en línea!
Tenga en cuenta que esto crea una lambda que toma una cadena y un número entero, y devuelve una cadena. Ejemplo:
f('1', 5) == '312211'
Encuentra todos los caracteres repetidos (
((.)\2*)
regex), crea una cadena f de su longitud y el propio carácter (r'{len("\1")}\2'
), luego lo evalúa. Utiliza la recursividad en el contador (n and ...f(s,n-1)... or s
) para evitar tener que definir una función adecuada y un bucle.fuente