EDITAR: si está utilizando Lisp, he dado algunas pautas en la parte inferior en el conteo de bytes.
Objetivo: realizar la función más corta que divide una cadena en no dígitos y devuelve una matriz que consta de solo dígitos en cada cadena, sin el uso de ninguna expresión regular. Los ceros iniciales se incluirán en cada cadena.
Posiciones actuales (separadas en categorías):
- C / C ++ / C # / Java: 68 (C) ....
- GolfScript / APL / J: 13 (APL)
- Todos los demás: 17 (Bash, usos
tr
), 24 (Ruby)
Reglas:
(Pido disculpas por la tardanza)
- El formato debe ser una función con un solo argumento de cadena. Se pueden agregar hasta dos argumentos adicionales si es necesario para el retorno adecuado de la matriz (por ejemplo, sh / csh / DOS Batch necesita una referencia de variable adicional para devolver, etc.).
- La declaración de función principal no cuenta, y tampoco importa otras bibliotecas estándar. `# include`s,` import`s y `using`s no cuentan. Todo lo demás lo hace. Esto incluye `# define`s y funciones de ayuda. Perdón por la confusion. Consulte esto como una guía útil sobre lo que cuenta / no cuenta (escrito en sintaxis de estilo C)
// no cuenta para el total, puede omitirse a menos que // no obvio, como la mitad de la biblioteca estándar de Java. #include <stdio.h> importar some.builtin.Class // no cuenta, ver arriba #define printf p // cuenta para el total / * Cualquier otra directiva de preprocesador, etc. cuenta. * / int i = 0; // cuenta someFunction (); // cuenta char [] [] myMainSplitFunction (char [] [] array) {// no cuenta // Todo aquí cuenta return returnArray; // Incluso esto cuenta. } // no cuenta / * Todo aquí cuenta, incluida la declaración * / char [] [] someHelperFunction (cadena char []) { // cosas } // incluso esto cuenta
- La salida debe ser una matriz de cadenas o similar (se aceptan listas de matrices en Java y similares). Ejemplos de salida aceptada:
String[]
,char[][]
,Array
,List
, yArray
(objeto). - La matriz debe contener solo primitivas de cadena de longitud variable u objetos de cadena. No deben aparecer cadenas vacías en la devolución, con la excepción a continuación. Nota: las cadenas deben contener una cadena de coincidencias consecutivas, como la entrada y salida de ejemplo a continuación.
- Si no hay coincidencias, el cuerpo de la función debería devolver
null
, una matriz / lista vacía, o una matriz / lista que contiene una cadena vacía. - No se permiten bibliotecas externas.
- Las terminaciones de línea de DOS cuentan como un byte, no dos (ya cubiertas en meta, pero deben enfatizarse)
- Y la regla más importante aquí: no se permiten expresiones regulares.
Esta es una pregunta de código de golf , por lo que gana el tamaño más pequeño. ¡Buena suerte!
Y aquí hay algunos ejemplos de entradas y salidas (con escapes de estilo C):
Entrada: "abc123def456" Salida: ["123", "456"] Entrada: "aitew034snk582: 3c" Salida: ["034", "582", "3"] Entrada: "as5493tax54 \\ 430-52@g9.fc" Salida: ["5493", "54", "430", "52", "9"] Entrada: "sasprs] tore \" re \\ forz " Salida: nulo, [], [""] o similar
Indique cuántos bytes utilizan sus respuestas y, como siempre, ¡feliz golf!
Pautas para Lisp
Esto es lo que cuenta y no cuenta en los dialectos de Lisp:
;;; Opción 1 (Defun extract-strings (ab); no cuenta (cosas) ;;; Todo aquí cuenta ); No cuenta ;;; opcion 2 (defun extracto-cadenas (cadena y aux (inicio 0) (final 0)); no cuenta (cosas) ;;; Todo aquí cuenta ); No cuentaTodas las otras lambdas cuentan totalmente para el conteo de bytes.