J'ai été surpris de ne pas trouver cela déjà demandé, bien qu'il y ait une bonne question sur les caisses de fléchettes: Darts meets Codegolf
Votre défi consiste à calculer quels scores ne sont pas possibles avec "n" fléchettes en dessous du score maximal pour "n" fléchettes. Par exemple, pour n = 3, le score maximal possible est de 180, vous devez donc renvoyer [163,166,169,172,173,175,176,178,179]
Pour un résumé de la règle de base:
Les scores possibles pour une seule fléchette sont:
- 0 (mademoiselle)
- 1-20, 25, 50
- double ou triple de 1-20
Règles:
- les règles de golf standard s'appliquent
- vous devez prendre un paramètre 'n' de la manière que votre langue le permet et renvoyer une liste / un tableau de tous les scores uniques en dessous du score maximum qui ne peut pas être marqué avec n fléchettes. Vous pouvez également imprimer ces valeurs sur la console.
- l'ordre des résultats est sans importance
- le code le plus court en octets gagne
Réponses:
Python 3 ,
80795957 octets-1 octet grâce à Arnauld
-20 octets grâce à ArBo
-2 octets grâce au négatif sept
Essayez-le en ligne!
la source
Perl 6 , 42 octets
Essayez-le en ligne!
Solution de force brute qui calcule toutes les valeurs de fléchettes possibles.
la source
JavaScript (ES6),
5554 octetsEnregistré 1 octet grâce à @Shaggy
Basé sur le modèle utilisé par Rod .
Essayez-le en ligne!
la source
s=60*n
->n*=60
pour sauvegarder un octet.Perl 6 , 39 octets (37 caractères)
Ceci utilise certainement un massue massive, mais cela fonctionne. (Cela ne force pas brutalement, il force brutalement)
Essayez-le en ligne!
En voici une explication:
Le
X* ^4
multiplicateur croisé génère beaucoup de valeurs en double (il y aura plus de 20 zéros impliqués et ceci avant d' effectuer l'addition croisée), mais cela ne pose aucun problème puisque nous utilisons la différence définie∖
qui fonctionne avec les valeurs uniques.Cela échoue actuellement pour
$n == 1
(ce qui devrait renvoyer un ensemble vide), mais un problème a été enregistré et fonctionnera probablement dans les versions futures. La version de JoKing est un peu plus longue, mais fonctionne pour$n == 1
le Rakudo actuel.la source
Gelée , 19 octets
Essayez-le en ligne!
la source
MATL ,
2523 octetsMerci à @ Giuseppe , qui a corrigé une erreur et joué au golf 2 octets!
Essayez-le en ligne!
Explication
Approche de la force brute.
la source
n=2
, alors je l'ai corrigée et lancé un octet pour démarrer! Essayez-le en ligne!J ,
4845 octetsEssayez-le en ligne!
-3 octets grâce à FrownyFrog
Tentative de solution par la force brute, mais n’a pas pu vaincre cette traduction de l’idée de Rod.
la source
626b66jh
b
"délimiteur" et le lisais comme une partie du numéro ....R , 64 octets
Essayez-le en ligne!
Porte la réponse étonnante trouvée par Rod .
R ,
857368 octetsEssayez-le en ligne!
La force brute génère tous les scores possibles avec des
n
fléchettes, puis prend la différence de set appropriée.Merci à la solution Octave d’ OrangeCherries de m’avoir rappelé
combn
.5 octets supplémentaires grâce à la suggestion de Robin Ryder
%o%
.la source
FUN
argument decombn
! Vous pouvez obtenir 68 octets avec%o%
au lieu dex*3,x*2
.Octave ,
91 octets73 octets71octetsUne autre méthode de force brute.
Réduisez à
73 octetsgrâce à GiuseppeRéduisez à 71 octets en remplaçant nchoosek par combnk
Essayez-le en ligne!
la source
Pyth , 22 octets
Essayez-le en ligne!
Délai d'attente dans TIO pour les entrées supérieures à 3.
la source
U4
deS3
la performance est améliorée un peu parce que les deux produits cartésiens ne doivent pas traiter tous ces inutiles 0s supplémentaires. Dans ce cas, l’entrée 3 est générée en ~ 13 secondes au lieu de ~ 30 (bien que l’entrée 4 soit toujours périmée et qu’il s’agisse d’un code de golf, peu importe; p).-S*60QsM^*MP*S3aU21 25
, mais cet espace entre21
et25
est un peu gênant .. Avec une gamme inclusive basée sur 0yT
pourrait être utilisé à la place de21
, un peu comme ceci:-S*60QsM^*MP*S3a}ZyT25
( mais alors sansZ
bien sûr, avec le}
remplacé par la plage inclusive basée sur 0). Peut-être que vous voyez quelque chose au golf dans cette approche alternative d’ajouter le25
à la liste et de supprimer l’75
après le premier produit cartésien?Stax , 24 octets
Exécuter et déboguer
C'est assez lent pour n = 3 et empire à partir de là.
la source
Python 2 , 125 octets
Essayez-le en ligne!
Python 3 ,
126125122 octetsEssayez-le en ligne!
-3 octets, merci à Rod
la source
05AB1E ,
212018 octets-3 octets grâce à @Grimy .
Plus le temps d'entrée est long, plus le temps d'entrée est long, plus le résultat est dû au produit cartésien intégré
ã
.Essayez-le en ligne ou vérifiez quelques autres cas de test .
Explication:
la source
60 * input
, pas 180.Gelée , 28 octets
Essayez-le en ligne!
la source
MathGolf , 26 octets
Essayez-le en ligne!
-2 octets grâce à Kevin Cruijssen
Explication
la source
3╒*mÅ~*N_∞α+
àN▐3╒*mÅ~*╡
. (PS: Pourquoi mentionnez-vous " pour l’entrée 3 " dans votre en-tête d’explication?)Wolfram Language (Mathematica) , 69 octets
Essayez-le en ligne!
Basé sur la réponse de lirtosiast .
Array
Le troisième argument de 'spécifie le décalage (1 par défaut) et son quatrième argument spécifie la tête à utiliser à la place deList
.##&
est équivalent àSequence
,Array[1##&,{4,21},0,##&]
retourne donc un membre (aplati)Sequence
du produit extérieur de0..3
et0..20
.la source
Charbon de bois , 36 octets
Essayez-le en ligne! Le lien est vers la version verbeuse du code. Utilise l'algorithme de @ Rod; la force brute aurait pris 60 octets. Fonctionne en tronquant la chaîne à 9 caractères si l'entrée est supérieure à 1, puis en prenant les ordinaux des caractères et en ajoutant le multiple approprié de 60.
la source
C # (compilateur interactif Visual C #) , 305 octets
Eh bien, il ne semble pas y avoir de moyen facile de calculer toutes les combinaisons possibles en C #, alors ce désastre de code est tout ce que je pourrais trouver.
De plus, il faut environ 30 ans pour compléter ...
J'aimerais voir une meilleure solution.
Essayez-le en ligne!
la source
Kotlin , 118 octets
Essayez-le en ligne!
la source
Perl 5
-n
,969391 octetsEssayez-le en ligne!
Il a été optimisé pour la longueur du code plutôt que pour l'exécution, il est donc plutôt lent. Il génère beaucoup d'entrées redondantes pour son hachage de recherche. Utiliser le
@b
tableau leuniq
rend beaucoup plus rapide, mais coûte 5 octets supplémentaires, donc je ne l'ai pas fait.la source
Wolfram Language (Mathematica) , 81 octets
Essayez-le en ligne!
Mathematica possède quelques fonctions intégrées, notamment
FrobeniusSolve
la forme restreinte deIntegerPartitions
, mais aucune d’entre elles n’est plus courte que la force brute.la source
{163,166,169,172,173,175,176,178,179}