Giảm sử dụng giá trị thấp nhất


9

Các thách thức

Tạo một hàm lấy một mảng các số và trừ từ mỗi phần tử phần tử thấp nhất trong mảng chưa được trừ đi từ một phần tử khác.

  • Sau khi sử dụng giá trị thấp nhất, nó không thể được sử dụng lại.
  • Các số trong mảng là số thập phân và không nhất thiết phải là số nguyên.

Thí dụ:

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]

Các trường hợp thử nghiệm

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]


Đây là , vì vậy câu trả lời ngắn nhất bằng byte sẽ thắng.


4
Điều này có thể sử dụng một ví dụ thông qua. Hiện tại, nhiệm vụ cần phải được suy ra từ các trường hợp thử nghiệm.
Laikoni

1
Cảm ơn @Arnauld đã dành thời gian để làm điều đó. Tôi đã không thể sử dụng máy tính từ hôm qua vì vậy tôi không thể sửa đổi ví dụ
Luis felipe De jesus Munoz

3
Có một lý do cụ thể để bao gồm không số nguyên trong các mảng? Nó không làm cho thách thức trở nên thú vị hơn, loại bỏ một số cách tiếp cận và đặt ra một vấn đề lớn trong các ngôn ngữ mà không có các loại không nguyên.
Dennis

Câu trả lời:






3

Ruby, 32 ký tự

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

Bạn chỉ có thể in các giá trị: -> 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())

Hãy thử trực tuyến!

Đã bình luận

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++]);}

Sửa đổi mảng đầu vào thay vì trả về một mảng mới để lưu byte.

Hãy thử trực tuyến.

Giải trình:

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 sử dụng map.
trứng

@ovs Loại giải pháp của bạn hoạt động cho Python 3. Nó trả về một mapđối tượng, thay vì danh sách. Đó sẽ là một khu vực màu xám cho các yêu cầu của cuộc thi? Có lẽ bạn chỉ có thể gửi nó dưới dạng câu trả lời của riêng mình, vì nó có thể đủ khác để đủ điều kiện.
mypetlion

@ovs Thông số kỹ thuật cũng nói rằng đầu vào sẽ không nhất thiết phải là ints, vì vậy tôi sẽ để nguyên như vậy.
mypetlion

Trả về một mapđối tượng là hợp lệ, nhưng yêu cầu không int làm cho đề xuất của tôi không hợp lệ.
trứng









1

Japt , 8 6 byte

c í-Un

Hãy thử nó ở đây


Giải trình

           :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

Mảng đầu vào được sửa đổi tại chỗ.

ARYOPkhông hoạt động trên toàn bộ mảng cùng một lúc. Trong trường hợp này nó trừ Btừ Avà lưu trữ kết quả trong A.




Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.