Nesta tarefa, você recebe um número ímpar de bolas brancas e o mesmo número de bolas pretas. A tarefa é contar todas as maneiras de colocar as bolas em caixas para que em cada caixa haja um número ímpar de cada cor.
Por exemplo, digamos que temos 3 bolas brancas. As diferentes maneiras são:
(wwwbbb)
(wb)(wb)(wb)
para as duas possibilidades diferentes.
Se temos 5 bolas brancas, as diferentes maneiras são:
(wwwwwbbbbb)
(wwwbbb)(wb)(wb)
(wwwb)(wbbb)(wb)
(wb)(wb)(wb)(wb)(wb)
Você pode pegar a entrada, que é um único inteiro, da maneira que desejar. A saída é apenas um único número inteiro.
Seu código deve ser rápido o suficiente para que você o veja completo por 11 bolas brancas.
Você pode usar qualquer idioma ou biblioteca que desejar.
:)
Respostas:
Pari / GP, 81 bytes
Para obter mais eficiência, substitua
1+
por1+O(x^(n+1))+O(y^(n+1))+
(o primeiroO
termo por si só já ajuda bastante).Experimente online! (versão anterior de 86 bytes com um par de letras desnecessárias e sem a
p=
abreviação)Versão antiga, 90 bytes
A computação
f(11)
precisa de um tamanho de pilha maior, a mensagem de erro informará como aumentá-lo. É mais eficiente (mas menos eficiente) substituir os doisn
que aparecem como segundos argumentosprod
por(n-1)/2
.fonte
(n-1)/2
?Python 3, 108 bytes
Enumera recursivamente todos os conjuntos, certificando-se de não obter duplicatas sempre gerando os conjuntos em ordem. Razoavelmente rápido quando memorizado usando
C = functoools.lru_cache(None)(C)
, mas isso não é necessárion = 11
.Ligue
C(num_white, num_black)
para obter seu resultado. Primeiro par den
:Para gerar os resultados:
Por exemplo, para (7, 7):
fonte
Python 3 ,
180172 bytesExperimente online!
Implementação direta da função geradora. Longo, mas (um pouco) eficiente. O (n 4 ) tempo, O (n 2 memória ).
A matriz resultante
a
contém todos os resultados de todos os tamanhosn
, embora apenasa[n][n]
seja retornada.fonte
Python 2 ,
168181 bytesExperimente online!
fonte
n
contém a entrada) Você deve ou adicionardef f(n):
oun=input()
(para torná-lo uma função / resp programa completo.)a
pode sereval(`[[0]*n]*n`)
(onde`
significarepr
).