Dans cette tâche, vous obtenez un nombre impair de boules blanches et le même nombre de boules noires. La tâche consiste à compter toutes les façons de mettre les balles dans des bacs de sorte que dans chaque bac, il y ait un nombre impair de chaque couleur.
Par exemple, disons que nous avons 3 boules blanches. Les différentes manières sont:
(wwwbbb)
(wb)(wb)(wb)
pour les deux possibilités différentes.
Si nous avons 5 boules blanches, les différentes manières sont:
(wwwwwbbbbb)
(wwwbbb)(wb)(wb)
(wwwb)(wbbb)(wb)
(wb)(wb)(wb)(wb)(wb)
Vous pouvez prendre l'entrée, qui est un entier unique, comme vous le souhaitez. La sortie n'est qu'un seul entier.
Votre code doit être assez rapide pour que vous l'ayez vu complet pour 11 boules blanches.
Vous pouvez utiliser n'importe quelle langue ou bibliothèque que vous aimez.
:)
Réponses:
Pari / GP, 81 octets
Pour plus d'efficacité, remplacez
1+
par1+O(x^(n+1))+O(y^(n+1))+
(le premierO
terme seul aide déjà beaucoup).Essayez-le en ligne! (version antérieure de 86 octets avec une paire de parens inutiles et sans l'
p=
abréviation)Ancienne version, 90 octets
L'informatique a
f(11)
besoin d'une plus grande taille de pile, le message d'erreur vous indiquera comment l'augmenter. Il est plus efficace (mais moins golfique) de remplacer les deuxn
qui apparaissent comme deuxièmes argumentsprod
avec(n-1)/2
.la source
(n-1)/2
?Python 3, 108 octets
Énumère récursivement tous les ensembles, en veillant à ne pas obtenir de doublons en générant toujours les ensembles dans l'ordre. Raisonnablement rapide lorsqu'il est mémorisé en utilisant
C = functoools.lru_cache(None)(C)
, mais ce n'est pas nécessaire pourn = 11
.Appelez
C(num_white, num_black)
pour obtenir votre résultat. Premier couple den
:Pour générer les résultats:
Par exemple pour (7, 7):
la source
Python 3 ,
180172 octetsEssayez-le en ligne!
Implémentation simple de la fonction de génération. Long mais (un peu) efficace. O (n 4 ) temps, O (n 2 ) mémoire.
Le tableau résultant
a
contient tous les résultats de toutes les tailles jusqu'àn
, bien que seula[n][n]
soit renvoyé.la source
Python 2 ,
168181 octetsEssayez-le en ligne!
la source
n
contient l'entrée) Vous devez soit ajouterdef f(n):
soitn=input()
(pour en faire une fonction / un programme complet resp.)a
peut êtreeval(`[[0]*n]*n`)
(où`
signifierepr
).