EDIT: Якщо ви використовуєте Lisp, я дав кілька підказок внизу підрахунку байтів.
Мета: Зробіть найкоротшу функцію, яка розбиває рядок на нецифрові цифри і повертає масив, що складається з лише цифр у кожній рядку, без використання регулярних виразів. Провідні нулі повинні бути включені в кожен рядок.
Поточна таблиця (розділена на категорії):
- C / C ++ / C # / Java: 68 (C) ....
- GolfScript / APL / J: 13 (APL)
- Усі інші: 17 (Bash, використовує
tr), 24 (Ruby)
Правила:
(Прошу вибачення за тривалість)
- Формат повинен бути функцією з аргументом єдиного рядка. До необхідності для належного повернення масиву можуть бути додані до двох додаткових аргументів (наприклад, sh / csh / DOS Batch потребує додаткової посилання на змінну для повернення тощо).
- Декларація первинної функції не враховує та не імпортує інші стандартні бібліотеки. `# включити`, `імпорт` і `використання` s не враховуються. Все інше робить. Сюди входять функції `# define` і помічники. Вибачте за непорозуміння. Перегляньте це як корисний посібник щодо того, що не враховується (написано в синтаксисі стилю C)
// не зараховується до загальної кількості, може бути опущено, якщо тільки // не очевидний, як половина стандартної бібліотеки Java. #include <stdio.h> import some.builtin.Class // не рахується, див. вище #define printf p // зараховується до загального / * Будь-які інші директиви препроцесора тощо. * / int i = 0; // рахує деякийFunction (); // рахує char [] [] myMainSplitFunction (масив char [] []) {// не враховується // Тут все враховується return returnArray; // Навіть це рахується. } // не рахується / * Тут все враховується, включаючи декларацію * / char [] [] someHelperFunction (char [] рядок) { // начинка } // навіть це враховується - Вихід повинен бути рядковим масивом або подібним (списки масивів на Java і подібні є прийнятними). Приклади прийнятого виходу:
String[],char[][],Array,List, іArray(об'єкт). - Масив повинен містити лише містити рядкові примітиви змінної довжини або рядкові об'єкти. У звороті не повинно бути жодних порожніх рядків, за винятком нижче. Примітка: рядки повинні містити рядок послідовних збігів, таких як приклад введення та виводу нижче.
- Якщо збігів немає, то тіло функції має повернутися
null, порожній масив / список або масив / список, що містить порожній рядок. - Заборонено використання зовнішніх бібліотек.
- Закінчення рядків DOS вважаються одним байтом, а не двома (вже охоплені мета, але потрібно підкреслити)
- І найголовніше правило тут: заборонено регулярні вирази.
Це питання з кодовим гольфом , тому виграє найменший розмір. Удачі!
Ось кілька прикладів входів та виходів (із втечами у стилі С):
Вхід: "abc123def456" Вихід: ["123", "456"] Вхід: "aitew034snk582: 3c" Вихід: ["034", "582", "3"] Вхідні дані: "as5493tax54 \\ 430-52@g9.fc" Вихід: ["5493", "54", "430", "52", "9"] Вхід: "sasprs] рвав \" re \\ forz " Вихід: null, [], [""] або подібні
Будь ласка, покладіть, скільки байтів використали ваші відповіді, і як завжди, щасливого гольфу!
Керівні принципи для Lisp
Ось що робить і що не враховує в діалектах Lisp:
;;; Варіант 1 (розмикання екстрактів-рядків (ab); не враховується (речі) ;;; Тут все враховується ); Не рахується ;;; Варіант 2 (розмикання витяжних рядків (string & aux (початок 0) (кінець 0)); не враховується (речі) ;;; Тут все враховується ); Не рахується.Усі інші лямбда в повному обсязі відносяться до кількості байтів.