기능을 다른 언어로 작성하는 프로그램을 작성하십시오!


30

STDIN (또는 동등한 것)에서 하나의 입력 (n)을 가져 와서 x + n을 리턴하는 하나의 인수 (x)로 간단한 증분 함수를 출력하는 가장 짧은 프로그램을 작성하십시오. 그러나 함수는 다른 언어 여야합니다. 매우 간단합니다!

이것은 코드 골프, 일반적인 규칙 적용, 가장 짧은 프로그램 승리입니다.

예 :> <> to Python (Ungolfed)

!v"def i(x):"a"    return x+"ir!
 >l?!;o

입력:

3

산출:

def i(x):
    return x+3

편집 : 익명 함수와 람다식이 허용됩니다!


입력이 얼마나 커질 수 있습니까? 내가 알 수있는 한, 귀하의 예는> <> 절반의 한 자리 숫자로만 작동합니다.
Sp3000

이론적으로 (합리적) 입력을 사용할 수 있어야하지만 1 자리를 유지할 수있는 입력 만 사용하는 답변은 완전히 받아 들일 수 있습니다. 게시하기 전에이 문제를 해결하기 위해 예제를 수정하는 것이 좋습니다. .
Blake Lockley

4
function BUT우리가 작성해야 할 정의가 없습니다 . -_-
Optimizer

1
함수가 다른 함수를 반환하면 클로저 라고합니다 . 비록 이것이 이것이 언어
간에

@ETHproductions 목표는 함수 객체를 반환하는 것이 아니라 다른 언어로 된 함수의 소스 코드를 반환하는 것입니다.
Paŭlo Ebermann

답변:


23

GS2 → K, 2 바이트

•+

이것은 암묵적인 monadic 기능을 인쇄합니다. 소스 코드는 CP437 인코딩을 사용합니다 . 온라인으로 사용해보십시오!

시운전

$ xxd -c 2 -g 1 sum-func.gs2
00000000: 07 2b  .+
$ printf 42 | gs2 sum-func.gs2
42+
$ kona
K Console - Enter \ for help

  (42+) 69
111
  f : 42+
42+
  f 69
111

작동 원리

GS2

  • GS2는 STDIN에서 자동으로 읽고 스택의 입력을 푸시합니다.

  • 다음 바이트가 단일 문자열 리터럴임을 나타냅니다.

  • 종료하기 전에 GS2는 모든 스택 항목을 인쇄합니다.

케이

K에서는 왼쪽 인수 카레가 자동으로 수행됩니다.

여기에서 왼쪽 인수를로 설정 n+하여 dyadic 함수 +를 monadic 함수로 바꿉니다 n.


1
어떤 인코딩을 사용하고 있습니까?
코너 오브라이언

2
@ CᴏɴᴏʀO'Bʀɪᴇɴ "소스 코드는 CP437 인코딩을 사용합니다 ."
ETHproductions

16

ShapeScript → J, 4 바이트

"&+"

이것은 암묵적인 동사를 인쇄합니다. 온라인으로 사용해보십시오 : ShapeScript , J

시운전

$ cat sum-func.shape; echo
"&+"
$ printf 42 | shapescript sum-func.shape; echo
42&+
$ j64-804/jconsole.sh 
   42&+ 69
111
   f =: 42&+
   f 69
111

작동 원리

ShapeScript

  • ShapeScript는 STDIN에서 자동으로 읽고 스택의 입력을 푸시합니다.

  • "&+" 해당 문자열을 스택에 푸시합니다.

  • 종료하기 전에 ShapeScript는 모든 스택 항목을 인쇄합니다.

J

& 인수 카레를 수행합니다.

여기에서 왼쪽 인수를로 설정 n&+하여 이완 동사 +를 모나 딕 동사로 바꿉니다 n.


가까운 따옴표가 필요없는 언어가 있다고 확신합니다.
lirtosiast

당신이 옳을 가능성은 있지만 암시 적 입력과 암시 적 출력을 가진 것을 기억할 수는 없습니다.
데니스

13

GolfScript → CJam, 4 바이트

{+}+

코드 블록을 인쇄합니다 (익명 기능). 온라인으로 사용해보십시오 : GolfScript , CJam

시운전

$ cat sum-func.gs; echo
{+}+
$ printf 42 | golfscript sum-func.gs
{42 +}
$ cjam
> 69 {42 +} ~
111
> {42 +}:F; 69F    
111

작동 원리

GolfScript

  • GolfScript는 STDIN에서 자동으로 읽고 스택의 입력을 푸시합니다.

  • {+} 스택에서 해당 블록을 푸시합니다.

  • + 문자열과 블록을 행복하게 연결하는 연결을 수행합니다.

  • 종료하기 전에 GolfScript는 모든 스택 항목을 인쇄합니다.

CJam

{n +}는 실행될 때 먼저 n스택을 푸시 한 다음 실행 +하여 스택에서 두 정수를 팝하고 합계를 푸시 하는 코드 블록입니다 .


2
방금 이것을 게시하려고했습니다!
Loovjo

와우 인상적입니다. {n +}푸시 42한 다음 실행 +합니다. (아마도 {42 +}"푸시 n" 이어야 함 )
Justin Justin

@Justin Indeed. 감사!
Dennis

12

JavaScript ES6의 BrainF ***, 57 바이트

----[-->+++<]>--.[-->+<]>+.+.--[->++<]>.[--->+<]>+++.[,.]

(입력이 숫자로 구성되어 있다고 가정)

1337당신의 의견을 말 하십시오. 그러면 다음과 같이 컴파일됩니다.

x=>x+1337

10

로터를 K로, 2 바이트

'+

K 악 대차에 뛰어들 수도 있습니다.


10

영형 에서 K, 5 바이트

나는 + +

@ kirbyfan64sos 감사합니다

인증 확인 후 추가 된 기능을 사용하는 다른 버전.

나는 +
  • 입력을 받고 스택으로 푸시
  • '+'를 문자열로 푸시
  • 스택 내용을 출력합니다

K는 자동 카레 기능을 가지고 있으므로 그냥 할 수 있습니다 i'++p.
kirbyfan64sos

K와 O 사이의 거리는 4입니다. 1 바이트를 줄여야합니다.
mbomb007

@ mbomb007 왓. 코드는 5 바이트 길이
단계

2
편지들. 알파벳으로. 알 겠어요?
mbomb007

1
너무 나를 위해 복잡하고 @ mbomb007

9

R에서 Julia까지, 19 바이트

cat("x->x+",scan())

이를 사용하여 STDIN에서 정수를 읽고을 사용 scan()하여 이름이없는 Julia 함수를 STDOUT에 씁니다 cat(). Julia 함수는 R 프로그램 x->x+n에서 n나온 것입니다.


9

자바 스크립트 ES6에 Malbolge , 71 바이트

('&%@9]!~}43Wyxwvutsr)Mon+HGi4~fBBdR->=_]:[875t4rT}0/Pf,d*((II%GEE!Y}Az

Malbolge 코드를 생성하는 것은 항상 재미 있습니다.


8

마인 크래프트 1.8.7 ~ K, 7 6 + 33 + 27 + 62 = 129128 바이트

이것은 이 버전의 바이트 카운팅을 사용 하고 있습니다.

the system

명령 블록 (왼쪽에서 오른쪽으로 이동) :

스코어 보드 목표는 K 더미를 추가합니다
스코어 보드 플레이어가 JK <입력> 설정
tellraw @a {score : {name : "J", 목표 : "K"}, 추가 : [{text : "+"}]}

이것은 아마도 조금 더 골프화 될 수 있지만 상당히 간단합니다. J목표 로 변수 를 생성하고 해당 목표에 K대한 점수를 입력으로 설정하십시오 (STDIN은 없습니다-나는 이것이 충분히 가깝다고 생각했습니다). 그리고, 진드기 후, 출력 변수의 점수 J대물 용은 Ka로 하였다 +. 쉬워요.


dat합니다 bytecounting는 것을주의 하지 구조 파일을 지원하지 않습니다 나열된 마인 크래프트 버전으로,이 시스템에 적용.
애디슨 크럼프

두 번째 extra로을 제거 하고 점수 JSON을 배열에 넣은 다음 문자열을 넣을 수 없습니까? tellraw @a [{score:{name:"J",objective:"K"}},"+"]
Redwolf 프로그램

@RedwolfPrograms 4 년 전 제출 시점이 아닙니다.
Addison Crump

8

진지하게 파이썬, 15 바이트

,"lambda n:n+"+

입력이 문자열 형식 일 것으로 예상합니다. 즉 "3"

설명:

,: read value from input
"lambda n:n+": push this literal string
+: concatenate top two values on stack

온라인으로 시도하십시오 (퍼머 링크는 따옴표를 좋아하지 않기 때문에 수동으로 입력을 입력해야합니다)


이봐, 누군가가 실제로 심각하게 갔다! : D
ETHproductions

2
진심이야? 심플 렉스 (Simplex) 전에 진지하게 끝냈습니까? D :
코너 오브라이언

1
@ CᴏɴᴏʀO'Bʀɪᴇɴ 아직 완전히 완성되지는 않았지만 (문제 트래커 참조), 일부 골프에서 사용할 수있을 정도로 잘 작동합니다.
Mego



6

Pyth에서 APL까지, 7 5 바이트

+z"--

Pyth 코드는 단순히 입력 z과 문자열을 연결 합니다 "--". 이것은 Pyth n--에서 n온 형식으로 APL에 이름이없는 모나 딕 기차를 만듭니다 . APL에서 호출하면 (n--)x일부 인수에 대해 x계산 n--x = n-(-x) = n+x됩니다.

시도 : Pyth , APL

Dennis 덕분에 2 바이트를 절약했습니다!


5

> <> 를 파이썬으로, 25 + 3 = 28 바이트

"v+x:x adbmal
o/?(3l
;>~n

-v플래그 를 통해 입력을받습니다 . 예 :

py -3 fish.py add.fish -v 27

그리고 파이썬 람다를 출력합니다 lambda x:x+27.

보너스로 30 바이트에 대한 STDIN 입력 버전이 있습니다.

i:0(?v
x+"r~/"lambda x:
o;!?l<

5

마우스 에서 루비로, 19 바이트

?N:"->x{x+"N.!"}"$

언 골프 드 :

? N:       ~ Read an integer from STDIN, store in N
"->x{x+"   ~ Write that string to STOUT
N. !       ~ Write N
"}"$       ~ Close bracket, end of program

이것은 마우스 ->x{x+n}에서 n나온 형식의 이름이없는 루비 함수를 만듭니다 .


잘 했어,이 게시물이 마음에 들어.


5

자바, 273

+ [-----> +++++. +++++. ++++++. [----> ++++. + [-> ++++ .- [- > +++ -.----- [-> +++. +++++. ++++++. [----> ++++ .- [---> ++ -. [-----> ++-. [-> +++ .---------.-------------. [---> + ---. + .---.----.- [-> +++++ -.- [---> ++-. [-----> +++., [. ,] + [---------> +++ .- [---> +++.

int d(int i){return i+42;}( Java 메소드처럼 보이지 않지만 Java!) 와 같은 메소드를 출력합니다 .


1
Java 때문입니다.
Conor O'Brien

1
Java 메소드처럼 보이지 않는 것은 무엇입니까? 그런 종류의 방법은 어떻게 보입니까?
Paŭlo Ebermann

@ PaŭloEbermannpublic static int method(int argument){return argument+42;}
Phase

1
흠. (로만 프로그래밍하는 경우 public static실제로 Java를 수행하지 않는 argumentsummand입니다.;- 로 명명하는 것이 좋습니다 .) )
Paŭlo Ebermann

@ PaŭloEbermann 난 그냥 모델링 한public static void main(String[] arguments){}

4

PHP → 자바 스크립트 (ES6), 20 24 바이트

STDIN 에서 읽는 것은 항상 PHP에서 비쌉니다. 조금 이상해 보입니다.

x=>x+<?fgets(STDIN);

x=>x+문자열을 완성하기 위해 사용자 입력을 인쇄 하고 기다립니다 x=>x+2. 예를 들어 익명의 완전한 JavaScript 함수로 종료됩니다 .

첫 번째 버전 (24 바이트 )

<?='x=>x+'.fgets(STDIN);

왜 안돼 x=>x+<?=$x;? 유효한 PHP4.1이며 POST, GET, SESSION, COOKIE ...를 통해 값을 전달할 수 있으며 완벽하게 작동합니다. 또는 register_globals=on( php.ini파일에) PHP5.3에서 .
Ismael Miguel

@IsmaelMiguel 도전 과제의 요구 사항에는 숫자가 필요하다고합니다 STDIN. 나는 그것이 비난을 무시할 때마다. 그래서 나는 지금 요구 사항을 진지하게 받아들입니다. :)
insertusernamehere

글쎄, 나는 그것이 GET넘겨 졌다고 생각한다 STDIN. 잠시 후에 테스트 할 수 있습니다.
이스마엘 미겔

1
serverfault.com/questions/187025/… <-나의 주장에 대한 증거. 내가 제공 한 코드 만 사용하고이 링크
Ismael Miguel

1
호, 이해했다! 정말 영리합니다!
Blackhole


4

Python 2에서 CJam으로, 18 20 바이트

기능을 수정 한 LegionMammal978에게 감사합니다.

print"{%f+}"%input()

파이썬은 기본 문자열 형식을 수행합니다. %f부동 소수점 코드이며 부동 소수점 처리를 위해 바이트를 잃지 않기 때문에 계속 진행했습니다.

CJam은 Golfscript-> CJam 답변과 거의 동일합니다. 다음과 같이 보입니다 :

{7.4+}

또는:

{23+}

스택에서 최상위 값을 가져 와서 특수 번호를 푸시 한 다음 추가하는 블록입니다.


@ LegionMammal978 질문이 끝나면 익명 함수와 람다식이 허용됩니다. 그래도 대안 전체 프로그램으로 답변을 편집하겠습니다.
bkul

1
OP는 출력이 기능 일 수 있음을 의미합니다.
LegionMammal978

3

POSIX 쉘에서 Haskell로, 19 바이트

read n;echo "($n+)"

익명 함수 허용, Haskell은 연산자 섹션에서 좋은 출력 선택입니다.


3

망막 에서 핍으로 , 4 바이트

이러한 각 라인에 대해 하나의 파일을 사용하고 페널티 바이트는 1입니다. 또는 두 줄을 하나의 파일에 넣고 -s플래그를 사용하십시오 .

$
+_

입력의 끝을 일치시키고 거기에 $+_습니다. 이로 인해 3+_Pip의 익명 함수 인 형식이됩니다 .


3

Bash → C / C ++ / C # / Java, 33 바이트

그리고 아마도 다른 사람들

echo "int f(int a){return a+$1;}"

3

Vitsy to K, 5 바이트

\ o / K 이렇게하면 가능한 빨리 사용할 수 있습니다.

N '+'Z

아니면 ...

N '+'O

입력이 문자열로 취해지는 경우 (0-9 입력에만 해당) ...

나는 '+'Z

입력 2의 경우이 모든 것이 출력됩니다.

2+

3

작은 리스프실론 , 68 (61)

(d u(q((n)(c(q(Integer x))(c(q =>)(c(c(q x+)(c n()))()))))))

Tiny Lisp에는 실제 입력 및 출력이 없으며 표현식 평가 만 있습니다. 위의 코드는 함수를 생성하여에 바인딩합니다 u. 그런 다음 다음 u과 같은 인수 로 호출 할 수 있습니다 n. (u 7)이 Tiny Lisp 값으로 평가됩니다.

((Integer x) => (x+ 7))

이것은 임의의 정수에 7을 더하는 익명 함수에 유효한 Ceylon 표현식입니다.

7 바이트의 개선을위한 DLosc에 감사합니다.


매우 제한된 출력 기능으로 작업하는 것이 좋습니다!
DLosc

3

Lambda 미적분학에 JavaScript, 39 bytes

(링크 된 문서를 기본으로 사용합니다.)

alert((x=>`λa(${x}(add a))`)(prompt()))

입력이라고 말하십시오 5. 그런 다음이됩니다 :

"λa(5(add a))"

1
Lambda Calculus의 통역사는 어디에 있습니까?
feersum

@feersum Check the link. I'm not sure if an actual interpreter exists, but I was told I was able to submit in this language.
Conor O'Brien

1
What do you mean "you were told"? Answers that don't run in any language implementation are invalid.
feersum


1
Lambda calculus being fairly well known, I assume there must be a valid interpreter somewhere. The point is, you need to identify such an interpreter and write the code in the format accepted by that interpreter.
feersum


2

GNU sed to C, 46 bytes

sed -r 's/^([0-9]+)$/f(int x){return x+\1;}/'

2

Ceylon to Tiny lisp, 76

shared void run(){print("(q((x)(s ``process.readLine()else""``(s 0 x))))");}

This produces (after reading a line of input) output like (q((x)(s 5(s 0 x)))), which evaluates in Tiny Lisp to ((x) (s 5 (s 0 x))), a function which takes an argument x, subtracts it from 0, and subtracts the result from 5. (Yeah, this is how one adds in Tiny Lisp, there is only a subtraction function build in. Of course, one could define an addition function first, but this would be longer.)

You can use it like this as an anonymous function:

((q((x)(s 5(s 0 x)))) 7)

(This will evaluate to 12.)

Or you can give it a name:

(d p5 (q((x)(s 5(s 0 x)))))
(p5 7)

Corrections and Golfing Hints from DLosc, the author of Tiny Lisp.


2

Javascript (ES6) > PHP/Javascript, 38 48 47 bytes

This code is an anonymous function that creates a VALID PHP and Javascript function called anonymous.

P=prompt;P(Function('$x',`return $x+${P()};`));

As of the writting of this code, only Firefox has implemented ES6 nativelly (without flags and suchs).

This code uses the prompt() function to request input and for output. Firefox supports copying the output of prompt(), making this a legitime output method for Javascript.


Considerations:

  • The ; at the end is required for PHP
  • The space in return $x is required by Javascript
    • Ignoring it will say that return$x is undefined
  • The function name is automatic: I have no choice over it
  • Picking only PHP or only Javascript will only reduce the code in 1 byte, and would reduce the fun-factor by half
  • May work with other languages

Old answer (48 bytes):

alert(Function('$x',`return $x+${prompt()};`));

Old invalid answer:

y=>''+Function('$x',`return $x+${y};`)

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