vim에 녹색 계란과 햄을 입력하십시오


18

Dr. Seuss의 Green Eggs and Ham 책은이 책의 전체 이야기에서 50 개의 다른 단어 만 가지고있는 것으로 유명합니다.

당신의 임무는 모든 기본 설정으로 일반 모드에서 시작 하여 vim 텍스트 편집기 의 빈 파일에 적용될 때 녹색 계란과 햄의 전체 텍스트를 생성하는 일련의 키 입력을 만드는 것 입니다. 키 입력은 조작의 일부로 다른 파일을로드하지 않아야합니다. 모든 텍스트는 편집기 자체에서 생성되어야합니다.

최종 버퍼는 이 파일 과 똑같아 야 하지만, 최종 모드는 어떤 모드로든 유지 될 수 있습니다 (최종 <Esc>모드로 되돌릴 최종 결과는 필요 없습니다 ).

대문자 키를 <C-o>단일 키 입력으로 입력하기 위해 Shift 키를 누르 거나 Shift 키를 사용하여 코드화 된 키 입력

이 목표를 달성하기위한 가장 적은 키 입력 순서가 이깁니다.


누군가이 질문에 해당하는 이맥스를 만들고 싶다면 할 수 있습니다. 흥미로운 질문이 있는지 Emacs에 익숙하지 않습니다.
Joe Z.

또한 "모든 기본 설정 사용"은 .vimrc파일 에서 설정을로드 할 수 없음을 의미 합니다.
Joe Z.

"정식"삽입 전체 파일 응답을 기반으로 삽입이 중요하지 않은 상태에서 편집기를 종료하는 모드로 사용합니다. 어쩌면 이것을 명확히하기 위해 명시 적으로 지정해야합니다 (즉, 삽입 모드에서 <Esc>하지 않아도됩니다).
FireFly

예, <Esc>삽입 모드에서 벗어날 필요는 없지만 정상적으로 시작해야합니다.
Joe Z.

내가 알다시피,이 질문은 주제를 벗어난 가장자리에 있습니다. 그것은 codegolf가 아니며 vimgolf입니다 (좋은 페이지가 있습니다. 관심있는 사람은 살펴 봐야합니다). 또한 텍스트가 너무 길어서 골프를 치는 데 시간이 많이 걸립니다.
shiona

답변:


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 모드를 사용하여 선행 콜론을 줄일 수 있습니다.

@hildred 실제로 전체 텍스트로 시작하여 전역 바꾸기를 수행하고 전체 텍스트를 압축 텍스트에 다른 파일에 추가했습니다. 다음 중 하나를 뒤집는 것을 잊었을 것입니다 :(

당신이 교체하는 경우 so good;so good;<Esc>2aso good;<Esc>a, 당신은 세 가지 키 입력을 저장할 수 있습니다. 또한 iThat ]! That]!<Enter>처음 2iThat ]! <Esc>xo에 다른 3 개로 교체하십시오 .
Joe Z.

또한 DN다른 곳에 나타나지 않기 때문에 Ifrom IDNI do not replace 문을 두 표현식으로 제거 할 수 있습니다 .
Joe Z.

그리고, 모든 인스턴스 교체 IDNlike$!<Enter>|;].와 함께 1입력 %s/1/IDNlike$!\n|;]./g20 키 정도에 대해 저장할합니다.
Joe Z.

6

3,470 개의 키 입력

i<entire text of file>

텍스트 파일의 길이는 3,469 자이므로 "i"를 입력하여 삽입 모드로 설정하고 각 문자를 개별적으로 입력하려면 3,470 개의 키를 입력해야합니다.


Lol @ 순수 무차별
대포

이것은 대부분 무엇보다 최후의 기준 솔루션으로 사용됩니다.
Joe Z.

; 아직 잘 :-) (미안 아니, 내가 참여하지 않을거야)로 가장 좋은 참가자 현재의
존 드보락

이멕스 사람이 더 있습니까? :-)
Joe Z.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.