Você também cria um programa que usa um número inteiro como entrada e gera o primeiro que nunca esse número foi da sequência de look and say .
Por exemplo:
$ ./LAS
8
[1,11,21,1211,111221,312211,13112221,1113213211]
A maneira exata de exibir a lista não é importante, desde que os usuários possam ver distintamente os diferentes números da sequência. Aqui está o problema. Você não pode usar nenhum tipo de variável definida pelo usuário.
Por exemplo:
- Nenhuma variável, incluindo variáveis de escopo.
- Quando você tem funções, elas não podem ter um nome. (Exceção, se o seu idioma exigir uma função principal ou semelhante ao trabalho, você poderá ter essa função.)
- Quando você tem funções, elas não podem ter argumentos nomeados.
Além disso, você não pode usar uma biblioteca com recursos específicos relacionados à seqüência look and say, e não pode acessar a rede ou fornecer ao seu programa nenhum arquivo (embora ele possa gerar e usar os seus próprios.) código tão curto em caracteres ganha!
code-golf
restricted-source
PyRulez
fonte
fonte
When you have functions, they can not have named arguments.
:?Respostas:
GolfScript (31 caracteres)
Adaptado da minha resposta para uma pergunta anterior do tipo "olha e diga" . Este possui uma restrição menos onerosa para linguagens funcionais, o que permite salvar 5 caracteres, mas como a maioria das respostas à pergunta anterior não pode ser adaptada (é uma restrição loucamente onerosa para linguagens não funcionais), não acho que faça sentido. para fechá-lo como um idiota.
fonte
Haskell 206 Chars
Ele funciona usando a função de grupo para agrupá-los em grupos de coisas iguais. Em seguida, ele usa aplicativos com funções para criar uma função que lê simultaneamente o comprimento e o anexa a um dos elementos. Ele usa uma correção e um mapa para criar uma definição recursiva (sem pontos). E pronto.
fonte
J (42 caracteres)
A programação sem pontos (também chamada tácita) é natural em J.
Essa é uma função: para usá-lo, você escreve o código, um espaço e o número de entrada. Por exemplo,
Observe as caixas bonitas na saída.
Adendo : Aqui estão alguns "truques" que eu era tímido demais para usar no começo, mas agora que eu já vi outros usá-los primeiro ...
Aqui está uma versão de 36 caracteres com uma "convenção de chamada" diferente: substitua 8 pelo número de termos que você deseja.
E se houver zeros extras na saída, aqui está uma versão de 32 caracteres:
fonte
GolfScript, 36 caracteres
As variáveis raramente são usadas no GolfScript, e essa tarefa certamente não precisa delas. A entrada está em stdin, a saída em stdout. Por exemplo, a entrada
8
fornece a saída:Posso escrever uma explicação detalhada desse código posteriormente, mas pelo menos você pode facilmente dizer que ele não usa variáveis pelo fato de não incluir o operador de atribuição de variáveis em
:
nenhum lugar.fonte
Haskell, 118 caracteres (80 sem importações)
fonte
Bash e coreutils,
11173 caracteresuniq -c
está fazendo o trabalho pesado para produzir o próximo número na sequência.yes
,sed
Eeval
criar o necessário número de repetições do pipeline de processamento. O resto é apenas formatação.A saída é colocada em um arquivo chamado
o
.:fonte
Mathematica, 65 caracteres
Exemplo:
fonte
J, 37 caracteres
Com base na minha resposta à pergunta Pea Pattern . Pode haver algum potencial de redução aqui. O uso é como para a outra resposta J:
Ele também tem o problema de zeros extras que minha resposta no padrão de ervilha teve.
fonte
Perl 6:
6353 caracteresCrie uma lista lenta da sequência Look and Say (
1,*.subst(/(\d)$0*/,{.chars~.[0]},:g)...*
) e obtenha quantos elementos[^get]
forem especificados pelo usuário ( que é um índice e meios de matriz[0..(get-1)]
) esay
todos eles.A lista lenta funciona primeiro com 1, depois para gerar cada número sucessivo, pega o último encontrado e substitui todas as seqüências do mesmo dígito, conforme correspondido por
/(\d)$0*/
, e as substitui por {quantos} + {que dígito} , ou.chars~.[0]
.As únicas variáveis nesse código são
$0
: a primeira captura da correspondência e a$_
variável tópica implícita que.method
é chamada, e nenhuma delas é definida pelo usuário.fonte
GolfScript,
5743 caracteresMinha própria abordagem. Acabou mais do que o existente, infelizmente = (.
Saída de amostra para stdin de
8
:Versão alternativa sem o
9
sentinela, ainda mais com 47 caracteres. Eu suspeito que tem mais potencial:fonte
Scala 178
fonte
i
ini=>
é uma variável.Dyalog APL, 35 caracteres
(⊢,⊂∘∊∘((≢,⊃)¨⊃⊂⍨2≢/0,⊃)∘⌽)⍣(⎕-1)⊢1
⎕
é entrada avaliada. No link, substituí-o por 8, pois o tryapl.org não permite a entrada do usuário.Sem variáveis nomeadas (
a←1
), sem funções nomeadas (f←{}
), sem argumentos (⍺
,⍵
).Somente composição de funções:
f¨
reduzaf/
:, comute:f⍨
f⍣n
compor: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))
Funções primitivas usadas:
A⊢B ←→ B
⌽B
⊃B
A,B
A≢B
:, conte:≢B
⊂B
partição:A⊂B
∊B
No tryapl.org, se você remover a trilha,
⊢1
que é o argumento para essa coisa composta maciça, poderá ver um diagrama de como ela é analisada:fonte
J 66 (com E / S)
sem IO, pontuação 43:
Pergunta engraçada para se colocar, quando é o primeiro 9 a aparecer?
fonte