Dans un tour de dilemme du prisonnier , deux joueurs décident chacun de coopérer ou de faire défaut pour ce tour. Le score pour une manche est:
- Le joueur A et le joueur B coopèrent: 1 point pour les deux
- Le joueur A et le joueur B ont tous deux un défaut: 2 points pour les deux
- Le joueur A coopère et le joueur B fait défaut: 3 points pour le joueur coopérant A et 0 point pour le joueur B défectueux
Cependant, vous n'avez pas à vous soucier de la stratégie: votre programme ne fera que tabuler le score d'un match. (Si vous connaissez déjà le dilemme du prisonnier, mes "points" correspondent ici à "des années de prison.")
Votre défi est de prendre des informations qui représentent les choix des joueurs sur plusieurs tours et de calculer leurs scores totaux respectifs. Un joueur soumet des choix en minuscules cet d(pour coopérer et faire défaut ), et l'autre soumet des choix en majuscules, Cet D. Ces choix sont fournis à votre programme sous forme de chaîne.
Normalement, les joueurs dans le dilemme du prisonnier soumettent leurs coups simultanément et de manière itérative. Dans ce défi, cependant, les joueurs peuvent avoir soumis leurs choix pour plusieurs tours à la fois. Si le coup d'un joueur est hors séquence, le programme de pointage s'en souvient et le fait correspondre avec le prochain coup disponible du joueur adverse.
Voici un exemple de chaîne d'entrée:
cDCddDDCcCc
Pour afficher les correspondances qui existent dans cette entrée, je vais appeler séparément les minuscules et les majuscules et les associer:
cDCddDDCcCc
c dd c c => cddcc
DC DDC C => DCDDCC
Ceux-ci seront jumelés dans les tours:
c vs D (3 pts for lowercase-player, 0 pts for uppercase-player)
d vs C (0 pts for lowercase-player, 3 pts for uppercase-player)
d vs D (2 pts for both)
c vs D (3 pts for lowercase-player, 0 pts for uppercase-player)
c vs C (1 pt for both)
Qui produit le score 9(en minuscules) à 6(en majuscules), donc la sortie doit être 9,6(ou tout délimiteur sans ambiguïté).
Pour l'exprimer d'une autre manière, voici chaque paire tirée sur sa propre rangée:
cDCddDDCcCc
cD
Cd
dD
D c
C c
Il y en a un inégalé C, car le joueur majuscule a soumis plus de coups que le joueur minuscule. C'est acceptable et il est totalement ignoré à des fins de notation.
Voici les prérequis:
Vous devez écrire un programme ou une fonction qui accepte une chaîne de la forme d'expression régulière
/[cdCD]+/, via un mécanisme d'entrée (STDIN, argument de fonction, lecture à partir d'un fichier, etc.). (Votre programme peut éventuellement accepter une entrée avec une nouvelle ligne de fin.)Votre programme ou fonction doit produire ou renvoyer les scores des joueurs sous forme de chaîne. Le format de sortie doit commencer par le score du joueur en minuscules, suivi du score du joueur en majuscules, séparé par tout délimiteur non vide et non numérique de votre choix. (Une nouvelle ligne de fin est facultative.)
Si un joueur a plus de coups que l'autre, les coups excédentaires sont ignorés.
Si tous les coups dans l'entrée proviennent d'un seul joueur (c'est-à-dire qu'aucun tour n'a été joué du tout), alors le score de chaque joueur est
0.La plus petite soumission en octets gagne.
Cas de test
Input: cDCddDDCcCc
Output: 9,6 -- or any delimiter; I chose commas here
Input: cccDDD
Output: 9,0
Input: DDDDDDccc
Output: 9,0
Input: cDcDcD
Output: 9,0
Input: dcDDC
Output: 5,2
Input: CcdCDDcd
Output: 6,6
Input: Ddd
Output: 2,2
Input: ccccccccccc
Output: 0,0
(0,0)ou [0,0]OK pour la sortie?
