इंस्क्रिप्टो लेबिरिंथिका


22

ऑस्टुरियस के राजा साइलो के दफन स्थान पर एक शिलालेख है जिसमें एसआईएलओ प्रिंसेप्स एफईसीआईटी ( राजा साइलो ने इसे बनाया ) को पढ़ा है

साइलो प्रिंट्स FECIT

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

इनपुट

एक स्ट्रिंग ( या समतुल्य ), और एक पूर्णांक। आप इनपुट के बारे में निम्नलिखित अनुमान लगा सकते हैं:

  • स्ट्रिंग की एक विषम लंबाई होगी।
  • पूर्णांक एक विषम संख्या के बीच 1 और स्ट्रिंग की लंबाई के दोगुने से कम होगा।

उत्पादन

ऊँचाई या चौड़ाई के लिए पूर्णांक का उपयोग करके स्ट्रिंग के लिए एक इंस्क्रिप्टस्क्रिप्ट लेबिरिंथिका (ऊँचाई उदाहरणों के लिए मॉडल देखें)। आउटपुट प्रत्येक अक्षर होना चाहिए जिसमें कोई रिक्त स्थान नहीं हो, लाइन ब्रेक आपके सिस्टम / भाषा के लिए डिफ़ॉल्ट हो।

परीक्षण के मामलों

ध्यान दें कि 1 या (लंबाई * 2 - 1) के इनपुट के परिणामस्वरूप एक क्षैतिज या ऊर्ध्वाधर पैलिंड्रोम होगा।

 Input: FOO, 3    Input: BAR, 1    Input: BAR, 3    Input: BAR, 5

Output: OOO      Output: RABAR    Output: RAR       Output: R
        OFO                               ABA               A
        OOO                               RAR               B
                                                            A
                                                            R

 Input: ABCDE, 5   Input: ABCDE, 3   Input: *<>v^, 5

Output: EDCDE     Output: EDCBCDE           ^v>v^
        DCBCD             DCBABCD           v><>v
        CBABC             EDCBCDE           ><*<>
        DCBCD                               v><>v
        EDCDE                               ^v>v^

स्कोरिंग

यह इसलिए बाइट्स में सबसे कम जवाब जीतता है। मानक खामियों को मना किया।



क्या इनपुट में रिक्त स्थान हो सकते हैं? यदि हां, तो उन्हें कैसे संभाला जाना चाहिए?
नाइट्रॉडन

1
क्या हम इनपुट को पात्रों की सूची के रूप में ले सकते हैं?
रॉबिन राइडर

1
@Charlie स्पष्ट रूप से आप मेरे सभी Perl6 उत्तरों को याद कर रहे हैं :-) मुझे आपसे एक उत्तर की भी उम्मीद है क्योंकि यह स्पेन के पांचवें राजा से प्रेरित है (खैर, एस्ट्रोस के , लेकिन एस्टिस यू एस्पाना, y त्लो डेस तु तियरा विजयवर्गीय हाहा)
user0721090601

1
क्या हम ऊंचाई के बजाय चौड़ाई ले सकते हैं?
अटारीट

जवाबों:


6

जे , 27 बाइट्स

([{~]+/&(|@i:)#@[-1+])-:@<:

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

एक उदाहरण उच्च-स्तरीय दृष्टिकोण को स्पष्ट करेगा।

विचार करें 'ABCDE' f 3

हम देखते हैं कि हम जो चाहते हैं, वह है "क्रॉस एडिशन" 1 0 1और 3 2 1 0 1 2 3, जो इस तरह दिखता है:

4 3 2 1 2 3 4
3 2 1 0 1 2 3
4 3 2 1 2 3 4

हम फिर उन स्ट्रिंग को मूल स्ट्रिंग से खींचते हैं [{~:।

बाकी सभी कोड सिर्फ उबाऊ अंकगणित और i:तर्कों का निर्माण करने के लिए उपयोग हैं 1 0 1और 3 2 1 0 1 2 3


6

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

Uṡṛ‘HɗŒBŒḄZY

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

एक डायडिक लिंक स्ट्रिंग को इसके बाएं और ऊंचाई के रूप में अपने दाहिने तर्क के रूप में ले रहा है। लाइन ब्रेक के साथ एक स्ट्रिंग लौटाता है। यदि आउटपुट के लिए स्ट्रिंग्स की एक सूची स्वीकार्य थी, तो मैं अंतिम Yबचत को हटा सकता हूं । दिलचस्प बात यह है कि मूल "SILO PRINCEPS FECIT" मुझे एक 3D हीरे की ASCII कला की तरह दिखता है जब मैं इसे TIO पर देखता हूं।

व्याख्या

U            | Reverse input
 ṡ   ɗ       | All overlapping substrings of the length given by:
  ṛ          | - The right argument
   ‘         | - Incremented by 1
    H        | - Halved
      ŒB     | Concatenate to the reverse, keeping a single copy of the last character (so creating a palindrome)
        ŒḄ   | Do the same, but this time using the lists of characters generated by the last atom
          Z  | Transpose
           Y | Join with newlines

2
मैंने इसे देखने की कोशिश में क्लिक किया और हाँ, वास्तव में, यह 3 डी करता है। अजीब लेकिन शांत।
user0721090601

6

आर , 93 91 87 बाइट्स

-2 बाइट्स ग्यूसेप के लिए धन्यवाद। -4 बाइट ऊंचाई के बजाय चौड़ाई इनपुट करके, जैसा कि ओपी ने अनुमति दी है।

function(s,W,w=W%/%2,h=length(s)-w-1)write(s[1+outer(abs(-w:w),abs(-h:h),`+`)],1,W,,"")

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

वर्णों के वेक्टर के रूप में इनपुट लेता है। अहम हिस्सा है s[1+outer(abs(-w:w),abs(-h:h),'+')]

w(2w+1)×(2+1)

(मैं,j)1+|मैं-|+|j-w|abs(-w:w)abs(-h:h)abs(-h:h)[,-1,-2,...,2,1,0,1,2,...,-1,]outer(abs(-2:2), abs(-1:1), '+')

32123
21012
32123

(हमें फिर 1 जोड़ने की आवश्यकता है क्योंकि आर 1-अनुक्रमित है।) केंद्र में 0 वह जगह है जहां इनपुट का पहला अक्षर जाना चाहिए।

बाकी फॉर्मेटिंग है।


5

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

E⊘⊕η✂θι⁺ι⁻Lθ⊘⊖η‖O←↑

इसे ऑनलाइन आज़माएं! लिंक कोड के वर्बोज़ संस्करण के लिए है। स्पष्टीकरण:

E⊘⊕η✂θι⁺ι⁻Lθ⊘⊖η

शिलालेख का एक चौथाई ड्रा करें।

‖O←↑

शिलालेख को पूरा करने के लिए प्रतिबिंबित करें।


1
प्रभावशाली! मैं साइट के लिए नया हूं, मैं पहले से माफी मांगता हूं कि यदि निम्न प्रकार के गूंगे प्रश्न हैं।1. वे निश्चित रूप से 19 वर्ण हैं, लेकिन क्या वे भी 19 बाइट्स हैं? और 2. किस टेक्स्ट में 19 बाइट्स होंगे?
दामिक्स

हाँ, UTF-8 में एन्कोडेड यह 19 अक्षर लेगा , लेकिन वास्तव में 51 बाइट्स। UTF-16 के साथ, यह अभी भी 39 बाइट्स को एनकोड करता है।
रूहोला

1
@ damix911 चारकोल की अपनी एन्कोडिंग है, जो इसके विकी पर पाई जा सकती है। मुझे लगता है कि कोड पेज के बाहर के पात्रों की कीमत 3 बाइट्स है। Deverbosifier सही लंबाई की गणना करने की कोशिश करता है, लेकिन यह वास्तविक एन्कोडिंग को स्थानांतरित करने से परेशान नहीं करता है, जो कष्टप्रद है।
नील

1
@ नील ओके, वैध लगता है!
रूहोला

3

जाप -R , 19 16 बाइट्स

z
ò@VÔtXUaVÊ)êÃê

कोशिश करो

z\nò@VÔtXUaVÊ)êÃê     :Implicit input of integer U & string V
z                     :Floor divide U by 2
 \n                   :Reassign result to U
   ò                  :Range [0,U]
    @                 :Map each X
     VÔ               :  Reverse V
       tX             :  Substring from index X to index ...
         Ua           :    Absolute difference between U and ...
           VÊ         :    Length of V
             )        :  End substring
              ê       :  Palindromise
               Ã      :End map
                ê     :Palindromise
                      :Implicit output, joined by newlines

2

वोल्फ्राम भाषा (गणितज्ञ) , 57 54 बाइट्स

(g=Reverse@Rest@#~Join~#&)@BlockMap[g,#,⌈#2/2⌉,1]&

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

चौड़ाई को इनपुट के रूप में लेता है।


1
@lirtosiast तब gपहली बार मूल्यांकन नहीं किया जाता है जब फ़ंक्शन कहा जाता है। इसे ऑनलाइन आज़माएं!
अटिनाट

दिलचस्प है, किसी भी विचार क्यों यह काम करने के लिए प्रकट होता है जब आप @@ या @@@ का उपयोग करते हैं?
lirtosiast

@lirtosiast ऐसा लगता है Print/@f[...]-> Print/@Transpose[g[...]]-> Transpose[Print@g[...]], जिसके द्वारा समय gको परिभाषित किया जाता है।
अटिनाट

2

जाप -R , 10 बाइट्स

Ôã°Vz)mê ê

ऊँचाई के बजाय चौड़ाई लेता है।

कोशिश करो

स्यूडोकोड (यू स्ट्रिंग है, वी पूर्णांक है):

U.Reverse().AllSubstringsOfLength(++V / 2).Map(Palindromize).Palindromize

अच्छा! बग़ल में इसे बनाने की कोशिश करने के लिए मेरे साथ कभी नहीं हुआ।
झबरा


2

पायथन 3, 104 बाइट्स

मैंने इतनी देर में गोल्फ नहीं खेला है ... मुझे यकीन है कि यह कम हो सकता है।

विवरण

यह कोड एक फ़ंक्शन को परिभाषित करता है जो दो तर्क (स्ट्रिंग और ऊंचाई) लेता है और मानक आउटपुट पर परिणाम देता है।

स्ट्रिंग में सूचकांक ग्रिड के केंद्र से मैनहट्टन की दूरी है। चौड़ाई wऔर ऊंचाई के ग्रिड के hलिए, सेल के लिए दूरी (x, y)है abs(x - (w - 1) / 2) + abs(v - (h - 1) / 2)

ग्रिड की चौड़ाई ऐसी होनी चाहिए कि कोनों की मैनहट्टन दूरी (कहना (0, 0)) स्ट्रिंग की लंबाई से कम हो। स्थानापन्न (0, 0)ऊपर में और सरल बनाने, हम पाते हैं कि चौड़ाई बस है 2 * len(s) - h

कोड

def b(s,h):
 w=2*len(s)-h
 for y in range(h):print(''.join(s[abs(x-w//2)+abs(y-h//2)]for x in range(w)))

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



1

पायथ , 19 बाइट्स

L+_btbjyyM.:Q-lQ/E2

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

L+_btbjyyM.:Q-lQ/E2   Implicit: Q=string, E=height
L                     Define a function, y(b):
  _b                    Reverse b
 +  tb                  Append all be first element of b
                      y is now a palindromisation function
              lQ      Length of Q
             -  /E2   Subtract floored division of E by 2
          .:Q         All substrings of Q with the above length
        yM            Palindromise each substring
       y              Palindromise the set
      j               Join on newlines, implicit print



1

सी # (.NET कोर) , 146 बाइट्स

s=>n=>{int w=s.Length*2-n,i=0,j;var r=new char[n,w];for(;i<n;i++)for(j=0;j<w;)r[i,j]=s[System.Math.Abs(n/2-i)+System.Math.Abs(w/2-j++)];return r;}

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

इतना लंबा जवाब। :-) यह मैनहट्टन दूरी का उपयोग वर्ग के केंद्र में करता है। एक छोटा रास्ता होना चाहिए, यद्यपि।


1

Tcl , 188 170 162 बाइट्स

{{w s} {join [lmap C [lrepeat $w string] {join [$C reverse [set y [$C range $s [set x [expr abs($w/2+1-[incr i])]] end-[expr $w/2-$x]]]][$C range $y 1 end]}] \n}} bytes

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

टीसीएल में इस समस्या को सुलझाने के लिए एक लाख बुरे तरीके हैं। यह उनमें से सबसे बुरा नहीं है।

सहेजे गए 18 बाइट्स लंबोदर में कनवर्ट करके (13 तक बचा सकते हैं यदि लाइनों की सूची का वापसी मूल्य स्वीकार्य है)

एक अतिरिक्त 8 को बचाया क्योंकि लैम्प इटरेटर एक अतिरिक्त स्थिरांक के रूप में कार्य करता है


1

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

±X↕┌L╵┌-Y{x;1y1@]┼

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

कैनवस सबस्ट्रिंग नहीं करता है, इसलिए मुझे इसे एक कला वस्तु की तरह व्यवहार करने और इस तरह से एक उपधारा प्राप्त करने की आवश्यकता है। मुझे ऐसा लगता है कि यह मेरी लागत 2 बाइट्स है, लेकिन हे, आप क्या कर सकते हैं।

ऐसा लगता है कि वास्तव में यह काम नहीं करता है जैसा मैंने सोचा था: कैनवस का पैलंड्रोमाइज फ़ंक्शंस मिरर को कुछ वर्णों (जैसे वी मिरर किए वर्टिकल बन जाता है ^), और मैं बिल्कुल अक्षम नहीं कर सकता ... ओह ठीक है, मुझे लगता है


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