Dada una cadena de caracteres alfanuméricos sin clasificar, p . Ej.
ABC321STPpJqZZr0
genera una lista de rangos de caracteres separados por ",", ordenados por valor ASCII, ignorando mayúsculas y minúsculas ( es decir, generando solo caracteres en mayúscula y numéricos), p . ej.
0-3, A-C, J, P-T, Z
Reglas
- La duración de su programa es su puntaje base, como de costumbre.
- Debe inicializar (hardcode) del ejemplo anterior dentro de su programa, pero puede descontar la longitud de ese ejemplo de su duración del programa, por ejemplo, para
char* s="ABC321STPpJqZZr0";
que pueda descontar 16 caracteres, los otros 11 caracteres contando hacia su duración del programa.
Bonificación (+50 recompensa)
- Como este fue un problema real encontrado por mi compañero de trabajo hoy, que necesitaba ser escrito en Tcl 8.0.5 (una versión antigua, que carece de muchas de las últimas incorporaciones de Tcl), otorgaré 50 puntos a quien escriba el Tcl 8.0 más corto .5 solución, si hay al menos 2 envíos válidos en Tcl 8.0.5.
", "
para incluir el espacio, pero podemos dejar su edición y dejar que este comentario sirva como indicación.Respuestas:
Rubí, 87-16 = 71
EDITAR: Tuve que agregar algunos caracteres para que los rangos de dos caracteres se muestren correctamente. También se usa en
?[
lugar de?Z
corregir un error con rangos que terminan en Z.Puedes ver el Ideone correr aquí .
fuente
gsub(/[]/i)
es más corto quetr(''.upcase)
por 2 caracteres. Además,scan(/.+/)
->split
guarda 5, y en$><<
lugar deputs
otro.Julia, 131
No es compatible con Ideone.com, y probablemente será aplastado de todos modos.
fuente
C #, 221 bytes
fuente
C, 193
fuente
GolfScript
575452Pruébalo aquí .
El código primero capitaliza todo:
Luego obtiene caracteres únicos y los guarda en una variable:
Luego, obtenemos los caracteres cuyos predecesores directos no están en la cadena (por lo que son la parte inicial de un rango):
De manera similar, obtenemos los extremos de los rangos con
x..{)}%&-
.Ahora, en realidad, forme los rangos concatenando las listas, ordenando y dividiendo en grupos de 2:
El resto es solo formatear, usar
*
como una unión de cadena.fuente
.95>{32-}{}if
->.95>32*-
guarda 5 caracteres.Q, 94
fuente
Python 2.x, 304 - 16 = 288
Esto seguramente se puede jugar aún más, ¡todos los comentarios son bienvenidos!
fuente
Rebol (218 - 16 = 202)
Versión no minificada:
fuente
q [116 caracteres]
Uso
SalidaExiste la posibilidad de guardar caracteres, probaré algún otro método y lo publicaré.
fuente
Tcl 8.0.5, 344 (360 bytes)
Tcl 8.0.5, 340 (356 bytes)
¡Jugar con el
rename
comando produjo algunos trucos divertidos! Los he documentado en otro hilo .Tcl 8.0.5, 332 (348 bytes) [Inestable — depende de $ PATH]
Gracias a @JohannesKuhn por el truco interactivo .
fuente
while
portime
construcciones. codegolf.stackexchange.com/a/126236/29325