Kurangi menggunakan nilai terendah


9

Tantangan

Buat fungsi yang mengambil array angka dan kurangi dari setiap elemen elemen terendah dalam array yang belum dikurangkan dari yang lain.

  • Setelah menggunakan nilai terendah, itu tidak bisa digunakan lagi.
  • Angka dalam array adalah angka desimal, dan tidak harus bilangan bulat.

Contoh:

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]

Uji Kasus

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]


Ini adalah , jadi jawaban tersingkat dalam byte menang.


4
Ini bisa menggunakan contoh walk-through. Seperti yang ada sekarang tugas perlu disimpulkan dari kasus uji.
Laikoni

1
Terima kasih @Arnauld telah meluangkan waktu untuk melakukannya. Saya belum bisa menggunakan pc sejak kemarin jadi saya tidak bisa memodifikasi contoh
Luis felipe De jesus Munoz

3
Apakah ada alasan khusus untuk memasukkan non-integer dalam array? Itu tidak membuat tantangan lebih menarik, mengesampingkan beberapa pendekatan, dan menimbulkan masalah besar dalam bahasa tanpa tipe non-integer.
Dennis

Jawaban:




4

Sekam , 4 byte

Ṡz-O

Cobalah online!

Penjelasan

      -- input, e.g. [6,4,7,8,9,2,1,4]
   O  -- sort        [1,2,4,4,6,7,8,9]
Ṡz-   -- element wise difference to input: [6-1,4-2,7-4,8-4,9-6,2-7,1-8,4-9]
      -- return result [5,2,3,4,3,-5,-7,-5]

Ini harus menjadi lelucon ..... 4 byte. Luar biasa
Luis felipe De jesus Munoz


3

Ruby, 32 karakter

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

Anda bisa mencetak nilai-nilai: -> a {a.zip (a.sort) {| x, y | p xy}}
GB

3

JavaScript (ES6), 44 byte

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

Cobalah online!

Berkomentar

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

Java 10, 83 byte

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

Memodifikasi input-array alih-alih mengembalikan yang baru untuk menghemat byte.

Cobalah online.

Penjelasan:

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

Python 3, 42 40 byte

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

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

37 byte menggunakan map.
Ov

@ovs Jenis solusi Anda berfungsi untuk Python 3. Ia mengembalikan mapobjek, bukan daftar. Apakah itu semacam wilayah abu-abu untuk persyaratan kontes? Mungkin Anda bisa mengirimkannya sebagai jawaban Anda sendiri, karena mungkin cukup berbeda untuk dikualifikasikan.
mypetlion

@ovs Spec juga menyatakan bahwa input belum tentu ints, jadi saya akan meninggalkan milik saya apa adanya.
mypetlion

Mengembalikan mapobjek adalah valid, tetapi persyaratan non-int membuat saran saya tidak valid.
Ov









1

Japt , 8 6 byte

c í-Un

Coba di sini


Penjelasan

           :Implicit input of array U
c          :Flatten (simply creates a 2nd copy of the array because JavaScript's sort mutates the original array)
  í        :Interleave
    Un     :U sorted
   -       :Reduce each pair by subtraction

1

SmileBASIC, 49 byte

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

Array input diubah pada tempatnya.

ARYOPmelakukan operasi pada seluruh array sekaligus. Dalam hal ini mengurangi Bdari Adan menyimpan hasilnya dalam A.




Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.