पाली-एन-ड्रोम इस सूची


13

यहाँ चुनौती निम्नलिखित इनपुट के रूप में दिए गए palindrome के कार्यान्वयन का विस्तार करना है:

  • n > 1और एक सूची l

आपके कार्यक्रम को सूची को लंबवत और क्षैतिज रूप से दोनों में विभाजित करना होगा, यह कहना है कि पहले सूची को ही फिर से सूची में शामिल करना चाहिए, उसके बाद सूची में प्रत्येक तत्व; या फिर इसके विपरीत। पैलिंड्रोमाइजेशन से पहले, सभी तत्वों को समान लंबाई सुनिश्चित किया जाता है। nजब तक वांछित आउटपुट पूरा नहीं हो जाता है तब तक palindrome कार्रवाई को अनुक्रम में किया जाता है। अपेक्षित आउटपुट दिखाने का सबसे आसान तरीका कुछ उदाहरणों के माध्यम से चलना है:


एक पुनरावृत्ति पर प्रदर्शन किया [123,456,789]:

पहले आप सूची को पलिंडोमाइज करें [123,456,789,456,123]

  • हालांकि यह एक पैलिंड्रोम नहीं है यदि इसे एक साथ जोड़ा जाता है, तो यह सूची के संदर्भ में एक पैलिंड्रोम है।
  • [a,b,c]बन गया [a,b,c,b,a], इसलिए लिस्ट का तालमेल हो गया।

फिर, आप प्रत्येक सूची तत्व को palindromize करते हैं [12321,45654,78987,45654,12321]

यह कैसे प्रत्येक पुनरावृत्ति किया जाता है, यह अनिवार्य रूप से एक सर्वव्यापी पैलिंड्रोम है।


दिया n=1 and l=[123,456,789]:

12321
45654
78987
45654
12321

दिया हुआ n=2 and l=[123,456,789]

123212321
456545654
789878987
456545654
123212321
456545654
789878987
456545654
123212321

दिया n=1 and l=[3,2,1]:

3
2
1
2
3

दिया n=2 and l=["hat","mad"," a "]:

hatahatah
madamadam
 a a a a 
madamadam
hatahatah
madamadam
 a a a a 
madamadam
hatahatah

दिया n=2 and l=[" 3 ","2000"," 100"]:

 3   3 3   3 
2000002000002
100 00100 001
2000002000002
 3   3 3   3 
2000002000002
100 00100 001
2000002000002
 3   3 3   3 

दिया n=4 and l=["3 ","20","1 "]:

3 3 3 3 3 3 3 3 3
20202020202020202
1 1 1 1 1 1 1 1 1
20202020202020202
3 3 3 3 3 3 3 3 3
20202020202020202
1 1 1 1 1 1 1 1 1
20202020202020202
3 3 3 3 3 3 3 3 3
20202020202020202
1 1 1 1 1 1 1 1 1
20202020202020202
3 3 3 3 3 3 3 3 3
20202020202020202
1 1 1 1 1 1 1 1 1
20202020202020202
3 3 3 3 3 3 3 3 3
20202020202020202
1 1 1 1 1 1 1 1 1
20202020202020202
3 3 3 3 3 3 3 3 3
20202020202020202
1 1 1 1 1 1 1 1 1
20202020202020202
3 3 3 3 3 3 3 3 3
20202020202020202
1 1 1 1 1 1 1 1 1
20202020202020202
3 3 3 3 3 3 3 3 3
20202020202020202
1 1 1 1 1 1 1 1 1
20202020202020202
3 3 3 3 3 3 3 3 3

दिया n=3 and l=["_|__","__|_","___|"]:

_|___|_|___|_|___|_|___|_
__|_|___|_|___|_|___|_|__
___|_____|_____|_____|___
__|_|___|_|___|_|___|_|__
_|___|_|___|_|___|_|___|_
__|_|___|_|___|_|___|_|__
___|_____|_____|_____|___
__|_|___|_|___|_|___|_|__
_|___|_|___|_|___|_|___|_
__|_|___|_|___|_|___|_|__
___|_____|_____|_____|___
__|_|___|_|___|_|___|_|__
_|___|_|___|_|___|_|___|_
__|_|___|_|___|_|___|_|__
___|_____|_____|_____|___
__|_|___|_|___|_|___|_|__
_|___|_|___|_|___|_|___|_

दिया n=2 and l=["---|---","__|","___|","____|"]:

---|-----|-----|-----|---
  __|   |__   __|   |__  
 ___|   |___ ___|   |___ 
 ____| |____ ____| |____ 
 ___|   |___ ___|   |___ 
  __|   |__   __|   |__  
---|-----|-----|-----|---
  __|   |__   __|   |__  
 ___|   |___ ___|   |___ 
 ____| |____ ____| |____ 
 ___|   |___ ___|   |___ 
  __|   |__   __|   |__  
---|-----|-----|-----|---

नियम

  • n हमेशा 1 से अधिक होगा।
  • l हमेशा 1 से अधिक तत्व होगा।
  • सभी तत्व lसमान लंबाई के हैं।
  • यह सबसे छोटा समाधान विजेता के रूप में चिह्नित किया जाएगा।

9
यह एक बेहतर चुनौती होगी यदि हमें तत्वों को पैड करना नहीं है।
mbomb007

2
@JonathanAllan यह एक सर्वव्यापी पैलिंड्रोम है, या 2 डी पैलिंड्रोम आप कह सकते हैं। मैंने विवरण अपडेट किया है; इसके अलावा, पैडिंग कुछ विषम फ्रिंज मामलों को रोकता है जहां एक छोटी स्ट्रिंग पहले से ही एक पैलिंड्रोम है।
मैजिक ऑक्टोपस Urn

1
@JonathanAllan यह सूची के संदर्भ में है, यदि आप LIST को आइटम के रूप में देख रहे हैं, जो कि palindromized है। ठीक इसी तरह [@ 1, @ 2, @ 1] भी एक लिस्ट के रूप में है जब इसे लिस्ट के रूप में देखा जा रहा है, तत्वों द्वारा नहीं ...
मैजिक ऑक्टोपस Urn

1
@JonathanAllan हाँ, अनिवार्य रूप से, यदि आप चाहें तो आप इसे इस तरह देख सकते हैं।
मैजिक ऑक्टोपस Urn

1
अंतिम उदाहरण के लिए पैडिंग की आवश्यकता होती है।
जोनाथन एलन

जवाबों:


9

05AB1E , 4 बाइट्स

ध्यान दें कि यदि केवल एक पुनरावृत्ति की आवश्यकता थी ( n=1), तो कार्यक्रम पैलिंड्रोम होगा û€û

Fû€û

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

F       Do n times
 û      Palindromize the list
  €û    Palindromize each element in the list

यदि पेडिंग इनपुट अभी भी प्रोग्राम का एक आवश्यक हिस्सा था (11 बाइट्स):

€R.B€RIFû€û

मुझे सही-सही ठहराने का एक छोटा रास्ता नहीं मिला। वाम-औचित्य और केंद्रित सभी आसान थे, लेकिन यह किसी कारण से लंबा था। उपयोग Eया ²इसके बजाय Iभी काम करता है।


7

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

lambda x,n,f=lambda x:x+x[-2::-1]:eval('f(map(f,'*n+`x`+'))'*n)

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

fनिम्नलिखित पैटर्न के लिए (उत्पन्न n=4) के लिए एक पैलिंड्रोम फ़ंक्शन को असाइन करें और उसका मूल्यांकन करें
f(map(f,f(map(f,f(map(f,f(map(f,<input>))))))))


1
मुझे लगता है कि आपका मतलब है असाइन करना । मुझे नहीं लगता कि गधा क्रिया है, योग्य है।
mbomb007

@ mbomb007 वेल्ड, अधिक कॉफी पाने का समय ~
रॉड

6

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

ŒḄŒB$¡

डायैडिक लिंक, या सूची लेने वाला पूरा कार्यक्रम और n

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

लिन के शानदार अंतर्निहित "बाउंस" के दोनों संस्करणों का उपयोग करना।

ŒḄŒB$¡ - Main link: l, n
     ¡ - repeat n times
    $  -     last two links as a monad (firstly with l then the result...)
ŒḄ     -         bounce ("palindromise") the list
  ŒB   -         bounce the elements

5

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

h=lambda a:a+a[-2::-1]
f=lambda a,n:n and f(h(map(h,a)),n-1)or a

इसे ऑनलाइन आज़माएं! - पाद लेख परिणामी सूची के प्रत्येक तत्व, एक पंक्ति, एक "सुंदर प्रिंट" को प्रिंट करता है।

h पलिंडोमेशन फंक्शन है, यह इनपुट को जोड़ता है, अंतिम लेकिन एक, इंडेक्स -2 से सूची के सभी तत्वों को आकार -1 के चरणों में शुरू करता है।

fबदले में प्रत्येक तत्व पर कॉल hकरने के परिणाम के साथ h, nएक से कम हो जाता है और n0 तक पहुंचने तक खुद को कॉल करता है, जिस बिंदु aपर तैयार उत्पाद है।


... और मैं अभी भी f=पुनरावर्ती कार्यों के लिए भूल रहा हूं , एक दिन मुझे याद होगा।
जोनाथन एलन

2

एपीएल, 15 बाइट्स

(Z¨Z←⊢,1↓⌽)⍣⎕⊢⎕

स्पष्टीकरण:

  • (... )⍣⎕⊢⎕: सूची पढ़ें और Nइनपुट के रूप में, और Nबार चलाएं :
    • ⊢,1↓⌽: सूची, उलट सूची की पूंछ के बाद
    • Z←: इस फंक्शन को स्टोर करें Z
    • : और इसे सूची के प्रत्येक तत्व पर भी लागू करें

परीक्षा:

          (ZZ ← ⊢, 1 ↓ ⌽) ⍣⎕⊢⎕ 
    ⎕:
          'हेट' 'मैड' 'ए'
    ⎕:
          2
    ┌─────────┬─────────┬─────────┬─────────┬───────── ┬─────────┬─────────┬─────────┬─────────┐
    │हतःहदामादमदम् आ
    └─────────┴─────────┴─────────┴─────────┴───────── ┴─────────┴─────────┴─────────┴─────────┘


1

हास्केल, 51 बाइट्स

x%n=iterate((++)<*>reverse.init)x!!n
x?n=(%n)<$>x%n

प्रयोग उदाहरण: ["123","456","789"] ? 1-> ["12321","45654","78987","45654","12321"]इसे ऑनलाइन आज़माएं!

(++)<*>reverse.initएक सूची से बाहर एक पलिंड्रोम बनाता है, iterate(...)xइसे बार-बार दोहराता है और एक सूची में मध्यवर्ती परिणाम एकत्र करता है, !!nइस सूची के nth तत्व को चुनता है। (%n)<$>x%nn-palindrome के प्रत्येक तत्व का n-palindrom बनाता है x


1

जावास्क्रिप्ट (ईएस 6), 87 बाइट्स

f=(n,l,r=l=>[...a].reverse().slice(1))=>n--?f(l.concat(r(l)).map(s=>s+r(s).join``),n):l

1

पिप , 25 बाइट्स

-lध्वज के लिए कोड के 24 बाइट्स, +1 ।

Lq{gM:_.@>RV_gAL:@>RVg}g

सूची को कमांड-लाइन तर्क और स्टड से संख्या n के रूप में लेता है । इसे ऑनलाइन आज़माएं!

व्याख्या

                          g is list of cmdline args (implicit)
Lq{                   }   Read a line of input and loop that many times:
      _.@>RV_             Lambda function: take all but the first character (@>) of the
                           reverse (RV) of the argument (_), and concatenate that (.) to
                           the argument (_)
   gM:                    Map this function to g and assign the result back to g
                 @>RVg    Take all but the first element of the reverse of g
             gAL:         Append that list to g and assign the result back to g
                       g  After the loop, print g (each item on its own line due to -l)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.