vimに緑色の卵とハムを入力します


18

スース博士の「Green Eggs and Ham」という本は、本の全編に50の異なる言葉しかないことで有名です。

あなたのタスクは、vimテキストエディタで空のファイルに適用すると、すべてのデフォルト設定で通常モードで開始されるときに、Green EggsとHamのテキスト全体を生成するキーストロークのシーケンスを作成することです。キーストロークは、操作の一部として他のファイルをロードしてはなりません。すべてのテキストはエディター内で生成する必要があります。

最終バッファは、このファイルとまったく同じように見える必要がありますが、最終的にどのモードになってもかまいません(<Esc>通常モードに戻すために最終バッファを保持する必要はありません)。

Shiftキー<C-o>を使用したり、Shift キーを使用して大文字のカウントを単一のキーストロークとして入力したりするコード化されたキーストローク。

この目標を達成するための最も少ないキーストロークのシーケンスが勝ちです。


誰かがこの質問に相当するEmacsを作成したい場合、できます。私は、Emacsが面白い質問になるかどうかを知るほどEmacsに精通していません。
ジョーZ.

また、「すべてのデフォルト設定を使用」とは、.vimrcファイルから設定をロードできないことを意味します。
ジョーZ.

あなたの「標準的な」挿入ファイル全体の回答に基づいて、挿入が問題にならなくなった後にエディタを残すモードを採用します。明確にするためにこれを明示的に指定する必要があります(つまり、<Esc>を挿入モードから抜け出す必要はありません)。
FireFly

<Esc>挿入モードを終了する必要はありませんが、通常どおりに開始する必要があります。
ジョーZ.

私が見ているように、この質問はトピックから外れたところにあります。それはコードゴルフではなく、ヴィンゴルフです(そのためのページがあります。良いページです。興味がある人は誰でも見てください)。また、テキストが長すぎるため、ゴルフには非常に時間がかかります。
塩奈

回答:


9

1864キーストローク

誰かがおそらくより最適なソリューションを生成するコードを書くことができますが、これは今のところリファレンスケースに勝っています。これはめちゃくちゃで、手でやったのは恥ずかしいです。

まず、挿入モードに入ります。

i

その後、このすべて

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;]!

エスケープキーを押してコマンドモードに入ります。そして、圧縮されたものを解きます。いくつかの圧縮テキストを圧縮したため、順序が重要です。

<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

あなたはそれらを食べるために間違った置換を得た、それは後方です。また、コマンドの後にコマンドモードのままであるedモードを使用して、先頭のコロンをカットできます。
13

@hildred私は実際にフルテキストから始め、グローバル置換を行い、フルテキストを圧縮テキストに別のファイルに追加しました。その1つを反転することを忘れている必要があります:(

に置き換えるso good;so good;<Esc>2aso good;<Esc>a、3つのキーストロークを保存できます。また、iThat ]! That]!<Enter>最初の部分を2iThat ]! <Esc>xo別の3つに置き換えます。
ジョーZ.

以来、また、DN他の場所で表示されません、あなたは削除することができますIからIDNI do not 、その中にそれらの二つの式で置き換える文で。
ジョーZ.

そして、IDNlike$!<Enter>|;].with 1とinputのすべてのインスタンスを置き換えて、%s/1/IDNlike$!\n|;]./g約20回のキーストロークを節約します。
ジョーZ.

6

3,470キーストローク

i<entire text of file>

テキストファイルの長さは3,469文字なので、「i」を入力して挿入モードにし、各文字を個別に入力すると、3,470キーストロークがかかります。


笑@純粋な総当たり
ランチャー

これは、ほとんど何よりも最後の場所の参照ソリューションとして意図されています。
ジョーZ.

しかし、それは現在も最高の出場者です:
ジョンドヴォルザーク

あなたはもっとEmacsの人ですか?:-)
ジョーZ.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.