플러스 또는 마이너스 폴리 글 로트!


14

제출시 숫자 목록 (언어가 지원하는 목록 형식 또는 여러 기능 / 명령 줄 매개 변수 사용) 또는 숫자가 아닌 문자로 구분 된 숫자 문자열을 가져와야합니다 0123456789. 한 언어에서는 모든 언어를 추가하고 합계를 출력해야합니다. 다른 언어에서는 순서대로 빼서 출력해야합니다 . 예:

12
5
7
2

한 언어에서는 출력해야 26하고 다른 언어에서는 출력 해야합니다 -2. 입력 된 모든 숫자는보다 작은 양의 정수 100입니다. 20숫자 보다 크지 않은 숫자가 제공되므로 크 2000거나 작게 출력하지 않습니다 -1899. 질문 있습니까? 아래의 코멘트!


출력에서 후행 공백이 허용됩니까?
비즈니스 고양이

동일한 언어의 서로 다른 두 가지 버전이 허용됩니까? 참고 항목 HyperNeutrino하여 파이썬 2 / 3 대답
씨 Xcoder

@ Mr.Xcoder 허용됩니다.
programmer5000

2
@BetaDecay 문제라고 생각합니다. 코드 골프를 확인하십시오!
programmer5000

1
@ programmer5000 무슨 의미 [code-golf] -[polyglot]인가요?
Outgolfer Erik

답변:


14

젤리 / 05AB1E , 3 바이트

00000000: c6 71 53                                         .qS

제출 된 프로그램의 16 진 덤프 (xxd)입니다.

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

젤리 : 합

Jelly는 Jelly 코드 페이지 를 사용하므로 다음 문자가 표시됩니다.

İqS

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

작동 원리

İqS  Main link. Argument: A (array)

İ    (ignored)
 q   Unrecognized token. This breaks the link; nothing to the left is executed.
  S  Take the sum of A.

05AB1E : 차이

05AB1E는 Windows-1252 를 사용하므로 다음 문자가 표시됩니다.

ÆqS

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

작동 원리

Æ     Take the difference of the input.
 q    Quit.
  S   (ignored)

22

파이썬 2/3, 52 바이트

lambda l:sum(l[:1]+[x*int(1-(1/2)*4)for x in l[1:]])

int(1-(1/2)*4)먼저로 평가 한 다음 1에 파이썬 2로 반환 됩니다 .1/200 * 4 = 0

int(1-(1/2)*4)을 먼저로 평가 한 다음 -1에 파이썬 3을 반환합니다 .1/20.5int(0.5 * 4) = int(2.0) = 2


1
다른 언어도 허용되는 동일한 언어를 사용하고 있습니까?
Mr. Xcoder

3
@ Mr.Xcoder 나는 왜 그렇지 않은지 알지 못합니다 .C, Java, Python 및 Befunge의 다른 버전을 사용하는 다른 언어를 보았습니다. 메타를 요청하거나 관련 메타 게시물을 찾을 수 있는지 확인합니다.
HyperNeutrino

그러나 버전 변경으로 인해 수학 트릭을 잘 사용합니다.
Mr. Xcoder

1
@ Mr.Xcoder 감사합니다! 메타에 대한 질문을 했습니다 . 곧 답변을 드리겠습니다.
HyperNeutrino

1
@ programmer5000 정수 나누기.
HyperNeutrino

14

C 및 C ++ (둘 다 GCC에서), 81 75 73 바이트

int c;int f(int*a,int l){auto d=.5;c=*a++;for(;--l;a++)c+=*a-4*d**a;c=c;}

배열과 길이에 대한 포인터를 가져옵니다.

설명 : 여전히 @Steadybox '설명 사용 : p C auto d=.5에서 자동 스토리지 클래스 (기본값)로 정수 변수를 선언 한 다음 0으로 초기화하고 C ++ 11에서는 double을 선언하여 초기화합니다. ~ 0.5.

C-플러스 언어 : 온라인으로 사용해보십시오!

C ++-빼기 언어 : 온라인으로 사용해보십시오!


11

05AB1E / 젤리 , 5 바이트

00000000: 4f71 7f5f 2f                             Oq._/

온라인으로 사용해보십시오! (05AB1E)
온라인으로 사용해보십시오! (젤리)

05AB1E는 다음을 참조하십시오.

좋아요? _ /
설명:

Oq? _ / 1 암시 적 인수.
○ 첫 번째 입력 항목의 합계를 가져옵니다.
 q 종료합니다.
  ? _ / 작동하지 않습니다.

젤리가 본다 :

오쿠
_ /
설명:

_ / 메인 링크. 인수 : z
_ / z의 요소를 순서대로 뺍니다.

Ok 헬퍼 링크. 작동하지 않습니다.

이것은 젤리 코드 페이지를 사용합니까?
programmer5000

@ programmer5000 05AB1E에 CP-1252를 사용하고 Jelly에 JELLY를 사용하는 원시 바이트 스트림입니다. 따라서 7f.
Outgolfer Erik

아, 몰랐어!
programmer5000

8

실제로 / 젤리 , 4 바이트

00000000: e4 81 5f 2f                                      .._/

제출 된 프로그램의 16 진 덤프 (xxd)입니다. 온라인에서 원시 형식으로 테스트 할 수 없습니다. TIO는 CP437 인코딩을 지원하지 않습니다.

실제로 : 합계

실제로 CP 437을 사용 하므로 다음 문자가 표시됩니다.

Σü_/

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

작동 원리

Σ     Take the sum on the input.
 ü    Print and empty the stack.
  _   Natural logarithm. Ignored since the stack is empty.
   /  Float division. Ignored since the stack is empty.

젤리 : 차이

Jelly는 Jelly 코드 페이지 를 사용하므로 다음 문자가 표시됩니다.

ỵ¹_/

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

작동 원리

ỵ¹_/  Main link. Argument: A (array)

ỵ     Unrecognized token. Splits the link.
 ¹    Identity; yield A.
  _/  Reduce (/) A by subtraction (_).

나는 그것을 다음과 같이 읽었습니다 actually, Jelly.:
programmer5000

당신은 정의되지 않은 캐릭터가 다음과 같이 행동한다는 사실을 남용했습니다 :
Outgolfer Erik

1
@EriktheOutgolfer 더 많거나 적습니다. 완벽하게 정직하기 위해 인식 할 수없는 토큰이 무엇을하는지 잘 모르겠습니다.
데니스

두 번째 생각에, 나는 당신이 실제로 ü완벽한 기능을 할당 했기 때문에 실제로 선택했다고 생각합니다. > _>
Erik the Outgolfer

@ programmer5000 jelly, actually입니다.
Arjun

8

파이썬 2와 3, 44 41 바이트

lambda l:eval(l.replace(' ','-+'[1/2>0]))

공백으로 구분 된 숫자를 사용합니다.


@JonathanAllan 덕분에 -3 바이트

온라인으로 사용해보십시오 : Python 2 (빼기) Python 3 (플러스)


1
'-+'[1/2>0]3 바이트를 저장하는 데 사용 합니다.
Jonathan Allan

7

CJam / 젤리 , 6 바이트

q~:-
S

CJam

q~    e# Read a list from input
:-    e# Reduce by subtraction
S     e# Push a space
      e# Implicit output

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

젤리

(Jelly 코드 페이지가 아닌 UTF-8 사용)

q~:-도우미 링크입니다. 호출되지 않기 때문에 실제로는 중요하지 않습니다. S배열의 합을 계산합니다.

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


5
잼과 젤리. 비슷한 두 가지를 함께 사용하는 것이 좋습니다.
mbomb007

1
유효하지 않습니다. 젤리에는 개행에 0x7f가 있고, 개행에는 0x0a가 있습니다. 젤리에서 이것은 실제로와 동일합니다 q~:-½S. 불행하게도 수정 ( q~:-e#\x7fS)이 더 큽니다. 온라인으로 사용해보십시오! (CJam)온라인으로보십시오! , 각각 자체 인코딩을 사용하여 직접 테스트하십시오.
Outgolfer Erik

2
또는 Jelly에 UTF-8 인코딩을 사용할 수 있으므로 현재 그대로 유효하지만 지정하십시오.
Outgolfer Erik

5

자바 스크립트 / Cubix, 36 바이트

//.!v+u;$I^@O<.Iu
a=>eval(a.join`-`)

시도 해봐!

자바 스크립트 기능은 아래 스 니펫을 사용하여 테스트 할 수 있으며 Cubix 프로그램은 여기에서 테스트 할 수 있습니다 .

어떻게 작동합니까?

자바 스크립트

첫 번째 줄은 두 개의 슬래시로 시작하기 때문에 JavaScript에 대한 줄 설명이므로 JavaScript는 맨 아래 줄 ( a=>eval(a.join`-`)) 만 볼 수 있습니다.이 줄 은 입력으로 배열을 가져 와서 그 사이에 빼기 부호로 결합한 다음 코드로 실행합니다. 배열 내의 모든 요소의 감산

let f=
//.!v+u;$I^@O<.Iu
a=>eval(a.join`-`)

console.log(f([1,2,3,4,5]))
console.log(f([3,1,4,1,5]))

큐빅스

Cubix는 다음 큐브를 보게됩니다 (Cubix가 모든 공백을 무시한다는 점에 유의하십시오).

      / / .
      ! v +
      u ; $
I ^ @ O < . I u a = > e
v a l ( a . j o i n ` -
` ) . . . . . . . . . .
      . . .
      . . .
      . . .

시작

IP는 세 번째 줄에서 시작하여 동쪽을 가리 킵니다. 'I'입력에서 숫자를 가져 와서 스택으로 푸시 하는 명령을 수행합니다. 그런 다음 '^'합계 루프로 리디렉션됩니다 .

합 루프

sum 루프의 일부가 아닌 모든 문자를 제거하고 no-ops ( '.') 로 바꿨습니다 . IP는 동쪽을 가리키면서 두 번째 줄에 처음 도착합니다.

      . . .
      ! v +
      u ; $
. . . . . . I u . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
      . . .
      . . .
      . . .

먼저이 '!'명령은 상단 요소를 확인합니다. 이 경우 0(즉, 입력의 끝에 도달 한 경우 'v') 루프에서 IP를 반영하여 다음 명령어 ( )가 실행됩니다. 입력의 끝에 아직 도달하지 않은 경우 상위 두 항목을 함께 추가합니다 ( '+', 두 번째 항목은 해당 지점까지의 합계, 새 항목은 최상위 항목). 그런 다음 IP는 입방체의 다른면으로 'u'캐릭터 로 래핑되어 IP를 u 회전시키고 'I'북쪽을 가리키면서 명령을 실행합니다 (다른 입력 정수 읽기). IP는 윗면으로 돌아가서 '$'삭제 명령 ( ';')을 건너 뛰고 ( ) 다시 시작한 지점으로 다시 돌아갑니다.

IP가 루프 밖으로 반영되면 다음 문자가 실행됩니다.

      . . .
      . v .
      . ; .
. . @ O < . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
      . . .
      . . .
      . . .

이 명령어는 상단 요소 (0)를 삭제 한 다음 상단 요소 (합)를 정수로 출력합니다. 그런 다음 '@'명령에 도달하여 프로그램이 종료됩니다.


4

파이썬 2와 3, 33 바이트

lambda l,*r:l+sum(r)*(1/2>0 or-1)

별도의 매개 변수로 입력을받습니다.


파이썬 2.
파이썬 3.


lambda l,*r:l+sum(r)*(1/2-.5)*231 바이트
ovs

@ovs 의도적으로 float 반환을 피했습니다. 당신이 허용된다면, *(1/2*4-1)당신보다 적은 바이트입니다.
Veedrac

나는 값이 올바른 길이로 정말없이 반환 형식이하지 않는 생각
OVS

4

JS (ES6), CGL (CGL 골프 언어) , 32 26 바이트

 x=>eval(x.join`-`)
//-⨥

JS는 빼기를 수행하고 CGL은 더하기를 수행합니다.

JS :

x=>eval(x.join`-`)

를 사용하여 배열의 각 요소를 빼는 익명 함수입니다 Array#reduce.

//-⨥

의견.

CGL

 x=>eval(x.join`-`)

첫 번째 행의 공백처럼 보이는 것은 실제로 CGL에서 주석이 아닌 비 공백 공백입니다. 첫 번째 줄은 무시됩니다.

//-⨥

/들 아무것도하지 않습니다. 는 -그것의 입력을 가리키고 있으므로 현재 스택 포인터를 감소시킨다. 현재 스택 (입력)을 함께 추가하고 다음 스택으로 푸시하고 현재 스택을 증가시킵니다. 암시 적으로 출력됩니다.


1
를 사용하여 JS 버전을 단축 할 수 있습니다. x=>eval(x.join`-`)5B
Luke


@ Adám 당신이 맞아요. 결정된.
programmer5000

4

자바 스크립트 (ES6) / QBasic, 84 83 바이트

'';f=x=>eval(x.join`+`)/*
INPUT a
FOR i=1 TO 2
i=0
INPUT n
a=a-n
PRINT a
NEXT i
'*/

댓글 해킹이있는 또 다른 솔루션!

JavaScript는 합계를 계산합니다. 숫자를 입력으로 포함하는 배열을받습니다. 함수로 출력합니다 return. 같은 함수를 호출 할 수 있습니다 alert(f([10,20,30])).

QBasic이 차이를 계산합니다. 입력을 반복해서 요청합니다. 값을 입력하자마자 입력 할 때까지 입력 한 모든 숫자의 차이를 출력 Enter하고 다시 입력을 요청합니다. 모든 것이 끝날 때까지 똑같이 계속합니다.


어떻게 작동합니까?

QBasic (구조화 된 BASIC 제품군의 언어, 줄 번호는 필요하지 않음) '에서 줄 끝까지가는 주석의 시작을 표시합니다. JavaScript에서는 문자열의 시작을 표시합니다. 따라서 첫 번째 줄 전체는 QBasic에서 주석으로 표시되지만 JavaScript에서는 줄이 실행됩니다 (이 줄에는 번호를 추가하는 JavaScript 부분 /*과 끝에 주석을 시작하는 나머지 부분을 숨기기 위해 JavaScript 부분이 포함됩니다) JavaScript 인터프리터의 QBasic 코드 중 하나)

두 번째 줄에서 두 번째 줄까지의 코드에는 모든 입력 숫자의 차이를 계산하는 QBasic 코드가 포함되어 있습니다 (코드는 매우 자명합니다).

마지막 줄은을 포함 '*/합니다. 'QBasic 인터프리터가 다음 코드를 주석으로 해석하도록하는 반면 JavaScript에서는 주석의 일부 (첫 번째 줄의 끝에서 시작된)이므로 아무런 영향을 미치지 않습니다. 다음 코드 ( */)는 JavaScript가 첫 번째 행에서 시작된 주석을 종료하도록하지만 QBasic은 주석의 일부라고 생각하기 때문에 QBasic에서 실행되지 않습니다.


테스트 사례

자바 스크립트 (추가) :

'';f=x=>eval(x.join`+`);/*
INPUT a
FOR i=1 TO 2
i=0
INPUT n
a=a-n
PRINT a
NEXT i
'*/
console.log(f([12,5,7,2]));

Q 기본 (빼기) :

이 웹 사이트로 이동 하십시오 . 텍스트 편집기에 다음 코드를 붙여 넣습니다.

1 '';f=x=>eval(x.join`+`);/*
2 INPUT a
3 FOR i=1 TO 2
4 i=0
5 INPUT n
6 a=a-n
7 PRINT a
8 NEXT i
9 '*/

줄 번호가 필요한 이유는 내가 언급 한 웹 사이트가 구조화되지 않은 BASIC 언어 만 지원하기 때문입니다. 그 웹 사이트는 내가 찾은 유일한 온라인 베이직 통역사입니다. 그러나 게시물 맨 위에있는 코드 (행 번호가없는 코드)를 실행하면 구조적 BASIC을 지원 '하는 주석이있는 QBasic 인터프리터와 주석 시작 기로 잘 작동합니다 (그러나 대부분은 그렇지 않습니다).


노트

  • 이것은 나의 첫번째 포스트입니다! 나는 그것이 좋은 것이기를 바란다!
  • END인터프리터가 도달 하지 않기 때문에 코드의 QBasic 부분은 필요하지 않습니다 ! (이것은 영원히 무한 루프에 빠질 것입니다; 항상 더 많은 입력을 요구하십시오.)

3

Brain-Flak / Brain-Flueue , 20 바이트

({}<([({{}})]){}>{})

온라인으로 사용해보십시오! (브레인-플락) (플러스)

온라인으로 사용해보십시오! (뇌-유체) (빼기)

설명

Brain-Flak과 Brain-Flueue의 유일한 차이점은 Brain-Flueue가 Brain-Flak에 사용 된 두 스택 (최종 마지막)을 두 개의 대기열 (첫 번째)로 대체한다는 것입니다. 당연히이 프로그램은이 차이를 사용합니다.

주석이 달린 코드

(                  ) Push the sum of...
 {}                   the first input,
   <            >     zero,
                 {}   the remaining sum (see below)
    ([      ])       Push the of below line
      ({{}})         Pop all the input sans first, push the sum
              {}     Pop (in Brain-Flak, this discards the negative sum,
                            in Brain-Flueue, the positive)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.