एक प्रोग्राम लिखें जो एक फ़ंक्शन को अलग भाषा में लिखता है!


30

सबसे छोटा प्रोग्राम लिखें जो STDIN (या समतुल्य) से एक इनपुट (n) लेता है और एक तर्क (x) के साथ एक साधारण वेतन वृद्धि फ़ंक्शन को आउटपुट करता है जो x + n देता है लेकिन फ़ंक्शन एक अलग भाषा में होना चाहिए। बहुत साधारण!

यह कोड-गोल्फ है, सामान्य नियम लागू होते हैं, सबसे छोटा कार्यक्रम जीतता है।

उदाहरण:> <> पायथन (अनगुल्ड)

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

इनपुट:

3

आउटपुट:

def i(x):
    return x+3

संपादित करें: बेनामी कार्यों और लंबोदर अभिव्यक्तियों की अनुमति है!


इनपुट कितना बड़ा मिल सकता है? जहां तक ​​मैं बता सकता हूं, आपका उदाहरण केवल इसके <> के आधे हिस्से के लिए एकल अंकों की संख्या के साथ काम करता है।
Sp3000

सिद्धांत रूप में किसी भी (उचित) इनपुट का उपयोग करने में सक्षम होना चाहिए, लेकिन जवाब देता है कि केवल एक इनपुट का उपयोग करें जो 1 अंक को बनाए रख सकता है पूरी तरह से स्वीकार्य है, मैंने पोस्ट करने से पहले इसे ठीक करने के लिए उदाहरण पर विचार करने के लिए विचार किया था, लेकिन मुझे लगा कि इसे सरलता के लिए छोड़ दिया गया है ।
ब्लेक लॉकली

4
मुझे इस बात की कोई परिभाषा नहीं दिख रही है function BUTकि हम लिखने वाले हैं .. -_-
ऑप्टिमाइज़र

1
जब कोई फ़ंक्शन किसी अन्य फ़ंक्शन को वापस करता है, तो इसे एक क्लोजर कहा जाता है । मुझे नहीं पता कि क्या यह क्रॉस-भाषा पर लागू होता है, हालांकि ...
ETHproductions

@ETHproductions मुझे लगता है कि लक्ष्य एक फ़ंक्शन ऑब्जेक्ट को वापस नहीं करना है, लेकिन उस अन्य भाषा में फ़ंक्शन का स्रोत कोड है।
पाओलो एबरमन

जवाबों:


23

जीएस 2 → के, 2 बाइट्स

•+

यह एक टैसिट, मोनैडिक फ़ंक्शन प्रिंट करता है। स्रोत कोड 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+बदल देता +है n


1
कौन सा एन्कोडिंग आप उपयोग कर रहे हैं?
कॉनर ओ'ब्रायन

2
@ C @O'Bʀɪᴇɴ "स्रोत कोड CP437 एन्कोडिंग का उपयोग करता है ।"
ETHproductions

16

शेपस्क्रिप्ट → J, 4 बाइट्स

"&+"

यह एक टैसिट, मोनैडिक क्रिया को प्रिंट करता है। इसे ऑनलाइन आज़माएं: शेपस्क्रिप्ट , जे

परीक्षण चालन

$ 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 सभी स्टैक आइटम प्रिंट करता है।

जम्मू

& तर्क करी करता है।

यहाँ, अपने बाएँ तर्क को सेट करके डाइएडिक क्रिया को एक विवर्तनिक क्रिया में n&+बदल देता +है n


मुझे पूरा यकीन है कि वहाँ एक भाषा है जहाँ आपको क्लोज़-कोट की ज़रूरत नहीं है।
ग्रिटोसिस्ट

वहाँ एक अच्छा मौका है जो आप सही हैं, लेकिन मैं निहित इनपुट और निहित आउटपुट के साथ एक को याद नहीं कर सकता।
डेनिस

13

GolfScript → CJam, 4 बाइट्स

{+}+

यह एक कोड ब्लॉक (अनाम फ़ंक्शन) प्रिंट करता है। इसे ऑनलाइन आज़माएं: गोल्फस्क्रिप्ट , सीजाम

परीक्षण चालन

$ 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
मैं बस यह पोस्ट करने जा रहा था!
लवजो

वाह यह प्रभावशाली है। {n +}धक्का देता है 42, फिर निष्पादित करता है +। (शायद होना चाहिए {42 +}या "धक्का n")
जस्टिन

@ जस्टिन वास्तव में। धन्यवाद!
डेनिस

12

ब्रेनएफ *** से जावास्क्रिप्ट ईएस 6, 57 बाइट्स

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

(यह मानता है कि इनपुट संख्यात्मक वर्णों से बना है)

कहो 1337तुम्हारा इनपुट है। फिर, यह करने के लिए संकलन करेगा:

x=>x+1337


10

टू के, 5 बाइट्स

मैं '++ ओ

@ Kirbyfan64sos को धन्यवाद

चुनौती का निर्माण होने के बाद जोड़े गए सुविधाओं का उपयोग करते हुए एक और संस्करण।

मैं '+
  • इनपुट प्राप्त करता है, स्टैक करने के लिए धक्का देता है
  • एक स्ट्रिंग के रूप में '+' पुश करता है
  • आउटपुट स्टैक सामग्री

K में स्वचालित करी है, इसलिए आप बस कर सकते हैं i'++p
kirbyfan64sos 15

K और O के बीच की दूरी 4 है। आपको इसे एक बाइट को छोटा करने की आवश्यकता है।
mbomb007

@ mbomb007 वाट। कोड 5 बाइट्स लंबा है
चरण

2
पत्र। वर्णमाला में। उसे ले लो?
mbomb007

1
@ mbomb007 जो मेरे लिए बहुत जटिल था
चरण

9

आर टू जूलिया, 19 बाइट्स

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

यह STDIN से पूर्णांक का उपयोग करके पढ़ता है scan()और उपयोग किए जाने वाले STDOUT में एक अनाम जूलिया फ़ंक्शन लिखता है cat()। जूलिया समारोह बस है x->x+n, जहां nआर कार्यक्रम से आता है।



8

Minecraft 1.8.7 से K, 7 6 + 33 + 27 + 62 = 129 128 बाइट्स

यह बाइट गिनती के इस संस्करण का उपयोग कर रहा है ।

प्रणाली

कमांड ब्लॉक (बाएं से दाएं जा रहे हैं):

स्कोरबोर्ड उद्देश्यों में K डमी को जोड़ा गया है
स्कोरबोर्ड खिलाड़ियों ने जेके <इनपुट> सेट किया
बताएं @a {स्कोर: {नाम: "जे", उद्देश्य: "के"}, अतिरिक्त: [{टेक्स्ट: "+"}}}

यह शायद थोड़ा अधिक गोल्फ हो सकता है, लेकिन यह काफी सरल है: Jउद्देश्य के साथ एक चर उत्पन्न करते हैं Kऔर इनपुट के लिए उस उद्देश्य के लिए अपना स्कोर सेट करते हैं (कोई स्टैडिन नहीं है - मुझे लगा कि यह काफी करीब था)। फिर, एक टिक के बाद, उत्पादन चर के स्कोर Jउद्देश्य के लिए Kएक के बाद +। बहुत आसान।


ध्यान दें कि .dat बायटेकाउंटिंग इस प्रणाली के लिए लागू नहीं है, क्योंकि सूचीबद्ध Minecraft संस्करण संरचना फ़ाइलों का समर्थन नहीं करता है।
Addison Crump

दूसरे के लिए, क्या आप उसे हटा नहीं सकते extra, स्कोर JSON को एक सरणी में रख सकते हैं, और उसके बाद एक स्ट्रिंग रख सकते हैं? tellraw @a [{score:{name:"J",objective:"K"}},"+"]
रेडवॉल्फ कार्यक्रम 16

@RedwolfPrograms जमा करने के समय नहीं, चार साल पहले।
एडिसन क्रम्प

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
गंभीरता से? आपने सिम्प्लेक्स से पहले गंभीरता से काम पूरा किया? D:
कॉनर ओ'ब्रायन

1
@ C @O'Bʀɪᴇɴ यह अभी तक पूरी तरह से समाप्त नहीं हुआ है (मुद्दा ट्रैकर देखें), लेकिन यह कुछ गोल्फों में उपयोग करने के लिए पर्याप्त रूप से काम करता है।
मेगो



6

पायल को एपीएल, 7 5 बाइट्स

+z"--

Pyth कोड zस्ट्रिंग के साथ केवल इनपुट ( ) को जोड़ता है "--"। यह एपीएल में एक अनाम मानद ट्रेन बनाता है n--, जहां nपाइथ आता है। एपीएल में इसे कॉल करते समय, (n--)xकुछ तर्क के लिए xगणना करता है n--x = n-(-x) = n+x

कोशिश करें: पायथ , एपीएल

डेनिस के लिए धन्यवाद 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.!"}"$

Ungolfed:

? 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;}करता है (जो जावा विधि की तरह नहीं दिखता है , लेकिन ... जावा!)


1
Y'know, क्योंकि जावा।
कॉनर ओ'ब्रायन

1
क्या मतलब है, यह एक जावा विधि की तरह नहीं दिखता है? उस तरह की विधि को और कैसे देखना चाहिए?
पाओलो एबरमन

@ Pa @loEbermannpublic static int method(int argument){return argument+42;}
चरण

1
अच्छा ठीक है। (हालांकि यदि आप केवल प्रोग्रामिंग कर रहे हैं public static, तो आप वास्तव में जावा नहीं कर रहे हैं। argumentबेहतर भी होगा; summand;-) )
पाओलो एबरमन

@ PamannloEbermann मैं अभी मॉडलिंग कर रहा थाpublic static void main(String[] arguments){}
चरण

4

PHP → जावास्क्रिप्ट (ईएस 6), 20 24 बाइट्स

PHP में STDIN से पढ़ना हमेशा महंगा होता है। यह थोड़ा अजीब लग रहा है:

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

यह x=>x+स्ट्रिंग को पूरा करने के लिए उपयोगकर्ता इनपुट के लिए प्रिंट करता है और इंतजार करता है, पूर्ण अनाम जावास्क्रिप्ट फ़ंक्शन के साथ समाप्त होता है, जैसे x=>x+2

पहला संस्करण (24 बाइट्स )

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

सिर्फ क्यों नहीं x=>x+<?=$x;? यह वैध PHP4.1 है और आप POST, GET, SESSION, COOKIE, ... पर मान पास कर सकते हैं और यह त्रुटिपूर्ण रूप से काम करेगा। या PHP5.3 पर register_globals=on(आपकी php.iniफ़ाइल पर)।
इस्माईल मिगुएल

@IsmaelMiguel चुनौती की आवश्यकताओं का कहना है कि यह एक संख्या लेता है STDIN। हर बार मैंने नजरअंदाज किया कि इसकी आलोचना हुई। इसलिए मैं आवश्यकताओं को गंभीरता से लेता हूं। :)
२०:३

खैर, मुझे लगता है कि GETखत्म हो गया है STDIN। मैं थोड़ी देर में इसका परीक्षण कर सकता हूं।
इस्माइल मिगुएल

1
serverfault.com/questions/187025/… <- मेरे दावे पर साक्ष्य। बस मेरे द्वारा प्रदान किए गए कोड का उपयोग करें, इस लिंक को थप्पड़ मारें और कोई भी शिकायत नहीं कर सकता है
Ismael Miguel

1
हो, समझ गया! यह वास्तव में चालाक है!
ब्लैकहोल


4

पायथन 2 से सीजेएम, 18 20 बाइट्स

कार्यक्षमता को सही करने के लिए LegionMammal978 का धन्यवाद।

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

पायथन एक मूल स्ट्रिंग प्रारूप करता है। %fएक फ्लोट के लिए कोड है, और चूंकि मैं फ़्लोट्स को संभालने के लिए कोई बाइट नहीं खोऊंगा, इसलिए मैंने आगे बढ़कर ऐसा किया।

सीजेएम गोल्फस्क्रिप्ट- सीजेएम उत्तर के समान है। यह कुछ इस तरह दिखता है:

{7.4+}

या:

{23+}

यह एक ब्लॉक है जो स्टैक से शीर्ष मान लेता है, विशेष संख्या को धक्का देता है, फिर उन्हें जोड़ता है।


@ LegionMammal978 प्रश्न के अंत में कहा गया है कि अनाम फ़ंक्शंस और लंबोदर एक्सप्रेशन की अनुमति है। फिर भी, मैं एक वैकल्पिक पूर्ण कार्यक्रम के साथ अपना उत्तर संपादित करूँगा।
3

1
ओपी का मतलब है कि आउटपुट एक फ़ंक्शन हो सकता है।
लेजिओनमल 978

3

POSIX शेल से हास्केल, 19 बाइट्स

read n;echo "($n+)"

अनाम कार्यों की अनुमति दी जा रही है, हास्केल ऑपरेटर वर्गों के साथ एक अच्छा आउटपुट विकल्प है।


3

रेटिना टू पिप , 4 बाइट्स

इन पंक्तियों में से प्रत्येक के लिए एक फ़ाइल का उपयोग करता है + 1 जुर्माना बाइट; या, दोनों लाइनों को एक ही फाइल में डालें और -sझंडे का उपयोग करें ।

$
+_

इनपुट के अंत के साथ मेल खाता है $और +_वहां डालता है। इसका परिणाम कुछ के रूप 3+_में होता है, जो पिप में एक अनाम फ़ंक्शन है।


3

बैश → सी / सी ++ / सी # / जावा, 33 बाइट्स

और शायद अन्य

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

3

Vitsy to K, 5 बाइट्स

यदि इसे ऐसा किया जा सकता है, तो बहुत जल्द ही \ _ o / K का उपयोग किया जाएगा।

एन '+' जेड

या हो सकता है...

एन '+' हे

यदि इनपुट को एक स्ट्रिंग के रूप में लिया जाता है (केवल 0-9 इनपुट के लिए) ...

मैं '+' जेड

इनपुट 2 के लिए ये सभी आउटपुट देंगे:

2 +

3

टाइनी लिस्प से सीलोन , 68 61

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

टिनी लिस्प में वास्तविक इनपुट और आउटपुट नहीं है - इसका केवल अभिव्यक्ति मूल्यांकन है। ऊपर यह कोड एक फ़ंक्शन बनाता है और इसे बांधता है u। फिर आप इस तरह uके तर्क के साथ कॉल कर सकते हैं n: (u 7)जो इस टिनी लिस्प मूल्य का मूल्यांकन करेगा:

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

यह एक गुमनाम सीलोन अभिव्यक्ति है, एक अनाम फ़ंक्शन के लिए जो 7 को एक मनमाना पूर्णांक में जोड़ता है।

7 बाइट्स के सुधार के लिए DLosc को धन्यवाद।


बहुत सीमित आउटपुट क्षमताओं के साथ काम करना अच्छा है!
DLosc

3

जावास्क्रिप्ट लैम्बडा कैलकुलस , 39 बाइट्स के लिए

(यह आधार के रूप में लिंक किए गए दस्तावेज़ का उपयोग करता है।)

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

कहो इनपुट है 5। फिर यह बन जाता है:

"λa(5(add a))"

1
लैम्ब्डा कैलकुलस के लिए दुभाषिया कहाँ है?
feersum

@ Faersum लिंक की जाँच करें। यदि कोई वास्तविक दुभाषिया मौजूद है तो मुझे यकीन नहीं है, लेकिन मुझे बताया गया था कि मैं इस भाषा में प्रस्तुत करने में सक्षम हूं।
कॉनर ओ'ब्रायन

1
आपका क्या मतलब है "आपको कहा गया था"? किसी भी भाषा कार्यान्वयन में नहीं चलने वाले उत्तर अमान्य हैं।
feersum


1
लैम्ब्डा कैलकुलस काफी अच्छी तरह से जाना जाता है, मेरा मानना ​​है कि कहीं न कहीं एक वैध दुभाषिया होना चाहिए। मुद्दा यह है, आपको ऐसे दुभाषिया की पहचान करने और उस दुभाषिया द्वारा स्वीकृत प्रारूप में कोड लिखने की आवश्यकता है।
feersum


2

जीएनयू सी से सी, 46 बाइट्स

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

2

सीलोन टू टिनी लिस्प , 76

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

यह (इनपुट की एक पंक्ति पढ़ने के बाद) आउटपुट का उत्पादन करता है (q((x)(s 5(s 0 x)))), जैसे कि टिनी लिस्प में मूल्यांकन करता है ((x) (s 5 (s 0 x))), एक फ़ंक्शन जो एक तर्क लेता है x, इसे 0 से घटाता है, और 5. से परिणाम घटाता है (हाँ, यह है कि टिनी लिस्प में एक कैसे जोड़ता है , वहाँ केवल एक घटाव समारोह का निर्माण होता है। बेशक, कोई पहले एक अतिरिक्त फ़ंक्शन को परिभाषित कर सकता है, लेकिन यह अधिक लंबा होगा।)

आप इसे एक अनाम फ़ंक्शन के रूप में उपयोग कर सकते हैं:

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

(यह 12. का मूल्यांकन करेगा)

या आप इसे एक नाम दे सकते हैं:

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

टिनी लिस्प के लेखक, DLosc से सुधार और गोल्फ संकेत।


2

जावास्क्रिप्ट (ES6)> PHP / जावास्क्रिप्ट, 38 48 47 बाइट्स

यह कोड एक अनाम फ़ंक्शन है जो एक VALID PHP और जावास्क्रिप्ट फ़ंक्शन बनाता है जिसे कहा जाता है anonymous

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

इस कोड के लेखन के रूप में, केवल फ़ायरफ़ॉक्स ने ES6 को मूल रूप से (झंडे और ऐसे बिना) लागू किया है।

यह कोड prompt()इनपुट का अनुरोध करने और आउटपुट के लिए फ़ंक्शन का उपयोग करता है । फ़ायरफ़ॉक्स, आउटपुट को कॉपी करने का समर्थन करता है prompt(), जिससे यह जावास्क्रिप्ट के लिए एक वैध आउटपुट विधि बन जाता है।


बातें:

  • ;अंत में पीएचपी के लिए आवश्यक है
  • return $xजावास्क्रिप्ट द्वारा अंतरिक्ष में आवश्यक है
    • इसे अनदेखा करने से यह कहा जाएगा कि return$xयह अपरिभाषित है
  • फ़ंक्शन का नाम स्वचालित है: मेरे पास इस पर कोई विकल्प नहीं है
  • केवल PHP या केवल जावास्क्रिप्ट लेने से केवल 1 बाइट में कोड कम हो जाएगा, और मज़ा-कारक आधे से कम हो जाएगा
  • अन्य भाषाओं के साथ काम कर सकते हैं

पुराना उत्तर (48 बाइट्स):

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

पुराना अमान्य उत्तर:

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

@ लीजनमोनमल 978 किया। ठीक कर दिया।
इस्माइल मिगुएल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.