Die Herausforderung
Das Programm muss alle Zahlen zurückgeben, die in einer Gruppe (durch Kommas und Bindestriche getrennte Folge) von Zahlen enthalten sind.
Regeln
s
ist die Sequenzzeichenfolge;- Alle darin enthaltenen Zahlen
s
sind positiv . - Zahlen werden immer zunehmen ;
- Zahlen werden sich nie wiederholen
- Wenn Sie antworten, zeigen Sie die Ausgabe für
s="1,3-5,9,16,18-23"
Beispiele
input(s) outputs
-----------------
1 1
1,2 1,2
1-4 1,2,3,4
1-4,6 1,2,3,4,6
1-4,8-11 1,2,3,4,8,9,10,11
Viel Glück. =)
4-9,1-2
oder1-3,9-6
?Antworten:
GolfScript (24 Zeichen)
Z.B
Ich habe tatsächlich vier 24-Zeichen-Lösungen, aber ich habe diese gewählt, weil sie keine alphanumerischen Zeichen enthält.
Wie es funktioniert
quelle
-
?Perl
252625$_
ist die SequenzzeichenfolgeBeispielsitzung:
1 Zeichen zur Anzahl der Zeichen für die Option hinzugefügt (danke Gareth, ..kinda).
-n
-p
quelle
n
Option hinzufügen .-M5.010
und tauschen Sie-e
für-E
Golfskript,
4645Mein erstes Golfskriptprogramm dauerte Stunden.
Sie können es unter http://golfscript.apphb.com/ versuchen.
Mein bester Versuch, diese Gräueltat zu erklären:
edit 1: hat das letzte {}% ~ in {} / geändert, auch meine Beschreibung war wahrscheinlich falsch.
quelle
{
und das Finale}:r;
und man kann man auch durch den Austausch sparen1-
mit(
. (IIRC ist übrigens ein Trick, den ich auch in meinem ersten GolfScript-Programm verpasst habe){...}%~
und{...}/
. Wenn Sie mit etwas weiter unten im Stapel auf etwas zugreifen, ist dasinteger $
erste einfacher, da Sie die Ganzzahl nicht jedes Mal anpassen müssen, um zu kompensieren, was Sie auf dem Stapel belassen.R , 44 Bytes
Probieren Sie es online aus!
Definieren Sie neu, um
-
zu bedeutenseq
(dh:
), umgeben Sie die Eingabe mitc()
und bewerten Sie den entsprechenden Ausdruck.quelle
K, 47
Testfall
quelle
","/:$,/{{x+!1+y-x}. 2#"J"$"-"\:x}'","\:0:0
für 43 BytesGelee , 9 Bytes
Probieren Sie es online aus!
Die Bereichs-Dyade
r
nimmt zwei Argumente auf beiden Seiten und erzeugt einen inklusiven Bereich zwischen ihnen.quelle
J,
5343413938 ZeichenÜbernimmt Eingaben über die Tastatur:
Ausgabe für den angeforderten Testfall:
quelle
Hassium , 173 Bytes
Dies war ziemlich lang und könnte nicht konkurrieren, da es am Ende ein Trailing gibt.
Laufen Sie online und sehen Sie hier erweitert
quelle
Perl (37)
quelle
s="1,3-5,9,16,18-23"
, dankesay join",",eval<>=~s/-/../gr
mit 29 BytesPython 2.7,
147138 BytesVerwendung:
Nicht das beste Programm ...
quelle
MATLAB, 47 Bytes
Dieses Snippet liest eine Zeichenfolgeneingabe aus dem Befehlsfenster, ersetzt '-' durch ':', fügt der Zeichenfolge eckige Klammern hinzu und wertet sie dann aus, sodass die Eingabe zu einem vollständigen Array von Zahlen erweitert wird.
Beispieleingabe:
Beispielausgabe:
Ich glaube, diese Ausgabe ist erlaubt, da die Herausforderung nur besagt, dass alle Zahlen in einer Gruppe angezeigt werden sollten.
quelle
Perl 6 , 36 Bytes
quelle
PowerShell,
7971 ByteProbieren Sie es online aus!
Der innere Teil ändert "1,5-9,12" in ein "(1), (5..9), (12)" - Format, das PowerShell versteht, und führt es dann mit iex aus, wodurch ein Array von Arrays erstellt wird. Durchlaufen Sie dann jedes innere Array und verbinden Sie schließlich alle äußeren Array-Elemente miteinander
Leiht Code aus meiner Antwort "Hilf mir, meine Zeit zu verwalten"
Verwendung
-8 Bytes dank Veskah
quelle
K (oK) ,
4031 BytesLösung
Probieren Sie es online aus!
Erläuterung:
Hat mehr Golf gespielt, während die Erklärung hinzugefügt wurde ...
quelle
Clojure, 110 Bytes
Der Umgang mit Saiten macht nicht viel Spaß :(
quelle
Python 2 , 112 Bytes
Ziemlich einfache und unkomplizierte Antwort.
Probieren Sie es online aus!
quelle
Ruby
-p
, 33 BytesProbieren Sie es online aus!
quelle
Japt , 12 Bytes
Versuch es
quelle
c@
mit£
?£
anstelle der ersten 5 Bytes verwendet.Python 2 , 90 Bytes
Probieren Sie es online aus!
quelle