A sequência "Veja e diga" ou "Diga o que vê" é uma série de números em que cada um descreve o ú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)
e assim por diante ... https://oeis.org/A005150
De qualquer forma, esse é um desafio regular de golfe com códigos (vitórias na contagem de bytes) para criar um programa que use dois argumentos, um número inicial e a quantidade de iterações. Por exemplo, se você inseriu "1" e "2", o resultado seria "21". Se você conectou "2" e "4", o resultado seria "132112". Diverta-se!
Respostas:
Pitão,
108 bytes-2 bytes por @FryAmTheEggman
Explicação:
Experimente aqui .
fonte
ussrG8Qz
CJam, 8 bytes
O formato de entrada é o número inicial primeiro, as iterações em segundo, separadas por algum espaço em branco.
Teste aqui.
Explicação
A matriz também é achatada antes de ser impressa, para que o resultado seja apenas o número necessário.
fonte
JavaScript, 57 bytes
A recursão funciona bem para esse problema. O primeiro parâmetro é o número inicial como uma sequência e o segundo é o número de iterações.
fonte
b=>F=a=>b--?F(a.replace(/(.)\1*/g,c=>c.length+c[0])):a
descobriram que, enquanto golfe minha resposta antes de eu percebi que era praticamente idêntico ao seu;)MATL , 9 bytes
As entradas são: número de iterações, número inicial.
Experimente online!
fonte
R, 87 bytes
Ungolfed & Explained
fonte
Perl 6, 63 bytes
Isso é o mais curto que eu consegui por enquanto, pode haver algumas sinalizações complicadas que poderiam reduzi-lo, não tenho certeza
fonte
Ruby, 63 bytes
Um programa completo, já que a pergunta parece pedir isso. Recebe entrada como argumentos de linha de comando.
Não,
gsub!
não pode ser usado, pois as seqüências de caracteres$*
estão congeladas: /fonte
-p
sinalizador para salvar bytes? Se você usá-lo,gsub
opera em uma linha de STDIN como se fosse$_.gsub!
. Em seguida, o argumento da linha de comandos são as iteraçõesn,=$*
, e a outra entrada é lida em STDIN.Retina ,
464527 bytesMartin fez muito para ajudar no golfe.
Experimente online
Recebe entrada no formato:
<start>
é o número inicial.<count>
está em unário, todos os sublinhados e é quantas iterações são executadas.Iteração única,
2016 bytes:fonte
Haskell , 62 bytes
Experimente online!
fonte
JavaScript ES6, 71 bytes
Recebe a entrada como uma sequência e um número.
fonte
('1',2)
me dá12
, quando deveria ser21
. Seu comprimento deve vir antes do personagem na substituição.Perl 5, 50 bytes
Os argumentos estão na ordem inversa (número de iterações e depois sementes). Exemplo:
fonte
$_
instead ofsay
, I suppose, but I haven't tested it. The current solution is a program.05AB1E, 9 bytes (Non-competing)
Corrected due to Emigna's comments, see below/edits.
Try it online!
fonte
F
at the beginning and take the arguments asiterations,initialNo
Dgs
withgy
.y
do in that context?R,
6157 bytes-4 thanks to @JayCe, just when I was sure it couldn't be done any simpler!
Try it online!
fonte
t(sapply(z,c))
call is clever.Mathematica,
8173 bytesfonte
Jelly, 6 bytes (non-competing)
Try it online!
fonte
Stax, 10 bytes
Run and debug online!
Spent too many bytes on proper IO format ...
Explanation
Uses the unpacked version to explain.
The essential part is
D|R{rm:f
(8 bytes).If the first input can be taken as an array of digits, the whole program can be written in 9 bytes: Run and debug online!
fonte
Python 3, 138 bytes
I used a recursive approach.
The function accepts two ints,
a
andb
as described.I'm amazed at how terse the entries here are! Maybe someone will come along with a better Python method too.
fonte
Perl, 38 + 2 bytes
Requires the
-p
flag:Input is a multi line string:
If all the steps are required as well then we can change it to the following, which is 44 + 2 bytes:
fonte
Pylons, 11
How it works:
fonte
SmileBASIC,
10098 bytesPrints out all the steps.
T/T
is there to end the program when T is 0.fonte
APL (Dyalog Classic), 22 bytes
Try it online!
fonte
Retina, 27 bytes
Try it online!
fonte
K (ngn/k), 30 bytes
Try it online!
fonte
Python 3.6,
1009893 bytesTry it online!
Note this creates a lambda that takes a string and an integer, and returns a string. Example:
f('1', 5) == '312211'
Finds all repeated characters (
((.)\2*)
regex), makes a f-string out of their length and the character itself (r'{len("\1")}\2'
), then evaluates it. Uses recursion on the counter (n and ...f(s,n-1)... or s
) to avoid having to define a proper function and a loop.fonte