তালিকাগুলি কি বিভাজ্য?


20

এটি থেকে অনুপ্রাণিত (ব্যাখ্যাটি চুরির সাথে) এটি

পটভূমি

বলুন আপনার দুটি তালিকা A = [a_1, a_2, ..., a_n]এবং B = [b_1, b_2, ..., b_n]পূর্ণসংখ্যা রয়েছে। বলতে Aহয় সম্ভাব্য-বিভাজ্য দ্বারা Bআছে যদি একটি বিন্যাস Bকরে তোলে a_iদ্বারা বিভাজ্য b_iসবার জন্য i। সমস্যাটি তখন: সকলের পক্ষে বিভাজ্য Bতাই পুনরায় অর্ডার করা (মানে পারমিট) করা কি সম্ভব ? উদাহরণস্বরূপ, আপনি যদিa_ib_ii

A = [6, 12, 8]
B = [3, 4, 6]

তারপর উত্তর হবে True, যেমন Bহতে পুনর্বিন্যস্তভাবে যাবে B = [3, 6, 4]এবং তারপর আমরা যে হবে a_1 / b_1 = 2, a_2 / b_2 = 2এবং a_3 / b_3 = 2, যার মধ্যে সব পূর্ণসংখ্যার, তাই Aকর্তৃক-বিভাজ্য হয় B

ফলাফল হিসাবে যা আউটপুট করা উচিত False, আমাদের থাকতে পারে:

A = [10, 12, 6, 5, 21, 25]
B = [2, 7, 5, 3, 12, 3]

এর কারণ হ'ল Falseআমরা B25 এবং 5 এর মধ্যে পুনরায় অর্ডার করতে পারি না Aতবে কেবলমাত্র বিভাজকটি B5 হবে তাই একটিকে বাদ দেওয়া হবে।

তোমার কাজ

আপনার কাজটি অবশ্যই দুটি নির্ধারণ (ইনপুট হিসাবে দেওয়া) সম্ভাব্য বিভাজ্য কিনা তা নির্ধারণ করা। আউটপুট হিসাবে আপনি কোনও স্বীকৃত পদ্ধতিতে ইনপুট নিতে পারেন।

তালিকাগুলির নকলগুলি একটি সম্ভাবনা এবং পূর্ণসংখ্যার উপর একমাত্র আকারের বিধিনিষেধগুলি হ'ল আপনার ভাষা। উভয় তালিকার সমস্ত পূর্ণসংখ্যা 0 এর চেয়ে বড় হবে এবং উভয় তালিকা সমান আকারের হবে।

সমস্ত মতোই আউটপুট মানগুলি অবশ্যই 2 টি পৃথক মান হতে পারে যা সত্য এবং মিথ্যা উপস্থাপন করে।

এটি একটি তাই সংক্ষিপ্ততম কোড জয়!

পরীক্ষার মামলা

Input, input => output

[6, 12, 8], [3, 4, 6] => True
[10, 5, 7], [1, 5, 100] => False
[14, 10053, 6, 9] [1,1,1,1] => True
[12] [7] => False
[0, 6, 19, 1, 3] [2, 3, 4, 5, 6] => undefined

3
প্রশ্ন থেকে @ শেগি: উভয় তালিকা সমান আকারের হবে
২air শে

2
শেষ পরীক্ষার মামলাটি কেন অপরিজ্ঞাত?
ডেনিস

1
@ ডেনিসের তালিকার একটিতে এর মধ্যে একটি 0 রয়েছে
২১

1
ঠিক। (কেন নিশ্চিত নয়, 0 সমস্ত সংখ্যার দ্বারা বিভাজ্য)) দুটি ফলাফল কী সত্যবাদী এবং মিথ্যা হতে হবে, বা কেবল সামঞ্জস্যপূর্ণ হতে হবে?
ডেনিস

@ ডেনিস 1) 0 টি বিভাগের ত্রুটি এড়ানোর জন্য এটি 0 দ্বিতীয় তালিকায় থাকলে 2) কেবল সামঞ্জস্যপূর্ণ
২air

উত্তর:


10

জেলি , 5 বাইট

Œ!%ḄẠ

রিটার্নস 0 জন্য সত্য , 1 জন্য মিথ্যা

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

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

Œ!%ḄẠ  Main link. Arguments: A, B (arrays)

Œ!     Generate all permutations of A.
  %    Take each permutation modulo B (element-wise).
   Ḅ   Convert all resulting arrays from binary to integer.
       This yields 0 iff the permutation is divisible by B.
    Ạ  All; yield 0 if the result contains a 0, 1 otherwise.

9

কান্ড , 7 6 5 বাইট

@ জাগারবকে ধন্যবাদ 2 বাইট সংরক্ষিত

▼▲‡¦P

বিপরীত ক্রম argents এবং আয় লাগে 1জন্য Trueএবং 0জন্য False

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

ব্যাখ্যা

    P     -- Permutations of the first argument
  ‡       -- Deep zip (vectorises function) with second argument
   ¦      --   Does x divide y
 ▲        -- Get the maximum of that list, returns [1,1...1] if present
▼         -- Get the minimum of that list, will return 0 unless the list is all 1s

VΠMz¦P6 বাইট জন্য কাজ করা উচিত।
জাগারব

এগুলি কি "দুটি স্বতন্ত্র মান" হিসাবে বিবেচিত হয়?
জিওকাভেল

ওহ, এবং Mzহতে পারে
Zgarb

আমি মনে করি ▼▲পরিবর্তে আপনার প্রয়োজন ▲▼। যে কোনও ক্ষেত্রে দুর্দান্ত ধারণা!
জাগারব

5

05 এ বি 1 ই , 7 বাইট

ইনপুট: বি এবং এ তালিকার তালিকা নেয় (বিপরীত ক্রম)
আউটপুট: 1 সত্য হলে, অন্যথায় 0

œvIyÖPM

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

ব্যাখ্যা:

œvIyÖPM    Complete program
œ          Pushes all permutations of B as a list
 v         For each permutation
  I        Pushes last input on top of the stack
   yÖ      Computes a % b == 0 for each element of A and B
     P     Pushes the total product of the list
      M    Pushes the largest number on top of the stack

5

এমএটিএল , 8 7 6 বাইট

ডেনিসের জেলি উত্তর থেকে একটি ধারণা ব্যবহার করে 1 বাইট বন্ধ করুন

Y@\!aA

ইনপুট হয় B, তারপর A। আউটপুটটি 0বিভাজ্য বা 1না হলে হয়।

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

ব্যাখ্যা

Y@     % Implicit input: row vector B. Matrix of all permutations, each on a row
\      % Implicit input: row vector A. Modulo, element-wise with broadcast. Gives
       % a matrix in which each row contains the moduli of each permutation of B
       % with respect to A
!a     % True for rows that contain at least a nonzero value
A      % True if all values are true. Implicit display

3

গণিত, 52 বাইট

Cases[Permutations@#2,p_/;And@@IntegerQ/@(#/p)]!={}& 

-২ বাইটের জন্য @ngenisis ধন্যবাদ


2
Casesসাধারণত খাটো হয়:Cases[Permutations@#2,p_/;And@@IntegerQ/@(#/p)]!={}&
নেজেনিসিস

3

জাভাস্ক্রিপ্ট (ES6), 67 63 বাইট

একটি বুলিয়ান ফেরত দেয়।

f=([x,...a],b)=>!x||b.some((y,i)=>x%y?0:f(a,c=[...b],c[i]=1/0))

পরীক্ষার মামলা



3

আর + কম্বিন্যাট , 69 66 58 বাইট

-3 বাইট জারকো ডাবলডামকে ধন্যবাদ thanks

অন্য -8 বাইট জারকো ধন্যবাদ

function(a,b)any(combinat::permn(b,function(x)all(!a%%x)))

অদ্ভুতভাবে, সমস্ত ক্রম উত্পাদন উত্পন্ন করার জন্য আর এর অন্তর্নির্মিত ক্ষমতা নেই। একটি বুলিয়ান ফেরত দেয়।

অতিরিক্তভাবে, জারকোর দ্বিতীয় উন্নতিতে, সতর্কতার সাথে anyতালিকাটি একটি ভেক্টরের কাছে জোর করে logical

এটি অনলাইন চেষ্টা করুন! (R-বেহালার)


1
সমস্ত (x <1) যেকোন (! X) এর চেয়ে লম্বা এবং আপনি
যেকোনোটির

@ জারকো ডাবডেলডাম ভাল কল। ধন্যবাদ.
জিউসেপে

ওহ, এবং আপনি অন্তর্ভুক্ত তালিকা থেকে বাদ দিতে পারেন, হ্যাঁ অন্তর্নিহিত জোরের জন্য।
জেএডি

পছন্দ করেছেন
জিউসেপে





1

সিজেম, 20 17 বাইট

:A;e!{A\.%:+!}#W>

পরীক্ষার সংস্করণ

প্রথম আর্গুমেন্ট হিসাবে অ্যারে বি গ্রহণ করে এমন ফাংশন এবং দ্বিতীয় আর্গুমেন্ট হিসাবে অ্যারে এ। নোট করুন পরীক্ষার সংস্করণে আমি আদেশটি A এর পরে বি তে স্যুইচ করি


1

জাভাস্ক্রিপ্ট (ES6), 100 বাইট

f=(a,b)=>!a[0]||a.some((c,i)=>b.some((d,j)=>c%d<1&f(e=[...a],d=[...b],e.splice(i,1),d.splice(j,1))))

কিছুটা অদক্ষ; একটি অতিরিক্ত &এটি গতি হবে।


1

পিএইচপি, 112 180 178 বাইট

আমি খুব ছোট ভাবছিলাম।

function($a,$b){for($p=array_keys($b);++$i<count($b);){foreach($b as$k=>$x)$f|=$a[$k]%$x;if($f=!$f)return 1;$p[$i]?[$b[$j],$b[$i],$i]=[$b[$i],$b[$j=$i%2*--$p[$i]],0]:$p[$i]=$i;}}

বেনামে ফাংশন দুটি অ্যারে লাগে, NULLমিথ্যা জন্য ফিরে আসে এবং1
যদি দ্বিতীয় অ্যারে থাকে তবে একটি ত্রুটি ছুড়ে দেয় 0

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


এর জন্য ভুল ফলাফল মুদ্রণ করে $f([6,5],[3,5])
nwellnhof

পছন্দ করেছেন লক্ষ্য করার জন্য ধন্যবাদ
তিতাস

1

সি (জিসিসি) , 191 বাইট

#define F(v)for(i=0;i<v;++i){
#define X if(f(s,n,a,b))return 1
j;f(s,n,a,b,i)int*a,*b;{if(--n){F(n)X;j=i*(n%2);b[j]^=b[n];b[n]^=b[j];b[j]^=b[n];}X;}else{F(s)if(a[i]%b[i])return 0;}return 1;}}

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

ব্যবহার: f(int size, int size, int *a, int *b)

1বিভাজ্য হলে ফিরে আসে ,0 otherwise টিআইওতে উদাহরণ ব্যবহার দেখুন।

(সি তে কঠোরভাবে অনুমতি দেওয়া উচিত, সুতরাং এটি খুব কম প্রতিযোগিতামূলক)


1

পার্ল 6 , 38 বাইট

আসলে @ নলহ্নহোফের উত্তরটি খুব বেশি পঠনযোগ্য বলে মনে হচ্ছে, তাই আমি কেবল লেখার কোডের সূক্ষ্ম পার্ল traditionতিহ্য অনুসরণ করতে বেরিয়েছি :—)।

@ নয়েলহোফের জন্য 1 বাইট সংরক্ষিত ধন্যবাদ।

{min max (@^a,) XZ%% @^b.permutations}

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

এটি কী করে: এটি একটি বেনামে ফাংশন যা দুটি তালিকার যুক্তি গ্রহণ করে। যখন আমরা বলি @^a, আমরা প্রথমটি কখন বোঝায়@^b , এটি দ্বিতীয় one

(@^a,)তালিকাসমূহ একটি তালিকা @^a@^b.permutationsএর সমস্ত আদেশের তালিকা @^b। "এক্সজেড %%" অপারেটর বামদিকে একটি তালিকার সমস্ত সম্ভাব্য জোড় তৈরি করে এবং ডানদিকে সমস্ত ক্রমবিন্যাস করে এবং তাদের উপর "জেড %%" অপারেটর ব্যবহার করে, যা বিভাজন অপারেটরটি ব্যবহার করে স্ট্যান্ডার্ড "জিপ" অপারেশন %%।

maxঅপারেটর তালিকার বৃহত্তম উপাদান (এই ক্ষেত্রে, এটা তালিকা অধিকাংশ আছে যে দেয় Trueতার মধ্যে 'গুলি)। তারপরে আমরা "সবচেয়ে সত্য" তালিকার সমস্ত উপাদান সত্য কিনা তা দেখার জন্য লজিকাল অ্যান্ড অপারেটর ব্যবহার করে এটি হ্রাস করি এবং এটি ফলাফল। এটি @ নেলহ্নহফ লিখেছেন কি না তার প্রায় সঠিক কপি, কেবলমাত্র বাইটস শেভ করতে অস্পষ্ট অপারেটর ব্যবহার করে।


এটি বলেছে permutations, এটি স্পষ্টতই খুব বেশি পঠনযোগ্য;)
২১

ওয়েল, পার্ল 6 এর একটি সত্যিকারের শক্তিশালী অন্তর্মুখী মডেল রয়েছে। এই কলটি অস্পষ্ট করার জন্য সম্ভবত আমি এটি অধ্যয়ন করতে পারি? : ডি
রমিলিজ

অন্য একটি বাইট সংরক্ষণ করতে এর [&&]সাথে প্রতিস্থাপন করুন min
nwellnhof

আপনি XZ%%
জো

আমি আশা করি এরকম কিছু {all (@^a,)Z%%@^b.permutations.any}সম্ভব হয়েছিল
জো কিং

1

ব্র্যাচল্যাগ , 6 বাইট

pᵐz%ᵛ0

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

দুটি তালিকাটি সম্ভাব্য বিভাজ্য এবং যদি তা না হয়ে থাকে তবে ভবিষ্যদ্বাণীটি সফল হয়।

pᵐ        For some pair of permutations of the two input lists,
  z       for each pair of corresponding elements
   %ᵛ0    the first mod the second is always zero.




0

স্কালা, 60 বাইট

Golfed:

a=>b=>b.permutations exists(a zip _ forall(p=>p._1%p._2==0))

Ungolfed:

a=>b=>         // Function literal taking 2 lists of integers, a and b.
b.permutations // All permutations of b.
exists(        // Whether the given function is true for any element.
a zip _        // Zips a and the current permutation of b into a list of pairs.
forall(        // Whether the given function is true for all elements.
p=>            // Function literal taking a pair of integers.
p._1%p._2==0)) // If the remainder of integer division between the members of the pair is 0.

0

জাপট , 12 11 বাইট

আউটপুট trueবা false

Vá de@gY vX

এটা পরীক্ষা করো


ব্যাখ্যা

অ্যারে Uএবং V( Aএবং Bযথাক্রমে) এর অন্তর্নির্মিত ইনপুট

এর সমস্ত আদেশের একটি অ্যারে তৈরি করুন V

d

উপাদানগুলির (উপ-অ্যারে )গুলির মধ্যে কোনও সত্য ফিরে আসে কিনা তা পরীক্ষা করে দেখুন।

e@

বর্তমান সাব-অ্যারেতে প্রতিটি উপাদান Xবর্তমান উপাদান এবং Yবর্তমান সূচক সহ নিম্নলিখিত ফাংশনটি অতিক্রম করার সাথে সাথে সত্যটি ফিরে আসে কিনা তা পরীক্ষা করে দেখুন ।

gY

Uসূচকে উপাদানটি পান Y

vX

এটি দ্বারা বিভাজ্য কিনা তা পরীক্ষা করুন X

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