Tu misión hoy es inventar un compresor de texto.
Tarea
Escribirás dos funciones:
El empaquetador es una función que acepta una cadena de caracteres ASCII (U + 0000 a U + 007F) y genera una cadena Unicode (U + 0000 a U + 10FFFF), que contiene la menor cantidad de caracteres posible.
El desempacador es una función que acepta una cadena Unicode codificada y genera exactamente la cadena ASCII original.
Entrada
La única entrada autorizada es la cadena ASCII (para el empacador) y la cadena Unicode empaquetada (para el desempacador). Sin entrada del usuario, sin conexión a Internet, sin uso del sistema de archivos.
Sus funciones pueden tener acceso a esta lista de palabras en inglés . Puede usar esta lista como un archivo txt local, o copiar su contenido en su código fuente como una cadena o una matriz de cadenas .
No puede codificar los fragmentos a continuación en sus funciones.
Salida
La única salida autorizada para ambas funciones es una cadena.
La salida del desempacador debe contener exactamente los mismos caracteres que la entrada del empacador.
Sus entradas y salidas pueden usar cualquier codificación de caracteres que admita todos los Unicode (UTF-8/16/32, GB18030, ...), ya que su puntaje solo dependerá de la cantidad de caracteres Unicode en la salida. Sin embargo, precisa qué codificación estás usando.
Para contar el número de caracteres Unicode en su salida, puede usar esta herramienta: http://mothereff.in/byte-counter
Tanteo
Su entrada debe poder empaquetar y desempaquetar los siguientes 10 fragmentos de texto (que tomé en este foro).
Su puntaje será la suma de los tamaños de sus 10 cadenas empaquetadas (en caracteres Unicode) + el tamaño de sus dos funciones (también en caracteres Unicode)
No cuente el tamaño del diccionario si lo usa.
Incluya en sus entradas el "puntaje" de cada fragmento y su versión empaquetada.
La puntuación más baja gana.
Datos
Estos son los fragmentos para codificar para calcular su puntaje:
1: Letras de Rick Roll (1870b): No somos ajenos al código de golf, conoces las reglas, y yo también
No somos extraños para amar Conoces las reglas y yo también Un compromiso total es lo que estoy pensando No obtendrías esto de ningún otro chico Solo quiero decirte cómo me siento Tengo que hacerte entender Nunca va a dar Nunca te voy a decepcionar Nunca voy a correr y abandonarte Nunca te haré llorar Nunca voy a decir adios Nunca diré una mentira y te lastimaré Nos conocemos desde hace tanto tiempo Tu corazón ha estado doliendo pero Eres demasiado tímido para decirlo En el interior, ambos sabemos lo que ha estado sucediendo. Conocemos el juego y lo vamos a jugar. Y si me preguntas cómo me siento No me digas que estás demasiado ciego para ver Nunca va a dar Nunca te voy a decepcionar Nunca voy a correr y abandonarte Nunca te haré llorar Nunca voy a decir adios Nunca diré una mentira y te lastimaré Nunca va a dar Nunca te voy a decepcionar Nunca voy a correr y abandonarte Nunca te haré llorar Nunca voy a decir adios Nunca diré una mentira y te lastimaré (Ooh, te rindo) (Ooh, te rindo) (Oh) Nunca daré, nunca daré (Te rindo) (Oh) Nunca daré, nunca daré (Te rindo) Nos conocemos desde hace tanto tiempo Tu corazón ha estado doliendo pero Eres demasiado tímido para decirlo En el interior, ambos sabemos lo que ha estado sucediendo. Conocemos el juego y lo vamos a jugar. Solo quiero decirte cómo me siento Tengo que hacerte entender Nunca va a dar Nunca te voy a decepcionar Nunca voy a correr y abandonarte Nunca te haré llorar Nunca voy a decir adios Nunca diré una mentira y te lastimaré Nunca va a dar Nunca te voy a decepcionar Nunca voy a correr y abandonarte Nunca te haré llorar Nunca voy a decir adios Nunca diré una mentira y te lastimaré Nunca va a dar Nunca te voy a decepcionar Nunca voy a correr y abandonarte Nunca te haré llorar Nunca voy a decir adios Nunca diré una mentira y te lastimaré
2: El golfista (412b): Golf ASCII-art
'\. . |> 18 >> \. '. El | O >>. 'o | \. El | / \. El | / /. ' El | jgs ^^^^^^^ `^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^
3: el diamante número (233b): imprime este diamante
1 121 12321 1234321 123454321 12345654321 1234567654321 123456787654321 12345678987654321 123456787654321 1234567654321 12345654321 123454321 1234321 12321 121 1
4: el alfabeto cuatro veces (107b): imprime el alfabeto cuatro veces
ABCDEFGHIJKLMNOPQRSTU VWXYZ qwertyuiopasdfghjklzxcvbnm pyfgcrlaoeuidhtnsqjkxbmwvz zyxwvutsrqponmlkjihgfedcba
5: Letras de Old McDonald's (203b): Función de Old MacDonald
El viejo MacDonald tenía una granja, EIEIO, Y en esa granja tenía una vaca, EIEIO, Con un mu mu mu aquí y un mu mu mu allá Aquí un mu, hay un mu, en todas partes un mu, ¡El viejo MacDonald tenía una granja, EIEIO!
6: Letra de Rock around the clock (144b): Rock Around the Clock
1, 2, 3 en punto, 4 en punto de roca, 5, 6, 7 en punto, 8 en punto de roca, 9, 10, 11 en punto, roca a las 12 en punto, Vamos a rockear todo el día esta noche.
7: Hola Mundo (296b): Di "Hola" al mundo en el arte ASCII
_ _ _ _ _ _ _ El | El | El | El | ___ | El | El | ___ __ _____ _ __ | El | __ | El | El | El | | _ | | / _ \ | | / _ \ \ \ / \ / / _ \ | | '__ | | / _` | El | El | _ | __ / | El | (_) | \ VV / (_) | El | El | El | (_ | | _ | | _ | | _ | \ ___ | _ | _ | \ ___ () \ _ / \ _ / \ ___ / | _ | | _ | \ __, _ (_) | /
8: bendición irlandesa (210b): una antigua bendición irlandesa
Que el camino se levante para conocerte Puede que el viento esté siempre a tu espalda Que el sol brille sobre tu rostro Las lluvias caen suaves sobre tus campos Y hasta que nos encontremos de nuevo Que Dios te sostenga en el hueco de su mano
9: Había una vieja dama (1208b): Había una vieja dama
Había una anciana que tragó una mosca. No sé por qué se tragó esa mosca Quizás ella muera. Había una anciana que se tragó una araña, Eso se retorció, se sacudió y se sacudió dentro de ella. Ella se tragó la araña para capturar la mosca, No sé por qué se tragó esa mosca Quizás ella muera. Había una anciana que se tragó un pájaro, Qué absurdo tragarse un pájaro. Se tragó el pájaro para atrapar a la araña, Ella se tragó la araña para capturar la mosca, No sé por qué se tragó esa mosca Quizás ella muera. Había una anciana que se tragó un gato, Imagina que tragar un gato. Se tragó al gato para atrapar al pájaro, Se tragó el pájaro para atrapar a la araña, Ella se tragó la araña para capturar la mosca, No sé por qué se tragó esa mosca Quizás ella muera. Había una anciana que se tragó un perro, Qué cerdo tragarse un perro. Se tragó al perro para atrapar al gato, Se tragó al gato para atrapar al pájaro, Se tragó el pájaro para atrapar a la araña, Ella se tragó la araña para capturar la mosca, No sé por qué se tragó esa mosca Quizás ella muera. Había una anciana que se tragó un caballo, Ella murió por supuesto.
10: dirección de Gettysburg (1452b): cuán aleatoria es la dirección de Gettysburg
Hace cuatro años y siete años, nuestros padres dieron a luz en este continente una nueva nación, concebida en libertad, y dedicada a la proposición de que todos los hombres son creados iguales. Ahora estamos involucrados en una gran guerra civil, probando si esa nación, o cualquier nación tan concebida y dedicada, puede perdurar por mucho tiempo. Nos encontramos en un gran campo de batalla de esa guerra. Hemos llegado a dedicar una parte de ese campo, como un lugar de descanso final para aquellos que aquí dieron sus vidas para que esa nación pudiera vivir. Es totalmente apropiado y apropiado que hagamos esto. Pero, en un sentido más amplio, no podemos dedicar, no podemos consagrar, no podemos santificar este terreno. Los hombres valientes, vivos y muertos, que lucharon aquí, lo han consagrado, muy por encima de nuestro pobre poder para sumar o restar valor. El mundo notará poco, ni mucho tiempo recordará lo que decimos aquí, pero nunca puede olvidar lo que hicieron aquí. Es para nosotros los vivos, más bien, dedicarnos aquí al trabajo inacabado que los que lucharon aquí han avanzado hasta ahora noblemente. Es más bien para nosotros estar aquí dedicados a la gran tarea que nos queda por delante: que de estos honrados muertos tomemos una mayor devoción a esa causa por la cual dieron la última medida completa de devoción, que aquí resolvamos altamente que estos muertos no han muerto en vano, que esta nación, bajo Dios, tendrá un nuevo nacimiento de libertad, y que el gobierno del pueblo, por el pueblo, por el pueblo, no perecerá de la tierra.
Total (sin comprimir): 6135 caracteres / bytes.
¡Que te diviertas!
private static final String RICK_ROLL_RETURN = "We're no strangers to love...