दो सूचियों का कार्टेशियन उत्पाद


14

कार्य

पात्रों की दो सूचियों को देखते हुए, उनके कार्टेशियन उत्पाद का उत्पादन किया जाता है, अर्थात पहली सूची के प्रत्येक अक्षर की जोड़ी की सूची दूसरी सूची के प्रत्येक अक्षर के साथ।

उदाहरण

"123456"और "abcd"दे:

[["1","a"],["1","b"],["1","c"],["1","d"],["2","a"],["2","b"],["2","c"],["2","d"],["3","a"],["3","b"],["3","c"],["3","d"],["4","a"],["4","b"],["4","c"],["4","d"],["5","a"],["5","b"],["5","c"],["5","d"],["6","a"],["6","b"],["6","c"],["6","d"]]

इनपुट

पात्रों या तार की दो सूची। उपयोग किए जाने वाले वर्ण अल्फ़ान्यूमेरिक होंगे a-z, A-Z, 0-9और एक चरित्र एक ही समय में कई बार और दोनों इनपुट में हो सकता है।

उत्पादन

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

जोड़े क्रम में सूचीबद्ध होने चाहिए; पहली सूची के पहले चरित्र के साथ दूसरी सूची के पहले चरित्र को सूचीबद्ध करना, उसके बाद पहली सूची के पहले चरित्र की सभी जोड़ियाँ। अंतिम जोड़ी में पहली सूची के अंतिम चरित्र के साथ दूसरी सूची के अंतिम चरित्र होते हैं।

आउटपुट जोड़े की एक फ्लैट सूची होनी चाहिए; एक 2 डी मैट्रिक्स नहीं है जहां जोड़े को उनके पहले या दूसरे तत्व द्वारा समूहीकृत किया जाता है।

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

inputs               output

"123456", "abcd"     [["1","a"],["1","b"],["1","c"],["1","d"],["2","a"],["2","b"],["2","c"],["2","d"],["3","a"],["3","b"],["3","c"],["3","d"],["4","a"],["4","b"],["4","c"],["4","d"],["5","a"],["5","b"],["5","c"],["5","d"],["6","a"],["6","b"],["6","c"],["6","d"]]
"abc", "123"         [["a","1"],["a","2"],["a","3"],["b","1"],["b","2"],["b","3"],["c","1"],["c","2"],["c","3"]]
"aa", "aba"          [["a","a"],["a","b"],["a","a"],["a","a"],["a","b"],["a","a"]]

@ अदाम बदल गया। मुझे परेशानी हो रही है कि एक इनपुट स्ट्रिंग में दोहराए जाने वाले वर्ण और आउटपुट में बार-बार जोड़े का कारण बन सकते हैं (यह मानते हुए कि यह कैसे व्याख्या करता है)।
xnor

@ अगर जोड़ी का क्रम तय है तो शायद आसान हो सकता है?
आदम

शीर्षक "सूची" क्यों कहता है फिर भी शरीर "पात्रों की सूची" कहता है?
लीक नून

बस सुनिश्चित करने के लिए: ["1a", "1b", "1c", "2a", "2b", "2c", "3a", "3b", "3c"]एक वैध आउटपुट प्रारूप है?
शगुन

1
आपने इसे code-golfइसलिए संक्षिप्त उत्तर जीत के रूप में टैग किया है । एक टाई होने की स्थिति में, उस स्कोर तक पहुंचने का पहला उत्तर आमतौर पर विजेता (वर्तमान में यह एक ) होता है। एक और कुछ दिन दे दो, कम से कम, एक जवाब स्वीकार करने से पहले, हालांकि, अगर बिल्कुल। और अपने स्वयं के प्रश्न का उत्तर देने के दिशानिर्देश के लिए यहां देखें ।
झबरा

जवाबों:




7

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

Tuples@{##}&

इनपुट के रूप में वर्णों की दो सूचियाँ लेता है।


1
एक ही लंबाई: Tuples@*Listवैकल्पिक रूप से, अगर मनमाने ढंग से सिर की अनुमति दी जाती है:Tuples@*f
कैलक्यूलेटरफल

5

एपीएल (डायलॉग) , 4 बाइट्स

,∘.,

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

, समतल करना

∘. कार्टेशियन

, कड़ी


मुझे नहीं लगता कि flattenयहाँ एक अच्छा वर्णन है, क्योंकि चपटेपन से गलत परिणाम निकलेंगे, मुझे लगता है कि "कसने" या "रैंक कम करना" या ऐसा ही कुछ काम करना चाहिए। (चपटा [१,२] x [१,२] [११,१,२,२,२,२,२,२]]
जकार्ही २४'१ý

4

रूबी , 30 18 बाइट्स

जॉर्डन से -12 बाइट्स ने मुझे अपने फायदे के लिए कल्पना का उपयोग करने का एक तरीका याद दिलाया!

इनपुट के रूप में वर्णों की सूची लेता है।

->a,b{a.product b}

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


1
विनिर्देश कहता है कि इनपुट "वर्णों या तारों की दो सूचियाँ" हैं, इसलिए मुझे नहीं लगता कि आपको इसकी आवश्यकता है .chars
जॉर्डन

1
यह एक शर्म की बात है ब्राउज़र न माणिक बोलते हैं। ऐसी अनुकूल भाषा ..
अलेक्जेंड्रोसा

4

पर्ल 6 , 4 बाइट्स

&[X]

यह बिल्ट-इन क्रॉस उत्पाद ऑपरेटर का एक संदर्भ है X। यह किसी भी प्रकार की सूचियों पर काम करता है, न कि केवल पात्रों पर।




3

Tcl , 60 बाइट्स

proc p x\ y {lmap X $x {lmap Y $y {lappend l $X\ $Y}};set l}

उपयोग:

% p {1 2 3} {a 2 2}
{1 a} {1 2} {1 2} {2 a} {2 2} {2 2} {3 a} {3 2} {3 2}

3

जावास्क्रिप्ट (ईएस 6), 45 36 34 33 बाइट्स

फ़ायरफ़ॉक्स की आवश्यकता है। दोनों इनपुट को स्ट्रिंग्स के रूप में या व्यक्तिगत वर्णों के सरणियों के रूप में लेता है।

a=>b=>[for(x of a)for(y of b)x+y]

कोशिश करो

f=
a=>b=>[for(x of a)for(y of b)x+y]
oninput=_=>console.clear()&console.log(f(i.value)(j.value))
console.log(f(i.value="123456")(j.value="abcd"))
<input id=i><input id=j>


विनाशकारी तार पर भी काम करता है।
नील

धन्यवाद, @ नील; यह अपडेट करना भूल गया कि मैंने जिस पद्धति का उपयोग किया था, उसे बदलने के बाद।
झबरा

है x+yएक वैध उत्पादन प्रारूप?
नील

@ नील: यह कि मैं मूल रूप से किसके साथ जा रहा था, लेकिन परीक्षण के मामलों से, ऐसा प्रतीत होता है कि यह मान्य नहीं होगा; हालांकि, उत्पादन आवश्यकताओं को फिर से जोड़ना, वे संकेत करते हैं कि यह हो सकता है। मैं स्पष्टीकरण मांगने के लिए सुनिश्चित हो जाएगा।
शगुन

1
@ alexandros84: हाँ, ES6 (+) आवश्यक है यदि आप गोल्फ में प्रतिस्पर्धी होने का एक दूरस्थ मौका भी खड़े कर सकते हैं - जब तक आपने टाइप किया है function, तब तक आप खो चुके हैं! मैं बाद में आपके उत्तर पर कुछ बिंदुओं को फेंक दूंगा, लेकिन इस बीच, संपादित इतिहास में मेरे मूल सरणी मानचित्रण समाधान पर एक नज़र डालेंगे; आपको बस उस चीर को बंद करने में सक्षम होना चाहिए और तीर के कार्यों को "वास्तविक" कार्यों से बदलना चाहिए।
झबरा



2

QBIC , 29 बाइट्स

[_l;||[_l;||?_sA,a,1|+_sB,b,1

यह एक पंक्ति में सभी संयोजनों के साथ 2-चार तार प्रिंट करता है।

व्याख्या

   ;      Read in string A$
 _l |     Get its length as b
[    |    and kick off a FOR-loop from 1 to that
[_l;||    Do the same for B$
          Note that, while the FOR-loop may pass this code several times, the
          'read-from cmd line' is done only once.
?_sA,a,1| PRINT the character from A$ at the position of the 'a' loop counter
+_sB,a,1   concatenated with the char from B$ at the pos of the 'b' loop counter

2

अजगर , 3 बाइट्स

*ww

दो तारों को गुणा करना केवल कार्टेसियन उत्पाद के रूप में कार्य करता है।

इसे ऑनलाइन टेस्ट करें!


2 बाइट्स समाधान *Eके लिए इनपुट स्ट्रिंग्स के क्रम को स्वैप करना होगा :( pyth.herokuapp.com/…
KarlKastor

2

MATL , 2 बाइट्स

Z*

*उत्पादों के लिए सामान्य ऑपरेटर है और उपसर्ग Zइसे कार्टेसियन उत्पाद बनाता है और तर्क के रूप में दो तार ले सकता है।

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








1

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

lambda x,y:[[i,j]for i in x for j in y]

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

वैकल्पिक समाधान, 34 30 बाइट्स

-4 बाइट्स एंडर्स कसेगोर को धन्यवाद।

इसके लिए एक अंतर्निहित है ...

from itertools import*
product

30 बाइट्स:from itertools import*;product
एंडर्स कसर्ग



1

रेटिना , 49 बाइट्स

.(?=.*¶(.+))
$1$&¶
¶¶.+
¶
.(?=.*(.)¶)
$1$&¶
¶.¶
¶

इसे ऑनलाइन आज़माएं! अलग लाइनों पर इनपुट लेता है। स्पष्टीकरण:

.(?=.*¶(.+))
$1$&¶

पहली स्ट्रिंग में प्रत्येक वर्ण दूसरी स्ट्रिंग द्वारा उपसर्ग किए गए एक अलग लाइन उत्पन्न करता है।

¶¶.+
¶

मूल दूसरी स्ट्रिंग हटा दी गई है।

.(?=.*(.)¶)
$1$&¶

पहले स्ट्रिंग में प्रत्येक वर्ण के लिए, दूसरे स्ट्रिंग में प्रत्येक वर्ण पहले वर्ण के साथ उपसर्ग की एक अलग रेखा उत्पन्न करता है।

¶.¶
¶

पहले स्ट्रिंग के बाएँ अक्षर हटाए जाते हैं।


1

क्यू / केडीबी +, ५ बाइट्स

उपाय:

cross           / yup, there's a built-in to do exactly this

उदाहरण:

q)"123456"cross"abcd"
"1a"
"1b"
"1c"
"1d"
"2a"
"2b"
"2c"
"2d"
"3a"
"3b"
"3c"
"3d"
"4a"
"4b"
...etc

1

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

FθEη⁺ικ

इसे ऑनलाइन आज़माएं! लिंक कोड के वर्बोज़ संस्करण के लिए है। स्पष्टीकरण: चर θऔर ηस्पष्ट रूप से दो इनपुट स्ट्रिंग्स को संदर्भित करते हैं। आदेश, पहले इनपुट के हर किरदार से अधिक लूप जबकि आदेश पाश चर श्रृंखलाबद्ध दूसरे इनपुट के हर किरदार से अधिक नक्शे ιऔर मानचित्र चर κ, जिसके परिणामस्वरूप परोक्ष अलग पंक्ति में छपा है।


यह 19 बाइट्स लगता है।
कैलक्यूलेटरफैनलाइन

@CalculatorFeline चारकोल का अपना कोड पेज है
नील

1

आर , 29 बाइट्स

function(x,y)outer(x,y,paste)

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

ध्यान दें कि आर मैट्रिक्स कॉलम द्वारा भरा जाता है, इसलिए परिणाम कल्पना द्वारा निर्धारित क्रम में होता है।

यदि factorsइनपुट और आउटपुट के लिए अनुमति है , तो एक अंतर्निहित ... लेकिन किसी को कारक से परिणामी स्तर निकालने की आवश्यकता है इसलिए अंत में यह 29 बाइट्स से अधिक होगा।

आर , 11 बाइट्स

interaction

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


1

जाप , 5 2 बाइट्स

अब Japt में कार्टेशियन उत्पाद के लिए एक विधि है।

चरित्र तार के 2 सरणियों के रूप में इनपुट लेता है।

ïV

कोशिश करो


1

सी # 7, 78 63 बाइट्स

(a,b)=>$"({string.Join(",",a.SelectMany(x=>b,(x,y)=>(x,y)))})";

यह एक पूर्ण कार्यक्रम नहीं है और न ही एक कार्य
केवल

आप एक पूर्ण कार्यक्रम या एक फ़ंक्शन लिखने के लिए चाहिए और स्निपेट नहीं।
मुहम्मद सलमान

मैंने इसे बदल दिया है। लेकिन इस पृष्ठ पर कई उत्तर पूर्ण कार्यक्रम या फ़ंक्शन नहीं हैं। यकीन नहीं होता कि यह एक सिंगल क्यों है।
डेनिस_ई

btw, यही कारण है कि मुझे कोड गोल्फ पसंद नहीं है।
डेनिस_ई

चूंकि यह एक फ़ंक्शन है, आप इसे स्क्रीन पर लिखने के बजाय सीधे आउटपुट स्ट्रिंग वापस कर सकते हैं, मुझे लगता है कि यह आपको ~ 20 बाइट्स बचाता है।
सूंदर -
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.