La tua missione oggi è inventare un compressore di testo.
Compito
Scriverai due funzioni:
Il packer è una funzione che accetta una stringa di caratteri ASCII (da U + 0000 a U + 007F) e genera una stringa Unicode (da U + 0000 a U + 10FFFF), contenente il minor numero possibile di caratteri.
L'unpacker è una funzione che accetta una stringa Unicode codificato ed emette esattamente la stringa ASCII originale.
Ingresso
L'unico input autorizzato è la stringa ASCII (per il packer) e la stringa Unicode compressa (per il decompressore). Nessun input dell'utente, nessuna connessione a Internet, nessun utilizzo del file system.
Le tue funzioni possono avere accesso a questo elenco di parole inglesi . È possibile utilizzare questo elenco come file txt locale o copiarne il contenuto nel codice sorgente come stringa o matrice di stringhe .
Non puoi codificare i frammenti di seguito nelle tue funzioni.
Produzione
L'unico output autorizzato per entrambe le funzioni è una stringa.
L'output di unpacker deve contenere esattamente gli stessi caratteri dell'input del packer.
I tuoi input e output possono utilizzare qualsiasi codifica di caratteri che supporti tutti Unicode (UTF-8/16/32, GB18030, ...), poiché il tuo punteggio dipenderà solo dal numero di caratteri Unicode nell'output. Per favore, precisa quale codifica stai usando.
Per contare il numero di caratteri Unicode nel tuo output, puoi usare questo strumento: http://mothereff.in/byte-counter
punteggio
La tua voce deve essere in grado di impacchettare e decomprimere i seguenti 10 frammenti di testo (che ho preso su questo forum).
Il tuo punteggio sarà la somma delle dimensioni delle tue 10 stringhe impaccate (in caratteri Unicode) + la dimensione delle tue due funzioni (anche in caratteri Unicode)
Non contare le dimensioni del dizionario se lo usi.
Includi nelle voci il "punteggio" di ogni frammento e la loro versione compressa.
Il punteggio più basso vince.
Dati
Ecco i frammenti da codificare per calcolare il tuo punteggio:
1: testo di Rick Roll (1870b): non siamo estranei al codice del golf, conosci le regole e anche io
Non siamo estranei all'amore Conosci le regole e anche io Un impegno pieno è quello a cui sto pensando Non lo capiresti da nessun altro ragazzo Voglio solo dirti come mi sento Devo farti capire Non ti lascerà mai stare Non ti deluderò mai Non correre mai in giro e abbandonarti Non ti farò mai piangere Non dirò mai addio Non dire mai una bugia e farti del male Ci conosciamo da tanto tempo Il tuo cuore ha sofferto ma Sei troppo timido per dirlo All'interno sappiamo entrambi cosa sta succedendo Conosciamo il gioco e lo giocheremo E se mi chiedi come mi sento Non dirmi che sei troppo cieco per vedere Non ti lascerà mai stare Non ti deluderò mai Non correre mai in giro e abbandonarti Non ti farò mai piangere Non dirò mai addio Non dire mai una bugia e farti del male Non ti lascerà mai stare Non ti deluderò mai Non correre mai in giro e abbandonarti Non ti farò mai piangere Non dirò mai addio Non dire mai una bugia e farti del male (Ooh, arrenditi) (Ooh, arrenditi) (Ooh) Mai dare, mai dare (Ti arrendo) (Ooh) Mai dare, mai dare (Ti arrendo) Ci conosciamo da così tanto tempo Il tuo cuore ha sofferto ma Sei troppo timido per dirlo All'interno sappiamo entrambi cosa sta succedendo Conosciamo il gioco e lo giocheremo Voglio solo dirti come mi sento Devo farti capire Non ti lascerà mai stare Non ti deluderò mai Non correre mai in giro e abbandonarti Non ti farò mai piangere Non dirò mai addio Non dire mai una bugia e farti del male Non ti lascerà mai stare Non ti deluderò mai Non correre mai in giro e abbandonarti Non ti farò mai piangere Non dirò mai addio Non dire mai una bugia e farti del male Non ti lascerà mai stare Non ti deluderò mai Non correre mai in giro e abbandonarti Non ti farò mai piangere Non dirò mai addio Non dire mai una bugia e farti del male
2: The Golfer (412b): Golf ASCII-art
'\. . |> 18 >>
\. '. |
O >>. 'o |
\. |
/ \. |
/ /. " |
JGS ^^^^^^^ `^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^
3: the number diamond (233b): stampa questo diamante
1
121
12321
1234321
123454321
12345654321
1234567654321
123456787654321
12345678987654321
123456787654321
1234567654321
12345654321
123454321
1234321
12321
121
1
4: l'alfabeto quattro volte (107b): stampa l'alfabeto quattro volte
abcdefghijklmnopqrstuvwxyz qwertyuiopasdfghjklzxcvbnm pyfgcrlaoeuidhtnsqjkxbmwvz zyxwvutsrqponmlkjihgfedcba
5: Old McDonald's lyrics (203b): Old MacDonald function
Il vecchio MacDonald aveva una fattoria, EIEIO, E in quella fattoria aveva una mucca, EIEIO, Con un moo moo qui e un moo moo lì, Qui un muggito, un muggito, ovunque un muggito, Il vecchio MacDonald aveva una fattoria, EIEIO!
6: Testo Rock Around the Clock (144b): Rock Around the Clock
1, 2, 3 in punto, 4 in punto rock, 5, 6, 7 in punto, 8 in punto rock, 9, 10, 11 in punto, 12 in punto rock, Stasera suoneremo tutto il giorno.
7: Hello World (296b): Dì "Ciao" al mondo nell'arte ASCII
_ _ _ _ _ _ _
| | | | ___ | | | ___ __ _____ _ __ | | __ | | |
| | _ | | / _ \ | | / _ \ \ \ / \ / / _ \ | '__ | | / _` | |
| _ | __ / | | (_) | \ VV / (_) | | | | (_ | | _ |
| _ | | _ | \ ___ | _ | _ | \ ___ () \ _ / \ _ / \ ___ / | _ | | _ | \ __, _ (_)
| /
8: Irish blessing (210b): una vecchia benedizione irlandese
Possa la strada salire per incontrarti Che tu abbia sempre il vento in poppa Possa il sole splendere caldo sul tuo viso Le piogge cadono morbide sui tuoi campi E fino a quando ci incontreremo di nuovo Possa Dio trattenerti nell'incavo della sua mano
9: C'era una vecchia signora lyrics (1208b): C'era una vecchia signora
C'era una vecchia signora che ingoiò una mosca. Non so perché abbia ingoiato quella mosca, Forse morirà. C'era una vecchia signora che ingoiò un ragno, Che si agitava, si agitava e si agitava dentro di lei. Ha ingoiato il ragno per catturare la mosca, Non so perché abbia ingoiato quella mosca, Forse morirà. C'era una vecchia signora che ingoiò un uccello, Che assurdo inghiottire un uccello. Ha ingoiato l'uccello per catturare il ragno, Ha ingoiato il ragno per catturare la mosca, Non so perché abbia ingoiato quella mosca, Forse morirà. C'era una vecchia signora che ingoiò un gatto, Immagina di ingoiare un gatto. Ha ingoiato il gatto per catturare l'uccello, Ha ingoiato l'uccello per catturare il ragno, Ha ingoiato il ragno per catturare la mosca, Non so perché abbia ingoiato quella mosca, Forse morirà. C'era una vecchia signora che ingoiò un cane, Che maiale inghiottire un cane. Ha ingoiato il cane per catturare il gatto, Ha ingoiato il gatto per catturare l'uccello, Ha ingoiato l'uccello per catturare il ragno, Ha ingoiato il ragno per catturare la mosca, Non so perché abbia ingoiato quella mosca, Forse morirà. C'era una vecchia signora che ingoiò un cavallo, È morta ovviamente.
10: indirizzo gettysburg (1452b): quanto è casuale l'indirizzo di Gettysburg
Quattro punti e sette anni fa i nostri padri hanno prodotto in questo continente una nuova nazione, concepita in libertà e dedicata alla proposizione che tutti gli uomini sono creati uguali. Ora siamo impegnati in una grande guerra civile, verificando se quella nazione, o qualsiasi nazione così concepita e così dedicata, possa durare a lungo. Ci siamo incontrati su un grande campo di battaglia di quella guerra. Siamo venuti per dedicare una parte di quel campo, come luogo di riposo finale per coloro che qui hanno dato la vita affinché quella nazione potesse vivere. È del tutto appropriato e corretto che dovremmo farlo. Ma, in senso lato, non possiamo dedicare, non possiamo consacrare, non possiamo santificare questo terreno. Gli uomini coraggiosi, vivi e morti, che hanno lottato qui, lo hanno consacrato, molto al di sopra del nostro povero potere di aggiungere o detrarre. Il mondo noterà poco, né ricorderà a lungo ciò che diciamo qui, ma non potrà mai dimenticare quello che hanno fatto qui. Spetta a noi i vivi, piuttosto, dedicarsi qui all'opera incompiuta che finora hanno combattuto nobilmente coloro che hanno combattuto qui. È piuttosto per noi essere qui dedicati al grande compito che ci rimane davanti - che da questi onorati morti prendiamo maggiore devozione a quella causa per la quale hanno dato l'ultima misura piena di devozione - che qui risolviamo altamente che questi morti non devono sono morti invano - che questa nazione, sotto Dio, avrà una nuova nascita di libertà - e che il governo del popolo, da parte del popolo, per il popolo, non perirà dalla terra.
Totale (non compresso): 6135 caratteri / byte.
Divertiti!
private static final String RICK_ROLL_RETURN = "We're no strangers to love...