Scrivi uova verdi e prosciutto in vim


18

Il libro Green Eggs and Ham del Dr. Seuss è famoso per avere solo 50 parole diverse nell'intera storia del libro.

Il tuo compito è quello di creare una sequenza di sequenze di tasti che comporterà l'intero testo di Green Eggs e Ham quando applicato a un file vuoto nell'editor di testo vim , iniziando in modalità normale con tutte le impostazioni predefinite. I tasti premuti non devono caricare altri file come parte del loro funzionamento - tutto il testo deve essere generato all'interno dell'editor stesso.

Il buffer finale deve assomigliare esattamente a questo file , anche se può rimanere nella modalità in cui si trova (non è necessario avere un finale <Esc>per riportarlo alla modalità normale).

Tasti con accordi come <C-o>o usando Shift per digitare un conteggio maiuscolo come un singolo tasto.

Vince la sequenza del minor numero di tasti per raggiungere questo obiettivo.


Se qualcuno vuole creare l'equivalente di Emacs di questa domanda, può farlo. Non ho abbastanza familiarità con Emacs per sapere se sarebbe una domanda interessante.
Joe Z.

Inoltre, "con tutte le impostazioni predefinite" significa che non puoi caricare le impostazioni da un .vimrcfile.
Joe Z.

Sulla base della tua risposta "canonica" per inserire l'intero file, prendo la modalità in cui lasci l'editor dopo l'inserimento non ha importanza. Forse questo dovrebbe essere esplicitamente specificato per chiarire (cioè non è necessario uscire dalla modalità di inserimento).
FireFly

Sì, non devi <Esc>uscire dalla modalità di inserimento, ma devi iniziare normalmente.
Joe Z.

A mio avviso, questa domanda è al limite dell'essere fuori tema. Non è un codegolf, è un vimgolf (c'è una pagina per quello, buona. Chiunque sia interessato dovrebbe dare un'occhiata). Trovo anche che il testo sia troppo lungo, il che richiede molto tempo per il golf.
shiona,

Risposte:


9

Sequenze di tasti del 1864

Qualcuno potrebbe probabilmente scrivere del codice che produca una soluzione più ottimale, ma questo batte il caso di riferimento per ora. Questo è un casino, e mi vergogno di averlo fatto a mano.

Innanzitutto, entriamo nella modalità di inserimento.

i

Quindi tutto questo

That ]! That ]!
IDNlike that ]!

Do Y like$?

|;].
IDNlike$.

WPY LTB or tB?

IZ LTB or tB.
IZ LTanywB.
IDNlike$.
|;].

WPY LTin a h@?
WPY LT=a m@?

|in a h@.
|=a m@.
|B or tB.
|.
IDNlike$.
|;].

WPY ETin a box?
WPY ET=a fox?

Not_a box. Not =a fox.
Not_a h@. Not =a m@.
IZ ETB or tB.
IZ ETanywB.
IZ eat$.
|;].

WPY? CPY? In a car?
Eat them! Eat them! B they are.

IZ,X,_a car.

You may LT. You will see.
You may LTin a tree!

IZ,X_a tree.
Not_a car! You let me be.

|in a box.
|=a fox.
|in a h@.
|=a m@.
|B or tB.
|.
IDNlike$.
|;].

AQ! AQ! AQ! AQ!
CPY;wPY;on aQ?

Not_aQ! Not_a tree!
Not_a car! Sam! Let me be!

IZ,X,_a box.
IX,Z;=a fox.
:=a m@.
:in a h@.
:B or tB.
:anywB.
IDNlike$.
|;].

Say! In +? B_+!
WPY;cPY,_+?

IZ,X,_+.

WPY;cPY,_the rain?


IZ,X,_the rain.
Not_+. Not on aQ.
Not_a car. Not_a tree.
|;Sam;Y see.
Not_a h@. Not_a box.
Not =a m@. Not =a fox.
:B or tB.
|!

You do not like$?
|;].

CPY;wPY;=a g^?

IZ,X;=a g^!

WPY;cPY;on a b^?

IX,Z;on a b^.
IWN,WN;=a g^.

:in the rain.
:on aQ.
Not_+! Not_a tree!
Not_a car! You let me be!
|in a box.
|=a fox.
:in a h@.
|=a m@.
|B or tB.
|!

IDNlike$!
|;].

You do not LT. So Y say.
Try them! Try them! & Y may.
Try them and Y may;I say.

Sam! If Y will let me be,
I will try them. You will see.

Say! I like$!
I do! I LT;]!
& I wPETin a b^.
& I wPET=a g^.

!ETin the rain.
&_+. & on aQ.
&_a car. &_a tree.
They are so good;so good;Y see!

So I will ETin a box.
!ET=a fox.
!ETin a h@.
!ET=a m@.
!ETB and tB.
Say! I will ETanywB!

I do so like$!

Thank Y! Thank Y;]!

Premi Esc per accedere alla modalità comando. E svelare le cose compresse. L'ordine è importante, poiché ho compresso del testo compresso.

<Esc>
%s/|/|anywB/g
%s/:/IWNET/g
%s/|/IDNLT/g
%s/Z/ wPnot/g
%s/X/ cPnot/g
%s/&/And/g
%s/+/the dark/g
%s/@/ouse/g
%s/^/oat/g
%s/Y/you/g
%s/IDN/I do not /g
%s/LT/like them /g
%s/]/Sam-I-am/g
%s/ET/eat them /g
%s/WN/ will not/g
%s/$/ green eggs and ham/g
%s/P/ould /g
%s/!/And I will /g
%s/Q/ train/g
%s/B/here/g
%s/_/ in /g
%s/=/with /g
%s/;/, /g

hai sbagliato sostituzione per mangiarli, è al contrario. e puoi tagliare i due punti principali usando la modalità ed che rimane in modalità comando dopo i comandi.
hildred

@hildred In realtà ho iniziato con il testo completo, ho effettuato una sostituzione globale e ho aggiunto il testo completo al testo compresso in un altro file. Deve aver dimenticato di invertire quello :(

Se si sostituisce so good;so good;con <Esc>2aso good;<Esc>a, è possibile salvare tre sequenze di tasti. Inoltre, sostituire iThat ]! That]!<Enter>all'inizio con 2iThat ]! <Esc>xoaltri tre.
Joe Z.

Inoltre, poiché DNnon appare altrove, è possibile rimuovere l' istruzione Ida IDNe I do not nell'istruzione di sostituzione con quelle due espressioni in essa contenute.
Joe Z.

E, sostituisci tutte le istanze di IDNlike$!<Enter>|;].with 1e input %s/1/IDNlike$!\n|;]./gper salvare circa 20 sequenze di tasti.
Joe Z.

6

3.470 sequenze di tasti

i<entire text of file>

Il file di testo ha una lunghezza di 3.469 caratteri, quindi digitando "i" per metterlo in modalità di inserimento e digitando ogni carattere singolarmente saranno necessarie 3.470 sequenze di tasti.


Lol @ pure brute force
Cruncher,

Questo è inteso principalmente come una soluzione di riferimento all'ultimo posto più di ogni altra cosa.
Joe Z.

ma al momento è anche il miglior concorrente :-) (no, non ho intenzione di partecipare; scusate)
John Dvorak,

Sei più una persona di Emacs? :-)
Joe Z.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.