ed, 35 caratteri
s/[a-zA-Z]*\([a-zA-Z]\)\|./\1/g
p
Q
Quindi, il mondo finisce in ed. Dato che mi piace essere troppo letterale, ho deciso di scrivere per scrivere la soluzione con ed - e apparentemente è in realtà un linguaggio di programmazione . È sorprendentemente breve, anche considerando che in questo thread esistono già molte soluzioni più brevi. Sarebbe più bello se potessi usare qualcosa di diverso [a-zA-Z], ma considerando che non è un linguaggio di programmazione, in realtà è abbastanza buono.
Innanzitutto, vorrei dire che analizza solo l'ultima riga del file. Sarebbe possibile analizzare di più, basta digitare ,all'inizio di due prime righe (questo intervallo "tutto" specificato, al contrario dell'intervallo dell'ultima riga standard), ma ciò aumenterebbe la dimensione del codice a 37 caratteri.
Ora per spiegazioni. La prima riga fa esattamente quello che fa la soluzione Perl (tranne senza supporto per i caratteri Unicode). Non ho copiato la soluzione Perl, ho appena inventato qualcosa di simile per coincidenza.
La seconda riga stampa l'ultima riga, in modo da poter vedere l'output. La terza riga forza la chiusura - Devo farlo, altrimenti edverrebbe stampato ?per ricordarti che non hai salvato il file.
Ora per come eseguirlo. Bene, è molto semplice. Esegui semplicemente edil file contenente il test case, mentre esegui il piping del mio programma, in questo modo.
ed -s testcase < program
-sè silenzioso. Questo impedisce eddi produrre file di dimensioni brutte all'inizio. Dopotutto, lo uso come script, non come editor, quindi non ho bisogno di metadati. Se non lo facessi, ed mostrerebbe la dimensione del file che altrimenti non avrei potuto impedire.