Wir haben nicht genug (halb-) leichte Herausforderungen für Anfänger. Immer mehr der einfachen sind bereits vergeben. Also habe ich versucht, etwas zu finden, das für Anfänger erreichbar sein könnte, aber das ist kein Duplikat.
Eingang:
Eine einzelne Zeichenfolge, die durch eine neue Zeile des Betriebssystems (dh \r\n
) getrennt ist,
oder ein Array mit mehreren Zeichenfolgen.
Ausgabe - Die Treppe :
Entfernen Sie alle nicht alphabetischen und nicht numerischen Symbole. Also bleibt nur noch [A-Za-z0-9]
. Und dann 'eine Treppe bauen'; im grunde nach länge ordnen mit dem kleinsten oben und dem breitesten unten.
Herausforderungsregeln:
- Wenn zwei Zeichenfolgen gleich lang sind, werden sie als eine große Zeichenfolge zusammengeführt (die Reihenfolge spielt keine Rolle, es kann also vom ersten bis zum letzten oder vom letzten bis zum ersten sein, je nachdem, welche der beiden Sie bevorzugen).
- Die obige Regel kann gestapelt werden, wenn die zusammengeführten Zeichenfolgen wieder die gleiche Länge haben (siehe Testfall 2).
Allgemeine Regeln:
- Die Eingabe ist STDIN und enthält nur ASCII-Zeichen. Und die Ausgabe ist STDOUT.
- Der Fall des Ausgangs muss mit dem des Eingangs identisch sein.
Jede Einreichung muss ein vollständiges Programm sein, das kompiliert und ausgeführt werden kann, also nicht nur eine Methode / Funktion.EDIT: Ich bin ziemlich neu, also ist es vielleicht besser, von nun an die Standardeinstellung zu verwenden, obwohl ich selbst ein volles Programm bevorzuge. Entschuldigung für alle, die bereits ein vollständiges Programm veröffentlicht haben. Fühlen Sie sich frei zu bearbeiten, und ich werde versuchen, die Post-Mid-Challenge beim nächsten Mal nicht zu ändern.- Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes. Ich akzeptiere wahrscheinlich die kürzeste Antwort in einem Jahr.
Lassen Sie sich von Code-Golf-Antworten nicht davon abhalten, Golf-Nicht-Codegolf-Sprachen wie C # und dergleichen zu veröffentlichen! Versuchen Sie, für jede Programmiersprache die kürzeste Antwort zu finden. - Fühlen Sie sich frei, neuere Sprachen als diese Frage zu verwenden.
Testfälle:
Eingang 1:
This is a sample text,
that you will have to use to build stairs.
The wood may be of excellent quality,
or pretty crappy almost falling apart and filled with termites.
Bla bla bla - some more text
Ok, that will do
Ausgang 1:
Okthatwilldo
Thisisasampletext
Blablablasomemoretext
Thewoodmaybeofexcellentquality
thatyouwillhavetousetobuildstairs
orprettycrappyalmostfallingapartandfilledwithtermites
Eingang 2:
A
small
one
that
contains
equal
length
strings
for
the
special
rule
Ausgang 2:
A Or alternatively: A
length length
oneforthe theforone
smallequal equalsmall
stringsspecial specialstrings
thatrulecontains containsrulethat
Schritte erklärt von 2:
Erstbestellung nach Länge:
A
one
for
the
that
rule
small
equal
length
strings
special
contains
Erste Zusammenführung:
A
oneforthe
thatrule
smallequal
length
stringsspecial
contains
Zweite Ordnung nach Länge:
A
length
thatrule
contains
oneforthe
smallequal
stringsspecial
Zweite Zusammenführung:
A
length
thatrulecontains
oneforthe
smallequal
stringsspecial
Dritte Bestellung nach Länge:
A
length
oneforthe
smallequal
stringsspecial
thatrulecontains
Eingang 3:
Test,
test.
This
is
a
test.
Ausgang 3:
a Or alternatively: a
is is
TesttestThistest testThistestTest
Eingang 4:
a
bc
d!
123
Ausgang 4:
123 Or alternatively: 123
adbc dabc
contains
soll nicht in Ausgabe 2 sein. Es wird zusammengeführt mitthatrule
Antworten:
Schale , 11 Bytes
Probieren Sie es online!
Husk ist jünger als diese Herausforderung (was offiziell keinen Unterschied macht, aber immer noch).
Erläuterung
quelle
mf□
, solltest du eifersüchtig sein. Wenn "Gruppe nach Länge" istġL
, sollten Sie erstaunt sein.Python 3, 264 Bytes
Ich bin nicht gut im Code-Golf, also bin ich zuversichtlich, dass dies nicht die beste Python 3-Antwort sein wird. Dies verwendet eine Rekursion und ein geordnetes Diktat mit allen Wörtern für jede Länge.
Nimmt die Eingabe von stdin als Liste, testen Sie sie beispielsweise mit dieser Liste:
Wird ausgeben:
quelle
filter(str.isalnum, l)
anstelle des"".join
TeilsRetina,
6963 BytesProbieren Sie es online!
quelle
[^\w¶]|_
. Obwohl ich immer noch nicht sicher bin, ob es optimal ist.Oracle SQL 11.2, 346 Byte
Die Zeilen in der Eingabezeichenfolge werden durch '¤' getrennt. Auf diese Weise muss keine Tabelle erstellt werden, die als Eingabe verwendet werden soll.
Abfrage:
Nicht golfen
quelle
[\W_]
0-9
mit\d
. Vielleicht sind die Regeln für reguläre Ausdrücke in SQL anders als in Python / PHP / Javascript? (js ist immer noch ein spezieller Fall, da es sich um einen Lookbehind handelt)Haskell, 129 Bytes
Akzeptiert und druckt eine Reihe von Zeichenfolgen. Wenn das Ergebnis von der Funktion zurückgegeben werden kann (im Gegensatz zu gedruckt zu stdout), können Sie das weglassen
print.
und 6 Bytes sparen.Wie es funktioniert (Anmerkung, ich verwende
x
für den Eingabeparameter, der in der obigen pointfree-Version natürlich nicht vorkommt):quelle
Python 3,
184180 BytesEine Funktion, die die Eingabe als Argument als Liste von Zeichenfolgen akzeptiert und das Ergebnis an STDOUT ausgibt. Die Ausführung löst einen Fehler aus (aufgrund der Verwendung des Operators + vor der Druckanweisung), jedoch nicht bevor die Ausgabe gedruckt wurde.
Wie es funktioniert
Probieren Sie es auf Ideone
quelle
J , 48 Bytes
Probieren Sie es online!
ungolfed
Erläuterung
(#~e.&AlphaNum_j_)&.>
non alphanum entfernen(#&> ,&.>//. ])
Artikel gleicher Länge kombinieren^:_
kombiniere weiter, bis es aufhört sich zu ändern(/: #&>)
nach Länge sortierenquelle
Javascript
198188186179 BytesDies ist mein zweitlängstes Golf-Javascript-Programm
Wahrscheinlich kann weiter Golf gespielt werden
quelle
t
Variable?.split()
Sie verwenden können[y]()
Perl 5 , 112 Bytes
Probieren Sie es online!
quelle
Gelee , 17 Bytes
Probieren Sie es online!
Nicht sicher, warum
Ẏf¥€ØWṖ¤L€ĠịµÐLY
nicht funktioniert ...Erläuterung:
quelle
Pyth, 22 Bytes
Probieren Sie es hier aus.
Erläuterung:
quelle
Pyth, 39 Bytes
Zurück zum Golfen!
Da ist das Programm:
Teste es hier!
Erklärungen
quelle
R
undL
stattm
Java 8, 268 Bytes
Ein ungültiges Lambda, das einen veränderlichen Wert annimmt
List<String>
(dh implementiertadd
undremove
; zBArrayList
). Die Ausgabe wird standardmäßig ausgegeben, durch eine neue Zeile und eine nachfolgende neue Zeile getrennt. Besetzung fürConsumer<List<String>>
.Probieren Sie es online
Dies endete viel länger als ich erwartet hatte. Wie Kevin bemerkte, ist es komplizierter, als es auf den ersten Blick scheint.
Ungolfed Lambda
Zuerst reduziere ich die Eingabe auf Buchstaben und Zahlen. Ich verarbeite dann die Eingaben in Gruppen nach Länge. Ich hänge Elemente an das erste Element in der Liste an, bis die nächste Länge erreicht ist, und entferne sie nach und nach. Wenn nur das erste Element verwendet wurde, ist dies die einzige Zeichenfolge dieser Länge, sodass sie gedruckt wird. Andernfalls wird die verknüpfte Zeichenfolge zur Liste für eine weitere Iteration hinzugefügt. Ich sortiere die Liste nach der Länge jeder Iteration vor der Verwendung.
Ich begann mit einer reizenden Lösung, die eine Prioritätswarteschlange verwendete, um die Zwischenzeichenfolgen zu verfolgen. Leider
java.util.PriorityQueue<String>
ist es ziemlich lang (und die Verwendung des Rohtyps war länger), also musste es gehen.quelle
Japt v2.0a1
-h
, 11 BytesEingabe und Ausgabe als Arrays von Strings.
Versuch es
quelle
[a-zA-Z0-9]
statt[a-zA-Z]
).JavaScript, 119 Bytes
Ich denke, das sollte viel kürzer sein ...
Enthält 2 führende Zeilenumbrüche in der Ausgabe.
Probieren Sie es online aus
quelle
g
für 118Perl 6 , 85 Bytes
Probieren Sie es online!
Ein- und Ausgänge als Listen von Strings.
quelle
Pyth, 21 Bytes
Die Eingabe ist eine Liste von Zeichenfolgen. Probieren Sie es hier online aus oder überprüfen Sie alle Testfälle hier .
quelle
05AB1E , 16 Bytes
Eingabe als Liste von Zeichenfolgen.
Probieren Sie es online aus oder überprüfen Sie alle Testfälle .
Könnten 14 Bytes sein,
εžKÃ}Δé.γg}J}»
wennΔ
das auch mit einer Liste von Strings funktionieren würde.Erläuterung:
quelle
PowerShell, Windows 10, 63 Bytes
Also Eingabe ...
und Code ...
Das deckt Input / Output 1 ab und arbeitet an 2 und 3 ...
quelle