দুটি তালিকার গড় আউট


11

দুটি তালিকার গড় আউট

চ্যালেঞ্জ

ধনাত্মক পূর্ণসংখ্যার দুটি তালিকা দেওয়া, এটি নির্ধারণ করুন যে উপাদানগুলিকে দুটি নতুন তালিকায় পুনরায় সাজানো সম্ভব কিনা যে নতুন তালিকাগুলিতে একই গাণিতিক গড় (গড়) রয়েছে।

ইনপুট

ইনপুটটি STDIN এর মাধ্যমে বা ফাংশন আর্গুমেন্ট হিসাবে নেওয়া যেতে পারে। ইনপুটটিকে তালিকা হিসাবে নেওয়া যেতে পারে, বা যদি আপনার ভাষা তালিকাগুলি সমর্থন করে না (বা অ্যারে / অভিধানের মতো অনুরূপ কিছু) তবে ইনপুটটি কমা বা স্থান-সীমিত স্ট্রিং হিসাবে নেওয়া যেতে পারে। এটাই,

"1 4 8 2 5,3 1 5 2 5"

এটার মতই:

[ [1,4,8,2,5], [3,1,5,2,5] ]

সমস্ত ইনপুট তালিকা একই দৈর্ঘ্য হবে।

আউটপুট

আপনি যদি একই গড় দিয়ে দুটি নতুন তালিকা তৈরি করতে পারেন তবে আপনার প্রোগ্রাম / ফাংশনটির মুদ্রণ করা উচিত বা ফিরে আসা উচিত। যদি আপনি না করতে পারেন তবে আপনার প্রোগ্রামটির উচিত একটি দু: খিত মুখ :(

নোট করুন যে সমান উপায়ে পুনর্বিন্যাসিত তালিকাগুলি যদি বিদ্যমান থাকে তবে একই দৈর্ঘ্যের প্রয়োজন নেই। নতুন তালিকা তৈরি করতে যে কোনও সংখ্যক অদলবদল করা যেতে পারে।

উদাহরণ

1 4 8 2 5,3 1 5 2 5 -> 1 4 8 2 3,5 1 5 2 5 (swapped 3 and 5) -> 3.6
1 3 6 2,16 19 19 14 -> [[1,6,19,14],[3,2,16,19]] -> 10
2 6 2,6 3 5 -> 2 6,2 6 3 5 (moved 2) -> 4
90 80 20 1,40 60 28 18 -> :(

এটি তাই বাইট জিতে সংক্ষিপ্ততম কোড। সর্বদা হিসাবে, স্ট্যান্ডার্ড লুফোলগুলি অনুমোদিত নয়।


2
আমরা প্রতিটি তালিকা থেকে বিভিন্ন সংখ্যক উপাদান অদলবদল করতে পারি? একটি তালিকা কি অন্যকে উপাদান দিতে পারে? "বৈধ অনুমানের উপস্থিতি" বলতে আপনার অর্থ কী তা আমি বুঝতে পারি না। এছাড়াও, এটি আরও পরীক্ষার ক্ষেত্রে প্রয়োজন।
xnor

@ এক্সনোর আপনি কেবল একটি উপাদানকে অন্যটিতে সরিয়ে নিতে পারেন। আমি আরও কয়েকটি পরীক্ষার কেস যুক্ত করব
১৯৯:

সুতরাং, এটি কি সমান, "একটি একক তালিকা দেওয়া (তাদের ইউনিয়ন) দেওয়া কি একই গড় দিয়ে দুটি অযৌক্তিক তালিকায় বিভক্ত হতে পারে?"
xnor

1
@ vihan1086 কেন তখন ইনপুট হিসাবে একটি তালিকা নিবেন না? আপনার উপস্থাপনা অযথা জটিল বলে মনে হচ্ছে।
xnor

2
@ vihan1086 আপনার স্যান্ডবক্স পোস্টটি দেখে, স্পষ্টকরণের জন্য এই একই অনুরোধগুলির অনেকগুলি এখানে করা হয়েছিল এবং আপনি বলেছিলেন যে আপনি এই পয়েন্টগুলির অনেকগুলি স্পষ্ট করে দিয়েছেন, কিন্তু আপনার সম্পাদনাগুলি সত্যই সেগুলি পরিষ্কার করে দেয় না। আপনি আরও পাঠ্য যুক্ত না করে বিভ্রান্তিকর পাঠ্য প্রতিস্থাপনের চেয়ে আরও ভাল।
এক্সএনওর

উত্তর:


12

পাইথ, 24 বাইট

?}KcsJsQlJmcsdldtPyJK":(

অনলাইনে চেষ্টা করুন: বিক্ষোভ

একটি ত্রুটি লক্ষ্য করে এবং একটি বাইট গল্ফ করার জন্য ডেনিসকে ধন্যবাদ।

ব্যাখ্যা:

?}KcsJsQlJmcsdldtPyJK":(   implicit: Q = evaluated input
      sQ                   all numbers of Q
     J                     save them in J
  KcsJ  lJ                 average of J (sum(J) / len(J))
                           store in K
          m     tPyJ       map each nonempty subset d of J to:
           csdld             average of d
?}                         if K in ^:
                    K        print K
                     ":(   else print sad-face

5
চমৎকার কাজ, +1। তবে পাইথের কি আসলেই গণনার জন্য অন্তর্নির্মিত ব্যবস্থা নেই?
অ্যালেক্স এ।

@AlexA। এখন এটির একটি রয়েছে (যথা .O)
মিঃ এক্সকোডার

6

এসডাব্লুআই-প্রোলগ, 159 বাইট

a(A,B):-append([A,B],R),permutation(R,S),append([Y,Z],S),sum_list(Y,I),sum_list(Z,J),length(Y,L),length(Z,M),L\=0,M\=0,I/L=:=J/M,W is J/M,write(W);write(':(').

হিসাবে ডাকা হয় a([1,4,8,2,5],[3,1,5,2,5]).


5

জুলিয়া, 101 বাইট

f(a,b)=(m=mean;p=filter(i->m(i[1])==m(i[2]),partitions([a,b],2));isempty(p)?":(":m(collect(p)[1][1]))

এটি এমন একটি ফাংশন তৈরি করে যা দুটি অ্যারে গ্রহণ করে এবং সেই অনুসারে একটি স্ট্রিং বা ফ্লোট ফেরত দেয়।

অবহেলিত + ব্যাখ্যা:

function f(a,b)
    # Get the set of all 2-way partitions of the array [a,b]
    l = partitions([a,b], 2)

    # Filter the set of partitions to those where the two
    # contained arrays have equal means
    p = filter(i -> mean(i[1]) == mean(i[2]), l)

    # Return a frown if p is empty, otherwise return a mean
    isempty(p) ? ":(" : mean(collect(p)[1][1])
end

2

আর, 94 বাইট

মূলত যাকুবেস আমার মনে হয় একইভাবে। উভয় তালিকার গড় যদি তালিকার মানগুলির কোনও সংমিশ্রণের সাথে তালিকাগুলির মিলিত দৈর্ঘ্যের সাথে মিলিত না হয় তবে গড়টিকে অন্যথায় দু: খিত মুখটি আউটপুট করুন।

if(mean(l<-scan())%in%unlist(sapply(2:length(l)-1,function(x)combn(l,x,mean))))mean(l)else':('

টেস্ট রান

> if(mean(l<-scan())%in%unlist(sapply(2:length(l)-1,function(x)combn(l,x,mean))))mean(l)else':('
1: 1 4 8 2 5
6: 3 1 5 2 5
11: 
Read 10 items
[1] 3.6
> if(mean(l<-scan())%in%unlist(sapply(2:length(l)-1,function(x)combn(l,x,mean))))mean(l)else':('
1: 90 80 20 1
5: 40 60 28 18
9: 
Read 8 items
[1] ":("

0

জেলি , 22 বাইট

FŒ!œs2ÆmE$$Ðf⁾:(ÆmX$Ṇ?

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

সহায়তায় সম্পন্ন জনাব Xcoder মধ্যে চ্যাট

ব্যাখ্যা

FŒ!œs2ÆmE$$Ðf⁾:(ÆmX$Ṇ? - Main link, argument a (2D-array)

F                      - Flatten
 Œ!                    - All permutations
           Ðf          - Keep elements which are truthy when
   œs2    $            -   split into 2 parts and...
      Æm $             -   the means of each...
        E              -   are the same
                     ? - Ternary if
                    Ṇ  -   Condition: No lists remain
             ⁾:(       -   If so: Set the return value to ":("
                   $   -   Otherwise: 
                Æm     -     Get the mean of each list
                  X    -     Randomly choose one (all elements are the same)

ব্যর্থ 2 6 2,6 3 5 -> 2 6,2 6 3 5 (moved 2) -> 4। আপনি এটি এখন সমান দৈর্ঘ্যের দুটি অংশে বিভক্ত করছেন।
কেভিন ক্রুইজসেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.