C'est vendredi ... alors allons jouer au golf! Écrivez le code qui détermine le score du joueur sur un trou dans une partie de golf. Le code peut être soit une fonction soit un programme entier. Comme le genre le suggère, le code le plus court gagne.
Entrée (paramètres ou stdin, au choix):
- Un entier représentant le pair du trou, garanti entre 3 et 6
- Un entier représentant le score du golfeur, garanti entre 1 et 64
Sortie (impression vers sortie standard ou retour, retour à la ligne autorisé mais non requis, votre choix):
- si le score est 1, sortir "Trou en un"
- si score == par - 4 et par> 5, sortir "Condor"
- si score == par - 3 et par> 4, sortir "Albatros"
- si score == par - 2 et par> 3, sortir "Eagle"
- si score == par - 1, sortie "Birdie"
- si score == par, sortie "Par"
- si score == par + 1, sortie "Bogey"
- si score == par + 2, sortie "Double Bogey"
- si score == par + 3, sortie "Triple Bogey"
- si score> par + 3, sortie "Haha you loser"
EDIT Félicitations à Dennis d'avoir la réponse la plus courte!
Réponses:
Gelée , 61 octets
Essayez-le en ligne!
Contexte
Cela utilise la compression de dictionnaire statique de Jelly. Vous pouvez trouver un compresseur ici . Par ici,
et
aussi bien que
et
sont équivalents.
Comment ça marche
la source
PHP 5.3+,
Version sans préavis,173167166159 159156151127121 octets139137 octetsDéfinissez
vue éclatée$s
les$p
variables de base et ar avant leecho
et vous êtes parti.Modifications
-6: ne stocke pas le tableau, il suffit de l'appeler si nécessaire.
-1: retournement du ternaire.
-7: Le plus bas
$s-$p
avec$s>1
est-4
, donc cemax()
n'est pas nécessaire depuis4+$s-$p >= 0
.-3
Array -> explode()
:, merci CoolestVeto!-5:
Chaînetricheuselittéraleconstante indéfinie plus$r[-1] -> false
, merci Ismael Miguel!-24: Passer d'une
explode()
fonction à uneprintf
/%s
setup, avec quelques ajustements, merci à Ismael Miguel pour le changement de direction.-6: Swerve , nous sommes de retour
echo
!la source
$b="Bogey";
par$b=Bogey;
pour économiser 2 octets. Remplacez également votre$s-1? ... : ...;
par unecho ... ?: ...;
. Voici la version longue de 151 octets:function g($s,$p){$b=Bogey;echo explode("-","Condor-Albatross-Eagle-Birdie-Par-$b-Double $b-Triple $b-Haha you loser")[min(4+$s-$p,8)]?:"Hole in one";}
printf([Condor,Albatross,Eagle,Birdie,Par,'%s','Double %s','Triple %s','Haha you loser'][min(4+$argv[1]-$argv[2],8)]?:'Hole in one',Bogey);
. Fondamentalement: Suppression de la déclaration de fonction, suppression duexplore
, suppression des guillemets, utilisation d'un tableau et utilisation$argv
. Le code final est long de 139 octets.05AB1E ,
9190 octetsCode:
Explication:
Partie 1:
Partie 2:
Cela revient à
"Condor Albatross Eagle Birdie Par 0Bogey Double0Bogey Triple0Bogey"
utiliser la compression et l'interpolation de chaînes. Nous avons ensuite divisé sur les espaces, en utilisantð¡
.Partie 3:
Découvert de nombreux bugs, utilise l' encodage CP-1252 .
Essayez-le en ligne!
la source
Vitsy, 131 octets
Explication:
Cela fonctionne en déterminant quel est le score par rapport au pair, puis en exécutant différentes lignes (et en gagnant différentes chaînes).
Essayez-le en ligne!
Mode verbeux (pour les caca et les rires):
la source
JavaScript (ES6),
125124 bytesAttribuez à une variable par exemple
f=p=>s=>
, puis appelez-la comme ceci:f(6)(2)
Par d'abord, puis marquez.Peut être raccourci en combinant le par
"Bogey"
.la source
",Double ,Triple ".split`,`[k-1]+"Bogey"
oùk=s-p
.LittleLua - 160 octets (non compétitif)
Je suis relativement certain d'avoir bien fait ça.
Accepte deux entiers, le pair et le score du joueur.
La version de Little Lua que j'utilisais pour faire cela a été téléchargée après la publication de ce défi, mais n'a pas été modifiée par la suite. Il est relativement évident d'après le code que rien n'a été ajouté pour simplifier ce défi
Info LittleLua:
Une fois que je suis satisfait des fonctionnalités intégrées et des fonctionnalités de Little Lua, la source sera disponible avec une infopage.
LittleLua V0.02
la source
Souris-2002 ,
223207 octetsLa suppression des commentaires aiderait probablement ...
Non golfé:
la source
bash,
150136 octetsEssai:
Merci à Dennis pour 14 octets!
la source
Python 2,
186179158 158 octetsEDIT 1: ajout du cas "trou d'un coup" manquant ...
EDIT 2: joué quelques octets (grâce à tac)
la source
4
etelse
print
et{
, et si vous utilisez un point-virgule pour mettre lea=
etprint
sur la même ligne, vous pouvez raser un octet de blancHaskell - 131 octets (en comptant la nouvelle ligne)
lines
est la seule façon dont je peux penser à jouer au golf dans une liste de chaînes qui doivent contenir des espaces avec accès uniquementPrelude
coincés avec deux délimiteurs de caractères.Pourtant, Haskell n'est généralement pas aussi compétitif (contre les langues générales au moins).
la source
import
tout ce que vous voulez, pas seulement les builtinsPython 2.7, 226 octets
Difficile de trouver un court code python lorsque vous êtes en retard à la fête, du mieux que je puisse penser.
la source
[print r for r in l if r]
C, 198 octets
la source
Japt, 97 octets
Contient un tas d'imprimables. Testez-le en ligne!
Comment ça marche
la source
Python 2.7.2, 275 octets
Non golfé / expliqué:
Ma deuxième réponse, ironiquement, les deux sont en Python. Conseils de golf appréciés!
la source
b
.int
automatiquement votre entrée .Python 2,
302284 octetsSi le premier espace blanc était autorisé, ce serait 282 octets:
la source