Meu dever de casa é escrever um ensaio marciano (veja abaixo) entre 729 e 810 palavras, inclusive. Sua tarefa é escrever um programa que gere o ensaio.
História
Por volta da virada do século XX, a espiritualista Catherine-Elise Müller teria se comunicado com os marcianos. Durante transes sonâmbulos, ela escrevia roteiros marcianos. O psicólogo Théodore Flourney descobriu que seus escritos marcianos eram muito semelhantes aos franceses nativos e, em seu livro "Da Índia ao planeta Marte", ele documentou o alfabeto marciano de Catherine.
O que se segue é vagamente baseado nesse alfabeto com um mito extenso.
Descrição do Problema
A língua marciana tem 21 letras, mostradas aqui ao lado de cada equivalente latino:
Infelizmente, não há Unicode para Marciano (apesar de Marte fazer parte do universo), por isso estamos presos a caracteres latinos.
Enquanto em inglês nossos fonemas se dividem em dois tipos principais (consoantes / vogais) que mapeamos livremente para letras, Marciano possui três tipos de letras:
- As vogais: aeimnou
- As consoantes difíceis: bcdgkpt
- As consoantes suaves: fhlrsvz
Além disso, o idioma marciano contém um único sinal de pontuação - o período.
Uma palavra marciana é um conjunto de 3 a 9 letras. Todas as palavras marcianas têm pelo menos uma vogal, uma consoante dura e uma consoante suave (em qualquer arranjo). Por exemplo, fng
, cdaz
, vpi
, e pascal
são palavras marcianas.
Uma frase marciana é um conjunto de 3 a 9 palavras marcianas delimitadas por espaços e seguidas por um ponto final.
Um parágrafo marciano é um conjunto de 3 a 9 sentenças marcianas delimitadas por espaços e seguidas por uma nova linha.
Um ensaio marciano é uma coleção de parágrafos marcianos que não contêm repetições de palavras contíguas.
Uma repetição contígua de palavras é qualquer constructo SS em que S é um conjunto contíguo de palavras. Observe que essa definição ignora os limites de sentenças e parágrafos.
Exemplos
Observação: existe uma nova linha posterior à direita após cada exemplo (já que todos os parágrafos marcianos terminam em uma nova linha)
Ensaio não marciano
lorem ipsum dolor sit amet. quis nostrud exercício ullamco laboris.
...por muitas razões. Este exemplo é para ilustrar algumas regras diversas:
- Lorem não é uma palavra marciana porque não tem consoantes difíceis.
- amet não é uma palavra marciana porque não tem consoantes suaves. (
m
é uma vogal marciana). - quis não é uma palavra marciana porque não tem consoantes difíceis
- quis não é uma palavra marciana porque q não é uma letra marciana
- exercício não é uma palavra marciana porque tem mais de 9 letras
- exercício não é uma palavra marciana porque x não é uma letra marciana
Ensaio marciano
fng cdaz vpi. pascal quebrou básico. popplers gosto muito.
... porque é um parágrafo marciano. O parágrafo marciano contém três frases marcianas.
Ensaio não marciano
fng cdaz vpi. pascal quebrou básico. regras pascal gratuitas.
... já que free pascal rules.
não é uma sentença marciana, porque free
nem rules
são palavras marcianas, porque elas não têm consoantes difíceis.
Ensaio marciano
fng cdaz vpi. pascal quebrou básico. popplers gosto muito. cdaz vpi fng. pausas básicas pascal. popplers soco forte. fng cdaz vpi.
... que contém dois parágrafos marcianos. A frase fng cdaz vpi.
aparece duas vezes, mas está perfeitamente bem.
Ensaio não marciano
popplers gosto fng. cdaz vpi pascal. quebrou fng cdaz vpi. Pascal quebrou planetas omicron. sustos básicos cabras. vpi piv vpi.
... porque o construto fng. cdaz vpi pascal. broke fng cdaz vpi. [nl] pascal broke
é uma repetição de palavras contígua.
Desafio
Seu desafio é escrever uma função ou programa que não aceite nenhuma entrada, que produz como saída minha lição de casa; isto é, seu programa deve gerar um ensaio marciano entre 729 e 810 palavras (inclusive). Lembre-se de que a saída do seu programa deve ser um ensaio marciano válido, mas você não precisa gerá-lo aleatoriamente ou diferente a cada vez. Tudo o que você faz para gerar um ensaio marciano válido conta.
Eu escrevi um programa C ++ para verificar ensaios que você tem permissão para usar.
Isso é código de golfe. O menor código em bytes vence. Lacunas padrão não permitidas.