Esse desafio fará com que você conte pseudo- poliformas na telha quadrada desprezível .
Eu acho que essa sequência ainda não existe no OEIS , então esse desafio existe para calcular o maior número possível de termos para essa sequência.
Atualização: agora está no OEIS como A309159 : Número de poliformas generalizadas no quadrado quadrado desprezível com n células.
Definições
A telha quadrada desprezível é uma telha semi-regular do plano que consiste em triângulos e quadrados equilaterais.
Uma pseudo-poliforme no quadrado quadrado desprezível é uma figura plana construída pela união desses triângulos e quadrados ao longo de seus lados compartilhados, análoga a um poliomino. Aqui está um exemplo de uma pseudo-poliforme de seis células e oito células:
Exemplos
Pois n = 1
existem duas pseudo-poliformas de 1 célula, a saber, o quadrado e o triângulo:
Pois n = 2
existem duas pseudo-poliformas de 2 células, a saber, um quadrado com um triângulo e dois triângulos.
Pois n = 3
existem quatro pseudo-poliformas de 3 células.
Desafio
O objetivo desse desafio é calcular o maior número possível de termos nessa sequência, que começa 2, 2, 4, ...
e onde o n-ésimo termo é o número de pseudo-poliformas de n células até rotação e reflexão.
Execute seu código pelo tempo que desejar. O vencedor deste desafio será o usuário que postar mais termos da sequência, junto com seu código. Se dois usuários postarem o mesmo número de termos, quem quer que publique o último termo ganha mais cedo.
(Quando houver termos conhecidos suficientes para provar que essa sequência ainda não existe no OEIS, criarei uma entrada no OEIS e listarei o colaborador como co-autor, se ele desejar.)
fonte
Respostas:
Haskell
Agora que não apenas os comentários documentam que Peter Taylor foi o primeiro a fornecer termos suficientes para pesquisar no OEIS, posso fornecer meus resultados.
Anteriormente, contei poliomanos hexagonais . Exceto por algumas otimizações, o que estou fazendo aqui é muito semelhante.
Os elementos do ladrilho estão representados da seguinte maneira: Você pode ir em uma linha quase reta da esquerda para a direita (na primeira foto), alternando entre quadrados e retângulos. Existem outras linhas quase paralelas, oscilando em direções opostas. Juntos, eles perdem alguns triângulos. Existem linhas paralelas quase retas semelhantes de baixo para cima, contendo os triângulos ausentes. Agora ignore a oscilação e use um sistema de coordenadas cartesianas, mas use apenas números ímpares para as coordenadas dos quadrados. Então os triângulos naturalmente obtêm pares de coordenadas com uma coordenada par e uma ímpar. Pares com ambas as coordenadas ainda não representam elementos do mosaico.
(Você também pode usar números pares para as coordenadas dos quadrados. Acho que decidi assim porque pensei em refletir antes da rotação.)
Salve o programa em um arquivo com um nome como
cgp.hs
e compileghc -O2 -o cgp cgp.hs
. Ele pega um argumento de linha de comando numérico e calcula o número de polio- ninos desse tamanho, ou nenhum; nesse caso, calcula valores até parar.Experimente online!
fonte
2, 2, 4, 10, 28, 79, 235, 720, 2254, 7146, 22927, 74137, 241461, 790838, 2603210, 8604861, 28549166, 95027832
Vou apostar antes que Christian Sievers poste uma resposta para n = 18. Isso é o mais longe possível do código atual e dos 16 GB de RAM. Eu já tive que sacrificar um pouco de velocidade para reduzir o uso de memória, e vou ter que fazer ainda mais. Eu tenho algumas idéias ...
Esse snippet é o SVG do primeiro comentário.
O código é c #. Eu o executei com o .Net Core 2.2.6 no Linux.
fonte