Un numéro de bulletin de vote , que nous appellerons B , est le nombre de façons d'organiser les numéros de 1 à B (B + 1) / 2 dans un triangle, de sorte que chaque ligne et colonne est dans un ordre croissant. Les quatre premiers numéros de bulletin de vote sont:
a(0) = 1
a(1) = 1
a(2) = 1
a(3) = 2
a(3)
est 2, ce qui signifie qu'il existe 2 façons d'organiser les nombres de 1 à 3(3+1)/2 = 6
dans un tel triangle:
1 1
2 3 or 2 4
4 5 6 3 5 6
Voir l' entrée de séquence OEIS pour plus de détails.
Votre défi, étant donné un triangle de vote, est de vérifier son exactitude. S'il satisfait aux conditions d'un triangle de vote (les lignes et les colonnes augmentent), vous devez afficher le nombre d' autres façons (à l'exception de celle en entrée) qu'il existe pour organiser correctement le triangle. Si le triangle d'entrée n'est pas construit correctement, vous ne devez rien produire.
Les sauts de ligne sont autorisés.
Contribution
Un triangle de chiffres, qui peut être ou non un triangle de scrutin valide. Par exemple:
1
2 3
4 5 6
1
10 5
9 8 2
7 6 4 3
1
3 2
9
2 11
14 3 5
12 8 1 7
15 13 10 4 6
1
2 3
4 5 6
7 8 9 10
11 12 13 14 15
16 17 18 19 20 21
Production
Si l'entrée est un triangle de scrutin valide, le nombre restant de façons d'organiser les mêmes nombres dans un triangle de scrutin valide. Si l'entrée n'est pas un triangle de vote valide, rien. Par exemple, les entrées ci-dessus produisent ces sorties ( <nothing>
est un espace réservé pour une sortie vide réelle):
1 # the same as a(3)-1
<nothing>
<nothing>
<nothing>
33591 # the same as a(6)-1
Notation
C'est le code-golf : comme d'habitude, le nombre d'octets le plus bas l'emporte. Tiebreaker est le plus tôt publié.
la source
1/4 5/2 3 6
valide?Réponses:
Gelée , 20 octets
Pour les triangles de scrutin valides, le temps d'exécution et l'utilisation de la mémoire sont au moins O (n!) , Où n est le nombre d'entrées du triangle. Les non valides sont reconnus par un plantage, n'imprimant ainsi rien.
Essayez-le en ligne!
Essai
Localement, j'ai pu vérifier qu'un (4) est calculé correctement.
Comment ça fonctionne
la source
Brachylog , 44 octets
Essayez-le en ligne!
Cela fonctionne en temps exponentiel double, donc pour des cas de test véridiques, vous devrez me croire que cela produit théoriquement le résultat correct, pour des triangles de longueur supérieure ou égale à
3
.Vous pouvez toujours tester les cas de test falsey, ceux-ci devraient se terminer assez rapidement.
la source
JavaScript (ES6), 143 octets
Recherche dans le triangle une entrée non valide, puis utilise une formulation récursive de la formule dans OEIS pour calculer le résultat.
la source