Je veux essayer une nouvelle forme de code golf ici. Comme pour les bonus, toutes les parties du défi ne doivent pas être terminées, mais chaque réponse doit implémenter un sous-ensemble d'une certaine taille (et il y a un noyau que chaque réponse doit implémenter). Donc, en plus du golf, ce défi implique également de choisir un ensemble de fonctionnalités qui vont bien ensemble.
Les règles
Kingdom Builder est un jeu de plateau, joué sur une grille hexagonale (pointue). La carte est composée de quatre quadrants (randomisés), chacun ayant 10x10 cellules hex (donc une carte complète sera de 20x20). Aux fins de ce défi, chaque cellule hexadécimale contient de l'eau ( W
), une montagne ( M
) une ville ( T
), un château ( C
) ou est vide ( .
). Donc, un quadrant pourrait ressembler
. . W . . . . . . .
. M W W . . . . . .
. M . . W . . . T .
M M . W . . . . . .
. . M . W W . . . .
. . . . . W W W W W
. T . . . . . . . .
. . W . . C . . . .
. . W W . . . . M .
. . . . . . . M M .
La deuxième ligne sera toujours décalée vers la droite de la première ligne. Les joueurs 1
de 4
peuvent placer jusqu'à 40 colonies chacune sur les cellules vides (quelques règles que nous ignorerons pour relever ce défi). Un tableau possible à la fin du jeu est le suivant:
3 3 W . . . 4 . 4 . . 2 W . 4 . . 4 . 4
3 M W W . 1 1 . . 4 2 W . 3 C 4 4 . . 4
3 M 2 2 W 1 1 1 T 3 2 W 4 3 . 1 4 . 4 .
M M . W 2 2 . . . 2 2 W 3 . 1 1 1 . . .
. 4 M . W W 2 2 2 2 W W 3 . 1 4 . T . .
. . . . . W W W W W . 3 C 1 . . 2 2 2 2
. T 1 1 1 1 . . 2 . . 4 . . . 2 2 M M M
4 . W 4 . C 4 4 . . . . . . 2 M M M M M
. 4 W W . . . 4 M . . W . W . 2 2 2 M M
. . . . . . . M M . . W W . . . . 2 M .
. . . 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 . 1
M 3 3 . . . . . . . . 4 . T 2 . 2 4 1 .
M M . C . 4 . 4 . . . . . 1 2 4 2 1 1 .
M . . 1 . 4 . . . . M M 1 2 . . 2 1 . .
. . . W 1 1 4 1 1 . . . 1 2 . . 2 W W W
. . 1 1 W 1 T . 1 1 1 1 T . . 2 W . 4 .
. 1 1 W . 3 3 . . . . . . . . 2 W 4 C 3
C 1 3 3 3 . 3 . 4 . 4 . 4 . . 2 W 1 1 M
4 3 3 4 . M 4 3 . . . . . . . 2 W . . .
. . . 4 . M M 3 . . 4 4 . 4 . 2 W W . .
Nous étiquetons les quadrants comme
1 2
3 4
Votre tâche sera de marquer un tel tableau. Il y a un score de base qui est toujours utilisé et 8 scores optionnels, dont 3 sont choisis pour chaque match. † Dans ce qui suit, je décrirai les 9 scores et utiliserai la configuration ci-dessus comme exemple pour combien de points chaque joueur gagnerait.
† Il y a 10 scores dans le jeu réel, mais je vais en laisser deux parce que personne ne veut les jouer au golf.
Le score de base. Un joueur obtient 3 points pour chaque C
astle à côté duquel il a un règlement. Exemples de scores: 18, 0, 15, 12.
Les scores optionnels.
Un joueur obtient 1 point pour chaque ligne horizontale sur laquelle il a au moins un règlement.
Exemples de scores: 14, 20, 12, 16.
Pour chaque joueur, trouvez la ligne horizontale sur laquelle ils ont le plus de leurs colonies (choisissez-en en cas d'égalité). Un joueur obtient 2 points pour chaque règlement sur cette ligne.
Exemples de scores: 14 (ligne 16), 8 (ligne 4, 5 ou 6), 28 (ligne 11), 10 (ligne 1).
Un joueur obtient 1 point pour chaque colonie qui est construite à côté d'
W
Ater.Exemples de scores: 13, 21, 10, 5.
Un joueur obtient 1 point pour chaque règlement à côté d'une
M
fontaine.Exemples de scores: 4, 12, 8, 4.
Comptez les colonies de chaque joueur dans chaque quadrant. Par quadrant, les joueurs avec le plus grand nombre de colonies obtiennent 12 points chacun, les joueurs avec le deuxième plus grand nombre de colonies obtiennent 6 points chacun.
Exemples de scores: 18 (6 + 0 + 6 + 6), 36 (12 + 12 + 0 + 12), 12 (0 + 0 + 12 + 0), 18 (12 + 6 + 0 + 0).
Pour chaque joueur, déterminez le quadrant dans lequel ils ont le moins de colonies. Un joueur obtient 3 points pour chaque règlement dans ce quadrant.
Exemples de scores: 18 (quadrant 2), 0 (quadrant 3), 15 (quadrant 1 ou 2), 27 (quadrant 3).
Un joueur obtient 1 point pour chaque groupe de colonies connecté.
Exemples de scores: 7, 5, 6, 29.
Un joueur obtient 1 point pour 2 colonies dans le plus grand groupe de colonies connectées du joueur.
Exemples de scores: 4, 10, 8, 2.
Le défi
Comme dans le jeu, vous choisirez 3 des scores optionnels et marquerez un tableau donné en fonction du score de base et de ces trois scores. Votre code devrait produire une liste de 4 scores. Il y a cependant une restriction au choix: j'ai groupé les scores en 3 groupes, et vous devez mettre en œuvre un de chaque groupe:
- Implémentez l'un des 1 et 2 .
- Mettez en œuvre l'un des 3, 4, 5 et 6 .
- Implémentez l'un des 7 et 8 .
Vous pouvez écrire un programme ou une fonction, en prenant une entrée via STDIN, un argument de ligne de commande, une invite ou un paramètre de fonction. Vous pouvez retourner le résultat ou l'imprimer à STDOUT.
Vous pouvez choisir n'importe quel format de liste / chaîne 1D ou 2D pour l'entrée. Vous ne pouvez pas utiliser un graphique avec des informations d'adjacence complètes. Voici une bonne lecture sur les grilles hexadécimales si vous avez besoin d'inspiration.
Votre sortie peut également être dans n'importe quel format de liste ou de chaîne pratique et sans ambiguïté.
Il s'agit du code golf, donc la réponse la plus courte (en octets) l'emporte.
Autres hypothèses
Vous pouvez supposer que ...
- ... chaque joueur a au moins 1 règlement et il n'y a pas plus de 40 règlements de chaque joueur.
- ... chaque quadrant contient soit une ville et deux châteaux, soit deux villes et un château.
- ... les villes et les châteaux sont suffisamment éloignés, de sorte qu'aucune colonie ne peut être adjacente à deux d'entre eux.
Cas de test
Toujours en utilisant le tableau ci-dessus, voici les scores individuels pour tous les choix possibles de mécanismes de notation:
Chosen Scores Total Player Scores
1 3 7 52 46 43 62
1 3 8 49 51 45 35
1 4 7 43 37 41 61
1 4 8 40 42 43 34
1 5 7 57 61 45 75
1 5 8 54 66 47 48
1 6 7 57 25 48 84
1 6 8 54 30 50 57
2 3 7 52 34 59 56
2 3 8 49 39 61 29
2 4 7 43 25 57 55
2 4 8 40 30 59 28
2 5 7 57 49 61 69
2 5 8 54 54 63 42
2 6 7 57 13 64 78
2 6 8 54 18 66 51