Bienvenue, brave golfeur de code! Aujourd'hui, vous vous tiendrez au milieu d'une grande bataille entre un gobelin et un elfe!
goblin attacks elf!
elf dodges!
elf attacks goblin!
elf hits goblin for 13 damage!
goblin has 37 health left.
goblin attacks elf!
goblin hits elf for 1 damage!
elf has 49 health left.
elf attacks goblin!
elf hits goblin for 19 damage!
goblin has 18 health left.
goblin attacks elf!
goblin hits elf for 26 damage!
elf has 23 health left.
elf attacks goblin!
elf hits goblin for 20 damage!
goblin has been slain!
Le défi
Votre défi est de simuler une bataille, comme celle ci-dessus. Vous recevrez une entrée sous cette forme:
creatureName health strength defense accuracy agility
Par exemple, la bataille entre le gobelin et l'elfe serait:
goblin 50 40 35 3 2 elf 50 35 30 4 5
Les première et deuxième créatures alterneront les attaques.
- Imprimer 'creatureName attaque otherCreatureName!'
- Vérifiez si la créature esquive. La créature esquivera une attaque si (son temps d'agilité rand () divisé par 2) est supérieur à (la précision de l'attaquant multiplie rand ()).
- Si la créature esquive, imprimez 'creatureName esquive!'
- Sinon, calculez les dégâts infligés en soustrayant (la force de l'attaquant multipliée par rand ()) et (la défense du défenseur multipliée par rand () divisée par 2). Le minimum de dégâts est de 1. Imprimez 'creatureName frappe otherCreatureName pour (x) dégâts!' Imprimez ensuite «creatureName a (x) health left». sauf si la santé de la créature est de 0 ou moins, auquel cas ...
- Si la santé de la créature est de 0 ou moins, imprimez 'creatureName a été tué!' et terminer le programme.
Règles
- Le code le plus court gagne.
- N'imprimez pas littéralement 'creatureName', mais remplacez-le par le nom de la créature. N'imprimez pas '(x) damage' ou '(x) health;' remplacez-les par le montant réel. (Je dois préciser cela parce que certaines personnes sont très créatives avec le pliage des règles.: P)
code-golf
simulation
Poignée de porte
la source
la source
goblin 50 40 18 3 2 elf 50 35 15 4 5
?Réponses:
APL (
249244242)Style procédural cette fois, donc (dans Dyalog au moins) vous devez le coller dans une fenêtre d'éditeur. Je l'ai nommé
G
(la première ligne est le nom, je l'ai inclus parce que c'est comme ça qu'il apparaît dans la fenêtre de l'éditeur donc il devrait probablement être compté).(modifier: utilisé des GOTO numériques au lieu des étiquettes de ligne. Il s'avère que (dans Dyalog au moins) tout ce qui définit une étiquette
X:
est définiX
sur le numéro de ligne, il pourrait donc aussi bien utiliser directement les numéros.)la source
Perl, 254 + 1
Exécutez avec
perl -nM5.010
(ouperl -nE '<code>'
). Par méta , le-n
commutateur compte comme un caractère supplémentaire. Pas d'astuces de golf sophistiquées dans ce code, sauf peut-être l'utilisation de$=
comme variable de dégâts pour enregistrer unint
.Edit: Espérons que le calcul des dégâts soit correct maintenant.
la source
CoffeeScript
454432Passez une chaîne à
b
pour obtenir les résultats. Je pensais que ce serait plus amusant d'avoir une sortie graphique animée, alors j'ai monté une démo. Modifiez simplement la zone de saisie pour modifier les statistiques et les noms. Les images de jpg.to qui est l'API google-images non officielle.Démo Super Action
Entrées recommandées (suggérez les vôtres):
la source
voldemort 9999
haha: D10e42
, mais votre navigateur peut se figer ...Rubis,
292264Ma première entrée de golf de code; comment cette définition de méthode analyse me dépasse :)
Est-il correct de lire l'entrée à partir des paramètres de ligne de commande (par exemple
ruby battle.rb goblin 50 40 35 3 2 elf 50 35 30 4 5
)?Ideone run
la source
JavaScript;
347341333Comme je le fais toujours, je vais commencer par ma propre solution:
EDIT: apparemment assigné
console.log
à une variable se casse sur certains navigateurs, voici donc le même code avec une déclaration de fonction à la place:Je pensais à le changer
alert
, mais ce serait juste mal: Pla source
Uncaught TypeError: Illegal invocation
cause dea=console.log
. ne seriez-vous pas obligé de lier l'console
objet comme contexte, par exemplea=console.log.bind(console)
?alert
, mais ce serait très ennuyeux: PPython: 393
J'ai serré un peu plus fort, si j'en avais 3, je pourrais probablement le
print = p
raccourcir de quelques autres, mais je ne pense pas qu'il reste beaucoup de choses dans celui-ci.393:
399:
Je pense que les gens ignorent que si vous avez un bon état dans la boucle, vous n'avez pas besoin de vérifier si la cible est inférieure à la santé.
la source
JavaScript:
340306339:
306:
Exemple de sortie:
Modifier les notes: +1 caractère, j'ai raté le "!" après "esquive"
Oh et j'ai oublié de mettre une sortie après "Exemple de sortie"
Changé l'en-tête en JavaScript, comme le suggère @tbodt
la source
R: 387 caractères
Ou bien développé, avec des indentations et des commentaires, pour clarifier les choses:
la source
C # -
464453 caractèresAprès quelques nuits, je n'arrive pas à me rapprocher des autres entrées (pas surprenant pour C #). Je pense qu'il y a encore place à amélioration. Pas de trucs particulièrement intelligents.
Commenté:
la source
Python 3, 314
la source