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 queue
nã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.txt
ou 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 Z
a primeira palavra tem 5 letras e a segunda 3.
O código mais curto em bytes vence.
f1
colada f2
deve conter todos os dados especificados no desafio. Nenhum dado adicional pode fazer parte da saída de f1
. Nenhum dado pode ser "armazenado" ao f1
disponibilizar as informações ao chamá-lo f2
. f1
pode receber apenas uma sequência como entrada por chamada.