N लम्बाई के m strings को m length के n स्ट्रिंग्स में कनवर्ट करें


16

एक प्रोग्राम लिखें, जो 'm' लेंथ के स्ट्रिंग्स के किसी भी 'n' नंबर को दिए, 'n'-लेंथ स्ट्रिंग्स के 'm' नंबर को इस शर्त के साथ:

प्रत्येक नए स्ट्रिंग में अन्य स्ट्रिंग्स के समान इंडेक्स पर अक्षर होने चाहिए

उदाहरण के लिए, पहले आउटपुट स्ट्रिंग में सभी इनपुट स्ट्रिंग्स का पहला अक्षर होना चाहिए, दूसरा आउटपुट स्ट्रिंग में सभी इनपुट स्ट्रिंग्स का दूसरा अक्षर होना चाहिए, और इसी तरह।

उदाहरण (अक्षरों के नीचे की संख्या तार के सूचकांक हैं):

input: "car", "dog", "man", "yay"
        012    012    012    012
output: "cdmy", "aoaa", "rgny"
         0000    1111    2222

input: "money", "taken", "trust"
        01234    01234    01234
output: "mtt", "oar", "nku", "ees", "ynt"
         000    111    222    333    444

मान लें कि इनपुट हर बार सही है

सबसे कम बाइट्स कोड जीतता है!

संपादित करें:

चूंकि कई प्रोग्रामिंग भाषाएं हैं, और उनमें से प्रत्येक के लिए कई संभावित समाधान हो सकते हैं, मैं प्रत्येक प्रोग्रामिंग भाषा और इसे प्रदान करने वाले उपयोगकर्ता के लिए सबसे छोटा समाधान पोस्ट करूंगा। कोडिंग रखें!

पुन: संपादित करें:

उपयोगकर्ता डेनिस के लिए धन्यवाद मैंने लीडरबोर्ड के लिए एक स्निपेट डाला।


2
हमारे पास एक लीडरबोर्ड स्निपेट है जिसे आप अपने प्रश्न निकाय में जोड़ सकते हैं। हाथ से करने की जरूरत नहीं है।
डेनिस

डुप्लिकेट: codegolf.stackexchange.com/q/17305
msh210

मुझे क्षमा करें, मुझे नहीं पता था कि इसे "ट्रांसपोज़िंग" कहा जाता था
इनपुट नाम यहाँ

6
मुझे विश्वास नहीं है कि इन चुनौतियों के कारण डुप्लिकेट होते हैं, क्योंकि अन्य प्रश्नों में रैग्ड ट्रांसपोज़ेशन और कुछ अजीब व्हाट्सएप हैंडलिंग से जुड़े मतभेद हैं। हालांकि कुछ भाषाओं में उत्तर बहुत समान हो सकते हैं, मुझे लगता है कि अधिकांश में वे अलग-अलग होंगे जो यह डुप्लिकेट नहीं होना चाहिए।
FryAmTheEggman

जवाबों:



9

पायथन, 36 29 बाइट्स

zip(*s) प्रत्येक वर्ण के टुपल्स की सूची देता है, जिसे ट्रांसपोज़ किया जाता है।

lambda s:map(''.join,zip(*s))

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


आउटपुट कहता है "cdmy", "aoaa", "rgny", जो एक सूची है ["cdmy", "aoaa", "rgny"]या एक ट्यूपल है("cdmy", "aoaa", "rgny")
mbomb007

map(''.join,zip(*s))स्ट्रिंग रूपांतरण (पायथन 2 केवल) के लिए भी काम करता है, और पायथन 3 के लिए, [*map(''.join,zip(*s))]अफाक काम करता है
वैल्यू इंक

@ केविनलाउ-केकेनी map(''.join,zip(*s))पायथन 3 के लिए भी मान्य है - हम डिफ़ॉल्ट रूप से सूचियों के स्थान पर पुनरावृत्तियों / जनरेटर की अनुमति देते हैं।
Mego



7

PowerShell v2 +, 66 54 बाइट्स

param($n)for($x=0;$n[0][$x];$x++){-join($n|%{$_[$x]})}

यो ... नहीं map, नहीं zip, नहीं transpose, आदि, इसलिए हम अपने स्वयं के रोल करने के लिए मिलते हैं। 12-बाइट गोल्फ के लिए @DarthTwon को बड़ा सहारा ।

इनपुट लेता है $n, एक forलूप सेट करता है । इनिशिएटिव सेट करता $xहै 0, परीक्षण यह है कि क्या अभी भी हमारे शब्द में अक्षर हैं $n[0][$x], और हम $x++प्रत्येक पुनरावृत्ति को बढ़ाते हैं।

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

PS C:\Tools\Scripts\golfing> .\convert-n-strings.ps1 "Darth","-Twon","Rocks"
D-R
aTo
rwc
tok
hns

1
अच्छा, यह उसी तरह का उत्तर है जिसे मैं देखना चाहता था;) ,उत्तर के बारे में सोचने के बजाय यह बहुत सरल लेखन है
इनपुट नाम यहाँ

थोड़ी देर के लूप का उपयोग करने से यह और कम हो सकता है param($n)$x=0;while($n[0][$x]){-join($n|%{$_[$x]});$x++}:। और यहाँ कोई त्रुटि नहीं: D
ThePoShWolf

@DarthTwon बहुत बढ़िया। या, एक forऔर दो के लिए एक लूप का उपयोग करें । ;-)
AdmBorkBork

हम्म ... मैंने कोशिश की, लेकिन वास्तव में मेरे whileपाश को कम करने के बाद नहीं । अच्छा काम सर!
ThePoShWolf

क्या आप Linq का Powershell में उपयोग कर सकते हैं?
aloisdg

7

विम, , ३६ कीस्ट्रोक्स

अन्य सभी उत्तर उबाऊ हैं, और बोरिंग सिंगल-बाइट बिल्डिंस का उपयोग कर रहे हैं। यहाँ एक हैडी जवाब है कि पूरी बात को मैन्युअल रूप से करता है, कुछ में जो प्रोग्रामिंग भाषा भी नहीं है:

Gmaqqgg:s/./&<cr>d<C-v>`aGo<esc>pvGgJ@qq@q`adgg

स्पष्टीकरण:

G                                   "move to the end of this line
     ma                             "And leave mark 'a' here
       qq                           "Start recording in register 'q'
         gg                         "Move to the beginning
           :s/./&<cr>               "Assert that there is atleast one character on this line
                      d             "Delete
                       <C-v>        "Blockwise
                            `a      "Until mark 'a'

    G                               "Move to the end of the buffer
     o<esc>                         "Open a newline below us
           p                        "And paste what we deleted
            vG                      "Visually select everything until the end
              gJ                    "And join these without spaces
                @q                  "Call macro 'q'. The first time, this will do nothing,
                                    "The second time, it will cause recursion.
                  q                 "Stop recording
                   @q               "Call macro 'q' to start it all

अब, सब कुछ अच्छा है, लेकिन बफर में कुछ अतिरिक्त पाठ बचा है। तो हमें चाहिए:

`a                              "Move to mark 'a'
  dgg                           "And delete everything until the first line


4

पाइके, 1 बाइट

,

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

स्थानांतरित।


1
ओह ... नहीं लगा कि यह इतना सरल होगा: /
इनपुट नाम यहाँ

1
हाँ, मैं 60 सेकंड की तलाश में एक डुप्लिकेट खोजने के लिए प्रतीत नहीं कर सकता हालांकि
ब्लू

4

रेटिना , ४५ 43 बाइट्स

बाइट गिनती आईएसओ 8859-1 एन्कोडिंग मानती है।

O$#`.(?<=(.+))|¶
$.1
!`(?<=(¶)+.*)(?<-1>.)+

अग्रणी लाइनफीड महत्वपूर्ण है। इनपुट और आउटपुट मुद्रण योग्य एएससीआईआई स्ट्रिंग की लाइन-टर्मिनेटेड सूची हैं (ध्यान दें कि दोनों में एक एकल अनुगामी लाइनफीड है)।

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

मैं थोड़ी देर के लिए जानता था कि आयताकार ब्लॉकों को स्थानांतरित करना रेटिना में दर्द होगा (जबकि ट्रांसपोज़िंग स्क्वायर बहुत बुरा नहीं है), लेकिन वास्तव में कभी कोशिश नहीं की गई। पहला समाधान वास्तव में 110 बाइट्स लंबा था, लेकिन दृष्टिकोण में कई महत्वपूर्ण बदलावों के बाद, परिणामस्वरूप 45 बाइट्स अब तक खराब नहीं हुए हैं जितना कि मुझे संदेह है (लेकिन अभी भी ...)। स्पष्टीकरण कल का पालन करेंगे।

व्याख्या

चरण 1: सॉर्ट करें

O$#`.(?<=(.+))|¶
$.1

यह इनपुट में वर्णों को फिर से व्यवस्थित करने का मुख्य काम करता है, लेकिन यह पृथक्करण को लाइनों में गड़बड़ाने का काम करता है। दिलचस्प है, अगर हम हटा दें एक वर्ग इनपुट पारगमन के लिए आवश्यक कोड मिल जाता है।

सॉर्ट चरणों (द्वारा चिह्नित O) इस तरह से काम करते हैं: वे दिए गए रेगेक्स के सभी मैचों (बाद की चीज `) को ढूंढते हैं, और फिर उन मैचों को सॉर्ट करते हैं और उन जगहों पर फिर से स्थापित करते हैं जहां मैच पाए गए थे। जैसा कि होता है, यह रेगेक्स हर एक वर्ण से मेल खाता है: .(?<=(.*))विकल्प के माध्यम से गैर-लाइनफीड और के माध्यम से लाइनफीड । इसलिए, यह इनपुट में सभी वर्णों को क्रमबद्ध करता है। अधिक दिलचस्प हिस्सा यह है कि वे किसके द्वारा हल किए जाते हैं

$विकल्प को सक्रिय करता है एक "प्रकार द्वारा" मोड है, जहां प्रत्येक मैच दूसरी पंक्ति है, जो तब मैचों की तुलना के लिए प्रयोग किया जाता है पर प्रतिस्थापन पैटर्न के साथ बदल दिया है। इसके अलावा,# रेटिना को एक पूर्णांक के प्रतिस्थापन के परिणाम को बदलने के लिए कहता है, और उन पूर्णांकों की तुलना करता है (उन्हें स्ट्रिंग के रूप में मानने के बजाय)।

इसलिए अंत में, हमें रेगेक्स और प्रतिस्थापन की ओर देखने की जरूरत है। यदि पहला वैकल्पिक मिलान (अर्थात हमने किसी एक वर्ण के भीतर किसी वर्ण का मिलान किया है), तो (?<=(.*))समूह में उस रेखा पर उस वर्ण तक सब कुछ पकड़ लेता है 1$.1प्रतिस्थापन पैटर्न में से प्रतिस्थापित कर देता लंबाई समूह के 1। इसलिए, प्रत्येक स्ट्रिंग में पहला चरित्र बन जाता है 1, दूसरा बन जाता है 2, तीसरा बन जाता है 3और इसी तरह। यह अब स्पष्ट होना चाहिए कि यह एक वर्ग इनपुट को कैसे स्थानांतरित करता है: लाइनों के सभी पहले वर्ण पहले आते हैं और सभी शीर्ष-सबसे पंक्ति में समाप्त होते हैं, फिर सभी दूसरे वर्ण दूसरी पंक्ति में समाप्त होते हैं और इसी तरह। लेकिन इन आयताकार इनपुटों के लिए, हम लाइनफीड्स का मिलान भी कर रहे हैं। समूह के बाद से1इस मामले में अप्रयुक्त है, प्रतिस्थापन खाली है, लेकिन #विकल्प के प्रयोजनों के लिए , इस पर विचार किया जाता है 0। इसका मतलब है कि सभी लाइनफीड सामने की ओर छांटे गए हैं।

तो अब हमारे पास पहले क्रम में वर्ण हैं (प्रत्येक स्ट्रिंग का पहला चरित्र, प्रत्येक स्ट्रिंग का दूसरा चरित्र, आदि) और शुरुआत में सभी लाइनफीड।

स्टेज 2: मैच

!`(?<=(¶)+.*)(?<-1>.)+

अब हमें पात्रों को सही लंबाई की रेखाओं में विभाजित करने की आवश्यकता है। यह लंबाई मूल इनपुट में लाइनों की संख्या से मेल खाती है, जो स्ट्रिंग की शुरुआत में हमारे द्वारा की गई लाइनफीड की संख्या से मेल खाती है।

बंटवारे को यहां एक मैच चरण की मदद से किया जाता है, जो बस दिए गए रेगेक्स के सभी मैचों को ढूंढता है और उपयोग करता है ! उन मैचों को प्रिंट करने विकल्प (डिफ़ॉल्ट इसके बजाय उन्हें गिनना होगा)। तो रेगेक्स का लक्ष्य एक समय में एक पंक्ति से मेल खाना है।

हम लुकअप के साथ संख्या "गिनती" से शुरू करते हैं (?<=(¶)*.*)। यह समूह में एक कैप्चर उत्पन्न करता है1 फ्रंट में हर लाइनफीड के लिए ।

फिर, उन प्रत्येक कैप्चर के लिए, हम एक एकल चरित्र के साथ मेल खाते हैं (?<-1>.)+


4

x86 मशीन कोड, 19 बाइट्स

हेक्स में:

fc89d35651a401dee2fb91aa595e464a75f1c3

इनपुट:: ECX# स्ट्रिंग्स (एन) EDX,: व्यक्तिगत स्ट्रिंग लंबाई (एम) ESI,: इनपुट स्ट्रिंग्स की सरणी EDI,: आउटपुट बफर स्ट्रिंग्स की सरणी प्राप्त करना। ऐरे को char src[n][m+1]इनपुट के रूप में और char dst[m][n+1]आउटपुट के लिए परिभाषित किया जाना माना जाता है , और सभी स्ट्रिंग्स NULL-टर्मिनेटेड हैं।

0:  fc                  cld
1:  89 d3               mov ebx,edx   ;EDX is the counter for the outer loop
_outer:
3:  56                  push esi
4:  51                  push ecx
_inner:
5:  a4                  movsb         ;[EDI++]=[ESI++]
6:  01 de               add esi,ebx   ;Same char, next string
8:  e2 fb               loop _inner   ;--ECX==0 => break
a:  91                  xchg eax,ecx  ;EAX=0
b:  aa                  stosb         ;NULL-terminate just completed string
c:  59                  pop ecx
d:  5e                  pop esi       ;First string,
e:  46                  inc esi       ;...next char
f:  4a                  dec edx
10: 75 f1               jnz _outer
12: c3                  ret

3

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

z:ca.

इनपुट के रूप में तार की एक सूची की अपेक्षा करता है, जैसे run_from_atom('z:ca.',["money":"taken":"trust"],Output).

व्याख्या

z       Zip the strings in the Input list
 :ca.   output is the application of concatenation to each element of the zip


2

सीजेएम , 3 बाइट्स

{z}

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

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



1
@Drgreeneggsandironman खैर, अधिक वोटों के साथ उत्तर कहता है कि डिफ़ॉल्ट "कार्यक्रम या कार्य" होना चाहिए
लुइस मेंडो

2

जावास्क्रिप्ट ईएस 6, 48 46 बाइट्स

a=>[...a[0]].map((n,x)=>a.map(a=>a[x]).join``)

मुझे लगता है छोड़ दिया गया है, हम ज़िप समारोह में नहीं बनाया गया है। मेरे प्रकार त्रुटि को इंगित करने के लिए धन्यवाद nicael।

प्रयोग

(a=>[...a[0]].map((n,x)=>a.map(a=>a[x])))(["asd","dsa"]); //or whatever is above, might change due to edits

रिटर्न

["ad","ss","da"]

अपवाद: TypeError: a [0]
.map

1
आप की जरूरत है [...a[0]].map, क्योंकि a[0]एक सरणी नहीं है।
निकोल

@nicael धन्यवाद। प्रकार गड़बड़ कर दिया। यह साबित करता है कि मुझे सुबह-सुबह गोल्फ क्यों नहीं खेलना चाहिए।
charredgrass

@nicael मैंने .joinउन्हें उस समस्या को ठीक करने के लिए संपादित किया।
charredgrass

1
join`` join('')2 बाइट्स बचाने के बजाय । डाउनवोट पीछे हट गए
edc65

2

बैश + बीएसडी उपयोगिताओं, 27

sed s/./\&:/g|rs -c: -g0 -T

I / O STDIN / STDOUT के माध्यम से न्यूलाइन-अलग स्ट्रिंग्स।

आपको इसके rsसाथ sudo apt install rsया इसके समान स्थापित करने की आवश्यकता हो सकती है । ओएस एक्स पर बॉक्स से बाहर काम करता है।

-Tकरने के लिए विकल्प rsस्थानांतरण के बड़े कार्य करने नहीं करता है। बाकी सिर्फ स्वरूपण है:

  • sedआदेश बस सम्मिलित करता है :हर चरित्र के बाद
  • -c:निर्दिष्ट करता है कि इनपुट कॉलम :अलग हो गए हैं
  • -g0 निर्दिष्ट करता है कि आउटपुट कॉलम में शून्य चौड़ाई पृथक्करण है

अगर मेरा rsमैनपेज पढ़ना सही है, तो निम्नलिखित को 12 के स्कोर के लिए काम करना चाहिए , लेकिन दुर्भाग्य से यह काम नहीं करता है - नीचे ध्यान दें:

rs -E -g0 -T

उदाहरण आउटपुट:

$ printf "%s\n" car dog man yay |sed s/./\&:/g|rs -c: -g0 -T
cdmy
aoaa
rgny
$

यदि इनपुट सभी प्रिंट करने योग्य एएससीआईआई होने की उम्मीद है, तो :कुछ अप्रतिबंधित चरित्र के साथ प्रतिस्थापित किया जा सकता है, जैसे 0x7 BEL


ध्यान दें

मैं समझना चाहता था कि मुझे -Eकाम करने का विकल्प क्यों नहीं मिला और sedप्रीप्रोसेसिंग से छुटकारा मिला । मुझे rsयहाँ स्रोत कोड मिला । जैसा कि आप देख सकते हैं, यह विकल्प देने से ONEPERCHARध्वज सेट होता है। हालांकि, कोड में ऐसा कुछ भी नहीं है जो वास्तव में इस ध्वज की स्थिति की जांच करता है। इसलिए मुझे लगता है कि हम कह सकते हैं कि इस तथ्य के बावजूद कि विकल्प का दस्तावेजीकरण किया गया है, इसे लागू नहीं किया गया है।

वास्तव में, यह विकल्प लिनक्स rsमैनपेज में प्रलेखित है :

-एक सरणी प्रविष्टि के रूप में इनपुट के प्रत्येक चरित्र पर विचार करें।

लेकिन ओएस एक्स संस्करण नहीं।


2

PHP, 82 बाइट्स

function f($a){foreach($a as$s)foreach(str_split($s)as$i=>$c)$y[$i].=$c;return$y;}

स्ट्रिंग्स की एक सरणी लेता है और वापस करता है

विभाजन

function f($a)
{
    foreach($a as$s)                    // loop through array $a
        foreach(str_split($s)as$i=>$c)  // split string to array, loop through characters
            $y[$i].=$c;                 // append character to $i-th result string
    return$y;
}

उदाहरण

$samples=[
    ["asd","dsa"], ["ad","ss","da"],
    ["car", "dog", "man", "yay"], ["cdmy", "aoaa", "rgny"],
    ["money", "taken", "trust"], ["mtt", "oar", "nku", "ees", "ynt"]
];
echo '<pre>';
while ($samples)
{
    echo '<b>in:</b> ';         print_r($x=array_shift($samples));
    echo '<b>out:</b> ';        print_r(f($x));
    echo '<b>expected:</b> ';   print_r(array_shift($samples));
    echo '<hr>';
}

2

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

↓⍉↑

इनपुट स्ट्रिंग्स लेता है और उन्हें चार मैट्रिक्स में बदल देता है। मैट्रिक्स को स्थानांतरित करता है। तार में परिणामी मैट्रिक्स की पंक्तियों को वापस विभाजित करता है।



1

गणितज्ञ, 26 बाइट्स

""<>#&/@(Characters@#)&

अनाम फ़ंक्शन। एक स्ट्रिंग सूची इनपुट के रूप में लेता है और एक स्ट्रिंग सूची आउटपुट के रूप में देता है। यूनिकोड वर्ण U + F3C7 है, जो प्रतिनिधित्व करता है \[Transpose]। एक चरित्र मैट्रिक्स में परिवर्तित करके, ट्रांसपोज़िंग और एक स्ट्रिंग सूची में वापस परिवर्तित करके काम करता है। यदि इनपुट / आउटपुट प्रारूप को बढ़ाया गया था, तो एक सरल 5-बाइट ट्रांज़ोज़ काम करेगा:

#&

+1 तुम मुझे पंच मार दो! (लेकिन मैं ट्रांसपोज़ सिंबल का उपयोग करने में सक्षम नहीं था।) वैसे, टी स्क्रीन पर दिखाई क्यों नहीं देता है? (यह वहाँ है जब मैं आपके कोड को गणितज्ञ को कॉपी करता हूं)।
डेविड

@ दाविद यूनिकोड चरित्र निजी उपयोग क्षेत्र में है, जिसे मालिकाना चरित्रों के लिए एक खंड के रूप में चिह्नित किया गया है और इसलिए इसे न तो आधिकारिक तौर पर एक ग्लिफ़ सौंपा गया है और न ही अधिकांश फोंट में प्रस्तुत किया गया है। मैथेमेटिका का फ़ॉन्ट इस चरित्र को सुपरसस्क्रिप्ट टी के रूप में प्रस्तुत करने और इसे एक के रूप में व्याख्या करने के लिए होता है \[Transpose]

@DavidC वे उपयोग क्यों नहीं करते ?
Adám

@ एडम IDK, आपको वुल्फराम रिसर्च के बारे में पूछना होगा, मुझसे नहीं
१५:१al बजे लीजनमॉमल

@ LegionMammal978 नाह, जब तक मैं एपीएल स्पष्ट है मैं खुश हूं
एडम जूल 20'16

1

MATLAB / ऑक्टेव, 4 बाइट्स

@(x)x'

यह एक अनाम फ़ंक्शन को परिभाषित करता है। इनपुट प्रारूप है ['car'; 'dog'; 'man'; 'yay']

इसे यहाँ आज़माएँ


इस समाधान के लिए क्या प्रारूप है? मुझे नहीं लगता कि यह उस तरह से काम करेगा जिस तरह से मैटलैब स्ट्रिंग्स को संभालता है यदि आप उन्हें मैटलैबी तरीके से इनपुट करने की कोशिश करते हैं, उदाहरण के लिए f = @(x)x', f([{'abcd'},{'abcd'},{'abcd'}])आउटपुट ans = 'abcd' 'abcd' 'abcd'
sintax

@ सिंटेक्स इनपुट प्रारूप एक 2 डी चार सरणी होना चाहिए, जैसा कि उत्तर में लिंक उदाहरण में है। आप स्ट्रिंग्स के एक सेल ऐरे का उपयोग कर रहे हैं (सिंगलटन सेल एरे को समेट कर प्राप्त किया जाता है)। यह होना चाहिए f(['abcd';'abcd';'abcd']):। मैंने इनपुट प्रारूप को निर्दिष्ट करने के लिए उत्तर को संपादित किया है
लुइस मेंडो

1

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

f l=zipWith($)[map(!!n)|n<-[0..]]$l<$l!!0

या थोड़ा और हवा के साथ:

f l = zipWith ($) [map (!! n) | n <- [0..]] $
                  l <$ (l !! 0)

दूसरी सूची "एक शब्द की लंबाई" बार दोहराए गए शब्दों की सूची है। शब्दों की प्रत्येक सूची पर, हम परिणाम देते हुए प्रत्येक शब्द के n-वें अक्षर का चयन करते हैं।


1
एक पूर्ण कार्यक्रम की कोई आवश्यकता नहीं है, क्योंकि "प्रोग्राम" का अर्थ "प्रोग्राम या फ़ंक्शन" है , इसलिए एक फ़ंक्शन पर्याप्त है। आप तार की सूची को पास और वापस कर सकते हैं और इसलिए छोड़ सकते हैं wordsऔर unwords। इसके अलावा, map(\_->l)(l!!0)है l<*l!!0तो यह करने पर निर्भर करता, \l->zipWith($)[map(!!n)|n<-[0..]]$l<$l!!0
नीम जूल

ओह, अच्छा धन्यवाद :) मैं अपडेट कर रहा हूं।
विलाउ २४

उफ़, टाइपो: यह l<$l!!0पहली बार गलत है, दूसरी बार सही है), लेकिन आप इसे वैसे भी सही कर रहे हैं।
निमि

1

आम लिस्प, 62 बाइट्स

(lambda(s)(apply'map'list(lambda(&rest x)(coerce x'string))s))

mapसमारोह एक परिणाम के प्रकार (यहां ले जाता है list), एक समारोह लागू करते हैं और एक या अधिक दृश्यों के एस 1 , ..., एस.एन. । सभी अनुक्रम समानांतर में पुनरावृत्त होते हैं। उन अनुक्रमों से लिए गए तत्वों (e1, ..., en) के प्रत्येक टपल के लिए , हम कॉल करते हैं (f e1 ... en) और परिणाम वांछित प्रकार के अनुक्रम में जमा होता है।

हम कॉल ("car" "dog" "man" "yay")करने के applyलिए स्ट्रिंग्स, कहते हैं और उपयोग करने की एक सूची लेते हैं map। हमें ऐसा करना होगा ताकि इनपुट सूची का उपयोग अधिक तर्कों के रूप में किया जाए map। अधिक ठीक है, यह:

(apply #'map 'list fn '("car" "dog" "man" "yay"))

... के बराबर है:

(map 'list f "car" "dog" "man" "yay")

और चूंकि तार दृश्यों रहे हैं, सब पहले अक्षर, तो सभी दूसरे वर्ण, से अधिक समानांतर में हम पुनरावृति आदि ... उदाहरण के लिए, पहली यात्रा कॉल इस प्रकार है:

(f #\c #\d #\m #\y)

अनाम लैम्ब्डा इसके लिए दिए गए तर्कों की सूची लेता है और इसे वापस स्ट्रिंग में ले जाता है।



0

रूबी, 46 बाइट्स

संभवत: पहली बार जब "रूबी स्ट्रिंग्स एन्युमरैबल्स नहीं हैं" वास्तव में मुझे मुश्किल से काट रहा है क्योंकि मुझे प्रसंस्करण से पहले एरेस में तारों को मैप करना था। (आम तौर पर उपयोग String#charsकरने के लिए एक बाइट हानि के लिए पर्याप्त नहीं है, लेकिन जब से मुझे उन्हें मैप करने की आवश्यकता है, यह बहुत अधिक चुभता है)

->s{s.map!(&:chars).shift.zip(*s).map &:join}

0

क्लोजर, 68 बाइट्स

#(map(fn[g](reduce(fn[a b](str a(nth b g)))""%))(range(count(% 0))))

एक फ़ंक्शन को मैप करता है, जो reduceकि पहले स्ट्रिंग की 0 से लेकर लंबाई तक सिर्फ एक (एक-एक करके सूची के तत्वों पर जाता है और स्ट्रिंग के nth कैरेक्टर को जोड़ता है) है।

इसे ऑनलाइन देखें: https://ideone.com/pwhZ8e


0

सी #, 53 बाइट्स

t=>t[0].Select((_,i)=>t.Aggregate("",(a,b)=>a+b[i]));

सी # लंबा (Func ) जहां आउटपुट है IList<string>और आउटपुट है IEnumerable<string>। मैं नहीं जानता कि zipअन्य भाषा में कैसे काम किया जाता है लेकिन मुझे यहाँ C # का उपयोग करने का तरीका नहीं मिल रहा है। Aggregateअच्छी तरह से की जरूरत है। C # में कोई बदलाव नहीं है, एक्सेल में एक है , लेकिन मैं इसका इस्तेमाल नहीं करूंगा।

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

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