A tarefa é calcular o OEIS A005434 o mais rápido possível.
Considere uma cadeia Sde comprimento binária n. Indexando de 1, podemos determinar se S[1..i+1]corresponde S[n-i..n]exatamente a todos ina ordem de 0até n-1. Por exemplo,
S = 01010
dá
[Y, N, Y, N, Y].
Isso ocorre porque 0combina 0, 01não combina 10, 010combina 010, 0101não combina 1010 e finalmente 01010combina com si próprio.
Define f(n)-se o número de matrizes distintas de Ys e Ns que se tem quando iteração sobre todas as 2^nsequências de bits diferentes possíveis Sde comprimento n.
O observador notará que esta questão é uma variante mais simples de outra questão recente minha . No entanto, espero que truques inteligentes possam tornar isso muito mais rápido e fácil.
Tarefa
Para aumentar a npartir de 1, seu código deve ser exibido n, f(n).
Respostas de exemplo
Pois n = 1..24, as respostas corretas são:
1, 2, 3, 4, 6, 8, 10, 13, 17, 21, 27, 30, 37, 47, 57, 62, 75, 87, 102, 116, 135, 155, 180, 194
Pontuação
Seu código deve repetir n = 1a resposta de cada um n. Eu cronometrarei a corrida inteira, matando-a depois de dois minutos.
Sua pontuação é a mais alta que nvocê obtém nesse período.
Em caso de empate, a primeira resposta vence.
Onde meu código será testado?
Executarei seu código no Virtualbox em uma VM convidada do Lubuntu (no meu host do Windows 7).
Meu laptop possui 8 GB de RAM e uma CPU Intel i7 5600U@2.6 GHz (Broadwell) com 2 núcleos e 4 threads. O conjunto de instruções inclui SSE4.2, AVX, AVX2, FMA3 e TSX.
Entradas principais por idioma
- n = 599 em Rust bu Anders Kaseorg.
- n = 30 em C por Grimy. A versão paralela chega a 32 quando é executada nativamente no cygwin.