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 IDN및 I 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.