EDIT: Se stai usando Lisp, ho dato alcune linee guida in fondo nel conteggio dei byte.
Obiettivo: creare la funzione più breve che divide una stringa in non cifre e restituisce un array composto da sole cifre in ciascuna stringa, senza l'uso di espressioni regolari. Gli zeri iniziali devono essere inclusi in ogni stringa.
Classifiche attuali (separate in categorie):
- C / C ++ / C # / Java: 68 (C) ....
- GolfScript / APL / J: 13 (APL)
- Tutti gli altri: 17 (Bash, usi
tr), 24 (Ruby)
Regole:
(Mi scuso per la lunghezza)
- Il formato deve essere una funzione con un singolo argomento stringa. È possibile aggiungere fino a due argomenti aggiuntivi, se necessario, per il corretto ritorno dell'array (es. Sh / csh / DOS Batch ha bisogno di un riferimento variabile aggiuntivo per restituire, ecc.).
- La dichiarazione della funzione primaria non conta, né importa altre librerie standard. `# include`s,` import`s e `using`s non contano. Tutto il resto lo fa. Ciò include `# define`s e funzioni di supporto. Dispiace per la confusione. Fare riferimento a questo come una guida utile per ciò che non conta / non conta (scritto nella sintassi in stile C)
// non conta per il totale, può essere omesso a meno che // non ovvio, come metà della libreria standard di Java. #include <stdio.h> import some.builtin.Class // non conta, vedi sopra #define printf p // conta per il totale / * Ogni altra direttiva sul preprocessore, ecc. Conta. * / int i = 0; // conta someFunction (); // conta char [] [] myMainSplitFunction (char [] [] array) {// non conta // Tutto qui conta return returnArray; // Anche questo conta. } // non conta / * Tutto qui conta, inclusa la dichiarazione * / char [] [] someHelperFunction (char [] string) { // cose } // anche questo conta - L'output deve essere un array di stringhe o simile (gli elenchi di array in Java e simili sono accettabili). Esempi di uscita accettato:
String[],char[][],Array,List, eArray(oggetto). - L'array deve contenere solo primitive di stringa a lunghezza variabile o oggetti stringa. Nel ritorno non devono essere presenti stringhe vuote, con l'eccezione di seguito. Nota: le stringhe devono contenere una stringa di corrispondenze consecutive, come ad esempio l'input e l'output di seguito.
- Se non ci sono corrispondenze, il corpo della funzione dovrebbe restituire
nulluna matrice / lista vuota o una matrice / lista contenente una stringa vuota. - Non sono consentite librerie esterne.
- Le terminazioni di riga DOS contano come un byte, non due (già trattate in meta, ma devono essere enfatizzate)
- E la regola più grande qui: non sono consentite espressioni regolari.
Questa è una domanda di code-golf , quindi vince la dimensione più piccola. In bocca al lupo!
E qui ci sono alcuni esempi di input e output (con escape in stile C):
Input: "abc123def456" Uscita: ["123", "456"] Input: "aitew034snk582: 3c" Uscita: ["034", "582", "3"] Input: "as5493tax54 \\ 430-52@g9.fc" Uscita: ["5493", "54", "430", "52", "9"] Input: "sasprs] tore \" re \\ forz " Output: null, [], [""] o simile
Inserisci quanti byte sono utilizzati dalle tue risposte e, come sempre, buon golf!
Linee guida per Lisp
Ecco cosa conta e non conta nei dialetti Lisp:
;;; opzione 1 (defun extract-string (ab); non conta (cose) ;;; Tutto qui conta ); Non conta ;;; opzione 2 (defun extract-string (string & aux (inizio 0) (fine 0)); non conta (cose) ;;; Tutto qui conta ); Non conta.Tutti gli altri lambda vengono conteggiati per il conteggio dei byte.