Es ist Freitag ... also lass uns Golf spielen gehen! Schreiben Sie einen Code, der die Punktzahl des Spielers für ein Loch in einem Golfspiel festlegt. Der Code kann entweder eine Funktion oder ein gesamtes Programm sein. Wie das Genre andeutet, gewinnt der kürzeste Code.
Eingabe (Parameter oder stdin, Ihre Wahl):
- Eine Ganzzahl, die das Par des Lochs darstellt und garantiert zwischen 3 und 6 liegt
- Eine Ganzzahl, die die Punktzahl des Golfspielers darstellt und garantiert zwischen 1 und 64 liegt
Ausgabe (Drucken auf Standardausgabe oder Rückgabe, Zeilenumbruch zulässig, aber nicht erforderlich, Ihre Wahl):
- Wenn die Punktzahl 1 ist, wird "Hole in one" ausgegeben.
- wenn score == par - 4 und par> 5, "Condor" ausgeben
- wenn score == par - 3 und par> 4, "Albatross" ausgeben
- wenn score == par - 2 und par> 3, "Eagle" ausgeben
- wenn score == par - 1, "Birdie" ausgeben
- wenn score == par, gib "Par" aus
- wenn score == par + 1, gib "Bogey" aus
- wenn score == par + 2, "Double Bogey" ausgeben
- wenn score == par + 3, "Triple Bogey" ausgeben
- wenn Punktzahl> Par + 3, Ausgabe "Haha du Verlierer"
EDIT Herzlichen Glückwunsch an Dennis zur kürzesten Antwort!
Antworten:
Jelly , 61 Bytes
Probieren Sie es online!
Hintergrund
Hierbei wird die statische Wörterbuchkomprimierung von Jelly verwendet. Einen Kompressor finden Sie hier . Diesen Weg,
und
ebenso gut wie
und
sind gleichwertig.
Wie es funktioniert
quelle
PHP 5.3+,
Kündigungsfreie Version,173167166159156151127121 Bytes139137 BytesSetzen Sie die Variablen
Explosionszeichnung$s
core und$p
ar vorecho
und schon geht es los.Bearbeitungen
-6: Das Array wird nicht gespeichert, sondern nur bei Bedarf aufgerufen.
-1: Drehe den Ternär um.
-7: Das niedrigste
$s-$p
mit$s>1
ist-4
, alsomax()
ist das nicht notwendig, da4+$s-$p >= 0
.-3
Array -> explode()
:, danke CoolestVeto!-5: Cheaty
String wörtlichundefinierte Konstante plus$r[-1] -> false
, danke Ismael Miguel!-24: Wechsel von einer
explode()
Funktion zu einemprintf
/%s
setup, mit ein paar Verbesserungen, mehr Dank an Ismael Miguel für die Richtungsänderung.-6: Swerve , wir sind
echo
wieder da!quelle
$b="Bogey";
mit$b=Bogey;
zu speichern 2 Byte. Ersetzen Sie auch Ihr$s-1? ... : ...;
durch einecho ... ?: ...;
. Hier ist die 151 Byte lange Version: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);
. Grundsätzlich gilt: Die Funktionsdeklaration wurde entferntexplore
, die entfernt, die Anführungszeichen entfernt, ein Array verwendet und verwendet$argv
. Der endgültige Code ist 139 Byte lang.05AB1E ,
9190 BytesCode:
Erläuterung:
Teil 1:
Teil 2:
Dies entspricht der
"Condor Albatross Eagle Birdie Par 0Bogey Double0Bogey Triple0Bogey"
Verwendung von String-Komprimierung und String-Interpolation. Dann teilen wir uns mitð¡
.Teil 3:
Hat viele Fehler entdeckt und verwendet die CP-1252- Codierung.
Probieren Sie es online!
quelle
Vitsy, 131 Bytes
Erläuterung:
Dies funktioniert, indem man herausfindet, was die Punktzahl relativ zum Par ist, und dann verschiedene Linien ausführt (und verschiedene Saiten gewinnt).
Probieren Sie es online!
Ausführlicher Modus (für Kacke und Kichern):
quelle
JavaScript (ES6),
125 -124 ByteWeisen Sie eine Variable zu
f=p=>s=>
, und nennen Sie sie dann wie folgt:f(6)(2)
Zuerst Par, dann Score.Kann durch Kombination der
"Bogey"
s gekürzt werden .quelle
",Double ,Triple ".split`,`[k-1]+"Bogey"
wok=s-p
.LittleLua - 160 Bytes (nicht wettbewerbsfähig)
Ich bin mir ziemlich sicher, dass ich das richtig gemacht habe.
Akzeptiert zwei ganze Zahlen, par und Punktzahl des Spielers.
Die Version von Little Lua, mit der ich das gemacht habe, wurde nach dem Posten dieser Challenge hochgeladen, danach aber nicht mehr bearbeitet. Aus dem Code geht relativ klar hervor, dass nichts hinzugefügt wurde, um diese Herausforderung zu vereinfachen
LittleLua Info:
Sobald ich mit den eingebauten Ins und der Funktionalität von Little Lua zufrieden bin, wird Source zusammen mit einer Infoseite verfügbar sein.
LittleLua V0.02
quelle
Mouse-2002 ,
223207 BytesDas Entfernen von Kommentaren würde wahrscheinlich helfen ...
Ungolfed:
quelle
Bash,
150136 BytesTestlauf:
Danke an Dennis für 14 Bytes!
quelle
Python 2,
186179158 BytesEDIT 1: das fehlende "hole in one" case hinzugefügt ...
EDIT 2: Einige Bytes ausgelesen (dank TAC)
quelle
4
undelse
print
und{
löschen, und wenn Sie ein Semikolon verwenden, um dasa=
undprint
in dieselbe Zeile zu setzen, können Sie ein Byte Leerzeichen rasierenHaskell - 131 Bytes (Zeilenvorschub wird gezählt)
lines
Nur so kann ich mir vorstellen, in einer Liste von Zeichenfolgen Golf zu spielen, die Leerzeichen enthalten müssen, die nur aufPrelude
zwei Zeichenbegrenzer beschränkt sind.Trotzdem ist Haskell normalerweise nicht so wettbewerbsfähig (zumindest gegenüber allgemeinen Sprachen).
quelle
import
alles, was Sie wollen, nicht nur die eingebautenPython 2.7, 226 Bytes
Es ist schwer, einen kurzen Python-Code zu finden, wenn Sie zu spät zur Party kommen.
quelle
[print r for r in l if r]
C 198 Bytes
quelle
Japt, 97 Bytes
Enthält eine Reihe von nicht druckbaren Dateien. Online testen!
Wie es funktioniert
quelle
Python 2.7.2, 275 Bytes
Ungolfed / erklärt:
Meine zweite Antwort ist ironischerweise Python. Golftipps erwünscht!
quelle
b
.int
automatisch um.Python 2,
302284 BytesWenn führender Leerraum zulässig wäre, wären das 282 Byte:
quelle