Die 9-Loch-Herausforderung
- 9 Code Golf Herausforderungen unterschiedlicher Schwierigkeitsgrade.
- Strafen für die mehrmalige Verwendung derselben Sprache.
Die Frage wird mit Pars, Hole Champions und Pokalsiegern aktualisiert.
Dies geht auf einen Wettbewerb zurück, den ich mit einigen Freunden veranstaltet habe. Es ist nicht das übliche Format, aber ich hoffe, dass einige von Ihnen den unterschiedlichen Dreh zu schätzen wissen. Herausforderungen, Regeln und Trophäen unten.
Löcher
Greenway (24)
f(c:string, n:integer)
Gibt eine Zeile mitn
Instanzen von ausc
.Irgendwo im Rough (73)
f(t:string, s:string, n:integer) -> i
Woi
ist der Index dernth
Instanz vons
int
.Curry zum Abendessen (6235)
f(x:function, y: function) -> g
Wog
ist eine Funktion, die aufgerufen wirdy
,n
mal; won
ist der Rückgabewert vonx
Speien (92)
f(p:string)
Schreibt in eine Dateip
und füllt sie mit einem zufällig großen Rechteck aus zufälligen Zeichen (ASCII).Schatzsuche (75)
f(p:string, c:char) -> (x, y)
Liest Datei auf ,p
die ein Gitter von Symbolen enthält und gibt diex
undy
Koordinaten der ersten Instanz des Symbols innerhalb des Gitters, annehmen , dass es vorhanden ist .Brücke über den Kwai (179)
f(l:list[int])
Druckt das Differenzbrückendiagramm fürl
. ZB für[1,7,3,17,1]
/+6\ /-4\ /+14\ /-16\ 1 7 3 17 1
Stellen Sie sicher, dass die Leerzeichen entsprechend der Größe der obigen Zahl erstellt werden. Für eine dreistellige lange Nummer benötigen Sie 4 Leerzeichen zwischen den Ziffern in der Zeile darunter.
Fang: Irgendwo muss Ihr Code Hosen buchstabieren (Muss mindestens 1 nicht alphanumerische Trennzeichen haben. ZB
tr(ou,se)(rs)
Die Zeit vergeht, wenn du Golf spielst (1157)
f(p:string) -> [h, m]
Liest eine Datei, inp
der eine ASCII-Darstellung einer analogen Uhr enthalten ist, wobei der Stundenzeiger mit einer Zeile und die Minuten mit zwei Zeilen dargestellt sind. Eine Liste mit zwei Elementen ausgeben: die auf der Uhr angezeigten Stunden und Minuten. Wenn nur eine Hand sichtbar ist, nehmen Sie beide Zeiger auf diese Position.Hier sind alle möglichen Kombinationen für eine Hand.
\ | / \|/ --o-- /|\ / | \
Diese Positionen sind jeweils (12, 1, 3, 5, 6, 7, 9, 11). Angenommen, die anderen Zeichen im Ziffernblatt sind Leerzeichen.
Bauholz! ()
f(p:string) -> b:boolean
Wobei p der Pfad zu einer Datei mit einem ASCII-Gebäude ist. Blöcke mit Leerzeichen darunter werden fallen. (Mit Ausnahme von Schrägstrichen, die an Ort und Stelle bleiben, wenn sich ein stabiler Block in der entgegengesetzten Richtung zu ihrer Ausrichtung befindet.) Wenn das Gebäude strukturell einstückig ist, geben Sie true zurück, andernfalls false. Alle Nicht-Whitespace-Blöcke werden als solide gewertet und mit Ausnahme von Schrägstrichen fallen sie alle.Statisch sicher
____ |/\| | |
Nicht sicher
|__ | |
Sichere Version
|__ \\| |
Slacker News (218)
f(s:string, r:string, p:string)
Ruft die Titel der Top-20-Storys in Hacker News ab und ändert alle Instanzen vons
tor
. Anschließend werden die neuen Titel in eine HTML-Datei unter geschriebenp
, in der jeder Titel in einem h1-Element enthalten ist.Die ausgegebene Datei sollte ungefähr so aussehen
<h1>Some title</h1></h1>Some other title</h1>...etc
Fang :
- Sie dürfen die HN-API nicht verwenden.
- Sie dürfen Regex nicht verwenden.
- Sie dürfen keine spitzen Klammern in Ihrem Code verwenden.
Wertung
- Die Anzahl der Zeichen ist die Länge der Funktion, die korrekt kompiliert und ausgeführt wird. Sie müssen jedoch weiterhin den vollständigen Code einschließlich der Importe übermitteln.
- + 10% für jede wiederholte Sprache in Ihrem Beitrag. (Wenn Sie beispielsweise Ruby für 3 Lösungen verwenden, wird Ihre Endpunktzahl mit 1,2 multipliziert.) Verschiedene Versionen derselben Sprache zählen immer noch als dieselbe Sprache.
- Par ist die durchschnittliche Punktzahl für jedes Loch.
- Senden Sie Ihre Lösungen in einer Antwort.
- Ihre Gesamtpunktzahl ist die Anzahl Ihrer Charaktere + Ihre Sprachstrafe, dann runden Sie es auf.
Trophäen
- Gold Jacket - ( @Sprigyig - 1290) Niedrigste Gesamtpunktzahl
- Shooter - ( @Sprigyig - 9) Die meisten verwendeten Sprachen
- Bunker - Höchste Punktzahl in einem Loch
- Snakes on a Plane - ( @AsksAnyway - 1727) Höchste Python- Zeichenübertragung in einer einzigen Lösung
- Good Parts - ( @AsksAnyway - 255) Höchste Anzahl von JS-Zeichen in einer einzelnen Lösung
- Shakey Steve - Kürzeste Lösung, die Schnittstellen verwendet
- Sie sind nicht von Round Here - Kürzeste eindeutige Sprachlösung, bei der die Sprache die kürzeste Wikipedia-Seite hat.
- Happy Gilmoore - ( @AsksAnyway - 31) Kürzeste Lösung mit dem Wort "Alligator" im Code.
- Unicycling Dwarf Magic - Die Standarderweiterungen Ihrer 9 Einreichungsquelldateien sind ein perfektes Anagramm eines Wortes im Oxford Dictionary.
Sie haben erst dann Anspruch auf eine Trophäe, wenn Sie alle 9 Löcher abgeschlossen haben
Einreichungen
- @Sprigyig 1290
- @ Firefly 1320
- @grc 1395
- @ Trevor M 1465
- @ C Gearhart 1654
- @ Guy Sirton 1719
- @ AsksAnyway 4651
quelle
<
&>
/
Position auf 1 Uhr oder 2 Uhr beziehen? (und ähnlich für alle anderen Diagonalen)Antworten:
Ergebnis: 4651
2907 + 60% Strafe
1. GolfScript - 14 Zeichen
Verwendung:
c n a
zB"test" 3 a
->testtesttest
Glückliches Gilmoore
2. Python - 72 Zeichen
3. Javascript - 255 Zeichen
Bunker Gute Teile
4. Python - 132 Zeichen
5. Python - 89 Zeichen
6. Python - 189 Zeichen
7. Python - 1727 Zeichen
Schlangen auf einem Flugzeug
8. Python - 226 Zeichen
9. Python - 203 Zeichen
quelle
i<i<42
), oder sind sie zulässig, solange Sie sie nur als Operatoren verwenden?Ergebnis: 1320
Ich habe viel zu tun, um diese Punktzahl zu verbessern ... Na ja, zumindest habe ich mehrsprachige Strafen vermieden. :-)
1. Python (21 Zeichen)
Die "naheliegende" Lösung.
2. ECMAScript 6 (47 Zeichen)
Findet den Index auf etwas unkonventionelle Weise, indem die Länge des vorangestellten Teilstrings gezählt wird.
3. J (12 Zeichen)
Die eingebaute Konjunktion
^:
erhöht eine Funktion auf eine Potenz (dh wiederholt eine Funktion eine bestimmte Anzahl von Malen). Das heißt,f^:3 y = f (f (f y)))
. Es ist jedoch überladen, um alos Funktionen anstelle von ganzen Zahlen zu akzeptieren. In diesem Fall führt es die Funktion für die Eingabe aus, um die Anzahl der Wiederholungen zu ermitteln. Leider müssen wir die Operanden für die Aufgabe umdrehen, sonst hätten wir die richtige Antwortf=:^:
.4. C (95 Zeichen)
Diese Aufgabe lässt einiges an Interpretations- und Missbrauchsspielraum: Ist es in Ordnung, nur ein zufälliges druckbares ASCII-Zeichen auszugeben und zu sagen, dass es sich um ein zufällig dimensioniertes Rechteck mit Abmessungen aus der Menge {1} handelt? Wahrscheinlich nicht. Wie auch immer, ich habe mich für schlicht entschieden,
rand()
aber in Wirklichkeit möchten Sie wahrscheinlich%9
etwas hinzufügen , wenn Sie es testen möchten. Auf meiner Linux-Box musste ich die Datei nicht entleeren, damit sie geschrieben wurde (ich vermute, sie wird beim Beenden des Programms automatisch entleert), aber ich bin mir ziemlich sicher, dass Sie sie entleeren müssen, um den Standards zu entsprechen frei, umfflush(f);
die Zählung hier hinzuzufügen .5. Haskell (100 Zeichen)
Ich mag das wiederholte Muster zwischen dem Finden der Zeile und der Spalte (abstrahiert über
h
).6. Lua (261 Zeichen)
Verwendet mehrere Rückgabewerte und eine Rekursion, um die Differenzen zu berechnen. Es hat mich ein paar Zeichen gekostet, genau mit der Beispielausgabe übereinzustimmen (und überall die richtige Menge an Leerzeichen hinzuzufügen).
7. Los (307 Zeichen)
Könnte wahrscheinlich viel mehr golfen werden; Ich kenne Go kaum.
8. CoffeeScript (+ node.js) (223 Zeichen)
Ein bisschen billig, da ich bereits JS habe. Naja. Gibt einen falschen Wert (nämlich
undefined
) oder einen wahren Wert (nämlich1
) zurück, um die Antwort anzugeben.9. Bash (254 Zeichen)
(Zeilenumbrüche nach Pipes wurden zur besseren Lesbarkeit hinzugefügt.) Das Umgehen der Einschränkungen mit der Shell hat Spaß gemacht. Mir ist klar, dass es wahrscheinlich einen besseren Weg gibt
$2,$4,$6,...
, aber das war es, was ich mir ohnehin ausgedacht habe.quelle
f=str.__mul__
Ergebnis: 1.394,4
996 Zeichen + 40% Strafe
1. Greenway - Haskell, 19 Zeichen
Verwendungszweck:
2. Rough - PHP, 72 Zeichen
3. Curry - JavaScript 1.8, 45 Zeichen
4. Spew - J, 43 Zeichen
Verwendungszweck:
5. Schatz - J, 64 Zeichen
Verwendungszweck:
6. Bridge - Python, 166 Zeichen
7. Time - Python, 205 Zeichen
Es wird davon ausgegangen, dass die Zeilen mit einem Abstand von fünf Zeichen aufgefüllt sind. Verwendet Registerkarten für die zweite Einrückungsstufe.
8. Timber - Python, 190 Zeichen
9. Slacker - Python, 192 Zeichen
Vielen Dank an Tyzoid für die Idee des URL-Kürzers.
quelle
Edit: Denke, ich werde dies einfach so einreichen, wie es ist: 1290 insgesamt, keine Sprachwiederholungen.
Greenway, C # 53
Ich habe mich entschieden, die Sprachen mit # 1 und # 9 zu tauschen. Insgesamt 30 wert hier für Hunderte später.
Irgendwo im Rough, Python 59
Ich hätte wirklich keine so gute Sprache für ein einfaches Problem aufbrauchen sollen. Wie ist dies auch nicht Teil des Funktionsverzeichnisses einer Sprache? Ich brauche das anscheinend immer ...
Curry zum Abendessen, Lisp 61
Ich habe Lisp seit dieser einen Woche im College nicht mehr angerührt ...
Spew, Bash / Shell-Utensilien 102
Mein Bash-Foo war anfangs noch nie so gut. Ich werde später damit experimentieren. BTW, wenn Sie es schneller beenden möchten, schalten Sie es auf / dev / urandom um.
Schatzsuche, C 113
Wahrscheinlich eines der eher C-freundlichen Probleme. Ich habe "return two integers" so interpretiert, dass ein return array pointer als Argument genommen wird. Warnungen? Welche Warnungen? Ein int * ist genauso gut wie ein FILE * = p.
Brücke über den Kwai, Perl 207
Ich habe angefangen, Perl zu lernen, während ich dieses geschrieben habe. (Besser spät als nie!) Ich wollte Regex-Heldentaten ausführen, also bilde ich die Zeichenfolge als beide Ebenen der Brücke zusammen und benutze dann Regex mit Leerzeichen-Ersetzungen, um die zwei verschiedenen Linien zu bilden.
Die Zeit vergeht, wenn Sie Golf spielen, Java 297
Sie können nur so viel tun, um Java knapp zu machen ... Es wird davon ausgegangen, dass die Uhr mit Leerzeichen aufgefüllt ist, sodass jede Zeile 5 Leerzeichen lang ist.
Bauholz! Javascript 201
Es läuft in der Konsole von Chrome. Ich mache keine Garantien anderswo = p. Es ist erforderlich, dass die Zeilen bis zur Länge der längsten Zeile mit Leerzeichen aufgefüllt werden. Ich halte dies für eine vernünftige Forderung der ASCII-Kunst.
Slacker News, Ruby 197
quelle
Hatte Spaß, ein paar Sprachen für ein bisschen zu berühren ...
Die Anzahl der Zeichen, die nach dem Entfernen unnötiger Leerzeichen / Zeilenumbrüche erhalten wurden, wird jedoch größtenteils lesbar gehalten. Da es sich bei der Frage um eine Mischung aus Funktionen und Programmen handelt, habe ich bei Bedarf nur den Hauptteil der Funktion einbezogen.
Gesamt ~ 1719
1- Python (~ 20)
2- C (~ 109)
Lesbare Version:
3- Javascript (~ 56)
4- Rexx (~ 136)
5- Scala (~ 290)
6- C ++ (~ 355)
7- Los (~ 301)
Beachten Sie, dass die Uhr aufgefüllt werden muss (dh alle Zeilen sind gleich lang).
8- Rubin (~ 259)
9- bash / Unix-Hack (~ 193)
quelle
Nicht wirklich hier, um Golf zu spielen, aber hier ist etwas Tcl, da die Sprache mehr Liebe braucht:
Meist ungetestet, weil das Schreiben dieser Procs in einer halben Stunde viel interessanter ist als der Versuch, den Golfcode richtig zu entwickeln. Genießen!
quelle
Hatte nur die Hälfte Zeit, um daran zu arbeiten. Sie scheinen sie in Form einer Funktion und nicht als Einzeiler zu wollen. Das sind also alles Funktionen. Testcode unterhalb der Funktion. In Perl.
Greenway:
Rau:
Curry:
Speien:
Schatz:
Ich werde morgen an 6-9 arbeiten.
quelle
WIP. Beachten Sie, dass die Anzahl der Zeichen aufgrund von
'\n'
und möglicherweise deaktiviert istwc
[1 Greenway] Mindf * ck, 54 Zeichen
Verwendung: Wenn der Code geschrieben ist, geben Sie Ihre Zeichenfolge ein und schließen Sie die Zeichenfolge mit einem ^ a (Strg + a) ab. Geben Sie anschließend sofort Ihre Nummer ein.
Eine Einschränkung: Die angegebene Zahl darf nur zwischen 0 und 9 liegen. (Wenn Sie eine größere Zahl wünschen, wird der ASCII-Wert 48 des von Ihnen eingegebenen Zeichens verwendet.
n
)Bildschirmfoto:
[3 Curry for Dinner] Javascript, 59 Zeichen
[4 Spew] BASH, 56 Zeichen
[7 Zeit vergeht, wenn Sie Golf spielen] C, 334 Zeichen (412 mit Makrodefinition)
Hinweis: Diese Funktion gibt einen Zeiger auf ein zweidimensionales ganzzahliges Array zurück, das wie folgt formatiert ist: {3, 55} (für eine Uhrzeitposition von Stunde auf 3, Minute auf 11)
[9 Slacker News] PHP, 246 Zeichen
Separate / Original-Implementierung in BASH + AWK, 218 Zeichen
quelle
1654
1. Greenway (Haskell - 37)
2. Irgendwo im Rauen (Mathematica - 43)
3. Curry zum Abendessen (Lisp - 58)
4. Spew (Matlab / Octave - 83)
5. Schatzsuche (C - 176)
6. Brücke über den Kwai (Ruby - 192)
7. Die Zeit vergeht, wenn Sie Golf spielen (Node.js - 406)
8. Holz! (Los - 329)
9. Slacker News (Python - 330)
quelle
Ich bin ein Betrüger und ich nicht alle 9 Löcher gespielt ... noch . Dennoch, hier ist meine 8, "Timber" -Lösung in Perl (149 Zeichen).
Einer meiner Mitarbeiter hat dies als Herausforderung bei der Arbeit aufgefasst. Wir haben Spaß daran gehabt, besonders ich, da ich bisher die niedrigste Par-Lösung habe!
Unsere Regeln lauteten, dass es sich um ein eigenständiges Skript handeln musste, das einen Zeilenumbruch ausgab
true
oderfalse
an den ein Zeilenumbruch folgteSTDOUT
, und dass kein "shebang" in Ordnung war.Unten ist die "minimierte" Lösung. Ich habe auch ein „ Kernstück “ desselben verfasst, das nicht „minimierten“ Code und (oft langwierige) Erklärungen der Gründe für meinen Ansatz enthält.
quelle
Ich bin zu faul, um es gemäß den Wettkampfregeln zu modifizieren Meh, aber es funktioniert gut ...
quelle
Erster Code Golf! (Noch in Arbeit ...)
1. Greenway
Sprache: Python 3.2.3
Dateigröße: 23 Bytes
Code:
3. Curry zum Abendessen
Sprache: Python 3.2.3
Dateigröße: 64 Bytes
Code:
quelle
Eine weitere Arbeit ist in Arbeit, und ich bin auf der Arbeit, also gehe ich später zurück.
Greenway in Ruby (14 Zeichen, 24 mit #alligator ), rufen Sie mit an
f.(c, n)
Bildschirmfoto
Irgendwo im Rough in CoffeeScript (38 Zeichen)
Bildschirmfoto
Curry zum Abendessen in JavaScript (54 Zeichen)
Bildschirmfoto
Spew in PHP (111 Zeichen)
Dies setzt
short_open_tag
voraus, dass in der PHP-Konfigurationsdatei aktiviert ist. Andernfalls sollte das öffnende Trennzeichen lauten<?php
. Die@
Symbole werden verwendet, umPHP_NOTICE
Fehler zu unterdrücken , die ausgelöst werden, um das Einschließenrand
in Anführungszeichen zu vermeiden und um die$s
Variable nicht explizit zu deklarieren . Dadurch wird ein quadratisches Raster mit ASCII-Zeichen zwischen 4 und 30 Zeichen auf beiden Achsen erzeugt.Bildschirmfoto
quelle
1. Greenway (Python 2: 20)
Beispieleingabe:
a("asdf",3)
-> string (asdfasdfasdf
)2. Irgendwo im Rough (Python 2: 47)
Eingabebeispiel:
b("1,2,333,4,5,6",",",3)
-> int (7)3. Curry zum Abendessen (Javascript: 61)
Eingabebeispiel:
function z(){ return 3; }; function y(){ console.log( '1' ) }; myfunc = c(z,y); myfunc();
-> meldetstring(1)
sich 3 mal an der Konsole an.Gibt gemäß Spezifikation
c
eine Funktion zurück und führt diese Funktion selbst nicht aus.4. Spew (C ++ 11: 171)
Eigentlich nicht getestet, sollte aber funktionieren.
quelle
Einige Einrückungen bleiben aus Gründen der Lesbarkeit erhalten, wurden jedoch beim Zählen von Zeichen entfernt. Die Summe ist um
1227. Oder nicht, ich habe ein Problem vergessen.14861465 Zeichen.1. MIPS ASM (55 Zeichen)
2. Schema (52 Zeichen)
3. F # (39 Zeichen)
4. PowerShell (133 Zeichen)
5. C ++ (
184152 Zeichen)6. C # (
291282 Zeichen)7. Haskell (
318306 Zeichen)Ich suchte nach einer Ausrede, um Haskell auszuprobieren. Ich dachte, ich wäre schlau, indem ich die Liste der Positionen über Zahlenkombinationen generierte, aber mit der Anzahl der benötigten Zeichen hätte ich das verdammte Ding schwer codieren können. Naja. Der Code ist grausam, aber es hat Spaß gemacht, ihn zu schreiben.
Bearbeiten: Behoben, dass es die Minuten korrekt zurückgibt.
8. Lua (259 Zeichen)
Es überraschte mich, dass Strings die Indizierung im Array-Stil nicht unterstützten, sodass ich mich auf sub verlassen musste.
9. Python (187 Zeichen)
Danke an grc / Tyroid für den URL Shorter.
quelle