Défi
Bar Dice est un jeu simple joué dans un bar avec des dés (d'où le nom). Vous lancez 5 dés à six faces et tentez de faire la meilleure main.
Le score est basé sur la collecte du plus grand nombre de dés avec les mêmes chiffres. Chaque main doit comprendre au moins un seul "Ace", ou un, pour être une main valide; Les as agissent comme des "jokers" et peuvent être associés à n'importe quel autre chiffre. La force de la main d'un joueur dépend d'abord du nombre de chiffres puis de la valeur de ces chiffres. Par exemple, une main (en comptant les jokers) avec quatre 3 vaut mieux qu'une main avec trois 5, mais pas mieux qu'une main avec cinq 2.
Tiré de l'article Wikipedia
Cela signifie que la main la mieux classée est entièrement composée de 6 et de 1, et la main la moins bien classée est toute main sans 1.
Votre défi est de prendre deux mains et de retourner le joueur qui a gagné, ou s'il est à égalité.
Contribution
Deux listes non triées de 5 numéros, allant de 1 à 6. Chaque liste représente la main d'un joueur. Le format d'entrée est flexible.
Sortie
Trois valeurs statiques distinctes mais cohérentes (les plages ne sont pas autorisées) indiquant si le joueur 1 ou le joueur 2 a gagné, ou s'il s'agissait d'une égalité. Veuillez indiquer dans votre réponse quelles valeurs vous utilisez pour quoi. Par exemple, vous pouvez revenir -1
si P1 gagne, 0
s'il s'agit d'une égalité et 1
si P2 gagne.
Règles
- L'entrée sera toujours valide
- Seul le meilleur score possible de chaque main est utilisé pour déterminer un gagnant. Il n'y a pas de bris d'égalité. Par exemple,
[1,4,4,3,3]
liera[1,4,4,2,2]
au lieu d'utiliser les 3 et les 2 comme bris d'égalité. - La sortie doit être l'une des 3 valeurs choisies à chaque fois. Le simple mappage de tous les nombres négatifs sur
P1 Wins
n'est pas autorisé et doit être normalisé. - Les mains invalides, c'est-à-dire celles qui n'ont pas de 1, perdent face à toutes les mains valides mais égalent avec toutes les autres mains invalides. Par exemple,
[2,2,2,2,2]
cravates[3,3,3,3,3]
. - Une main
[1,1,1,1,1]
compte comme un ensemble valide de 6 à des fins de classement. - C'est le golf par code, donc le nombre d'octets le plus court l'emporte.
Exemples
#You guys are pretty good at finding edge-cases that break things. Good job!
Input: [2,1,5,6,6], [6,2,6,6,6]
Output: P1 Wins
Input: [2,4,5,6,6], [6,2,6,6,6]
Output: Tie
Input: [1,2,3,4,5], [5,4,3,2,1]
Output: Tie
Input: [1,5,5,3,2], [5,4,1,6,6]
Output: P2 Wins
Input: [3,2,2,2,1], [4,1,3,6,6]
Output: P1 Wins
Input: [1,1,1,1,1], [6,1,1,6,6]
Output: Tie
Input: [1,3,3,4,4], [1,2,2,5,5]
Output: P2 Wins
Input: [1,3,3,5,5], [1,3,3,2,2]
Output: P1 Wins
Input: [1,3,3,3,4], [1,1,3,3,3]
Output: P2 Wins
Input: [2,2,2,6,1], [5,3,3,1,2]
Output: P1 Wins
Input: [5,5,5,1,5], [1,1,1,1,1]
Output: P2 Wins
Input: [1,1,1,1,1], [1,1,5,1,1]
Output: P1 Wins
la source
IṠ
parM
et afficher une liste des gagnants.Ḍ
peut aussi être redondant puisque les listes sont triées de la même manière que les entiers.R ,
11596 octets-6 octets grâce à Giuseppe.
-6 octets grâce à Aaron Hayman.
-2 octets grâce à Arnauld, suivant le format de sortie dans sa réponse JavaScript .
Essayez-le en ligne!
Retourne
Inf
pour P1,NaN
pour une égalité,-Inf
pour P2.Utilise la fonction d'assistance
f
qui calcule un score pour chaque main. Le score est défini comme suit:d
soit le chiffre qui se répète le plus, etn
le nombre de fois qu'il se répète. Ensuite, le score est6*n+d
s'il y a au moins un as et0
s'il n'y a pas d'as. Il nous suffit alors de trouver le joueur avec le score le plus élevé.Non golfé:
la source
order(l)[5]
au lieu demax.col(t(l),"l")
pour obtenir une solution à 96 octets: Essayez-la en ligne!JavaScript (ES6),
9790 octetsPrend l'entrée comme
(a)(b)
. Renvoie+Infinity
pour P1,-Infinity
pour P2 ouNaN
pour une égalité.Essayez-le en ligne!
Commenté
la source
05AB1E ,
1615 octets-1 octet grâce à JonathanAllan
Essayez-le en ligne!
Renvoie [1, 0] pour les victoires P1, [1, 1] pour les égalités, [0, 1] pour les victoires P2.
Plutôt que d'utiliser l'ordre lexicographique sur un tuple 2 (nombre de dés, valeur des dés), cela calcule le score comme 10 ** nombre de dés * valeur des dés. Mains sans 1 score 5.
la source
ć+
(maintenant que je le vois je ne peux pas croire que je n'y avais pas pensé ..)! C'est tellement mieux que ce que j'essayais .. J'ai eu une idée similaire avec°
. :) Sauf que j'étais déjà à 20 octets et que je devais encore résoudre un problème pour le cas de test[[1,1,1,1,1],] [6,1,1,6,6]]
.. Alors merci de m'avoir fait gagner du temps pour que je puisse mettre ma tentative à la poubelle ..; pć+
marche. Mon idée initiale a commencé avecæʒW}ʒ1KË
, mais cela est tué par le[1,1,1,1,1]
problème.ε1¢©Āy{γéθ¬sg®+°P}`.S
, mais[1,1,1,1,1]
cela a aussi été vissé. Votre réponse entière a une belle synergie avec leWΘ*
,6L¢
,ć+
et°ƶ
. Surtout les buildinsWćƶ
montrent vraiment leur force ici.W
n'est pas réellement nécessaire,6L¢¬Ā*
est le même nombre d'octets queWΘ*6L¢
.W
sans éclater, puis a*
montré sa force, mais¬
sans éclater et*
est essentiellement le même. Le fait qu'il ne saute pas est la force à laquelle j'impliquais, en économisant un octet. Mais c'est en effet principalementćƶ
.Python 2 ,
858180 octetsEssayez-le en ligne!
Renvoie
1
pour P1,0
pour égalité et-1
pour P2.-1 octet, grâce au calmar
la source
1
etin
peut allerPerl 6 ,
6049 octetsEssayez-le en ligne!
Retours
More
,Same
,Less
pourP1 Wins
,Tie
,P2 Wins
.Explication
la source
Requête T-SQL, 148 octets
Utilisation d'une variable de table comme entrée
Essayez-le en ligne
la source
Gelée , 21 octets
écrasé avant même de l'avoir posté par Nick Kennedy :)
Un lien monadique acceptant une liste de joueurs qui génère une liste de gagnants (indexés 1).
Donc P1 est
[1]
, P2 est[2]
et une égalité est[1,2]
.Essayez-le en ligne!
la source
PowerShell ,
112126123 123121 octetsPrend l'entrée comme
(a)(b)
. Retourne-1
pour la victoire P1,1
pour P2 ou0
pour une égalité.Essayez-le en ligne!
Cas de test
@( @(1,1,5,1,1), @(1,1,1,1,1), 1)
ajouté.Déroulé:
la source
Wolfram Language (Mathematica) ,
787574 octets-1 octet par Greg Martin
Essayez-le en ligne!
Produit -1 lorsque le joueur 1 gagne, 1 lorsque le joueur 2 gagne et 0 pour une égalité.
la source
FreeQ[#,1]
par#~FreeQ~1
.Java 8,
244240236215199 octets-4 octets grâce à @someone .
-21 octets grâce à @Neil .
-16 octets grâce à @ceilingcat .
Résultats
1
si P1 gagne;-1
si P2 gagne;0
si c'est une cravate.Essayez-le en ligne.
Explication:
la source
...*(c[p][1]>0?1:0)
parc[p][1]>0?...:0
. Je ne peux pas poster un lien TIO, car il est trop long et je ne veux pas le raccourcir. La version non golfée a des parenthèses déséquilibrées quelque part par là.c[p][1]>0?
vérification plus tard comme correction de bogue, mais apparemment sans trop y penser. Merci pour le -4. :)*(i<2?6:i)
? Vous dupliquez simplement l'effort pouri=6
eti=1
. Cela peut être juste*i
(et arrêtez de boucler lorsque vous arrivez à 2).9
peut être n'importe quel nombre magique entre5
et à peu près32
, non? Si vous utilisez8
alors au lieu de(int)Math.pow(8,(...)*i)
vous pouvez utiliseri<<3*(...)
.a->b->{int c[][]=new int[2][7],m[]=new int[2],s,p,i=5;for(;i-->0;c[1][b[i]]++)c[0][a[i]]++;for(i=7;i-->2;)for(p=2;p-->0;m[p]=s>m[p]?s:m[p])s=c[p][1]>0?i+9*(c[p][i]+(i>1?c[p][1]:0)):0;return Long.compare(m[0],m[1]);}
ce qui semble passer tous vos cas de test ...Gelée , 27 octets
Essayez-le en ligne!
1 pour P1, -1 pour P2, 0 pour égalité
Explication
la source
Sledgehammer 0.4 , 27 octets
Décompresse dans cette fonction Wolfram Language:
qui se révèle être exactement la même que ma réponse Mathematica .
la source
Fusain ,
4845 octetsEssayez-le en ligne! Le lien est vers la version détaillée du code. Prend l'entrée comme un tableau de tableaux et sort
-1
si le joueur 1 gagne,0
pour une égalité et1
si le joueur 2 gagne. Explication:Remplacez chaque main par le nombre de fois où les valeurs
6..1
apparaissent dans la main. La liste est inversée car a) elle facilite la recherche de la valeur la plus élevée avec le nombre le plus élevé et b) elle facilite la suppression du nombre de1
s. Le nombre de1
s est doublé car il doit être supprimé deux fois, une fois pour vérifier qu'il n'est pas nul et une fois pour l'ajouter aux autres nombres.Ajoutez le nombre de
1
s au nombre de6..2
, mais définissez tous les nombres sur zéro si le nombre de1
s était égal à zéro.Pour chaque main, trouvez le nombre le plus élevé et la valeur la plus élevée avec ce nombre. (En fait, nous trouvons la valeur moins
6
car c'est golfeur.)Déterminez quelle main a gagné en soustrayant les positions des mains gagnante et perdante. (Si les mains sont à égalité, la première main est à la fois gagnante et perdante, le résultat est donc
0
comme souhaité.)la source
C (gcc) / 32 bits, 117 octets
Essayez-le en ligne!
Prend deux tableaux entiers terminés par zéro. Retours
1
,0
,-1
pourP1 Wins
,P2 Wins
,Tie
.la source
J ,
4744 octetsEssayez-le en ligne!
Inspiré par l'idée de Nick Kennedy.
non golfé
la source
Perl 5
-MList::Util=max -pl
, 80 octetsEssayez-le en ligne!
Contribution:
Chaque joueur sur une ligne séparée, sans espaces
Sortie:
1
La première ligne gagne0
Attacher-1
Ligne deux victoiresla source