टाइप करें ग्रीन एग्स और हैम इन वीम


18

डॉ। सीस की पुस्तक ग्रीन एग्स एंड हैम पुस्तक की पूरी कहानी में केवल 50 अलग-अलग शब्दों के लिए प्रसिद्ध है।

आपका काम कीस्ट्रोक्स का एक क्रम बनाना है , जो सभी डिफ़ॉल्ट सेटिंग्स के साथ सामान्य मोड में शुरू होने वाले vim टेक्स्ट एडिटर में एक खाली फ़ाइल पर लागू होने पर ग्रीन एग्स और हैम के पूरे पाठ में परिणाम देगा । आपके कीस्ट्रोक्स को उनके संचालन के हिस्से के रूप में किसी अन्य फाइल को लोड नहीं करना चाहिए - सभी पाठ संपादक के भीतर ही उत्पन्न होने चाहिए।

आपके अंतिम बफ़र को बिल्कुल इस फ़ाइल की तरह दिखना चाहिए , हालाँकि यह जो भी मोड में रह सकता है वह समाप्त हो रहा है (आपको <Esc>इसे सामान्य मोड में वापस करने के लिए अंतिम नहीं होना चाहिए )।

<C-o>एक एकल अक्षर के रूप में एक बड़े अक्षर की गिनती लिखने के लिए शिफ्ट किए गए कीस्ट्रोक्स जैसे शिफ्ट का उपयोग करना।

इस लक्ष्य को प्राप्त करने के लिए सबसे कम कीस्ट्रोक्स का अनुक्रम जीतता है।


यदि कोई इस सवाल के समकक्ष Emacs बनाना चाहता है, तो वे कर सकते हैं। मैं यह जानने के लिए Emacs के साथ पर्याप्त रूप से परिचित नहीं हूं कि क्या यह एक दिलचस्प सवाल है।
जो जेड।

इसके अलावा, "सभी डिफ़ॉल्ट सेटिंग्स के साथ" का मतलब है कि आपको किसी .vimrcफ़ाइल से सेटिंग लोड करने की अनुमति नहीं है ।
जो जेड।

आपके "विहित" आवेषण-संपूर्ण-फ़ाइल उत्तर के आधार पर, मैं इसे वह मोड लेता हूं जिसे आप संपादक को छोड़ने के बाद छोड़ते हैं। हो सकता है कि यह स्पष्ट रूप से स्पष्ट करने के लिए निर्दिष्ट किया जाना चाहिए (यानी आपको डालने से मोड में <Esc> नहीं है)।
FireFly

हाँ, आपको <Esc>इन्सर्ट मोड से बाहर नहीं जाना है, लेकिन आपको सामान्य रूप से शुरू करना होगा।
जो जेड।

जैसा कि मैंने इसे देखा, यह सवाल ऑफ-टॉपिक होने के किनारे पर है। यह एक कोडगॉल्फ नहीं है, यह एक विमगॉल्फ है (इसके लिए एक पृष्ठ है, एक अच्छा है। किसी को भी दिलचस्पी लेनी चाहिए)। मुझे पाठ बहुत लंबा लगता है, जिससे गोल्फ में बहुत समय लगता है।
शियोना

जवाबों:


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

आपको उन्हें खाने के लिए गलत प्रतिस्थापन मिला, यह पीछे की ओर है। और आप एड मोड का उपयोग करके प्रमुख कॉलनों को काट सकते हैं जो कमांड के बाद कमांड मोड में रहता है।
११

@ वास्तव में मैंने पूर्ण पाठ के साथ शुरुआत की, एक वैश्विक प्रतिस्थापन किया और पाठ को दूसरी फ़ाइल में संपीड़ित करने के लिए पूर्ण पाठ जोड़ा। उस एक को उल्टा करना भूल गए होंगे :(

यदि आप so good;so good;साथ बदलते हैं <Esc>2aso good;<Esc>a, तो आप तीन कीस्ट्रोक्स बचा सकते हैं। इसके अलावा, iThat ]! That]!<Enter>शुरुआत में 2iThat ]! <Esc>xoएक और तीन के साथ बदलें ।
जो जे डे

इसके अलावा, चूंकि DNकहीं और नहीं दिखाई देता है, आप उन दो अभिव्यक्तियों के साथ Iसे IDNऔर I do not प्रतिस्थापित बयान में इसे हटा सकते हैं ।
जो जेड।

और, के सभी उदाहरणों की जगह IDNlike$!<Enter>|;].के साथ 1और इनपुट %s/1/IDNlike$!\n|;]./g20 कीस्ट्रोक्स या तो के बारे में बचाने के लिए।
जो जेड।

6

3,470 कीस्ट्रोक्स

i<entire text of file>

पाठ फ़ाइल 3,469 वर्ण लंबी है, इसलिए "i" टाइप करके इसे इन्सर्ट मोड में रखें और प्रत्येक वर्ण को अलग-अलग टाइप करने पर 3,470 कीस्ट्रोक्स लगेंगे।


लोल @ शुद्ध पाश्र्व बल
Cruncher

यह अधिकांशतः किसी भी चीज से अधिक अंतिम स्थान के संदर्भ समाधान के रूप में अभिप्रेत है।
जो जेड

अभी तक यह वर्तमान में सबसे अच्छा प्रतियोगी है :-) (नहीं, मैं भाग लेने के लिए नहीं जा रहा हूं; क्षमा करें)
जॉन ड्वोरक

आप एक Emacs व्यक्ति के अधिक? :-)
जो जेड।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.