EDYCJA: Jeśli używasz Lisp, podałem kilka wskazówek na dole liczenia bajtów.
Cel: Wykonaj najkrótszą funkcję, która dzieli ciąg na niecyfrowe i zwraca tablicę składającą się tylko z cyfr w każdym ciągu, bez użycia żadnych wyrażeń regularnych. Zera wiodące należy zawrzeć w każdym ciągu.
Aktualne tabele (podzielone na kategorie):
- C / C ++ / C # / Java: 68 (C) ....
- GolfScript / APL / J: 13 (APL)
- Wszystkie pozostałe: 17 (Bash, używa
tr), 24 (Ruby)
Zasady:
(Przepraszam za długość)
- Format musi być funkcją z pojedynczym argumentem łańcuchowym. W razie potrzeby do poprawnego zwrócenia tablicy można dodać maksymalnie dwa dodatkowe argumenty (np. Sh / csh / DOS Batch wymaga dodatkowej zmiennej odniesienia do zwrócenia itp.).
- Deklaracja funkcji podstawowej nie ma znaczenia, podobnie jak import innych standardowych bibliotek. `# include`s,` import`s i `using`s nie liczą się. Wszystko inne robi. Obejmuje to funkcje `# defin` i pomocnicze. Przepraszam za zamieszanie. Odwołaj się do tego jako pomocnego przewodnika po tym, co się nie liczy (napisane w stylu C)
// nie wlicza się do sumy, można ją pominąć, chyba że // nieoczywiste, jak połowa standardowej biblioteki Java. #include <stdio.h> import some.builtin.Class // się nie liczy, patrz wyżej # zdefiniować printf p // liczy się do sumy / * Liczą się wszelkie inne dyrektywy preprocesora itp. * / int i = 0; // liczy się someFunction (); // liczy się char [] [] myMainSplitFunction (tablica char [] []) {// się nie liczy // Wszystko tutaj się liczy return returnArray; // Nawet to się liczy. } // się nie liczy / * Wszystko tutaj się liczy, łącznie z deklaracją * / char [] [] someHelperFunction (ciąg char []) { // rzeczy } // nawet to się liczy - Dane wyjściowe muszą być tablicą łańcuchową lub podobną (dopuszczalne są listy tablic w Javie i podobnych). Przykłady wyjścia przyjętych:
String[],char[][],Array,List, iArray(object). - Tablica musi zawierać tylko prymitywy łańcuchowe o zmiennej długości lub obiekty łańcuchowe. Zwroty nie powinny zawierać pustych ciągów, z wyjątkiem wyjątku poniżej. Uwaga: ciągi powinny zawierać ciąg kolejnych dopasowań, takich jak przykładowe dane wejściowe i wyjściowe poniżej.
- Jeśli nie ma żadnych dopasowań, zwróci treść funkcji
null, pustą tablicę / listę lub tablicę / listę zawierającą pusty ciąg. - Niedozwolone są biblioteki zewnętrzne.
- Zakończenia linii DOS liczą się jako jeden bajt, a nie dwa (już pokryte meta, ale należy podkreślić)
- I największa reguła tutaj: niedozwolone są wyrażenia regularne.
To jest pytanie do golfa , więc wygrywa najmniejszy rozmiar. Powodzenia!
A oto kilka przykładowych danych wejściowych i wyjściowych (ze znakami zmiany znaczenia w stylu C):
Dane wejściowe: „abc123def456” Wyjście: [„123”, „456”] Dane wejściowe: „aitew034snk582: 3c” Wyjście: [„034”, „582”, „3”] Dane wejściowe: „as5493tax54 \\ 430-52@g9.fc” Wyjście: [„5493”, „54”, „430”, „52”, „9”] Dane wejściowe: „sasprs] tore \" re \\ forz " Dane wyjściowe: null, [], [""] lub podobny
Podaj, ile bajtów wykorzystałeś w swoich odpowiedziach i, jak zawsze, życzymy udanej gry w golfa!
Wytyczne dla Lisp
Oto, co robi i nie liczy się w dialektach Lisp:
;;; opcja 1 (defun extract-strings (ab); Nie liczy się (rzeczy) ;;; Wszystko tutaj się liczy ); Nie liczy się ;;; Opcja 2 (defun extract-strings (string & aux (start 0) (end 0)); Nie liczy się (rzeczy) ;;; Wszystko tutaj się liczy ); Nie liczy sięWszystkie pozostałe lambdy w pełni liczą się do liczby bajtów.