Votre tâche est simple: dites-moi qui gagne la bataille des lettres.
Les troupes
Il y a trois "troupes" différentes dans cette bataille, résumées par ce tableau.
name | health | damage
A 25 25
B 100 5
C 10 50
Vous pouvez utiliser trois caractères uniques pour représenter les troupes, mais vous devez spécifier s'il ne s'agit pas de ces lettres.
La bataille
Supposons que nous ayons un exemple de bataille:
ABC # army 1
CBA # army 2
Chaque armée tire à plusieurs reprises sur l'unité la plus à gauche, jusqu'à ce qu'elle soit morte; puis ils se déplacent vers la troupe à droite et répètent. Donc, l'armée 2 attaque A
dans l'armée 1 jusqu'à ce qu'elle A
soit morte, puis passez à B
, puis C
. L'armée 1 attaque d' C
abord, puis B
ensuite A
. Supposons que les armées attaquent en même temps, et donc les troupes tireront toujours si elles étaient vivantes avant le round et peuvent s'entretuer en même temps. Ils tirent dans l'ordre de gauche à droite.
La bataille se déroulerait comme suit:
ABC
CBA
BC # A (25 hp) killed by C (-50 hp), B (100 hp) attacked by B (-5 hp) and A (-25 hp), has 70 hp
BA # C (10 hp) killed by A (-25 hp), B (100 hp) attacked by B (-5 hp) and C (-50 hp), has 45 hp
BC # B (70 hp) attacked by B (-5 hp) and A (-25 hp), has 40 hp
A # B (45 hp) killed by B (-5 hp) and C (-50 hp)
BC # B (40 hp) attacked by A (-25 hp), has 15 health
# A (25 hp) killed by B (-5 hp) and C (-50 hp), army 2 dead
Par conséquent, l'armée 1 gagne la bataille!
Contribution
Deux cordes, la première représentant l'armée 1 et la deuxième armée 2. Elles ne sont pas nécessairement de la même taille (car qui a dit que ce serait un combat loyal?)
Production
Trois valeurs constantes uniques pour représenter la victoire de l'armée 1, la victoire de l'armée 2 ou l'événement improbable d'une égalité. Oui, il est possible que les dernières troupes s'entretuent, se terminant par une égalité.
Batailles
ABC
CBA
Army 1
CCCCC
CCCCC
Tie
CABCAB
ABBABBA
Army 2
Des échappatoires standard s'appliquent . Vous devez soumettre un programme complet.
C'est le code-golf , la solution la plus courte l'emporte.
A
batB
etC
cravateB
etA
cravateC
. Changer l'une desA
valeurs de pour la20
rendre liéeB
.Réponses:
Pyth
14597 octetsUn peu moins naïf qu'avant.
Essayez-le en ligne!
Explications:
Coupons le programme en plusieurs parties.
Le dictionnaire
Y
est:{'A': [25, 25], 'C': [10, 50], 'B': [100, 5]}
. Alors:À ce stade,
K
est une liste de couples qui représente la première armée. Chaque couple de cette liste est une lettre de l'armée et est(health, damage)
pour cette lettre.J
est exactement la même chose, mais pour la deuxième armée.g
est une fonction qui prend deux armées et inflige les dégâts infligés par la deuxième armée à la première. Maintenant:Lorsque la boucle while est terminée,
K
etJ
ont leur valeur finale. S'ils sont tous les deux vides, c'est une cravate; sinon l'armée non vide gagne. Cela est géré par le dernier morceau de code:C'est ça!
la source
Haskell ,
199193179 179176171 octetsEssayez-le en ligne!
Petit truc: divisé toutes les statistiques de l'armée par 5.
la source
C #, 446 octets
Version formatée:
Sorties 1 si armée1 gagne, 2 pour armée2 et 0 pour égalité
la source
int[]
je pense que vous pouvez les combiner, `` <= 0` est le même que<1
sûrement? Avez-vous besoin dutry-catch
?Javascript (ES6) -
316269 octetsJe suis sûr que cela peut être joué comme un enfer, mais c'est ce que j'ai trouvé :) J'ai réussi à raser 47 octets!
Sorties 0 pour égalité, 1 pour l'équipe 1 et 2 pour l'équipe 2.
Lisible :
Démo :
la source