सबसे कम मूल्य का उपयोग कर कम करें


9

चुनौती

एक फ़ंक्शन बनाएं जो संख्याओं की एक सरणी लेता है और प्रत्येक तत्व से उस सरणी के सबसे निचले तत्व को घटाता है जो अभी तक दूसरे से घटाया नहीं गया है।

  • सबसे कम मूल्य का उपयोग करने के बाद, इसका फिर से उपयोग नहीं किया जा सकता है।
  • सरणी में संख्याएँ दशमलव संख्याएँ हैं, और आवश्यक रूप से पूर्णांक नहीं हैं।

उदाहरण:

Input: [6, 4, 7, 8, 9, 2, 1, 4]

Next lowest value:          Output:
[6, 4, 7, 8, 9, 2, 1, 4]    [6, 4, 7, 8, 9, 2, 1, 4]
                   ^         ^
                            6-1 = 5
[6, 4, 7, 8, 9, 2, -, 4]    [5, 4, 7, 8, 9, 2, 1, 4]
                ^               ^
                            4-2 = 2
[6, 4, 7, 8, 9, -, -, 4]    [5, 2, 7, 8, 9, 2, 1, 4]
    ^                              ^
                            7-4 = 3
[6, -, 7, 8, 9, -, -, 4]    [5, 2, 3, 8, 9, 2, 1, 4]
                      ^               ^
                            8-4 = 4
[6, -, 7, 8, 9, -, -, -]    [5, 2, 3, 4, 9, 2, 1, 4]
 ^                                       ^
                            9-6 = 3
[-, -, 7, 8, 9, -, -, -]    [5, 2, 3, 4, 3, 2, 1, 4]
       ^                                    ^
                            2-7 = -5
[-, -, -, 8, 9, -, -, -]    [5, 2, 3, 4, 3,-5, 1, 4]
          ^                                    ^
                            1-8 = -7
[-, -, -, -, 9, -, -, -]    [5, 2, 3, 4, 3,-5,-7, 4]
             ^                                    ^
                            4-9 = -5

Final output: [5, 2, 3, 4, 3, -5, -7, -5]

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

Input: [6, 4, 7, 8, 9, 2, 1, 4] => Output: [5, 2, 3, 4, 3, -5, -7, -5]

Input: [4, 7, 4, 9, -10, 8, 40] => Output: [14, 3, 0, 2, -18, -1, 0]

Input: [0.25, -0.5, 8, 9, -10] => Output: [10.25, 0, 7.75, 1, -19]

Input: [3, 4, 9, 1, 1, 1, -5] => Output: [8, 3, 8, 0, -2, -3, -14]


ये है , इसलिए बाइट्स में सबसे छोटा जवाब जीत जाता है।


4
यह एक उदाहरण के माध्यम से चल सकता है। जैसा कि यह अब खड़ा है कि कार्य को परीक्षण मामलों से अनुमान लगाने की आवश्यकता है।
लकोनी

1
धन्यवाद @Arnauld करने के लिए समय लेने के लिए। मैं कल से पीसी का उपयोग करने में सक्षम नहीं था इसलिए मैं उदाहरण को संशोधित नहीं कर सका
लुइस फेलिप डी जीसस मुनोज

3
क्या सरणियों में गैर-पूर्णांक शामिल करने का कोई विशिष्ट कारण है? यह चुनौती को अधिक रोचक नहीं बनाता है, कुछ दृष्टिकोणों को नियमबद्ध करता है, और गैर-पूर्णांक प्रकारों के बिना भाषाओं में एक बड़ी समस्या पैदा करता है।
डेनिस

जवाबों:






3

रूबी, 32 चरस

->a{a.zip(a.sort).map{|x,y|x-y}}

आप केवल मान प्रिंट कर सकते हैं: -> {a.zip (a.sort) {| x, y। P xy}}
GB

3

जावास्क्रिप्ट (ईएस 6), 44 बाइट्स

a=>[...a].map(x=>x-a.sort((a,b)=>b-a).pop())

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

टिप्पणी की गई

a =>                 // given the input array a[]
  [...a]             // create a copy of a[]
  .map(x =>          // for each integer x in the copy:
    x -              //   update x by ...
    a.sort((a, b) => //     sorting the original array in descending order
      b - a          //     (we only need to sort it once, but it's shorter to do it here)
    ).pop()          //     taking the element at the top of a[] and subtracting it from x
  )                  // end of map()

3

जावा 10, 83 बाइट्स

a->{var b=a.clone();java.util.Arrays.sort(b);for(int i=0;i<a.length;a[i]-=b[i++]);}

बाइट को बचाने के लिए एक नया वापस करने के बजाय इनपुट-सरणी को संशोधित करता है।

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

स्पष्टीकरण:

a->{                         // Method with double-array parameter and no return-type
  var b=a.clone();           //  Create a copy of the input-array
  java.util.Arrays.sort(b);  //  Sort this copy
  for(int i=0;i<a.length;    //  Loop over the indices
    a[i]-=                   //   Subtract from the `i`'th item in the input-array:
          b[i++]);}          //    The `i`'th item of the sorted array


3

पायथन 3, 42 40 बाइट्स

lambda a:[b-c for b,c in zip(a,sorted(a))]

lambda a:[a.pop(0)-b for b in sorted(a)]

37 बाइट्स का उपयोग करना map
s

@ovs Python के लिए आपके समाधान का प्रकार 3. mapएक सूची के बजाय यह एक वस्तु देता है । क्या प्रतियोगिता की आवश्यकताओं के लिए यह एक ग्रे क्षेत्र होगा? शायद आप इसे सिर्फ अपने जवाब के रूप में प्रस्तुत कर सकते हैं, क्योंकि यह संभवत: अर्हता प्राप्त करने के लिए पर्याप्त भिन्न है।
mypetlion

@ovs युक्ति यह भी बताती है कि इनपुट आवश्यक रूप से ints नहीं होगा , इसलिए मैं इसे छोड़ने जा रहा हूं।
mypetlion

किसी mapऑब्जेक्ट को वापस करना मान्य है, लेकिन गैर-अंतर आवश्यकता मेरे सुझाव को अमान्य बना देती है।
अंड







1

स्टैक्स , 5 बाइट्स

ÿ◙┘¿N

इसे चलाएं और डीबग करें

यह कैसे काम करता है, यह दिखाने के लिए, यहाँ अनपैक्ड, कमेंटेड संस्करण है।

m       for each element execute, then pop and print:
  xo    sort the original input
  i@    index into array using iteration index
  -     subtract

इसको चलाओ




1

स्माइलबासिक, 49 बाइट्स

DEF R A
DIM B[0]COPY B,A
SORT B
ARYOP 1,A,A,B
END

इनपुट सरणी को संशोधित किया गया है।

ARYOPएक बार में पूरे सरणियों पर संचालन करता है। इस स्थिति में यह परिणाम को घटाता Bहै Aऔर स्टोर करता है A




हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.