El objetivo de Rosetta Stone Challenge es escribir soluciones en tantos idiomas como sea posible. ¡Muestra tu programación multilingüismo!
El reto
Hemos hecho RLE ser plano , pero sólo se consideran carreras de un solo carácter. Por supuesto, a veces podemos ahorrar aún más si consideramos series de varios caracteres.
Tomar aaaxyzxyzxyzdddd
por ejemplo. Esto se puede comprimir a 3a3{xyz}4d
. Su tarea es escribir un programa de función que, dada una cadena de letras y espacios que distingue entre mayúsculas y minúsculas, lo comprime de manera óptima utilizando la codificación de longitud de ejecución para ejecuciones de varios caracteres.
Puede tomar la entrada a través del argumento de función, STDIN o ARGV y devolver el resultado o imprimirlo en STDOUT.
Las ejecuciones no deben estar anidadas, por lo que aaabbbaaabbb
deben estarlo 3a3b3a3b
, no 2{3a3b}
. Es decir, la cadena debe estar codificada (o decodificada) en una sola pasada.
Consecuencias de la compresión óptima
Algunos ejemplos donde la aplicación ingenua de la codificación de longitud de ejecución puede conducir a resultados subóptimos:
abab
no debe ser "comprimido" a2{ab}
aaaabcdeabcde
no debe ser comprimido4abcdeabcde
sino en su3a2{abcde}
lugar.
Si hay dos versiones óptimas (por ejemplo, aa
y 2a
o abcabc
y 2{abc}
) cualquiera de los resultados está bien.
Ejemplos
Input Output
aa aa -or- 2a
aaaaaAAAAA 5a5A
ababa ababa
abababa a3{ba} -or- 3{ab}a
foo foo bar 2{foo }bar
aaaabcdeabcde 3a2{abcde}
xYzxYz xYzxYz -or- 2{xYz}
abcabcdefcdef abcab2{cdef}
pppqqqpppqqq 3p3q3p3q
pppqqqpppqqqpppqqq 3{pppqqq}
Puntuación
Cada idioma es una competencia separada en cuanto a quién puede escribir la entrada más corta, pero el ganador general sería la persona que gane la mayoría de estas subcompeticiones. Esto significa que una persona que responde en muchos idiomas poco comunes puede obtener una ventaja. El golf de código es principalmente un factor decisivo para cuando hay más de una solución en un idioma: la persona con el programa más corto obtiene crédito por ese idioma.
Si hay un empate, el ganador sería la persona con la mayor cantidad de envíos de segundo lugar (y así sucesivamente).
Reglas, restricciones y notas
Mantenga todas sus presentaciones diferentes contenidas en una sola respuesta.
Además, no hay travesuras con básicamente la misma respuesta en dialectos de idiomas ligeramente diferentes. Seré el juez en cuanto a qué presentaciones son lo suficientemente diferentes.
Tabla de clasificación actual
Esta sección se actualizará periódicamente para mostrar la cantidad de idiomas y quién lidera cada uno.
- C # (265) - edc65
- JavaScript (206) - edc65
- Python (214) - Voluntad
- VB.NET (346) - edc65
Ranking de usuarios actuales
- edc65 (3)
- Voluntad (1)
fuente
Python 214
(la sangría del segundo nivel es pestaña)
Como se trata de código de golf , este es el enfoque recursivo ingenuo sin salida anticipada, por lo que es realmente muy lento.
fuente