Este desafio consiste em duas partes. O vencedor será a solução com a menor contagem total de bytes. O mesmo idioma deve ser usado para ambos os desafios.
Parte 1:
Escreva uma função ou programa que use uma frase com apenas palavras válidas como entrada e produz uma lista dos caracteres usados, o número de vezes que cada letra é usada e o número de letras em cada uma das palavras na frase original. A saída deste programa deve ser válida para o próximo programa (exatamente como é emitida)
Vou adicionar exemplos e regras detalhadas mais adiante.
Parte 2:
Escreva uma função ou programa que use a saída do primeiro programa como entrada e use esta lista de palavras em inglês e recrie uma frase com as informações da saída. A sentença não precisa ser igual à sentença original.
Mais Informações. regras e restrições:
Parte 1:
- A primeira entrada pode estar em qualquer formato adequado, com ou sem aspas, como argumento de função ou de STDIN, com ou sem colchetes, etc.
- A frase de entrada não conterá pontuação ou caracteres especiais, exceto um ponto / ponto no final. Exceto pelo símbolo do período, todos os caracteres que estão na entrada estarão na lista de palavras.
- A primeira letra da frase será em maiúscula, o restante será em minúscula.
- A saída da parte 2 deve começar com a mesma letra maiúscula que a frase original (portanto, a conversão da entrada para minúscula não é recomendada (mas OK).
- A saída pode estar em qualquer formato adequado:
- Deve ser possível copiar e colar a saída diretamente no próximo programa / função
- Nenhuma alteração pode ser feita ao copiar e colar, toda a saída deve ser copiada e colada como um todo, não em partes.
- Por exemplo, você pode imprimir um histograma de todas as letras do alfabeto ou apenas as que são usadas (em geral, o que for necessário para concluir a parte 2)
- Você não pode exibir uma lista de caracteres em que várias ocorrências são repetidas. Por exemplo,
The queuenão pode produzir uma saída:Teeehquu (3,5), deve ser algo como:Tehqu, (1 3 1 1 2),(3 5).
Parte 2:
- O programa / função deve aceitar a entrada exatamente como na parte 1 (uma exceção, consulte o comentário abaixo sobre como colocar o nome do arquivo como entrada).
- Se colchetes, aspas ou similares forem necessários para analisar a entrada, eles deverão fazer parte da saída da parte 1.
- A lista de palavras pode ser encontrada aqui.
- A lista de palavras pode ser salva localmente como
w.txtou pode ser buscada no URL. O URL contará apenas 5 bytes, portanto você não precisa de um encurtador de URL. - Se o programa não puder abrir um arquivo sem ler o nome como uma entrada do STDIN (acredito que esse
sejao caso de Pyth, pelo menos), o nome do arquivo poderá ser considerado como um argumento de entrada separado.
- A lista de palavras pode ser salva localmente como
- A saída deve ser apenas uma frase (lista de palavras válidas), terminando com um ponto final e uma nova linha opcional.
- A saída deve conter palavras com o mesmo número de letras da sentença original na parte 1 (na ordem correta)
- Todas as letras que foram usadas na frase original devem ser usadas na nova saída.
- A frase deve começar com a mesma letra maiúscula que a frase de entrada original e terminar com um ponto.
Ambas as partes:
- Nenhuma das partes deve levar mais de 2 minutos para ser executada (escolher palavras aleatoriamente até que uma solução seja alcançada não é aceito).
Com as regras listadas acima, deve haver uma chance razoável de que a mesma frase seja reproduzida, no entanto, isso não é um requisito.
Exemplos:
Nos exemplos abaixo, são mostrados alguns formatos diferentes de entrada e saída. Muitos mais são aceitos.
Parte 1:
Entrada:
Zulus win.
Tipo de saída 1:
Z i l n s u w
1 1 1 1 1 2 1
5 3
Tipo de saída 2:
(('Z',1),('i',1),('l',1),('n',1),('s',1),('u',2),('w',1)), (5,2)
Tipo de saída 3:
'Zilnsuuw',[1,1,1,1,1,2,1],[5,2]
Parte 2:
Entrada: uma cópia exata da saída da parte 1. Saída:
Zulus win.
Observe que outras combinações de palavras são aceitas desde que comecem com ae Za primeira palavra tem 5 letras e a segunda 3.
O código mais curto em bytes vence.
f1colada f2deve conter todos os dados especificados no desafio. Nenhum dado adicional pode fazer parte da saída de f1. Nenhum dado pode ser "armazenado" ao f1disponibilizar as informações ao chamá-lo f2. f1pode receber apenas uma sequência como entrada por chamada.
