Hearts est un jeu de cartes pour 4 joueurs. Chaque tour est joué par le joueur qui a joué la carte la plus haute de la couleur principale. À la fin de chaque main, les joueurs encourent un score de pénalité en fonction des cartes de pénalité qu'ils ont prises; la tâche consiste à déterminer les scores selon les règles de Microsoft Hearts .
Contribution
L'entrée est 4 listes (ou chaîne délimitée, tableau, etc.) montrant les cartes de pénalité prises par chacun des 4 joueurs. Les cartes de pénalité sont
2♥, 3♥, 4♥, 5♥, 6♥, 7♥, 8♥, 9♥, 10♥, J♥, Q♥, K♥, A♥, Q♠
que nous représenterons comme
2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 1, 0
respectivement.
Sortie
La sortie correspond aux 4 points de pénalité encourus par les 4 joueurs (liste, chaîne, tableau, etc.). La notation est la suivante:
- Chaque cœur (
♥
représenté par des nombres entiers1
à13
inclus) encourt 1 point - La reine de pique (
Q♠
, représentée par0
) gagne 13 points - Exception: si un joueur a pris toutes les cartes de pénalité (appelées tirer sur la lune), il encourt 0 point, tandis que tous les autres joueurs encourent 26 points.
Cas de test
[2, 8, 7, 1], [3, 4], [], [9, 5, 6, 0, 10, 11, 12, 13] --> 4, 2, 0, 20
[0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], [], [], [1] --> 25, 0, 0, 1
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 0], [], [], [] --> 0, 26, 26, 26
Le code le plus court en octets gagne.
la source
_26&1b
. -2 octets.1b
... J'essayais de trouver un moyen court de se transformer[26]
en26
et[]
en0
mais d'une manière ou d'une autre cela ne m'est pas venu à l'esprit . Merci :)R,
85 7774 octetsFonction sans nom qui prend une liste R en entrée. Fonctionne en comptant le nombre d'éléments
>0
et en ajoute 13 si un élément de chaque vecteur est<1
(c.-à-d. La reine de pique) et le stocke sousz
.Si un élément de
z
is est>25
, return26-z
, else returnz
.Essayez-le sur R-fiddle
la source
26-z
marcherait?C ++ 14, 158 octets
En tant que Lambda sans nom:
Nécessite un
vector<vector<int>>
et retournevector<int>
Non golfé:
Quelques tests pour vous:
la source
Python 2,
757271 octetsPrend l'entrée comme
[2, 8, 7, 1], [3, 4], [], [9, 5, 6, 0, 10, 11, 12, 13]
la source
12*(0in a)
.print[[x,26-x][26in i]for x in i]
est un octet plus court.PHP, 113 octets
La fonction prend un tableau de tableaux, renvoie un tableau de valeurs.
Émerveillez l'autre mappage de tableau en PHP: boucles avec des éléments référencés. Waaay plus court que
array_map
.la source
Haskell,
625956 octetsUsage:
la source
f
quef n=13^0^n
.f x|all(<26)x=x|0<1=map(26-)x
et l'utiliser à la place de la fonction lambda économise quelques octets.05AB1E ,
262221 octetsLes espaces de fin doivent être supprimés de l'entrée afin d'être interprétés comme un tableau. La fin a été inspirée des autres réponses lors de l'utilisation de (26-x) lorsqu'un joueur a rassemblé toutes les cartes de pénalité.
Essayez-le en ligne!
Il semble toujours assez jouable au golf, avec des constantes dupliquées et des instructions conditionnelles.
Ancienne version, 26 octets
(Un octet pour chaque point dans la valeur de pénalité maximale)
J'ai décidé de le garder car sa longueur correspond le mieux à ce défi à mon avis :).
Essayez-le en ligne!
la source
Python 3, 101 octets
Code complet:
la source
12*(c<1)+1
est 2 octets plus court que(1,13)[c==0]
.26*(s>25)
est 3 octets plus court que(26,0)[s==26]
.JavaScript (ES6),
82807772706967 octetsSauvegardé 2 octets grâce à @Neil
Panne
la source
c=>b*26^c
enregistre 2 octets.Pip , 28 octets
27 octets de code, +1 pour l'
-p
indicateur.Prend l'entrée sur la ligne de commande sous la forme d'une chaîne représentant une liste imbriquée, comme
"[[2 8 7 1] [3 4] [] [9 5 6 0 10 11 12 13]]"
(guillemets non nécessaires sur TIO). Essayez-le en ligne!la source
Rubis, 59 octets
Ou bien,
Si une seule main a des cartes, nous voulons que les mains vides obtiennent une valeur de 26 et la main avec des cartes une valeur de 0. Je le fais en appelant
min
les mains - cela revientnil
pour un tableau vide, puis Je l'ai||
en 26. Dans d'autres cas, je compte le nombre de cartes dans une main, puis j'en ajoute 12 à la Reine de pique.la source
Scala, 93 octets
Usage:
Explication:
Je pourrais utiliser au
%toSet 26
lieu de% contains 26
parce queSet
« deapply
la méthode estcontains
et ne pas obtenir-à-index commeSeq
» sla source