BEARBEITEN: Wenn Sie Lisp verwenden, habe ich unten einige Richtlinien zum Zählen von Bytes angegeben.
Ziel: Erstellen Sie die kürzeste Funktion, die eine Zeichenfolge in nicht-Ziffern aufteilt und ein Array zurückgibt, das nur aus Ziffern in jeder Zeichenfolge besteht, ohne reguläre Ausdrücke zu verwenden. Führende Nullen sind in jede Zeichenfolge aufzunehmen.
Aktueller Stand (unterteilt in Kategorien):
- C / C ++ / C # / Java: 68 (C) ....
- GolfScript / APL / J: 13 (APL)
- Alle anderen: 17 (Bash, benutzt
tr), 24 (Ruby)
Regeln:
(Ich entschuldige mich für die Langeweile)
- Das Format muss eine Funktion mit einem einzelnen Zeichenfolgenargument sein. Bei Bedarf können bis zu zwei zusätzliche Argumente für die ordnungsgemäße Rückgabe des Arrays hinzugefügt werden (z. B. benötigt sh / csh / DOS Batch eine zusätzliche Variablenreferenz für die Rückgabe usw.).
- Die Deklaration der primären Funktion zählt nicht und andere Standardbibliotheken werden auch nicht importiert. `# include`s,` import`s und `using`s zählen nicht. Alles andere macht. Dies beinhaltet `# define`s und Hilfsfunktionen. Entschuldigung für die Verwirrung. Hier finden Sie eine hilfreiche Anleitung, was zählt / nicht zählt (in C-Syntax geschrieben).
// zählt nicht zur Gesamtsumme, kann weggelassen werden, es sei denn // nicht offensichtlich, wie die Hälfte von Javas Standardbibliothek. #include <stdio.h> import some.builtin.Class // zählt nicht, siehe oben #define printf p // zählt zur Gesamtsumme / * Alle anderen Präprozessoranweisungen usw. zählen. * / int i = 0; // zählt someFunction (); // zählt char [] [] myMainSplitFunction (char [] [] Array) {// zählt nicht // Hier zählt alles return returnArray; // Auch das zählt. } // zählt nicht / * Alles hier zählt, einschließlich der Erklärung * / char [] [] someHelperFunction (char [] string) { // Zeug } // auch das zählt - Die Ausgabe muss ein String-Array oder ähnliches sein (Array-Listen in Java und ähnlich sind akzeptabel). Beispiele für akzeptierten Ausgang:
String[],char[][],Array,List, undArray(Objekt). - Das Array darf nur String-Primitive oder String-Objekte variabler Länge enthalten. In der Rückgabe sollten keine leeren Zeichenfolgen vorhanden sein, mit Ausnahme der folgenden. Hinweis: Die Zeichenfolgen müssen eine Folge aufeinanderfolgender Übereinstimmungen enthalten, z. B. die folgende Beispieleingabe und -ausgabe.
- Wenn es keine Übereinstimmungen gibt, sollte der Funktionskörper
nullein leeres Array / eine leere Liste oder ein Array / eine Liste mit einer leeren Zeichenfolge zurückgeben. - Keine externen Bibliotheken erlaubt.
- DOS-Zeilenenden zählen als ein Byte, nicht als zwei (bereits in Meta behandelt, muss aber hervorgehoben werden)
- Und die größte Regel hier: keine regulären Ausdrücke erlaubt.
Dies ist eine Code-Golf- Frage, also gewinnt die kleinste Größe. Viel Glück!
Und hier sind einige Beispiele für Ein- und Ausgänge (mit C-Stil-Escapezeichen):
Eingabe: "abc123def456" Ausgabe: ["123", "456"] Eingabe: "aitew034snk582: 3c" Ausgabe: [034, 582, 3] Eingabe: "as5493tax54 \\ 430-52@g9.fc" Ausgabe: [5493, 54, 430, 52, 9] Eingabe: "sasprs] riss \" re \\ forz " Ausgabe: null, [], [""] oder ähnlich
Bitte geben Sie an, wie viele Bytes Ihre Antworten benötigen und wie immer viel Spaß beim Golfen!
Richtlinien für Lisp
In Lisp-Dialekten zählt Folgendes:
;;; Option 1 (defun extract-strings (ab); Zählt nicht (Zeug) ;;; Hier zählt alles ); Zählt nicht ;;; Option 2 (defun extract-strings (string & aux (start 0) (end 0)); Zählt nicht (Zeug) ;;; Hier zählt alles ); Zählt nicht.Alle anderen Lambdas zählen vollständig zur Byteanzahl.