{"id":16087126,"url":"https://github.com/cdlm/kata-uno","last_synced_at":"2025-04-05T15:10:53.276Z","repository":{"id":137546971,"uuid":"80203858","full_name":"cdlm/kata-uno","owner":"cdlm","description":"Uno card game rule checker, as an OO design \u0026 Ruby programming exercise","archived":false,"fork":false,"pushed_at":"2017-01-27T12:58:23.000Z","size":49,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-11T11:51:23.201Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cdlm.png","metadata":{"files":{"readme":"README.markdown","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-01-27T11:57:35.000Z","updated_at":"2019-11-02T19:26:29.000Z","dependencies_parsed_at":null,"dependency_job_id":"312d2899-711b-4f19-9014-0993dd77cfd4","html_url":"https://github.com/cdlm/kata-uno","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdlm%2Fkata-uno","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdlm%2Fkata-uno/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdlm%2Fkata-uno/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdlm%2Fkata-uno/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cdlm","download_url":"https://codeload.github.com/cdlm/kata-uno/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247353749,"owners_count":20925329,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-09T13:28:01.518Z","updated_at":"2025-04-05T15:10:53.256Z","avatar_url":"https://github.com/cdlm.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Uno rules checker, in Ruby\n\nA simple little reference implementation for a programming assignment.\nThe problem statement follows (in french).\n\n[![Build Status](https://travis-ci.org/cdlm/kata-uno.svg?branch=master)](https://travis-ci.org/cdlm/kata-uno)\n\n - - -\n\n# Un arbitre pour le jeu Uno\n\nVous devez implémenter une librairie de classes permettant de vérifier le déroulement d'une partie de Uno (règles et cartes de base selon \u003chttp://fr.wikipedia.org/wiki/Uno\u003e).\n\n## Spécification du format d'entrée\n\nLe programme principal demandé doit accepter comme unique argument le nom d'un fichier texte respectant le format de l'exemple suivant :\n\n    6 players\n    Alice\n    Bob\n    Carol\n    Dave\n    Erin\n    Frank\n    7 red\n    5 red Alice\n    5 green Bob\n    +2 green Carol\n    skip green Erin\n    reverse green Alice\n    joker blue Frank\n    +4 yellow Erin\n\nLa première ligne indique le nombre N de joueurs de la partie (ici, N=6) suivi du mot `players`.\nLes N lignes suivantes spécifient les prénoms ou pseudonymes des joueurs, dans l'ordre de jeu (un mot chaque).\nLa ligne suivante `7 red` indique la première carte retournée dans la défausse, et marque ainsi le début de partie.\nLe reste des lignes du fichiers contiennent deux ou trois mots, indiquant :\n\n  - premier mot :\n  un type de carte défaussée (`0` à `9`, `+2`, `skip`, `reverse`, `joker`, ou `+4`) ou `draw` si le joueur pioche volontairement\n\n  - second mot (omis après draw) :\n  une couleur parmi `red`, `green`, `blue`, `yellow`, précisant la couleur annoncée pour le `joker` et le `+4`, et la couleur de la carte jouée pour les autres.\n\n  - dernier mot :\n  le nom ou pseudonyme du joueur ayant joué cette carte.\n\n\n## Spécification du format de sortie\n\nLe programme doit à l'exclusion de toute autre chose, ré-afficher les lignes lues, en insérant entre elles des lignes commençant par un signe dièse, donnant les diagnostics de l'arbitre après chaque carte défaussée :\n\n    6 players\n    Alice\n    Bob\n    Carol\n    Dave\n    Erin\n    Frank\n    7 red\n    # Alice to play\n    5 red Alice\n    # Alice 6 cards left\n    # Bob to play\n    draw Bob\n    # Bob 8 cards left\n    # Carol to play\n    +2 green Carol\n    # Carol 6 cards left\n    # Dave 9 cards left\n    # Erin to play\n    skip green Erin\n    # Erin 6 cards left\n    # Alice to play\n    reverse green Alice\n    # Alice 5 cards left\n    # Frank to play\n    joker blue Frank\n    # Frank 6 cards left\n    # Erin to play\n    +4 yellow Erin\n    # Erin 5 cards left\n    # Dave 13 cards left\n\n…et ainsi de suite :\n\n  - nombre de cartes restant dans la main du joueur ayant défaussé,\n  - nombre de cartes dans la main de l'éventuel joueur ayant dû piocher,\n  - nom du joueur suivant.\n\nQuand un joueur défausse sa dernière carte, le diagnostic indique la fin de partie :\n\n    (déroulement de la partie)\n\n    # Alice to play\n    1 blue Alice\n    # Alice 0 card left\n    # Alice wins\n\nDans le cas d'une défausse illégale, le programme affiche un diagnostic indiquant l'erreur, puis continue l'analyse du fichier comme si le joueur avait repris sa carte en main :\n\n    (18 premières lignes identiques au premier exemple)\n\n    # Erin to play\n    skip green Erin\n    # Erin 6 cards left\n    # Alice to play\n    2 green Frank\n    # wrong player\n    # Alice to play\n    reverse green Alice\n    # Alice 5 cards left\n    # Frank to play\n    2 blue Frank\n    # wrong card\n    # Frank to play\n\nLes diagnostics d'erreur peuvent être :\n\n    # wrong player\n    # wrong card\n\nSi un joueur a gagné la partie, les éventuelles lignes de défausse suivantes causent toutes le diagnostic `wrong player`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcdlm%2Fkata-uno","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcdlm%2Fkata-uno","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcdlm%2Fkata-uno/lists"}