역배열 합


34

프로그램은 배열을 입력으로 가져와야합니다.

배열 :

  1. 항상 1 차원 일 것입니다
  2. 정수만 포함
  3. 비어있을 수 있습니다

프로그램은 배열을 뒤집은 다음 요소를 원본에 추가합니다.

입력: [1, 2, 3]

기발한: [1, 2, 3]

역전 : [3, 2, 1]

[1, 2, 3]
 +  +  +
[3, 2, 1]

[1+3, 2+2, 3+1]

산출: [4, 4, 4]


테스트 사례 :

#In             #Out
[8, 92],        [100, 100]
[1, 2, 3],      [4, 4, 4]
[5, 24, 85, 6], [11, 109, 109, 11]
[],             []
[999],          [1998]

이것은 가장 짧은 코드 (바이트)가이기는 !


J 3 바이트 프로그램은 t입니다. t = : + |.
Richard Donovan

@RichardDonovan 좋은 답변! 댓글 대신 답변으로 제출해주세요. :)
Noah Cristino

답변:


13

하스켈 , 20 바이트

nimi에서 제안한대로 free point로 변경하여 5 바이트 저장

zipWith(+)=<<reverse

온라인으로 사용해보십시오!


4
pointfree를 이동합니다 zipWith(+)=<<reverse.
nimi

@nimi 와우 나는 그렇게 생각하지 않았지만 꽤 똑똑합니다.
밀 마법사

배열을 어디에 두어야합니까? 나는 논증을 시도하고 TIO에 대한 의견
Noah Cristino

@NoahCristino 나는 TIO를 고쳤다. 이것은 포인트 프리 함수이므로 함수 뒤에 입력을 넣지 만 Haskell은 main컴파일 해야합니다 .
밀 마법사

3
@maple_shaft : =<<다음과 같이 정의 된 monad 함수에서 사용 합니다 (=<<) f g x = f (g x) x. 여기에 접두어로 쓰여진 : (zipWith(+) =<< reverse) x-> zipWith(+) (reverse x) x.
nimi

11

젤리 , 2 바이트

+U

온라인으로 사용해보십시오!

또는

+Ṛ

온라인으로 사용해보십시오! (두 번째 프로그램은 @Mr. Xcoder에게 감사드립니다)

설명은 꽤 설명이 필요하지만

+U  Main link
+   Add, vectorizing, 
 U                    the input, reversed

+Ṛ  Main link
+   Add, vectorizing,
 Ṛ                    the input, reversed, without vectorizing (same thing for depth-1 lists)

빈 배열의 []경우 아무것도 출력하지 않습니다. 맞아요. 빈 목록에 대한 젤리의 표현은 단순히 아무것도 아닙니다. Jelly의 단일 요소가있는 목록은 요소 자체 일뿐입니다. ŒṘ출력에 대한 파이썬 내부 표현을 보려면 코드에 추가 하십시오.


두 가지 문제를 발견했습니다. 1) 테스트 할 때 [9]대신 18을 출력 [18]하고 2) 테스트 할 때 []아무것도 출력하지 않습니다.
노아 크리스티 노

@NoahCristino이 프로그램은 완전한 프로그램이 아니며 이미 이에 대한 설명이 있습니다.
Outgolfer Erik

그래서 이것은 괜찮습니다. Jelly가 출력하는 방식입니다
Noah Cristino

@NoahCristino 그래. 내 답변 끝에 부분을 추가하여 코드 끝에 원자를 넣어 파이썬이 어떻게 인쇄하는지 볼 수 있습니다.
HyperNeutrino

+Ṛ작동합니다.
Mr. Xcoder

11

자바 스크립트 (ES6), 27 바이트

a=>[...a].map(e=>e+a.pop())


아, 거의 다 왔지만 스프레드 연산자를 사용하여 클론을 만들 생각은 없었습니다.
Rick Hitchcock

임베디드를 추가하여 자바 스크립트를 사용해 볼 수 있습니까?
노아 크리스티 노




7

Japt , 7 바이트

mÈ+Ug~Y

온라인으로 사용해보십시오! -Q출력 배열을 형식화 하는 플래그 와 함께 .

설명

암시 적 : U= 입력 배열

다음 함수로 입력을 맵핑하십시오.

+Ug

인덱스에 입력 배열의 값과 값을 더한 값 ...

~Y

-(index+1)배열의 끝에서 요소를 가져옵니다.


1
잘 했어! 나는 여러 입력을 좋아한다!
노아 크리스티 노

1
나는 다중 입력 Japt 인터프리터를 정말 좋아합니다. 좋은 작업!
Oliver

정말 멋지다 :-) "공식적인"인터프리터
에이



6

파이썬 2 , 33 32 바이트

@xnor 덕분에 -1 바이트

lambda l:[i+l.pop()for i in l*1]

온라인으로 사용해보십시오!


내 모든 시험에 합격했습니다 :)
Noah Cristino

이례적인 방법입니다. l*1바이트를 저장합니다.
xnor

나는 파 l*1, 어떤 정교함을 이해하는데 어려움을 겪고있다
dhssa

@dhssa l*1는 목록의 사본을 만듭니다 l. 복사하지 않으면 pop()for 루프에서 액세스하기 전에 목록에서 요소를 삭제합니다.
ovs

설명 주셔서 감사합니다, 나는 지금 그것을 얻었다. 코딩에 대해 잘 알고 있어야합니다.
dhssa


5

C # (. NET 코어) , 61 60 바이트

TheLethalCoder 덕분에 -1 바이트

a=>a.Reverse().Zip(a,(x,y)=>x+y).ToArray()

온라인으로 사용해보십시오!

바이트 수에는 다음이 포함됩니다.

using System.Linq;

설명을 위해-LINQ의 Zip 기능은 두 개의 컬렉션을 취하여 모든 해당 요소에 대해 주어진 기능을 실행합니다. 두 번째 요소 모두, 두 번째 요소 등


1
좋은 대답입니다. 입력에 대한 의견을 보내 주셔서 감사합니다.
노아 크리스티 노

1
PPCG에 오신 것을 환영합니다! 바이트 수에서 뒤에 세미콜론이 필요하지 않습니다. 나는 당신이 Zip전화 에서 바로 컬렉션을 반환 할 수 있다고 생각 합니다 ToArray(). 좋은 작업!
TheLethalCoder

@TheLethalCoder Thanks, 그리고 배열에 관한 문제이므로 ToArray ()를 추가 했으므로 자체 포함 된 람다는 배열-> 배열이되기를 원했습니다.
Grzegorz Puławski


4

APL (Dyalog) , 3 바이트

⌽+⊢

온라인으로 사용해보십시오!

설명

          The argument reversed
+           Plus
          The argument

1
닌자. APL 키보드로 이동해야합니다 ... xD
Uriel

@Uriel 나는 항상 내 APL 키보드에 있습니다 : D
Kritixi Lithos

단순성을 좋아하십시오. 출력은 ⌽+⊢입력이없는 상태로
노아 Cristino에게

@NoahCristino 빈 입력은 빈 벡터로 지정됩니다 . 논란없이 기차 자체를 인쇄합니다
Kritixi Lithos


4

R , 17 16 바이트

djhurio 덕분에 -1 바이트

rev(l<-scan())+l

stdin에서 읽습니다. 벡터를 반환합니다. numeric(0)빈 목록의 길이가 0 인 숫자 형 벡터입니다.

온라인으로 사용해보십시오!


빈 "배열"의 경우 반환numeric(0)
Noah Cristino

1
@NoahCristino 빈 벡터는 numeric(0)R 과 같이 표현됩니다 .
Leaky Nun

괜찮아. @LeakyNun
노아 크리스티 노

1
rev(l<-scan())+l16 바이트?
djhurio

기록을 위해, R + pryr 기능적 대안 은 단지 1 바이트 더 길다 :pryr::f(rev(x)+x)
JayCe



3

PowerShell , 26 바이트

($a=$args)|%{+$a[--$i]+$_}

온라인으로 사용해보십시오!

입력을 명령 행 인수로 사용합니다.


TIO를 추가 할 수 있습니까? 이 같은 이름으로 링크 : codegolf.stackexchange.com/a/135427/61877
노아 Cristino

@NoahCristino : 이것처럼? 지금까지 그 일을 사용하지 않았으므로 내가 뭘 잘못했는지 알 수 없습니다. 그런데 사람들이 답변에 특정 서비스를 사용할 것으로 예상되면 작업 설명에 명시하십시오.
Joey

괜찮아. 답변의 품질을 높이고 향후 시청자를 위해 쉽게 테스트 할 필요는 없습니다.
노아 크리스티 노

3

C, 49 바이트

f(a,n,b)int*a,*b;{for(b=a+n;a<b--;a++)*a=*b+=*a;}

a,n,ba,b,n또는 뭔가?
Outgolfer Erik

@EriktheOutgolfer 아니요, b기능의 매개 변수가 아니며 골프상의 이유로 추가 정의가 있습니다. a정수에 대한 포인터 n여야하고 배열에 정수가 있어야합니다.
orlp

TIO 링크를 추가해 주시겠습니까?
노아 크리스티 노

3

PowerShell , 40 32 바이트

($n=$args)|%{$n[-++$i]+$n[$i-1]}

온라인으로 사용해보십시오!

입력을 개별 명령 줄 인수로 사용하며 PowerShell의 기본 목록 형식 중 하나로 허용됩니다. 그런 다음 각 요소를 반복합니다 (즉, 색인을 반복하는 짧은 방법). 뒤에서 ( -1인덱스 화 된) 카운트를 계산하는 요소 를 현재 요소 ( 0인덱스, 따라서 감소 -1)로 추가합니다. 그것들은 파이프 라인에 남아 있으며 출력은 암시 적입니다.

@briantist 덕분에 8 바이트 절약


배열을 출력하지 않습니다.
노아 크리스티 노

1
@NoahCristino PowerShell 입력 / 출력은 일반적으로 이상합니다. 그것은 되는 배열로 출력, 그냥 아무것도 캡처 배열이 특징이다, 그리고 암시 그렇게 할 때 Write-Output발생, 그것을 한 줄에 표준 출력 하나 개의 항목에 물건을 넣습니다. 예를 들어, 여기 에서 캡처 할 때 객체가 실제로 array유형 임을 알 수 있습니다 .
AdmBorkBork

충분히 좋은 :) 적어도 시도
노아 크리스티 노

나는 모바일에있어 그렇게 쉽게 테스트 할 수 있지만, 짧은 1 바이트을 제거하지 않는 것입니다 param후 교체 1..$n와 함께 1..($n=$args)?
briantist

@briantist 확실하지는 않지만 많은 바이트를 절약하면서 다른 방식으로 생각했습니다. 감사!
AdmBorkBork

3

자바 8, 61 57 56 53 바이트

a->{for(int l=0,r=a.length;l<r;a[l]=a[--r]+=a[l++]);}

@Nevay 덕분에 -1 바이트 및 버그 수정 . @ OliverGrégoire
덕분에 -3 바이트 .

( @jkelm 의 C # 답변 의 포트 ( 4 8 바이트로 골프쳤습니다 ) 이지만 이제 @ OliverGrégoire 덕분에 다른 짧은 솔루션 입니다.)

설명:

여기에서 시도하십시오.

이 메소드는 입력 배열을 수정하여 바이트를 저장하므로 리턴 유형이 필요하지 않습니다.

a->{                    // Method with integer-array parameter and no return-type
  for(int l=0,          //  Left-integer (starting at 0)
          r=a.length;   //  Right-integer (starting at the length of the input-array)
      l<r;              //  Loop as long as left is smaller than right
    a[l]=               //   Change the number at the current left index to:
         a[--r]+=a[l++] //    The number at the right index + itself
                        //    (The += adds the number at the left index also to the right index)
                        //    (And the --/++ increases/decreases the indexes by 1,
                        //     until we've reached the middle of the array)
  );                    //  End of loop
}                       // End of method

1
을 사용하여 1 바이트를 저장할 수 있습니다 a->{for(int i=0,l=a.length;i<l/2;a[i]=a[l+~i]+=a[i++]);}.
Nevay

1
홀수 길이 1,2,3( 4,2,4대신에 반환) 가있는 배열의 경우 코드가 실패하는 것 외에도 4,4,4루프가 2*i<l아닌 길이만큼 실행되어야합니다 i<l/2.
Nevay

@Nevay 감사합니다. 나는 골프를 할 수 있어야 알고 l-i-1그냥 가지고 올 수없는 ..
케빈 Cruijssen에게

2
53 바이트 : a->{for(int l=0,r=a.length;l<r;a[l]=a[--r]+=a[l++]);}.
Olivier Grégoire

1
@ OlivierGrégoire 감사합니다. 그리고 당신 lr당신의 구현에 의미가 있으므로, 그것들도 사용했습니다 (설명을 추가했습니다).
Kevin Cruijssen



2

anyfix , 3 바이트

"U+

TryItOnline의 버전! 소스 코드의 오타로 인해 목록을 추가 할 수없는 등 치명적인 오류가 포함 된 오래된 버전의 모든 수정 프로그램입니다. 대신 GitHub의 코드를 사용하십시오.

"U+  Program
"    Duplicate top of stack
 U   Reverse top of stack if it is a list (which it should be...)
  +  Add, vectorizing for lists

2

Neim , 2 바이트

스택 맨 위에서 입력을 받아 스택 맨 위에서 출력하는 기능입니다.

𝕓𝔻

온라인으로 사용해보십시오!


일반적인 입력 방법 대신 실제 Neim 코드를 통해 입력 스택을 수정할 수 있습니까?
LiefdeWen

@LiefdeWen 예, 기본적으로 I / O 메타 게시에 허용됩니다.
Okx


2

자바 스크립트 (ES6), 34 33 바이트

@ETHproductions 덕분에 바이트가 절약되었습니다.

a=>a.map((e,i)=>e+a[a.length+~i])


나는 당신이 테스트 케이스에 넣는 방법을 좋아합니다, +2
Noah Cristino

로 변경 -i-1하여 바이트를 절약 할 수 있다고 생각합니다 +~i.
ETHproductions

@ETHproductions, 예, 감사합니다!
Rick Hitchcock


2

PHP, 59 바이트

for(;a&$c=$argv[++$i];)$a[]=$c+$argv[$argc-$i];print_r($a);

명령 행 인수에서 입력을받습니다. 빈 입력을위한 빈 출력

PHP> 7.0에서 경고를 생성합니다. 이 버전은 (60 바이트)가 아닙니다 :

for(;++$i<$argc;)$a[]=$argv[$i]+$argv[$argc-$i];print_r($a);

좋은 대답입니다! :)
노아 크리스티 노
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.