Tópico dos policiais
Nesse segmento, sua tarefa é criar um programa / função baseado em recursão para gerar qualquer série inteira. Os ladrões tentarão encontrar uma solução não recursiva mais curta no segmento dos ladrões .
Sinopse do desafio
Em muitos idiomas, as funções recursivas podem simplificar significativamente uma tarefa de programação. No entanto, a sobrecarga de sintaxe para uma recursão adequada pode limitar sua usabilidade no código-golfe.
Os policiais criarão um programa ou função usando um único número inteiro n
, o que gerará as primeiras n
entradas de uma série inteira, usando apenas a recursão 1 . Eles também devem garantir que haja uma maneira não-recursiva mais curta de gerar a sequência para marcar sua entrada como segura.
Os ladrões tentarão encontrar um programa ou função mais curto no mesmo idioma, gerando a mesma série inteira, sem recursão 2 .
Se o envio dos policiais não for decifrado dentro de dez dias (240 horas), o policial provará que era de fato possível ter uma abordagem não recursiva mais curta, revelando sua própria solução. Eles podem então marcar sua submissão como segura .
O vencedor do desafio da polícia será o envio mais curto (de acordo com o código-golfe ) baseado em recursão marcado como seguro.
O vencedor do desafio dos ladrões será o ladrão que quebrou mais soluções.
1: ele só precisa ser recursivo na sintaxe; você não precisa se preocupar, por exemplo, com a otimização da chamada de cauda.
2: Novamente, não-recursivo na sintaxe; portanto, você não pode publicar uma solução recursiva e reivindicá-la compilada em um loop, graças à otimização da chamada de cauda.
Requisitos de envio
Cada envio terá um único número inteiro n
(com base em zero ou um). O envio produzirá ou retornará as primeiras n
entradas de uma série inteira de escolha. (observe que essa série inteira não deve depender n
). O método de entrada e saída pode diferir entre a abordagem recursiva e não recursiva. A série inteira pode ser qualquer série determinística com um comprimento de pelo menos 5. A série deve ser explicada corretamente.
Seu envio não precisa ser arbitrário n
, mas deve funcionar pelo menos n=5
. A abordagem não recursiva deve ser capaz de trabalhar pelo menos da mesma maneira n
que a abordagem recursiva, ou até o n=2^15-1
que for menor.
Recursão
Para esse desafio, recursão é definida como a criação da sequência desejada usando uma função (ou construção semelhante a uma função ) que se chama (ou chama uma sequência de funções que acaba se chamando; isso inclui construções como o combinador Y). A profundidade da recursão deve ir para o infinito como n
vai para o infinito. A abordagem não recursiva é algo que não é recursivo.
n
se for teoricamente correto, mas não pode ser executado devido a restrições de tempo ou memória?
n=5
deve ser computado
xfor
esteja disponível através de algum tipo de importação?); Portanto, talvez esse idioma não possa competir.
for
é feito por trás recursivo, éfor
recursivo ou loop?