पैटर्न में एक कार्यक्रम द्वारा राजसी उपसर्ग


16

आपको एक प्रोग्राम या फंक्शन लिखना चाहिए, जो द लिटिल प्रिंस के अध्याय I के जितना हो सके उतना आउटपुट या रिटर्न देता है । आपके प्रोग्राम या फंक्शन में एम-बाय-एन कोड होना चाहिए जिसमें केवल प्रिंट करने योग्य एससीआई अक्षर (32 से 126 तक कोडपॉइंट) और प्रत्येक पंक्ति के अंत में न्यूलाइन्स हों।

आप केवल 96 मुद्रण योग्य ascii वर्ण (और पंक्तियों के अंत में newlines) से अपने चयन के अधिकांश 26 वर्णों पर उपयोग कर सकते हैं ।

प्रत्येक पंक्ति और स्तंभ में प्रत्येक वर्ण एक सुडोकू पहेली के समान अलग होना चाहिए अर्थात दो बार पंक्ति या स्तंभ में कोई अक्षर नहीं हो सकता।

के साथ एक सही उदाहरण codeblock M = 4, N = 3और alphabet = {a,b,c,d,/,*}:

abcd
bcd*
*/ac

कोड विवरण

  • आप (यानी अपने कोड ब्लॉक के आकार चुन सकते हैं Mऔर N)।
  • ब्लॉक को पूरी तरह से वर्णों से भरना होता है अर्थात हर पंक्ति की लंबाई समान होती है।
  • अंतिम पंक्ति के अंत में एक अनुगामी न्यूलाइन वैकल्पिक है।
  • जैसा कि प्रत्येक पंक्ति और स्तंभ में ऊपर लिखा गया है, प्रत्येक वर्ण को अलग होना चाहिए।

आउटपुट विवरण

  • आपको किसी भी अतिरिक्त आउटपुट के बिना लिटिल प्रिंस के अध्याय I का एक उपसर्ग आउटपुट या वापस करना चाहिए ।
  • यदि आप पाठ में एक नई पंक्ति तक पहुँचते हैं, तो आप इसे किसी भी सामान्य संस्करण (\ r, \ n, \ r \ n) के रूप में प्रस्तुत कर सकते हैं, लेकिन उनमें से केवल एक का उपयोग करें और इसे स्कोर के रूप में 1 बाइट के रूप में गिनें।
  • एक अतिरिक्त अनुगामी न्यूलाइन वैकल्पिक है।

आपका स्कोर वर्तमान में एक अतिरिक्त newline को छोड़कर आउटपुट टेक्स्ट की लंबाई है । उच्च अंक बेहतर है।

उदाहरण उत्तर

##Python3, score = 6

alphabet = `print('O\ce w)#X` (alphabet element count = 16)

    print('O\
    nce w')#X

आप अपने कोड की वैधता की जाँच इस पायथन 3 (ideone) प्रोग्राम या इस CJam प्रोग्राम (ऑनलाइन) के साथ @ मार्टिनबटनर द्वारा प्रदान कर सकते हैं।


क्या यह प्रोग्राम का आकार 26x26 तक सीमित नहीं है?
मारिनस

@marinus हाँ यह करता है।
बेतरतीब

क्या आपको यकीन है कि यह सॉल्व है?
फूजएक्सएक्सएल

@FUZxxl प्रश्न में स्कोर 6 के साथ एक संदर्भ समाधान शामिल है। उम्मीद है कि प्रश्न इस तरह से डिज़ाइन किया गया है कि यह पूरी चीज़ को प्रिंट करना संभव नहीं है (या इसे टाई ब्रेकर की आवश्यकता होगी)।
मार्टिन एंडर

@ मार्टिनबटनर आह! मैं "... के एक उपसर्ग" के बारे में भूल गया।
फ़ूजएक्सएक्सएल

जवाबों:


4

CJam, 47

"Once wh
en Imwas
msix yea
r2s oldm
I "N-'m/
Sc*2s-O"
saw"N/SO
o'aS"m2 
a"Oo2s-N
-S/OI*so
'yI-a"nr
wiNadI"c
cel'iaIS
/m2*Oo'x
 I-scel*
Ooel'c 2
2/'e*ON-

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

वर्णमाला: "'*-/2INOSacdehilmnorswxy

स्पष्टीकरण:

"Once wh
en Imwas
msix yea
r2s oldm
I "         push this string
N-          remove newlines
'm/Sc*      replace m's with spaces (the c is redundant)
2s-         convert 2 to string and remove 2's
O           push an empty string
"
saw"        push this string
N/          split into lines (effectively removes the newline)
S           push a space
Oo          print empty string (no-op)
'a          push 'a'
S           push a space
"m2 
a"          push this string
Oo          print empty string (no-op)
2s-         convert 2 to string and remove 2's
N-          remove newline
S/          split by space (effectively removes the space)
OI*so       print an empty string repeated 18 times (no-op)
'y          push 'y'
I-          subtract 18 -> 'g'
a           wrap in array (string) -> "g"
"nr
wiNadI"     push this string
c           convert to (first) character -> 'n'
c           convert to character (no-op)
el          convert to lowercase (no-op)
'i          push 'i'
a           wrap in array (string) -> "i"
IS/         split " " into slices of length 18 -> [" "]
m           (acting as -) remove space strings from "i" (no-op)
2*          repeat "i" 2 times -> "ii"
Oo          print empty string (no-op)
'x          push 'x'
I-          subtract 18 -> 'f'
sc          convert to string and back to char (no-op)
el          convert to lowercase (no-op)
*           join "ii" with separator 'f' -> "ifi"
Oo          print empty string (no-op)
el          convert to lowercase (no-op)
'c          push 'c'
2 2/        divide 2 by 2 -> 1
'e          push 'e'
*           repeat 'e' 1 time -> "e"
O           push empty string
N-          remove newlines (no-op)

7

पिप , स्कोर = ३ 38

eyli:
"Once
when0
I was
si01x
year5
old I
0sMw1
1M 0"
X1RMh
Rnsxy
iR:'M
'aiR 
:5'si

वर्णमाला: "'015:IMORXacdehilnorswxy

(मुझे यकीन है कि वास्तविक प्रोग्रामिंग भाषा में इसे आज़माने के लिए नफरत होगी ।)

स्पष्टीकरण:

eyl      Statements consisting of single variables are no-ops
i:       Assign to i the following:
"Once
when0
I was
si01x
year5
old I
0sMw1
1M 0"    ...this string
X1       ...repeated once (no-op to get alignment right)
RMh      ...with all 1s and 0s removed (h is preinitialized to 100)
Rns      ...and all newlines replaced with spaces.
xy       More no-ops
iR:'M'a  Replace every M with a, assigning result back to i
iR:5's   Replace every 5 with s, assigning result back to i
i        Auto-print i

4

पायथन 3, स्कोर = 11

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

x=chr 
print(
"Once\
 when"
,x(73)
)#prin

ध्यान दें कि पहली पंक्ति के अंत में एक जगह है। एक से अधिक कॉलम में समाप्त होने वाले एक ही चरित्र से बचने के xलिए उपनाम chrआवश्यक है। अंत में टिप्पणी वर्ण लगभग कुछ भी हो सकता है।

वर्णमाला 21 मुद्रण योग्य वर्ण है, साथ ही नई रेखा (प्रारंभ में स्थान पर ध्यान दें):

 "#(),37=O\cehinprtwx

आउटपुट है:

एक बार जब मैं


ध्यान दें कि यह पायथन 2 में भी मान्य है। एक अच्छा जवाब खोजने पर grats।
mbomb007

3

सीजाम, स्कोर = 21

"Once wh
en I"N-o
N;S"was 
six y"N-

वर्णमाला: -;INOSacehinoswxy

बस गेंद लुढ़कने के लिए; यह शायद आसानी से पीटा जा सकता है।


2

सीजाम, स्कोर = 15

मुझे अभी कुछ समय के लिए यह विचार आया है, लेकिन जब तक मुझे आवश्यक स्तंभ विशिष्टता प्राप्त नहीं हो जाती, तब तक मेरे पास बैठने और चीजों को फेरने का समय नहीं है, इसलिए यहां अभी के लिए एक शिशु संस्करण है:

 79c32"*)+#,105468:;=>Ibef
,:=>Ibcef";7 6)#*219435+80
50I=>;9)6#*127438+ ":,bcfe
),68:>=Ibcef";20 5#*17394+
6)4*b123,97>:c"80f5=+;e# I
"9>+f=e# ),*0481362bI:;5c7

वर्णमाला (26): " #)*+,0123456789:;=>Ibcef

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

व्याख्या

मूल विचार आधार एन्कोडिंग का उपयोग करना है ताकि हम 26 से अधिक प्रकार के वर्णों को प्रिंट कर सकें। कोर कोड है

79c                             e#  Push "O"
85032995607801617394 28b        e#  Push array of indices, encoding using base 28
123,97>:c" I                    e#  Push "abcdefghijklmnopqrstuvwxyz I\n"
"+
f=                              e#  Map indices to chars

ध्यान दें कि हम पहले इलाज "O"के लिए "Once"अलग से क्योंकि हमारे स्ट्रिंग में शामिल बहुत ज्यादा हमारे वर्णमाला के ले जाएगा। यदि हम चाहते थे कि हम अपनी अनुक्रमणिका को विस्तारित करने का प्रयास कर सकें, लेकिन चूंकि कुछ अधिक अपरकेस वर्ण कुछ समय के लिए नहीं होते हैं, इसके अलावा "I"मैं इससे बहुत अधिक परेशान नहीं था।

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

32
7 6) # * 219435 +
9) 6 # * 127438 +
20 5 # * 17394 +

जहां )वेतन वृद्धि है और #CJam में प्रतिपादक है।

फिर बाकी (सबसे कष्टप्रद हिस्सा) स्तंभ मानदंड को पूरा करने के लिए प्रत्येक पंक्ति को पैडिंग कर रहा है। ऐसा करने के लिए हम तार को तार में डंप करते हैं और ;उन्हें पॉप करने के लिए उपयोग करते हैं। दुर्भाग्य से, जबकि हम e#टिप्पणियों के साथ-साथ चीजों को आसान बनाने के लिए उपयोग करना बहुत पसंद करेंगे, तथ्य यह #है कि घातांक यह मना करता है, इसलिए यह केवल अंतिम पंक्ति पर किया जाता है।

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


1

पायथन 2, स्कोर = 13 (अमान्य)

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

print"Once wh\
en I",#Oncehtp
chr(0167)#Onwt

वर्णमाला (22): "#(),0167IOcehinprtw

आउटपुट: Once when I w


आपकी पहली पंक्ति अमान्य है, क्योंकि इसमें दो ns हैं। पायथन में यह समस्या लगभग असंभव है, क्योंकि आप केवल एक बार लाइन सक्सेस बैकस्लैश का उपयोग कर सकते हैं (चूंकि बैकस्लैश को आखिरी कॉलम में होना चाहिए) और किसी भी लाइन में एक ही तरह के उद्धरण चिह्न नहीं हो सकते हैं।
ब्लैंकनथ

@ ब्लेकन्थ आह, मुझे वह याद आया। हाँ। मेरा जवाब शायद ओपी के उदाहरण से बेहतर नहीं होगा ...
mbomb007
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.