औसत दो सूचियाँ


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 आप केवल एक तत्व को दूसरे में ले जा सकते हैं। मैं कुछ और परीक्षण मामलों को जोड़
दूंगा

तो, क्या यह समान है, "एकल सूची (उनकी यूनियन) को देखते हुए, एक ही औसत के साथ दो गैर-रिक्त सूची में विभाजित किया जा सकता है?"
xnor

1
@ vihan1086 इनपुट के रूप में एक भी सूची क्यों नहीं ली गई? आपकी प्रस्तुति अनावश्यक रूप से जटिल लगती है।
ज़्नोर

2
@ vihan1086 आपके सैंडबॉक्स पोस्ट को देखते हुए, स्पष्टीकरण के लिए इन समान अनुरोधों में से कई वहां किए गए थे, और आपने कहा था कि आपने इनमें से कई बिंदुओं को स्पष्ट किया है, लेकिन आपके संपादन वास्तव में उन्हें स्पष्ट नहीं करते हैं। आप आगे के पाठ को जोड़ने के बजाय भ्रामक पाठ की जगह लेना बेहतर होगा।
xnor

जवाबों:


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
अच्छा काम, १। लेकिन क्या वास्तव में अर्थ की गणना के लिए पायथ में बिल्ट-इन नहीं है?
एलेक्स ए।

@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। आप केवल इसे बराबर लंबाई के दो भागों में विभाजित कर रहे हैं।
केविन क्रूज़सेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.