En esta tarea se le da un número impar de bolas blancas y el mismo número de bolas negras. La tarea es contar todas las formas de poner las bolas en contenedores para que en cada contenedor haya un número impar de cada color.
Por ejemplo, digamos que tenemos 3 bolas blancas. Las diferentes formas son:
(wwwbbb)
(wb)(wb)(wb)
por las dos posibilidades diferentes.
Si tenemos 5 bolas blancas, las diferentes formas son:
(wwwwwbbbbb)
(wwwbbb)(wb)(wb)
(wwwb)(wbbb)(wb)
(wb)(wb)(wb)(wb)(wb)
Puede tomar la entrada, que es un número entero único, de la forma que desee. La salida es solo un entero entero.
Su código debe ser lo suficientemente rápido para que lo haya visto completo para 11 bolas blancas.
Puede usar cualquier idioma o biblioteca que desee.

:)Respuestas:
Pari / GP, 81 bytes
Para mayor eficiencia, reemplace
1+con1+O(x^(n+1))+O(y^(n+1))+(el primerOtérmino solo ya ayuda mucho).Pruébalo en línea! (versión anterior de 86 bytes con un par de parens innecesarios y sin la
p=abreviatura)Versión anterior, 90 bytes
La informática
f(11)necesita un tamaño de pila más grande, el mensaje de error le indicará cómo aumentarlo. Es más eficiente (pero menos golfoso) reemplazar los dosnque aparecen como segundos argumentosprodcon(n-1)/2.fuente
(n-1)/2?Python 3, 108 bytes
Enumera recursivamente todos los conjuntos, asegurándose de no obtener duplicados generando siempre los conjuntos en orden. Razonablemente rápido cuando se memoriza usando
C = functoools.lru_cache(None)(C), pero esto no es necesarion = 11.Llame
C(num_white, num_black)para obtener su resultado. Primer par den:Para generar los resultados:
Por ejemplo para (7, 7):
fuente
Python 3 ,
180172 bytesPruébalo en línea!
Implementación directa de la función generadora. Largo pero (algo) eficiente. O (n 4 ) tiempo, O (n 2 ) memoria.
La matriz resultante
acontiene todos los resultados de todos los tamaños hastan, aunque soloa[n][n]se devuelve.fuente
Python 2 ,
168181 bytesPruébalo en línea!
fuente
ncontiene la entrada) Debe agregardef f(n):on=input()(para que sea una función / programa completo resp.)apuede sereval(`[[0]*n]*n`)(donde`significarepr).