কারটিশিয়ান পণ্য নিজের সাথে একটি তালিকা এন


10

যখন মানগুলির AA তালিকা এবং ধনাত্মক পূর্ণসংখ্যা দেওয়া হয় n, তখন আপনার কোডটি তালিকার কার্টেসিয়ান পণ্যটিকে নিজের nবারের সাথে আউটপুট করে ।

উদাহরণস্বরূপ, সিউডোকোডে আপনার ফাংশনটি এর মতো হতে পারে:

for x1 in list:
    for x2 in list:
        for x3 in list:
            ...
            for xn in list:
                print x1, x2, x3, ... , xn

উদাহরণ:

repeated_cart([1,2,3], 3)

1 1 1  
1 1 2  
1 1 3  
1 2 1  
1 2 2  
1 2 3  
1 3 1  
1 3 2  
1 3 3  
2 1 1  
2 1 2  
2 1 3  
2 2 1  
2 2 2  
2 2 3  
2 3 1  
2 3 2  
2 3 3  
3 1 1  
3 1 2  
3 1 3  
3 2 1  
3 2 2  
3 2 3  
3 3 1  
3 3 2  
3 3 3

কার্টেসিয়ান পণ্য (বা শক্তি) গণনা করে এমন ফাংশনগুলিতে (বা আমদানিকৃত লাইব্রেরিগুলি থেকে ফাংশনগুলি) অন্তর্নির্মিত ফলাফল ফলাফল কিছুটা বিরক্তিকর হওয়ার কারণে অনুমোদিত নয়।

ইনপুট এবং আউটপুটগুলি সীমিত করা উচিত তবে কোনও যুক্তিসঙ্গত পদ্ধতিতে নেওয়া যেতে পারে।

আউটপুট প্রদত্ত ক্রমটি বিবেচনা করে না তবে ডুপ্লিকেট অনুমোদিত নয়।

এটি আমার প্রথম প্রশ্ন পোস্ট করা, সুতরাং যদি আমি মারাত্মক কোনও ভুল করি তবে দয়া করে আমাকে বলুন।


5
পিপিসিজিতে আপনাকে স্বাগতম! ভয়াবহভাবে কোনও ভুল নয়, তবে এই মেটা পোস্ট এবং উত্তরগুলি দেখার জন্য কিছুটা সময় নিন। চ্যালেঞ্জগুলি লেখার সময় এড়ানোর বিষয়গুলি
জেসি

4
এবং @ জাইসির বক্তব্য অনুসরণ করতে, আপনি কোনও প্রশ্ন পোস্ট করার আগে প্রতিক্রিয়া জানাতে স্যান্ডবক্সে পোস্ট করা উচিত (-)
জিউসেপ্পে

@ জিউসেপ ঠিক আছে, আমি এখন থেকে এটি করব, ধন্যবাদ :)
জোশএম


1
@ জ্যাকব সেটগুলি ঠিক থাকতে হবে
জোশম

উত্তর:



6

কমন লিস্প , 146 বাইট

(defun f(l n)(if(< n 2)(loop for x in l collect(list x))(loop for a in l nconc(loop for b in(f l(1- n))collect(cons a b)))))(princ(f(read)(read)))

এটি অনলাইন চেষ্টা করুন!

ungolfed

(defun nloops (lst n)
  (if (< n 1)
      '(())
      (if (< n 2)
          (loop for x in lst collect (list x))
          (loop for a in lst
                nconc (loop for b in (nloops lst (1- n))
                            collect (cons a b))))))

2
সাধারণত: আপনার নিজের পোস্ট পোস্ট করার আগে আমরা অন্যান্য সাবমিশনের জন্য অপেক্ষা করার পরামর্শ দিই :-)
জিউস্পে

1
@ জিউস্পেপ ঠিক আছে, পরামর্শের জন্য ধন্যবাদ :)
জোশএম

1
আপনার জমা দেওয়ার ক্ষেত্রে মুদ্রণ বিবরণী থাকতে হবে না, যেহেতু কোনও ফাংশন অনুমোদিত
ASCII-

1
সুতরাং: 96
ASCII- কেবল


6

আর , 41 বাইট

function(l,n)unique(t(combn(rep(l,n),n)))

এটি অনলাইন চেষ্টা করুন!

combnঅবশ্যই এটি অন্তর্নির্মিত কোনও কার্তেসিয়ান পণ্য নয়, কারণ এটি এর ইনপুটটির সমস্ত nবিভাগকে গণনা করে ।

আর , 40 বাইট

function(l,n)expand.grid(rep(list(l),n))

এটি অনলাইন চেষ্টা করুন!

expand.grid সম্ভবত অন্তর্নির্মিত একটি কার্তেসিয়ান পণ্য।


দেখে মনে হচ্ছে আপনার প্রধান জমা দেওয়ার ক্রম ক্রমটি ভুল।
কিরিল এল।

@KirillL। অর্ডার জরুরী হওয়ার কোন বিশেষ কারণ আছে? আমি আউটপুট স্পিকে যে কোনও ক্রমে অনুমতি দেওয়ার জন্য যথেষ্ট নমনীয় বলে ব্যাখ্যা করেছি।
জিউসেপ

ওপির মন্তব্য আছে "নিশ্চিত করুন আউটপুটটি সঠিক ক্রমে রয়েছে", আমি অনুমান করেছি যে "ডান" অর্থ উদাহরণ হিসাবে একই।
কিরিল এল।

@KirillL। আহ। তা দেখেনি; এটি প্রশ্নের শরীরে নেই তাই আমি জানি না এটির অস্তিত্ব আছে! আমি জিজ্ঞাসা করব যে এটি স্পষ্ট করার জন্য সেখানে রাখা হয়েছে।
জিউসেপে


3

কে (এনএনজি / কে) , 10 বাইট

{x@+!y##x}

এটি অনলাইন চেষ্টা করুন!

{ }আর্গুমেন্ট xএবং সঙ্গে একটি ফাংশনy

#x দৈর্ঘ্য x

y##xxপুনরাবৃত্তি yবার দৈর্ঘ্য

!y##x সমস্ত দৈর্ঘ্য-ওয়াই ট্রান্সপোজড ম্যাট্রিক্স হিসাবে 0,1, ..., দৈর্ঘ্য (এক্স) -1 এর বেশি হয়

+ TRANSPOSE

x@xসেই সূচকগুলিতে উপাদানগুলি


3

এপিএল (ডায়ালগ ক্লাসিক) , 18 12 বাইট

{⍺[↑,⍳⍵⍴≢⍺]}

এটি অনলাইন চেষ্টা করুন!

-Ng বাইটস @ জিএনএনকে ধন্যবাদ!


সূচকগুলি তৈরি করতে এবং তারপরে অনুরূপ মানগুলি পেতে ভেক্টর আর্গুমেন্টের সাহায্যে আপনি ব্যবহার করতে পারেন⍺[ ]
ngn

আমি এটি RANK ERRORকরার চেষ্টা করার সময় একটি পেয়েছিলাম ।
জাকারি


একমাত্র ক্যাচটি ⍵ = 1 এর সাথে রয়েছে, সেক্ষেত্রে a একটি সরল ভেক্টর প্রত্যাবর্তন করে, নেস্টেড দৈর্ঘ্য -১ ভেক্টরের কোনও ভেক্টর যেমন প্রত্যাশা করে না; এটি এমন একটি বাগ যা পিছনে-সামঞ্জস্যতার কারণে কখনই স্থির হয় না
এনজিএন

3

পার্ল 5 , 33 বাইট

say for glob(join',',("{$_}")x<>)

এটি অনলাইন চেষ্টা করুন!


নিস! তাই অনেক উত্তর ইদানীং এটি ব্যবহার করতে সক্ষম হয়েছে! আপনি কিছুটা জাগল দিয়ে 2 বাইট বাঁচাতে পারেন: অনলাইনে চেষ্টা করে দেখুন!
ডম হেস্টিংস


3

রুবি , 53 বাইট

f=->l,n{n<2?l:l.flat_map{|i|f[l,n-1].map{|j|[i,*j]}}}

এটি অনলাইন চেষ্টা করুন!

পুনরাবৃত্তির পদ্ধতির, এত সংক্ষিপ্ত নয়, তবে কোনও বিল্ট-ইনগুলি থেকে মুক্ত থাকার গ্যারান্টিযুক্ত।

এটি ক্রিয়েটেশন পদ্ধতিগুলি ব্যবহার করার জন্য লোভনীয়, তবে সম্ভবত এটি গণনা করা হয়নি এবং প্রকৃতপক্ষে কার্যত কাজ করা বলে মনে হচ্ছে ডক্স আসলে আদেশের যথার্থতার কোনও গ্যারান্টি দেয় না:

রুবি , 35 বাইট

->l,n{[*l.repeated_permutation(n)]}

এটি অনলাইন চেষ্টা করুন!




2

জেলি , 11 9 7 বাইট

³;þẎƊ’¡

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

³;þẎƊ’¡
³;þẎ    **Implements** the cartesian product of a value with the input
    Ɗ   Groups those together
     ’¡ Repeat (n-1) times


আমি যে মন্তব্যটি এনেছি তা হ'ল: "আমি পুরো চ্যালেঞ্জের জন্য বিল্টিনগুলিও অস্বীকৃত বলে ধরে নিচ্ছি," সুতরাং আমি কেবল ধরে নিয়েছি যে এটি ঠিক আছে।
জাকারি

ঠিক আছে, আসুন তাহলে অপেক্ষার জন্য অপেক্ষা করা যাক
জাকারি

@ জ্যাচারý দুঃখিত, কার্টেসিয়ান শক্তি ফাংশনটির অনুমতি নেই
জোশম

3
আমি জানি না, এর মতো দুটি লুপের জন্য নেস্টেড মূলত কার্টেসিয়ান পণ্যের সংজ্ঞা। আমি বলছি না যদিও আপনার এটি পরিবর্তন করা উচিত, আমি কেবলমাত্র মনে করি এই চ্যালেঞ্জটিতে বিল্ট-ইন নিষিদ্ধ করা এক ধরণের অস্পষ্ট।
dylnan

2

খাঁটি বাশ (কোনও বাহ্যিক উপযোগ নেই), 57

printf -vn %0$1d
a=${n//0/{$2\}}
eval echo ${a//\}{/\},{}

কমান্ড-লাইন প্যারামিটার হিসাবে ইনপুট দেওয়া হয়; 1 ম হচ্ছে n, 2 য় একটি কমা-বিচ্ছিন্ন তালিকা।

printf -vn %0$1d         ;# Create a string of n "0"s in the variable v
a=${n//0/{$2\}}          ;# Replace each "0" with "{a,b,...m}"
eval echo ${a//\}{/\},{} ;# Replace each "}{" with "},{" and evaluate the resulting brace expansion

এটি অনলাইন চেষ্টা করুন!


2

জাভা 10, 19 + 135 = 154 বাইট

import java.util.*;

List<List>f(Set l,int n){var o=new Stack();if(n<1)o.add(new Stack());else for(var t:l)for(var i:f(l,n-1)){i.add(t);o.add(i);}return o;}

এটি অনলাইন চেষ্টা করুন

Ungolfed

List<List> f(Set l, int n) {
    var o = new Stack();
    if (n < 1)
        o.add(new Stack());
    else
        for (var t : l)
            for (var i : f(l, n - 1)) {
                i.add(t);
                o.add(i);
            }
    return o;
}

প্রাপ্তি স্বীকার

  • জাভা বন্দরের 10 কেভিন ক্রুইজসেন ধন্যবাদ

আপনি জাভা 10 পরিবর্তে 8 ব্যবহার করেন, তাহলে পরিবর্তন করতে পারেন Objectএবং Listজন্য-প্রতিটি লুপ করার জন্য varজন্য -4 বাইট। উপরন্তু, আপনি তারপর পরিবর্তন করতে পারেন Set<List>fকরতে List<List>fএবং Set o=new HashSet();করতে var o=new Stack();একটি অতিরিক্ত -1 বাইট জন্য। এটি অনলাইনে চেষ্টা করুন।
কেভিন ক্রুইজসেন

হুম। আর বৈধ lambdas জন্য ধরনের আউট ছাড়ছেন
হওয়া ASCII শুধুমাত্র

@ এএসসিআইআই-না, না টাইপযুক্ত ল্যাম্বডাস অনুমোদিত। আমি এখানে ল্যাম্বদা ব্যবহার করতে পারিনি কারণ সমাধানটি পুনরাবৃত্তি ব্যবহার করে।
জ্যাকব

@ জাকোব আহ, এটি ঠিক> _>
এএসসিআইআই-

2

ওরাকল এসকিউএল, 177 বাইট

সংগ্রহের ধরণ তৈরি করুন (31 বাইট):

CREATE TYPE t IS TABLE OF INT;

তারপরে ক্যোয়ারী (146 বাইট) ব্যবহার করুন:

WITH n(a,b,c)AS(SELECT a,b,t()FROM i UNION ALL SELECT a,b-1,c MULTISET UNION t(COLUMN_VALUE)FROM n,TABLE(n.a)WHERE b>=0)SELECT c FROM n WHERE b=0

ধরে নিচ্ছি যে ইনপুট পরামিতিগুলি iকলাম aএবং সহ টেবিলে রয়েছে b:

CREATE TABLE i (a t,b INT) NESTED TABLE a STORE AS t_a;
INSERT INTO i VALUES ( t(1,2,3), 3 );

এসকিউএল ফিডল

ফলাফল :

|     C |
|-------|
| 1,1,1 |
| 1,1,2 |
| 1,1,3 |
| 1,2,1 |
| 1,2,2 |
| 1,2,3 |
| 1,3,1 |
| 1,3,2 |
| 1,3,3 |
| 2,1,1 |
| 2,1,2 |
| 2,1,3 |
| 2,2,1 |
| 2,2,2 |
| 2,2,3 |
| 2,3,1 |
| 2,3,2 |
| 2,3,3 |
| 3,1,1 |
| 3,1,2 |
| 3,1,3 |
| 3,2,1 |
| 3,2,2 |
| 3,2,3 |
| 3,3,1 |
| 3,3,2 |
| 3,3,3 |


1

জাভাস্ক্রিপ্ট (নোড) , 75 বাইট

c=(m,n,a,i)=>a.length-n?m.map((_,j)=>c(m,n,[...a,m[j]],i+1)):console.log(a)

পুনরাবৃত্তির কাজ যা কনসোলে তালিকার বাইরে চলে যায়। aখালি অ্যারে কোথায় এবং i0 (এটি এখনও যোগ্যতা অর্জন করে কিনা তা নিশ্চিত নয়):

c([1,2,3], 3, [], 0);

এটি অনলাইন চেষ্টা করুন!


1
আমি মনে করি আপনাকে করতে হবে(m,n,a=[],i=0)=>
আর্টিয়ার


1

জে , 17 বাইট

]{~(##)#:#@]i.@^[

কিভাবে এটা কাজ করে?

আমি nতালিকার দৈর্ঘ্যের ভিত্তিতে একটি সংখ্যা সিস্টেমে সমস্ত- ডিজিট সংখ্যা গণনা করি ।

            i.         - creates a list from zero to (not including)
         #@]           - the length of the list 
              @^       - to the power of
                [      - n (left argument)
   (##)                - creates a list of n times the length of the list (for the bases)
       #:              - converts all the numbers into lists of digits in the new base
]{~                    - use the digits as indices into the list

এটি অনলাইন চেষ্টা করুন!




আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.