가장 낮은 값을 사용하여 줄입니다


9

도전

숫자 배열을 가져 와서 다른 요소에서 아직 빼지 않은 배열에서 가장 낮은 요소를 각 요소에서 빼는 함수를 만듭니다.

  • 가장 낮은 값을 사용한 후에는 다시 사용할 수 없습니다.
  • 배열의 숫자는 10 진수이며 반드시 정수일 필요는 없습니다.

예:

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
연습 예제를 사용할 수 있습니다. 이제는 과제를 테스트 사례에서 유추해야합니다.
Laikoni

1
시간을내어 주셔서 감사합니다 @Arnauld. 어제부터 PC를 사용할 수 없어서 예제를 수정할 수 없었습니다
Luis felipe De jesus Munoz

3
배열에 정수가 아닌 것을 포함시켜야하는 특별한 이유가 있습니까? 도전을 더 흥미롭게 만들지 않고 일부 접근법을 배제하며 정수가 아닌 유형이없는 언어에서는 큰 문제를 제기합니다.
Dennis

답변:






3

루비, 32 자

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

값을 인쇄 할 수 있습니다 :-> a {a.zip (a.sort) {| x, y | p xy}}
GB

3

자바 스크립트 (ES6), 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 .
ovs

@ovs 솔루션은 Python 3에서 작동 map합니다. 목록 대신 객체를 반환 합니다. 콘테스트의 요구 사항에 대해 회색의 영역입니까? 어쩌면 자격이 충분하지 않기 때문에 자신의 답변으로 제출할 수도 있습니다.
mypetlion 2016 년

@ovs 스펙은 또한 입력이 반드시 ints 일 필요는 없다고 말하고 있으므로 그대로 그대로 두겠습니다.
mypetlion 2016 년

map객체를 반환하는 것은 유효하지만 비 int 요구 사항은 내 제안을 유효하지 않게 만듭니다.
ovs







1

Stax , 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

Japt , 8 6 바이트

c í-Un

여기 사용해보십시오


설명

           :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 바이트

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

입력 배열이 수정됩니다.

ARYOP전체 배열에서 한 번에 작업을 수행합니다. 이 경우에는 감산 B에서 A및에 결과를 저장한다 A.




당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.