9-Loch-Minigolf: Beschreibung
- 9 (meist recht einfache) Code-Golf-Herausforderungen mit unterschiedlichen Schwierigkeitsgraden
- Strafen für die mehrmalige Verwendung derselben Sprache
- Alle Herausforderungen zu einem bestimmten Thema (dieses Thema: Textmanipulation)
- Die Ein- und Ausgabe kann überall sinnvoll sein (z. B. STDIN und STDOUT, Lesen aus / Schreiben in eine Datei, Funktionsargument und Rückgabewert usw.), darf jedoch NICHT fest im Programm codiert sein
- Stark inspiriert von 9 Hole Challenge und Text Mechanic
Löcher
Code-Golftasche
Nehmen Sie zwei Zeichenfolgen als Eingabe.
Gibt die Anzahl der Zeichen der ersten Zeichenfolge aus und ignoriert dabei jedes Vorkommen eines Zeichens in der zweiten Zeichenfolge.
Beispiel:f("foobarbaz", "ao")
=>5
Ein Pre-Text zum Golfen
Nehmen Sie zwei Zeichenfolgen als Eingabe.
Geben Sie den ersten String aus, wobei jeder Zeile der zweite vorangestellt ist.
Beispiel:f("foo\nbar\nbaz", "a")
=>"a foo\na bar\na baz"
Krieg der Tabs gegen Leerzeichen
Nehmen Sie eine Zeichenfolges
, eine Zahln
und einen Booleschen Wertb
(angegeben, wie Sie möchten) als Eingabe.
Wenn diesb
zutrifft, wirds
jede Registerkarte inn
Leerzeichen umgewandelt.
Anderenfalls geben Sie dies
mit jedemn
Leerzeichen konvertierten Tabulatoren aus.
Beispiel:f("if (x) {\n\tdoStuff();\n}", 4, true)
=>"if (x) {\n[sp][sp][sp][sp]doStuff();\n}"
([sp]
bedeutet Leerzeichen)Säulen des Golfs
Nehmen Sie eine Zeichenfolge
s
, eine Zahln
und eine andere Zahlm
als Eingabe.
Ausgabes
in Spalten mitn
Zeilen undm
Zeichen pro Spalte.
Lassen Sie außerdem einen Abstand zwischen den Spalten frei.
Beispiel:f("this is some placeholder text, foo bar baz...", 3, 5)
=>this aceho foo is so lder bar b me pl text, az...
Freundliche Briefe
Nehmen Sie eine Zeichenfolges
und eine Zahln
als Eingabe.
Geben Sie die häufigsten
Buchstabengruppe in auss
.
Wenn es einen Gleichstand gibt, geben Sie einen oder alle davon aus.
Beispiel:f("abcdeabcfghiabc", 3)
=>"abc"
Scrambled
Nehmen Sie eine Zeichenfolge als Eingabe.eggsBuchstaben zum Frühstück
Geben Sie die Zeichenfolge mit allen Wörtern außer dem ersten und dem letzten Buchstaben in zufälliger Reihenfolge aus.
Zur Vereinfachung wird angenommen , dass die Eingabe eine Liste von „Wort“ s sein, Leerzeichen getrennt (dh in@$&_():;" foo bar
,@$&_():;"
wird ein als „Wort“) .
Beispiel:f("this is a sentence that will be scrambled")
=>"tihs is a stcneene that wlil be sclamrbed"
ASCIIfy
Nehmen Sie eine Zeichenfolge als Eingabe.
Wenn die Zeichenfolge nur Zahlen und Leerzeichen enthält, ersetzen Sie die Zahlen durch die entsprechenden ASCII-Zeichen (entfernen Sie die Leerzeichen).
Andernfalls machen Sie das Gegenteil (Zeichen zu Zahlen).
Beispiel:f("ASCIIfy challenge")
=>"65 83 67 73 73 102 121 32 99 104 97 108 108 101 110 103 101"
Beispiel 2:f("65 83 67 73 73 102 121 32 99 104 97 108 108 101 110 103 101")
=>"ASCIIfy challenge"
Mini-Mini-Markdown-Transformation
Nehmen Sie eine Zeichenfolge als Eingabe.
Geben Sie den mit Mini-Markdown konvertierten String aus, wie er in Kommentaren zu Stack Exchange verwendet wird.
Dies ist ein noch Mini-er Version: Sie behandeln müssen**bold**
,*italics*
und`code`
.
Sie müssen nicht mit ungültigen Verschachtelungen umgehen, wie z**foo *bar** baz*
. Nehmen Sie außerdem an, dass ein Begrenzer (*
oder`
) immer formatiert werden muss (dhte**st**ing
=>te<b>st</b>ing
undfoo* bar *baz
=>foo<i> bar </i>baz
).
Beispiel:f("**foo** *bar **baz*** `qux`")
=>"<b>foo</b> <i>bar <b>baz</b></i> <code>qux</code>"
Nur die besten Charaktere
Nehmen Sie eine Zeichenfolges
, eine Zahln
und eine Zeichenfolger
als Eingabe.
Geben Sie dasn
th Zeichen jedes Wortes in auss
. (0-indiziert, Wörter sind durch Leerzeichen getrennt).
Wenn die Länge des Wortes kürzer als istn
, verwenden Sier
stattdessen für dieses Wort.
Beispiel:f("this is a test sentence foo bar baz", 2, "-")
=>"i--snorz"
Wertung
Ihre Punktzahl ist die Summe der Zeichenanzahl Ihrer Programme. Multiplizieren Sie für jede wiederholte Sprache mit 110%. Wenn Sie beispielsweise drei Ruby-Lösungen haben und die Gesamtanzahl der Zeichen aller Ihrer Lösungen 1000 beträgt, beträgt Ihre Punktzahl 1000 * 1,1 * 1,1 = 1210. Runden Sie ab, wenn Sie eine nicht ganzzahlige Punktzahl haben.
Viel Glück!
code-challenge
string
multiple-holes
Türknauf
quelle
quelle
_
spielt keine Rolle, da ich angegeben habe , es nicht einzuschließen . Ich habe bearbeitet, um einige der anderen zu verdeutlichen.**foo***bar**baz*
?Antworten:
Ergebnis: 382 * 1,1 2 = 462
Sprachen, die sich ändern können.
1. APL,
84Vielen Dank an @marinus für das Abschneiden von 4 Zeichen.
Wird mit den Zeichenfolgen als linkes und rechtes Argument aufgerufen, z.
2. Rubin,
3531Vielen Dank an @DoorknobofSnow für das Abschneiden von 4 Zeichen.
3. Python, 48
4. GolfScript, 20
Angenommen, die Argumente befinden sich auf dem Stapel. Online testen
5. J, 50
Wird mit der Zeichenfolge als linkem Argument und der Zahl als rechtem Argument aufgerufen, z.
6. Ruby, 61
7. GolfScript,
393534Auch hier wird davon ausgegangen, dass sich das Argument auf dem Stapel befindet. Online testen
8. Perl, 98
9. Haskell, 36
quelle
f=->s,r{...}
) anstelle einer Funktion verwenden. Ich weigere mich zu stimmen, bis es vollständig ist, aber: PPython - 697 × 1,1 9 × 1644
Ich liebe Lambdas.
Anmerkung : 3 und 5 wurden schamlos aus Volatilitäts Antwort übernommen , da ich keine bessere Alternative finden konnte. Auch dies wurde nur zum Spaß gemacht .
EDIT : Danke an Volatility für die Tipps.
quelle
int
, da Boolesche Werte eine Unterklasse von ihnen sind und für 7.all([...])
aufx.replace(' ','').isdigit()
a
.Punktzahl 513 * 1,1 5 = 826
Hat durch den Elfmeter in der gleichen Sprache eine ziemliche Niederlage davongetragen. Die meisten davon wurden in Ruby gelöst, um sie so schnell wie möglich zu beenden. Könnte später einige Sprachen ändern. Fügte eine kleine Zusammenfassung / Erklärung zu jeder Antwort hinzu.
1: Python (46)
Erste, kürzere Antwort in Ruby 2.0 (30) , die mehr Strafe und höhere Gesamtpunktzahl gibt:
2: Ruby 1.9+ (37)
Gibt jede Zeile mit dem
s
Präfix zurückt
:3: Ruby 1.9+ (48)
Gibt
s
mit Tabulatoren zurück, die durchn
Leerzeichen ersetzt werden , oder umgekehrt, abhängig vonb
:4: Ruby 1.9+ (95)
Jemand erschießt mich.
5: Ruby 1.9+ (58)
Gibt die häufigste
n
Zeichenfolge zurück ins
:6: J (47)
Verwirrt den Text irgendwie; Schamlos wörtlich von Marinus gestohlen :
7: Rubin (57 + 1)
Druckt die ASCII-Eingabe oder die ASCII-Freigabe. Laufen Sie mit dem
-p
Schalter.8: Sed (87)
Druckt die Eingabe konvertiert von (Mini) Markdown nach HTML:
9 Ruby 1.9+ (37)
Gibt eine Zeichenfolge der
n
th Zeichen jedes ersten Wortes in zurücks
, oderr
:quelle
<b>test** **test2</b>
für**test** **test2**
?**foo *bar* baz**
?-
Operator arbeitet mit Enumerator?In Arbeit
1. Java - 66
2. Java - 64
3. Python - 58
4. Python - 84
5.
6.
7. Befunge 98 - 9
8.
9.
quelle
for(char c:b.toCharArray())
undreplace(c+"","");
undreturn s.length();
(oder so ähnlich), damit es funktioniert.