"N NE E SE SE SW W NW" प्रिंट करें


47

यह लगभग तुच्छ लगता है, लेकिन कुछ प्रयासों के बाद भी मैं जम्मू में शाब्दिक समाधान को हरा नहीं पा रहा था, मैंने सोचा कि यह एक अच्छी चुनौती हो सकती है (हालांकि, स्पष्ट होने के लिए, यह एक जे-विशिष्ट चुनौती नहीं है)।

शीर्षक यह सब कहता है। आपको बस एक प्रोग्राम, या फंक्शन (कोई तर्क न लेते हुए) लिखना होगा जो रिटर्न या प्रिंट करता है:

N NE E SE S SW W NW

आप रिक्त स्थान के स्थान पर नई लाइनों का उपयोग कर सकते हैं।

इस तरह के रूप में तार की एक सरणी लौटाने के लिए एक नो-तर्क फ़ंक्शन

['N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW']

भी स्वीकार्य है।

पत्र ऊपरी या निचले मामले हो सकते हैं, लेकिन मिश्रित नहीं हो सकते।


9
शायद उन्हें किसी भी क्रम में उत्पादन करने की अनुमति देना थोड़ा अधिक दिलचस्प होगा
जो किंग

3
@ जोकिंग श्योर, मैं इसे हटा दूंगा। ईमानदारी से, मैं किसी को भी जवाब देने की उम्मीद नहीं करता था जो पूर्ण शाब्दिक मूल्य का उपयोग करता है - यह सवाल की भावना में नहीं है। जैसा कि मैंने कहा, यह इसलिए हुआ क्योंकि मैं जम्मू में शाब्दिक को हरा नहीं पा रहा था , इसके बावजूद स्ट्रिंग में नियमितता और एक तरह की संरचना थी। संपूर्ण बिंदु उस शाब्दिक शोषण का है जो शाब्दिक उत्तर को हरा देता है। अधिक स्पष्ट नहीं होने के लिए मुझ पर बुरा। उन्हें कोई भी आदेश देने से वह हार जाता है, इसलिए मैं वह बदलाव नहीं करना चाहता।
योना

3
सबसे होनहार विचार मैं मिला है @UnrelatedString कि दिशाओं पत्र व्यवहार करने के टिप्पणी करने के लिए है मैं शक्तियों को उठाया 0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5। दुर्भाग्यवश J कोड को उन अक्षरों में मैप करने की आवश्यकता होती है जो एक शाब्दिक से अधिक महंगे होते थे।
जोनाह

1
आह, स्मार्ट! मुझे आश्चर्य है कि अगर मैपिंग गॉसियन पूर्णांकों के लिए बेहतर काम कर सकती है, 1, 1+i, i, -1+i, -1, -1-i, -i, 1-iतो आपको दो के बजाय प्रति कार्डिनल दिशा में एक वास्तविक या काल्पनिक हिस्सा मिला है। यह शायद कठिन है, उन हालांकि उत्पन्न करने के लिए है जब तक कि वहाँ किसी तरह आप में से उन शक्तियों दौर सकता है मैं 0 से दूर? मुझे नहीं पता कि J में कितना आसान या कठिन होगा, लेकिन यह एक विचार है।
असंबंधित स्ट्रिंग

3
ऐसा लगता है कि प्रविष्टियों को भोले को अपनी भाषा में "इको दिस स्ट्रिंग" संस्करण की तुलना के लिए दिखाना चाहिए, और%% पर निर्णय लिया जाना चाहिए?
डेवी मोर्गन

जवाबों:


18

कैनवस , 12 बाइट्स

>X½+T)AuS{⁹‟

यहाँ कोशिश करो!

स्ट्रिंग, बस संकुचित।


2
क्या आप बता सकते हैं कि यह थोड़ा और विस्तार से कैसे काम करता है?
दिल्लम

2
@ डिलन कहने के लिए बहुत अधिक नहीं है - कैनवस में एक अंतर्निहित कंप्रेसर है (इसे ctrl + o → स्ट्रिंग कंप्रेस के साथ सुलभ होना चाहिए), यहाँ, बस आवश्यक वर्णों को संग्रहीत करता है ( "NESW ") और फिर बेस -5 स्टोर्स में अलग-अलग स्टोर करता है पात्र।
द्विजिमा

56

बैश (24 बाइट्स)

ब्रेस विस्तार का उपयोग करना

echo N {N,,S}E S {S,,N}W

हार्ड कोडिंग के समान लंबाई है

echo N NE E SE S SW W NW

हालांकि यह अधिक दिलचस्प हो जाता है जब कम्पास के अधिक बिंदुओं को आउटपुट करता है

echo N NNE NE ENE E ESE SE SSE S SSW SW WSW W WNW NW NNW

ब्रेस विस्तार

echo N {{N,,E}N,,{E,,S}S}E S {{S,,W}S,,{W,,N}N}W

अन्यथा यदि ऑर्डर बदला जा सकता है, (17 बाइट्स), चाल यह है कि उद्धरण के बिना एम्पि स्ट्रिंग पैरामीटर गायब हो जाता है

echo {N,,S}{W,,E}

1
यह दिलचस्प है, मुझे नहीं पता था कि आप खाली स्थिति ब्रेस अभिव्यक्ति हो सकती है!
दोष

1
चोलोटिंग करते समय @flawr उपयोगी:mount -t proc{,,}
ग्रोनोस्तज

7
याcp file{,.bak}
ओलिपहंट

43

मॉर्निंगटन क्रिसेंट , 4395 3823 बाइट्स

Take Northern Line to Bank
Take District Line to Parsons Green
Take District Line to Paddington
Take Bakerloo Line to North Wembley
Take Bakerloo Line to Charing Cross
Take Bakerloo Line to Charing Cross
Take Bakerloo Line to Charing Cross
Take Bakerloo Line to Charing Cross
Take Northern Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Barbican
Take Circle Line to Bank
Take Circle Line to Aldgate
Take Circle Line to Embankment
Take Bakerloo Line to Charing Cross
Take Bakerloo Line to Charing Cross
Take Bakerloo Line to Charing Cross
Take Bakerloo Line to Charing Cross
Take Northern Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Bayswater
Take Circle Line to Hammersmith
Take Circle Line to Baker Street
Take Circle Line to Bank
Take Circle Line to Embankment
Take Northern Line to Stockwell
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Farringdon
Take Circle Line to Hammersmith
Take Circle Line to Blackfriars
Take Circle Line to Bank
Take Circle Line to Moorgate
Take Northern Line to Waterloo
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Westminster
Take Circle Line to Hammersmith
Take Circle Line to Tower Hill
Take Circle Line to Bank
Take Circle Line to Edgware Road
Take Circle Line to Liverpool Street
Take Central Line to Mile End
Take District Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Circle Line to Victoria
Take District Line to Mile End
Take District Line to Bank
Take Circle Line to Bank
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Barbican
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Bayswater
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Baker Street
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Farringdon
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Embankment
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Blackfriars
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Moorgate
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Westminster
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Tower Hill
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Aldgate
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Edgware Road
Take Circle Line to Paddington
Take Circle Line to Bank
Take Circle Line to Bank
Take Northern Line to Mornington Crescent

इसे ऑनलाइन आज़माएं!

चूँकि आपको यह सब पढ़ने की उम्मीद है, इसलिए मुझे अपने दृष्टिकोण का त्वरित अवलोकन करने दें। मुख्य विचार पात्रों में से 3 प्रतियां स्टोर करने के लिए है N, E, S, Wसर्किल लाइन पर विभिन्न स्टेशनों बैंक के माध्यम से, पर - हैमरस्मिथ। इन पात्रों का निर्माण चेरिंग क्रॉस में एक स्टेशन नाम की शुरुआत से किया गया है। फिर,   माइल एंड और चेरिंग क्रॉस का उपयोग करते हुए एक अच्छी तरह से चुने हुए स्टेशन के नाम के बीच से निर्माण करें , और इसे बैंक में स्टोर करें ताकि इसे हेमर्समिथ में एकत्र किया जा सके। अंत में, पैडिंगटन में एक-एक करके वर्णों को संक्षिप्त करें, उन्हें बैंक - हैमरस्मिथ के माध्यम से फिर से कॉपी करें यदि उन्हें बाद में पुन: उपयोग करने की आवश्यकता है।


मुझे लगता है कि वर्तमान समाधान इस रणनीति के साथ इष्टतम के काफी करीब है, कम से कम स्टेशनों की संख्या के संदर्भ में: केवल 2 बार मैंने एक स्टेशन का उपयोग केवल पारगमन के लिए किया था:

  1. सेवन सिस्टर्स के लिए (विक्टोरिया स्टेशन के माध्यम से)
  2. और मॉर्निंगटन क्रिसेंट (बैंक के माध्यम से) को वापस पाने के लिए।

अन्य सभी स्टेशन विज़िट थे, अगर मैं एक को नहीं भूलता था, तो स्टेशनों की क्षमता का उपयोग करते हुए कुछ उपयोगी या (कुछ) का भंडारण / पुनर्प्राप्ति करना।

लाइन की लंबाई के लिए, मैंने सर्कल लाइन पर सबसे छोटे नामों को चुनने की कोशिश की है, लेकिन वहां एक मामूली सुधार हो सकता है। यह संभव है कि जिले पर कुछ भंडारण कुछ बाइट्स से दूर कर सकता है।


दो विचारों को यह और अधिक गोल्फ के लिए: 1. 'एनई', 'एसडब्ल्यू', 'एनडब्ल्यू', 'एसई' को एक ही स्टेशन से लें (उदाहरण के लिए Neएशडेन, Swआईएसएस कॉटेज, एक्टन टू wnऔर मेंशन हौ se) का उपयोग करके 2. शोषण करने का प्रयास करें। तथ्य यह है कि पैडिंगटन के बजाय `डब्ल्यू` को संक्षिप्त करना आसान बनाता है W । इसके लिए पैडिंगटन को 'रिफ्रेश' करने के लिए कुछ और ओवरहेड की आवश्यकता होती है, इसलिए यह कुछ हासिल नहीं कर सकता है।
छिपकली

4
क्या यह डॉलिस हिल लूप नियमों का उपयोग करता है? यदि ऐसा है, तो मुझे लगता है कि यह एक Argyle स्ट्रीट parabola के उपयोग से सुधारा जा सकता है, और शायद वेब-एलिस प्रोटोकॉल का थोड़ा संशोधित संस्करण भी।
रिचर्ड वार्ड


24

ब्रेनफक , 142 139 131 119 बाइट्स

++++++++++[>+++>+++++++>++++++++>+++++++++<<<<-]>>>--.<<++.>>.<-.<.>.<.>>+++++.<.<.>>.<<.>>.>---.<<<.>>>.<<<.>>-----.>.

इसे ऑनलाइन आज़माएं!

बस 30, 70, 80 और 90 के साथ कोशिकाओं को भरने के लिए 10 बार लूप करता है और फिर आगे और पीछे के चरणों को समायोजित करता है और आवश्यक मूल्यों को प्रिंट करने के लिए सेल मानों को समायोजित करता है। मानक "हैलो वर्ल्ड!" से बहुत अलग नहीं है।


7
योग्य मैंने कभी नहीं समझा कि कोई भी इन अस्पष्ट भाषाओं को "गोल्फ" कैसे कर सकता है। यह समझने के लिए पर्याप्त कठिन है कि कोड पहली जगह में क्या करता है (यह C ++ / Java पृष्ठभूमि से आने वाला है)
mackycheese21

10
@ mackycheese21 क्या? सी ++ ने आपको सूचक हेरफेर से प्यार करना नहीं सिखाया?
कैंडिड_ओरेंज

12
brainfuck गूढ़ हो सकता है, लेकिन मुझे यकीन है कि इसे अस्पष्ट नहीं कहा जाएगा
असंबंधित स्ट्रिंग

3
@candied_orange C ++ ने मुझे सूचक हेरफेर से नफरत करने और जब भी किसी ने std का उल्लेख किया है, तो भागना सिखाया :: :)
mackycheese21

1
@UnrelatedString अस्पष्ट, नहीं। मोटापा, हाँ।
रिच




10

एक्सेल फॉर्मूला, 59 57 बाइट्स

निम्नलिखित को एक सरणी सूत्र ( Ctrl+ Shift+ Enter) के रूप में दर्ज किया जाना चाहिए :

=SUBSTITUTE(ADDRESS(1,{14,369,5,499,19,517,23,387},4),1,)

सरणी सूत्र के रूप में सूत्र में प्रवेश करने के बाद, इसे सूत्र पट्टी में हाइलाइट करें और F9परिणाम के लिए इसका उपयोग करके मूल्यांकन करें , उदाहरण के लिए:

इससे पहले:
सूत्र मूल्यांकन से पहले

उपरांत:
सूत्र मूल्यांकन से पहले

यह काम किस प्रकार करता है

ADDRESSसमारोह एक स्ट्रिंग दो मापदंडों के आधार पर एक संदर्भ का प्रतिनिधित्व करने देता है, rowऔर col। तीसरा पैरामीटर यह नियंत्रित करता है कि किस प्रकार का संदर्भ वापस किया जाता है, एक पूर्ण या सापेक्ष संदर्भ। उदाहरण के लिए, =ADDRESS(1,2,4)रिटर्न "B1"

हम एक सरणी की आपूर्ति कर सकते हैं ADDRESSऔर एक सरणी सूत्र के रूप में इसका उपयोग कई परिणाम वापस करने के लिए कर सकते हैं, उदाहरण के लिए =ADDRESS(1,{1,2,3},4)रिटर्न "A1","B1","C1"

इसलिए, मेरे जवाब में, आपूर्ति की गई सरणी ADDRESSआवश्यक कम्पास बिंदुओं से संबंधित स्तंभ संख्याएं हैं, जैसे स्तंभ 14 स्तंभ है N, स्तंभ 369 स्तंभ है NE

हालांकि, हम यहाँ ख़त्म नहीं होते हैं, क्योंकि सभी लौट आए संदर्भ उदाहरण के लिए, पंक्ति शामिल है, N1, NE1। इसलिए, हम बस सभी संदर्भों SUBSTITUTEको हटाने के लिए उपयोग करते हैं 1


1
=IF(1,"N NE E SE S SW W NW")मान्य होगा ?
मोनिका

3
@squid हाँ यह वास्तव में होगा! हालाँकि, मैं एक विकल्प के लिए जा रहा था जिसके लिए स्ट्रिंग को शब्दशः उद्धृत करने की आवश्यकता नहीं थी।
i_saw_drones

यह कैसे काम करता है?
एनाटॉलीग

@anatolyg मैंने एक स्पष्टीकरण अनुभाग जोड़ा है, आशा है कि यह समझ में आएगा।
I_saw_drones


7

चारकोल , 14 बाइट्स

”{⊟“�_Zn↖⦄RüΦ≦

इसे ऑनलाइन आज़माएं! लिंक कोड के वर्बोस वर्जन के लिए है ... जो सिर्फ स्ट्रिंग को प्रिंट करने के लिए है, क्योंकि ऑटो-डिवर्बोसिफायर स्ट्रिंग संपीड़न का ख्याल रखता है।

स्ट्रिंग असम्पीडित मुद्रण में 19 बाइट्स लगते हैं, क्योंकि चारकोल प्रिंट करने योग्य ASCII का शाब्दिक रूप से प्रिंट करता है। सबसे अच्छा एल्गोरिथम उत्तर मैं दुर्भाग्य से 20 बाइट ले सकता है:

E⁸ΦSNWE›³﹪⁻﹪⁺⁵×⁶μχι⁸

इसे ऑनलाइन आज़माएं! सरणी प्रारूप का उपयोग करने वाले आउटपुट (रिक्त स्थान पर तत्वों को शामिल करने के लिए दो बाइट्स खर्च होंगे)। यह देखते हुए काम करता है कि स्ट्रिंग के अक्षरों का SNWEउपयोग केवल तब किया जाता है जब वर्तमान बाहरी सूचकांक बराबर होता है या सूचकांकों की सूची के संबंधित तत्व से दोनों दिशा में 1 दूर (मोडुलो 8) होता है 4,0,6,2


7

ब्रेनफक , 117 बाइट्स

+++++[>++++++>+>+++>>++++>+++++<<<<<<-]>++[>++>++>+>++>++[<]>-]>>-.>.<.<.>>.<<.>>.>-.<<<.>>.>.<.>.>--.<<.>>.<<.<.>>>.

इसे ऑनलाइन आज़माएं!

यह कोड पहले अक्षर "EN SW" को मेमोरी में बनाएगा और फिर उन्हें प्रिंट करने के लिए आगे-पीछे करेगा। अंतरिक्ष बीच में है, क्योंकि यह सबसे अधिक बार मुद्रित होता है। एन और एस और डब्ल्यू और ई कभी एक साथ दिखाई नहीं देते हैं इसलिए वे स्मृति के विपरीत पक्षों पर हैं। अनुकूलन के लिए आउटपुट के चरण के दौरान कुछ अंतिम गिरावट होती है।


1
ठीक है, यह एक अच्छा जवाब है। लगता है कि तुम मुझे इस पर हराया। -1 के लिए +1 :-)
ElPedro

1
BTW, कहने के लिए कोड गोल्फ साइट में आपका स्वागत है भूल गया। भविष्य में आपके साथ प्रतिस्पर्धा करने के लिए उत्सुक ☺
ElPedro

1
स्वागत हे! कार्यक्रम के लिए एक व्याख्या या एक ऑनलाइन दुभाषिया के लिंक को जोड़ने पर विचार करें। उदाहरण के लिए अन्य उत्तर देखें। लघु कोड-केवल उत्तर स्वचालित रूप से निम्न-गुणवत्ता के रूप में चिह्नित किए जाते हैं।
mbomb007

1
धन्यवाद, मैं अपने कोड का स्पष्टीकरण जोड़ सकता हूं। मैं यह भी समझने की कोशिश करूंगा कि ऑनलाइन लिंक कैसे काम करते हैं।
हेलेना

1
@ हेलेना लिंक के लिए आप मेरे उत्तर पर "ऑनलाइन प्रयास करें" लिंक देख सकते हैं। यदि आप अपना कोड पेस्ट करते हैं और उसे चलाते हैं तो आप लिंक आइकन पर क्लिक कर सकते हैं और पूरी तरह से प्रारूपित कोड गोल्फ उत्तर प्राप्त कर सकते हैं जिसे आप बस यहां कॉपी और पेस्ट कर सकते हैं। जादू की तरह काम करता है और कई भाषाओं का समर्थन करता है। एक कोशिश के लायक है।
एलपीड्रो


5

जेली ,  16  15 बाइट्स

“¤œỵpq⁵’ṃ“NESW 

पाठ को प्रिंट करने वाला एक पूरा कार्यक्रम

इसे ऑनलाइन आज़माएं!


16 ...

“¥Þ¡¦¢¬£æ‘ṃ“¡ɱ⁻»

एक निलादिक लिंक जो (लोअरकेस) वर्णों की सूची की उपज देता है।

इसे ऑनलाइन आज़माएं!


वैकल्पिक 15 एक निलादिक लिंक के रूप में, जो (लोअरकेस) वर्णों (रिक्त स्थान के साथ) की एक सूची देता है “¡XÇŀqỵÑ’ṃ“¡⁴ṁ»:।


5

कमोडोर BASIC (TheC64Mini, C64, C128, VIC-20 आदि) 28 इस्तेमाल किए गए बेसिकली बाइट्स

 0 PRINT"N NE E SE S SW W NW

कमोडोर बेसिक में, आपको बंद करने के उद्धरण चिह्नों पर PRINTया LETबयानों की आवश्यकता नहीं है क्योंकि दुभाषिया इसे ऑटो-बंद कर देगा, यह एक बेसिक टोकन बचाता है।

वैकल्पिक रूप से, कोई इस प्रकार प्रत्यक्ष मोड का उपयोग कर सकता है:

कमोडोर बुनियादी 23 PETSCII अक्षर (+ RETURNनिष्पादित करने के लिए)

?"N NE E SE S SW W NW

मुझे यकीन है कि कैसे दुभाषिया के अनुसार के रूप में इस उदाहरण में उपयोग बाइट्स की संख्या की गणना करने के लिए नहीं कर रहा हूँ ?और PRINTबाइट्स की एक ही नंबर का उपयोग, और वहाँ स्मृति में संग्रहीत कोई कार्यक्रम है।


1
PRINT?चार बाइट की बचत के साथ ही बदला जा सकता है ।
जेम्स

1
नहीं, ये सच नहीं है; PRINTऔर ?बेसिक टोकन की एक ही राशि का उपयोग करें। मैं PETSCII के पात्रों की गिनती नहीं कर रहा हूँ क्योंकि यह दुभाषिया द्वारा उपलब्ध स्मृति का कितना उपयोग किया जा रहा है इसका बहुत प्रतिनिधि नहीं है।
शॉन बेबरर्स

1
इन सभी वर्षों के बाद मैं अभी भी कमोडोर के बारे में नया सामान सीख रहा हूं। धन्यवाद शॉन! c64-wiki.com/wiki/BASIC_token
जेम्स

यहाँ एक है जो मैंने पहले (C64 के लिए) बनाया था -> pastebin.com/NMYzTC7k
शॉन बेबर्स

4

जाप , 16 बाइट्स

लोअरकेस स्ट्रिंग्स की एक सरणी देता है। संपीड़ित स्ट्रिंग 18 बाइट्स थी, लेकिन aइसके बजाय सीमांकक के रूप में उपयोग करना और फिर उस पर काम करना कम हो गया।

`nÂà!Z°°nw`qa 

इसे आज़माएं - पाद लेख आउटपुट को प्रारूपित करता है।


4

डेडफिश ~ , 138 बाइट्स

{{i}i}c{{d}}cs{i}c{d}ic{{d}}iisicsic{{d}}iisicisddddddc{d}ddddc{{d}}iisicisddddddc{{iiii}}sicisddddddciiiic{{d}d}icisddc{{d}d}ics{i}c{i}dc

इसे ऑनलाइन आज़माएं!

इसलिए, न्यूलाइन्स के साथ लोअर-केस में आउटपुट डिफॉल्ट (स्पेस के साथ अपर-केस) से बेहतर है।

यह कोड मेरे ऑप्टिमाइज़र द्वारा जनरेट किया गया था, C ++ में लिखा गया था ( एक और अनुकूलन विचार के लिए स्क्वीड करने के लिए धन्यवाद !)।

#include <iostream>
#include <string>
#include <queue>
#include <vector>


int eval(const std::string& actions, int result)
{
    int mult = 1;

    for (int i = 0; i < (int)actions.length(); ++i)
    {
        switch (actions[i])
        {
        case 's':
            result *= result;
            if (result == 256)
                result = 0;
            break;

        case '{':
            mult *= 10;
            break;

        case '}':
            mult /= 10;
            break;

        case 'd':
            if (result > 256 && result - mult <= 256)
                result = (result - mult) % 256;
            else
                result -= mult;
            break;

        case 'i':
            if (result < 256 && result + mult >= 256)
                result = (result + mult) % 256;
            else
                result += mult;
            break;
        }
    }

    return result;
}

struct worse
{
    bool operator()(const std::string& a1, const std::string& a2)
    {
        return a1.length() > a2.length();
    }
};

std::string BestStr(int accumulator, int target)
{
    std::priority_queue<std::string, std::vector<std::string>, worse> actions;
    actions.push(std::string(""));
    while (true)
    {
        std::string a = actions.top();
        int new_acc = eval(a, accumulator);
        if (new_acc == target)
            return a + "c";

        actions.pop();

        int last_braces = 0;
        int i = a.length() - 1;
        while (i >= 0 && a[i] == '}' && last_braces < 2)
        {
            ++last_braces;
            --i;
        }
        bool is_last_i = (i >= 0 && a[i] == 'i');
        bool is_last_d = (i >= 0 && a[i] == 'd');
        bool may_add_braces = (i < 0 || a[i] == 's');
        bool may_add_c = (new_acc > 1 && new_acc < 30);

        if (may_add_c)
        {
            actions.push(a + "s");
        }
        if (may_add_braces)
        {
            actions.push(a + "{{}}");
            actions.push(a + "{}");
        }
        for (int braces_back = 0; braces_back <= last_braces; ++braces_back)
        {
            for (int c = 'd'; c <= 'i'; c += 'i' - 'd')
            {
                if ((!is_last_i || c == 'i') &&
                    (!is_last_d || c == 'd') ||
                    braces_back == 0)
                {
                    std::string new_actions = a;
                    new_actions.insert(new_actions.length() - braces_back, 1, (char)c);
                    actions.push(new_actions);
                }
            }
        }
    }
}

std::string DeadfishConvert(std::string s)
{
    std::string result;
    int accumulator = 0;

    for (int c: s)
    {
        result += BestStr(accumulator, c);
        accumulator = c;
    }
    return result;
}

int main()
{
    std::string s1 = DeadfishConvert("N NE E SE S SW W NW");
    std::cout << s1 << '\n';
    std::cout << s1.length() << '\n' << '\n';
    std::string s2 = DeadfishConvert("n ne e se s sw w nw");
    std::cout << s2 << '\n';
    std::cout << s2.length() << '\n' << '\n';
    std::string s3 = DeadfishConvert("N\nNE\nE\nSE\nS\nSW\nW\nNW");
    std::cout << s3 << '\n';
    std::cout << s3.length() << '\n' << '\n';
    std::string s4 = DeadfishConvert("n\nne\ne\nse\ns\nsw\nw\nnw");
    std::cout << s4 << '\n';
    std::cout << s4.length() << '\n' << '\n';
}


4

बैच फ़ाइल, 19 बाइट्स

प्रश्न ने कभी नहीं कहा कि आपको आउटपुट करना था N NE E SE S SW W NWऔर कुछ नहीं, और यह कि यह त्रुटि के कारण बाहर नहीं निकल सका ऐसा करने के बाद यह कोड केवल एक त्रुटि फेंकता है लेकिन इसके कारण बाहर नहीं निकलता है।

N NE E SE S SW W NW

उत्पादन

>N NE E SE S SW W NW
'N' is not recognized as an internal or external command,
operable program or batch file.

बैच फ़ाइल, 25 बाइट्स

N NE E SE S SW W NWबिना किसी त्रुटि या क्रैश के केवल आउटपुट।

@echo N NE E SE S SW W NW

आप एक बाइट को सीडी की जगह सिर्फ उद्धरण के साथ बचा सकते हैं, जैसे 'N NE E SE S SW W NW'- आपको कुछ मिलेगा: N NE E SE S SW W NW - command not found
डेवी मोर्गन

4

पायथन 2, 59 बाइट्स

''.join(' SEWN'[0xe0619042210504>>i*3&7]for i in range(19))

जादू संख्या वर्ण स्ट्रिंग में तीन-बिट इंडेक्स में शामिल हो गई है, रिवर्स ऑर्डर ताकि हम एलएसबी पर पुनरावृत्ति शुरू कर सकें।


मैंने जादू की संख्या को कम करने की कोशिश करते हुए कुछ समय बिताया, लेकिन अतिरिक्त अनुक्रमित के लिए अनुमति देने के लिए गुणा के माध्यम से चरित्र स्ट्रिंग को दोहराते हुए अंतरिक्ष के लिए एन्कोड करने की आवश्यकता के कारण काम नहीं करता है - सबसे अच्छा मुझे लुकअप में अनुक्रमित अतिव्यापी के लिए मिला और अधिक वर्ण जोड़े गए मैजिक नंबर से हटाए गए स्ट्रिंग की तुलना में स्ट्रिंग (बीच में दुर्भाग्यपूर्ण कार की एक जोड़ी सहित):

''.join('WN S ES W xxE '[0x423659711>>i*2&15]for i in range(19))

जब आप इसे जटिल बना सकते हैं तो ir को सरल क्यों बनाते हैं? :-)
जीबी

4

के (ngn / k) , २३ २२ बाइट्स

-1 बाइट धन्यवाद ngn करने के लिए!

"WNES"@5\7108085518230

इसे ऑनलाइन आज़माएं!

जे , 34 30 बाइट्स

echo(#:3510)<;.1'NNEESESSWWNW'

इसे ऑनलाइन आज़माएं!


गैलेन, जे गूंज के लिए शाब्दिक छोटा होगा। मुझे उस मार को देखना अच्छा लगेगा ... मैं ऐसा करने में कामयाब नहीं हुआ
जोना

1
हां, गूंज 4 + 19 बाइट्स होगी। मेरे पास कोई बेहतर विचार नहीं है।
गैलेन इवानोव

1
k: यदि हम स्वैप करते हैं " "<-> "W"( 0<-> 4बेस 5 में), तो अंतरिक्ष अंत में होगा और हम इसे निकाल सकते हैं क्योंकि आउट-ऑफ-बाउंड स्ट्रिंग इंडेक्सिंग को वैसे भी एक स्थान देता है:"WNES"@5\7108085518230
ngn

@ng धन्यवाद!
गेलन इवानोव

1
@GalenIvanov शीर्ष प्रदर्शन डेटाबेस के लिए भी अच्छा है :) arthur kdb +
ngn


3

ब्रेकीलॉग , 19 बाइट्स

"NNEESESSWWNW"ḍ₄ḍᵐc

इसे ऑनलाइन आज़माएं!

सूची के रूप में आउटपुट। ḍ₄ḍᵐcसात स्थानों को लिखने और एक स्ट्रिंग को शाब्दिक रूप से पूरा करने के लिए दो बाइट्स बचाता है, इसलिए कम से कम यह PHP को टाई करता है ...

"NNEESESSWWNW"         The string "NNEESESSWWNW"
              ḍ₄       split into quarters
                 ᵐ     with each quarter
                ḍ      split in half
                  c    and concatenated
                       is the output.

मैं के साथ चालाक होने की कोशिश की 3⟦{;"NESW"↺₍h₂a₀ᶠ}ᵐc, लेकिन यह एसई या एनडब्ल्यू सही नहीं हो सकता है, और किसी भी तरह से एक बाइट है।


3

व्हॉट्सएप , 151 बाइट्स

[S S S T    T   N
_Push_3_W][S S T    T   T   S N
_Push_-6_N][S S T   T   T   S T S S N
_Push_-52_space][S S S T    T   N
_Push_3_W][S T  S S T   N
_Copy_0-based_1st_(space)][S S S T  T   N
_Push_3_W][S S T    T   N
_Push_-1_S][S T S S T   S N
_Copy_0-based_2nd_(space)][S S T    T   N
_Push_-1_S][S T S S T   N
_Copy_0-based_1st_(space)][S S T    T   T   T   T   N
_Push_-15_E][S S T  T   N
_Push_-1_S][S T S S T   S N
_Copy_0-based_2nd_(space)][S T  S S T   S N
_Copy_0-based_2nd_(E)][S T  S S T   N
_Copy_0-based_1st_(space)][S T  S S T   N
_Copy_0-based_1st_(E)][S S T    T   T   S N
_Push_-6_N][S T S S T   S N
_Copy_0-based_2nd_(space)][S S T    T   T   S N
_Push_-6_N][N
S S N
_Create_Label_LOOP][S S S T S T S T S S N
_Push_84][T S S S _Add][T   N
S S _Print_as_character][N
S N
N
_Jump_to_Label_LOOP]

पत्र S(स्थान), T(टैब), और N(नई-पंक्ति) केवल हाइलाइटिंग के रूप में जोड़े गए।
[..._some_action]केवल स्पष्टीकरण के रूप में जोड़ा गया।

इसे ऑनलाइन आज़माएं (कच्चे स्थान, टैब और नई-नई लाइनों के साथ)।

स्पष्टीकरण:

  1. "WN W WS S ES E EN N" वर्णों के लिए यूनिकोड मान माइनस 84 को स्थिर रखें (ध्यान दें कि स्ट्रिंग को उलट दिया गया है)। इसके अलावा, मैं बाइट्स को बचाने के लिए पहले से धकेल दिए गए मानों की कुछ प्रतियों का उपयोग करता हूँ जहाँ संभव हो।
  2. फिर एक अनंत लूप शुरू करें, जो निम्न कार्य करता है:
    1. वर्तमान यूनिकोड मान के लिए निरंतर 84 जोड़ें
    2. इसे STDOUT के चरित्र के रूप में प्रिंट करें

निरंतर 84द्वारा उत्पन्न होता है यह जावा प्रोग्राम जो मैं एक और चुनौती मैं श्वेत रिक्ति में जवाब के लिए लिखा था


3

मैथॉल्फ , 20 17 बाइट्स

ÿnesw▒∙╫m+mÉîÄ╪^─

-3 बाइट्स @ maxb के लिए धन्यवाद ।

इसे ऑनलाइन आज़माएं।

स्पष्टीकरण:

ÿnesw      # Push 4-char string "nesw"
           #  STACK: "nesw"
          # Split to a list of characters
           #  STACK: ["n","e","s","w"]
          # Triplicate it
           #  STACK: ["n","e","s","w"],["n","e","s","w"],["n","e","s","w"]
          # Rotate the top one once towards the left
           #  STACK: ["n","e","s","w"],["n","e","s","w"],["e","s","w","n"]
 m+        # Append the top two together
           #  STACK: ["n","e","s","w"],["en","se","ws","nw"]
   m       # Map the strings in the top list to:
    ÉîÄ╪   #  Rotate the string the 1-based index amount of times towards the right
           #   STACK: ["n","e","s","w"],["ne","se","sw","nw"]
^          # Zip; creating pairs with the top two lists
           #  STACK: [["n","ne"],["e","se"],["s","sw"],["w","nw"]]
          # Flatten this list
           #  STACK: ["n","ne","e","se","s","sw","w","nw"]
           # (after which the entire stack is output implicitly as result)

1
17 बाइट्स । यह एक मजेदार चुनौती थी। मैंने इसे पहले भी आजमाया था, लेकिन आपने जहां किया, वहीं समाप्त हो गया। मुझे लगता है कि आप इससे सबसे अधिक कर सकते हैं 1 बाइट अधिक है, लेकिन मैं एक छोटा रास्ता नहीं खोज सका।
अधिकतम

@ मक्सब आह अच्छा तरीका। मुझे यह स्वीकार करना चाहिए कि ब्लॉक-आकार X ( Éऔर Äइस मामले में) के कोड अब भी मुझे कभी-कभी थोड़ा भ्रमित करते हैं .. कभी-कभी मुझे यकीन नहीं होता है कि मुझे उन कोड-ब्लॉकों का उपयोग करना है या नहीं। आपका m+एक उदाहरण के लिए उपयोग नहीं करता है। लेकिन आपका Äआकार 1 का एक कोड-ब्लॉक है। मैंने mÅî╪अभी तक यह देखने की कोशिश की कि क्या हुआ, यही कारण है कि अब मुझे समझ में आया कि आकार 1 का कोड-ब्लॉक क्यों है Ä। :)) -3 बाइट्स के लिए धन्यवाद, यद्यपि। अभी भी बहुत कुछ सीखने के लिए मैं देख रहा हूँ।
केविन क्रूज़सेन

1
अच्छी व्याख्या! मैंने इसे वर्णों की सूची में परिवर्तित किए बिना एक समाधान करने की कोशिश की, लेकिन ज़िप आदेश थोड़ा विस्की था। कोड ब्लॉक के लिए, उन्हें प्रतिस्थापन के रूप में सोचें, जिनके बजाय इसका उपयोग किया जाता है {}mÅî╪मैपिंग बनाता है, लेकिन इसमें मैपिंग के अंदर एक लूप नहीं है। यदि आप लिखते हैं m{î{╪}}, तो यह देखना आसान है कि कोड "मैप टू: लूप <इंडेक्स> बार है, और स्ट्रिंग को प्रत्येक लूप को घुमाएं"। m+एक के पास नहीं होने का कारण यह है कि कुछ आदेशों में 1-बाइट ब्लॉक (मानचित्र, फ़िल्टर, कम, आदि) निहित हैं, लेकिन îएक ब्लॉक के साथ संयोजन में उपयोग करने के लिए एक कमांड का मतलब नहीं है।
अधिकतम

1
@ मैक्सब मुझे वास्तव में पता था कि कोड-ब्लॉक का एक छोटा संस्करण था {...}, लेकिन मैं भूल गया था integer{कि फॉर-लूप है। :) अब îÄ╪एक बहुत अधिक समझ में आता है। स्पष्टीकरण के लिए धन्यवाद!
केविन क्रूज़सेन

2

सीएसएस , 42 39 बाइट्स

(संशोधित संस्करण के लिए एक पत्थर के लिए धन्यवाद)

body:after{content:"N NE E SE S SW W NW"


1
-3 बाइट्स:body:after{content:"N NE E SE S SW W NW"
एक पत्थर arachnid

ओह, मैं भूल गया, यह भी अच्छी तरह से मान्य है, अपडेट किया गया :)!
रोबर्रर्ट-एस

2

बीज , 6014 बाइट्स

27 32429737401852232227804295321578416370544555457622262891879921280324727410131817586348135470079420921373938348260737299348550007805068404867624897650263347568409592608258945989033792510474363164709158118555665232935403908551415888090695760298337219819413274977014408722140235669339108001709528995376914900494019798521214727367535169036319615676199584661126257462974800782884967804763256678000063025237472650538076831876942979826335539886276642624472204985016283691316313249488093825552581263195700506490263014623798470563718844847334940964632636436478404543496272112184140337568637349767918641524452384959486975049813859244670160569884744538279036643294867674161431756929550170395739925307134312406291063668809195567313928307910934660574895433141956111513050736041440669472422865481546405020220238818265794921314653725749392385549924210837964649297239381603259476675148489582680939048820717739905271461370132524025785160026801625672272913416389786086946626728842588663673416395169524016926695769334183833366462685756958054189820999370092892855665559717806826530952610964256124463840218293029538229042911551526509745973128558291005365222643503139067010483637086697955919587162384655443959408291567894061028044826636171014388153130769792397282335858985323269310727311039012381122390183102126191168963870116881629339035600546009305431793687183913979054151312200573069395058914262857368132993952655571167118263728070696377852599343989848263167312887211748226689125561718255196655446099711296568221690530717651328503948183228932786503716890383195810396161663632504174142420921735055441162618914957825032056019218584287089599270312541933094119409995775035365862244691419255488688879630142415739738796957474249592086989231999568273454247198389863139439897248192949030226324637037937607004428557202644332945222019553599908855943840883606735602486216245714280716148378430738983808375466562604692991701163078094015860708365913183037140180020776525026891135163345427911749533164462233906885068864798951466382247930357444595606617682531499045805835102155190109668901179666311163071611393282924908189215675892953256826649762594463293867383921972181952997833560371571545190945543033351108064265894854803319008655145213765667074789305055723258530694850418765677462165413557272747961130459219342146615095862014137406489375157766959799291089215740196734079295172946350338663239451562589633216908805028629767462044463310475859283605554743731396818983359527612902567406307270838160926586311672252276690909354125055468912844343806046309796590149977323343332039095076680537362333773750051043281967620781236684580688649899599894791764969639275247700776637892615729757899608628514791667795106390376246890330575517824338764219021396958188958235055290896924249770944905659304681507478975095888248103169710912376599445302527257479613158446721050489233911736089191439017996962182413511012900366501119556105789078275149705515012300827868862038071066912823449506913958912235923323638505757204526506327010926007595704417253684932596231606733027284263178479840785607928320603259662026791082244015829365605451084366715394628351636563955621161378688550003390556445245074739462307110100863024184316465734324401688465928827408449165190271528329602702373730346394803239394173490819727873116531045433457650881080122796159241596543253982402471104065237941729677594379317274541529006952959000152687275974001138315010176843925599438278290218390644740919129323109582279220437886915496736885058271413958305953151184342725824729076581370881383360210631877985352671536000503948280559301633936877162466145026758809907939645467704805892486147550057845773849575278620555906080753862688722846292689494961297512113753414009189522365247542490200336579292488067953461299023326925661887077747288500270026888774635820948696015812357241781814592351848858954139716506111479475207696790949277211077720834891880913260866501916732427370806066035548982017315826213049658915419681842381914237502216614528174237875875738156132703973666564945026254499265910704148825037630761619650949635972980035630316257135212349181639940504547722767898302879234673272154028964478458469466250102554612059368293497511404163963705442187242769706586819405113285219700159125119338601931670779192478917206878107091618448093140705173062420040261126935373689918208815797991761563304607704283868972915636425613833785564679990574095368828308776724486415005128506687942819070129022911666887363253202695416103545769073021185132010920185208632024811337544715055406031297413168802089421761798020616230024290524096396092608042069087607272534874457093977610919233750725135220581682913316085638068663247820037223692942067994551786014033707387642820855601334002540339334606906772532939337779748305357112540312103757754695577077583846897693527091162962000082213332051059005644562753372638247584982354478224403477604356150912451128591138652721098074872513196253790561736352841309810909110001754673250730698454675988798465247376421075019414107337634079281061629221783859449063069175434073835673063716565555614782886016441814199915418848976070834414782427725187820926042778984081922550398210353288229598805397201850487997254871012213762289412828417039945896819359898337616122446201299182152276549340911589671291124887672310931868023491872685227548726494469798568145715500153324646857181224645073236602344526749192704938665584870007079941922775292601106345725659322322536675461008337648982039319953181733660980694781559207671567197161027796266390879206526082137700937056380629087949633487181507979286568656291044492869916694352395542638882544967807857391058161838343109606346401310155771709714142586733985703451391374159045025205718989407293651441039802247981386993858491342422355232055341447145969376687615001834650283116652856369804298047720786536278306210551862061566639283704928517998916884505819581251906693306116531467413995747910736025576089721150597919824878333808115757216261812226145636769545796913912159437533454858286778214791559458862216426856243544801486923659355580455048265633089421966932180992

बीफंगे कार्यक्रम के बाद उत्पन्न होता है:

"WN W WS S ES E EN N">:#,_@


2

असेंबली (x86, लिनक्स), 68 बाइट्स

$ od -x a
0000000 457f 464c 0001 0000 0000 0000 0000 0500
0000020 0002 0003 001b 0500 001b 0500 0004 0000
0000040 13b2 31b9 0000 cd05 2580 0020 0001 cd40
0000060 4e80 4e20 2045 2045 4553 5320 5320 2057
0000100 2057 574e
0000104
$ ./a
N NE E SE S SW W NW$

स्रोत:

BITS 32
org 0x05000000
db 127,"ELF"
dd 1,0
dd $$
dw 2,3
dd 0x0500001B,0x0500001B
dd 4
mov dl,19
mov ecx,m
int 128
db 37
dw 32,1
inc eax
int 0x80
m db 'N NE E SE S SW W NW'

कोड को "हैलो वर्ल्ड \ n" के लिए शॉर्टेस्ट ELF से लिया गया है ?


1

जेली , 16 बाइट्स

“æṖØq’ḃ⁴ḃ4ị“NESW

इसे ऑनलाइन आज़माएं!

अंतरिक्ष से अलग होने के लिए पाद लेख के साथ

एक निलादिक लिंक जो तार की एक सूची देता है। जेली में संकुचित स्ट्रिंग की तुलना में 2 बाइट्स छोटी (और यकीनन अधिक दिलचस्प)।


1

7
यह जावास्क्रिप्ट में भी काम करता है।
कैलक्यूलेटरफैनलाइन

फू के साथ बहुवचन।
कोई

'_' के अलावा और कौन से वर्णों की अनुमति है?
बुडा फ्लोरिन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.