Edição: Se você estiver usando Lisp, eu dei algumas orientações na parte inferior na contagem de bytes.
Objetivo: criar a função mais curta que divide uma sequência em dígitos que não sejam dígitos e retorna uma matriz que consiste apenas em dígitos em cada sequência, sem o uso de expressões regulares. Os zeros à esquerda devem ser incluídos em cada sequência.
Classificação atual (separada em categorias):
- C / C ++ / C # / Java: 68 (C) ....
- GolfScript / APL / J: 13 (APL)
- Todos os outros: 17 (Bash, usos
tr
), 24 (Ruby)
Regras:
(Peço desculpas pela demora)
- O formato deve ser uma função com um argumento de cadeia única. Até dois argumentos adicionais podem ser adicionados, se necessário, para o retorno adequado da matriz (por exemplo, sh / csh / DOS Batch precisa de uma referência variável extra para retornar, etc.).
- A declaração da função principal não conta e nem importa outras bibliotecas padrão. `# include`s,` import`s e `using`s não contam. Tudo o resto faz. Isso inclui as funções # # define`s e helper. Desculpe pela confusão. Consulte este manual como um guia útil sobre o que conta / não conta (escrito na sintaxe no estilo C)
// não conta para o total, pode ser omitido, a menos // não óbvio, como metade da biblioteca padrão do Java. #include <stdio.h> import some.builtin.Class // não conta, veja acima #define printf p // conta para o total / * Quaisquer outras diretivas de pré-processador, etc. contam. * / int i = 0; // conta someFunction (); // conta char [] [] myMainSplitFunction (char [] [] array) {// não conta // Tudo aqui conta return returnArray; // Até isso conta. } // não conta / * Tudo aqui conta, incluindo a declaração * / char [] [] someHelperFunction (char [] string) { // coisa } // mesmo isso conta
- A saída deve ser uma matriz de cadeias ou semelhante (listas de matrizes em Java e similares são aceitáveis). Exemplos de saída aceite:
String[]
,char[][]
,Array
,List
, eArray
(objecto). - A matriz deve conter apenas primitivas de seqüência de caracteres de comprimento variável ou objetos de seqüência de caracteres. Nenhuma string vazia deve estar presente no retorno, com a exceção abaixo. Nota: as sequências devem conter uma sequência de correspondências consecutivas, como o exemplo de entrada e saída abaixo.
- Se não houver correspondências, o corpo da função deve retornar
null
, uma matriz / lista vazia ou uma matriz / lista contendo uma sequência vazia. - Nenhuma biblioteca externa permitida.
- As terminações de linha do DOS contam como um byte, não dois (já abordado na meta, mas precisa ser enfatizado)
- E a maior regra aqui: não são permitidas expressões regulares.
Esta é uma questão de código-golfe , então o menor tamanho vence. Boa sorte!
E aqui estão alguns exemplos de entradas e saídas (com escapamentos no estilo C):
Entrada: "abc123def456" Saída: ["123", "456"] Entrada: "aitew034snk582: 3c" Saída: ["034", "582", "3"] Entrada: "as5493tax54 \\ 430-52@g9.fc" Saída: ["5493", "54", "430", "52", "9"] Entrada: "sasprs] rasgou \" re \\ forz " Saída: nulo, [], [""] ou similar
Por favor, coloque quantos bytes usados por suas respostas e, como sempre, golfe feliz!
Diretrizes para Lisp
Aqui está o que conta e o que não conta nos dialetos Lisp:
;;; Opção 1 (desafinar extract-strings (ab); Não conta (coisa) ;;; Tudo aqui conta ); Não conta ;;; opção 2 (extrair strings de extração (string & aux (início 0) (final 0)); Não conta (coisa) ;;; Tudo aqui conta ); Não conta.Todas as outras lambdas contam totalmente para a contagem de bytes.