Loại trứng xanh và giăm bông trong vim


18

Cuốn sách Green Eggs and Ham của Tiến sĩ Seuss nổi tiếng vì chỉ có 50 từ khác nhau trong toàn bộ câu chuyện của cuốn sách.

Nhiệm vụ của bạn là tạo một chuỗi các tổ hợp phím sẽ dẫn đến toàn bộ văn bản của Green Eggs and Ham khi được áp dụng cho một tệp trống trong trình soạn thảo văn bản vim , bắt đầu ở chế độ bình thường với tất cả các cài đặt mặc định. Tổ hợp phím của bạn không được tải bất kỳ tệp nào khác như một phần của hoạt động của chúng - tất cả văn bản phải được tạo trong chính trình chỉnh sửa.

Bộ đệm cuối cùng của bạn phải trông giống hệt như tệp này , mặc dù nó có thể vẫn ở bất kỳ chế độ nào mà nó kết thúc (bạn không cần phải có một bản cuối cùng <Esc>để đưa nó trở lại chế độ bình thường).

Tổ hợp phím được gõ như <C-o>hoặc sử dụng Shift để nhập số chữ in hoa dưới dạng một lần nhấn phím.

Chuỗi các tổ hợp phím ít nhất để đạt được mục tiêu này sẽ giành chiến thắng.


Nếu ai đó muốn tạo Emacs tương đương với câu hỏi này, họ có thể. Tôi không đủ quen thuộc với Emacs để biết liệu nó có làm cho một câu hỏi thú vị không.
Joe Z.

Ngoài ra, "với tất cả các cài đặt mặc định" có nghĩa là bạn không được phép tải cài đặt từ một .vimrctệp.
Joe Z.

Dựa trên câu trả lời toàn bộ tệp "chính tắc" của bạn, tôi đưa nó vào chế độ bạn rời khỏi trình chỉnh sửa sau khi chèn không thành vấn đề. Có lẽ điều này cần được chỉ định rõ ràng để làm rõ (nghĩa là bạn không phải thoát ra khỏi chế độ chèn).
FireFly

Vâng, bạn không cần phải <Esc>thoát khỏi chế độ chèn, nhưng bạn phải bắt đầu bình thường.
Joe Z.

Như tôi thấy, câu hỏi này nằm ngoài lề của việc lạc đề. Đó không phải là một codegolf, nó là một vimgolf (có một trang cho điều đó, một trang tốt. Bất kỳ ai quan tâm nên xem qua). Tôi cũng thấy văn bản quá dài, làm cho nó rất tốn thời gian để chơi gôn.
shiona

Câu trả lời:


9

Tổ hợp phím 1864

Ai đó có thể có thể viết một số mã tạo ra một giải pháp tối ưu hơn, nhưng điều này đánh bại trường hợp tham chiếu bây giờ. Đây là một mớ hỗn độn chết tiệt, và tôi xấu hổ tôi đã làm nó bằng tay.

Đầu tiên, chúng ta vào chế độ chèn.

i

Sau đó, tất cả điều này

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

Nhấn thoát để vào chế độ lệnh. Và làm sáng tỏ các công cụ nén. Vấn đề đặt hàng, vì tôi đã nén một số văn bản nén.

<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

bạn đã thay thế sai để ăn chúng, nó ngược. và bạn có thể cắt các dấu hai chấm hàng đầu bằng cách sử dụng chế độ ed vẫn ở chế độ lệnh sau các lệnh.
hildred

@hildred Tôi thực sự bắt đầu với toàn văn, đã thay thế toàn cầu và thêm toàn bộ văn bản vào văn bản nén vào một tệp khác. Phải quên đảo ngược cái đó :(

Nếu bạn thay thế so good;so good;bằng <Esc>2aso good;<Esc>a, bạn có thể lưu ba tổ hợp phím. Ngoài ra, thay thế iThat ]! That]!<Enter>ở đầu bằng 2iThat ]! <Esc>xocho ba khác.
Joe Z.

Ngoài ra, vì DNkhông xuất hiện ở nơi nào khác, bạn có thể xóa Itừ IDNI do not trong câu lệnh thay thế bằng hai biểu thức trong đó.
Joe Z.

Và, thay thế tất cả các trường hợp IDNlike$!<Enter>|;].bằng 1và đầu vào %s/1/IDNlike$!\n|;]./gđể lưu khoảng 20 tổ hợp phím hoặc hơn.
Joe Z.

6

3,470 tổ hợp phím

i<entire text of file>

Tệp văn bản dài 3,469 ký tự, do đó, gõ "i" để đặt nó ở chế độ chèn và nhập từng ký tự riêng lẻ sẽ mất 3,470 lần nhấn phím.


Lol @ brute force
Cruncher 9/12/13

Điều này chủ yếu là một giải pháp tham khảo cuối cùng nhiều hơn bất cứ điều gì.
Joe Z.

tuy nhiên hiện tại nó cũng là thí sinh xuất sắc nhất :-) (không, tôi sẽ không tham gia; xin lỗi)
John Dvorak

Bạn nhiều hơn một người Emacs? :-)
Joe Z.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.