एक समारोह लिखें [बंद]


15

मैं ईमानदारी से विश्वास नहीं कर सकता कि यह चुनौती पहले से मौजूद नहीं है।

चुनौती

एक फ़ंक्शन लिखें।

बारीकियाँ

  • आपके प्रोग्राम को किसी प्रकार के कॉल करने योग्य फ़ंक्शन को परिभाषित करना होगा। इसमें आमतौर पर एक फ़ंक्शन, लैम्बडा फ़ंक्शन या सबरूटीन के रूप में जाना जाने वाला कुछ भी शामिल है। इन सभी प्रकार के कॉलबलों को इस पोस्ट में "फ़ंक्शन" के रूप में संदर्भित किया जाएगा।

    1. फ़ंक्शन के लिए इनपुट वैकल्पिक है और आवश्यक नहीं है।

    2. फ़ंक्शन से वापसी मान भी वैकल्पिक है और आवश्यक नहीं है, लेकिन नियंत्रण को कॉलिंग प्रोग्राम में वापस आना चाहिए।

  • फ़ंक्शन को किसी प्रकार के चर को सौंपा जाना चाहिए ताकि बाद के समय तक पहुंच संभव हो। इसमें अप्रत्यक्ष असाइनमेंट शामिल है (अधिकांश सामान्य भाषाओं में जहां एक नामित फ़ंक्शन की घोषणा करना स्वचालित रूप से वर्तमान दायरे में नाम जोड़ता है) और प्रत्यक्ष असाइनमेंट (किसी अनाम फ़ंक्शन को सीधे चर पर असाइन करना)।

  • फ़ंक्शन को नाम देने की आवश्यकता नहीं है।

  • फ़ंक्शन आपके द्वारा बनाया जाना चाहिए - आप भाषा से एक चर के लिए डिफ़ॉल्ट फ़ंक्शन को असाइन नहीं कर सकते।

  • मानक खामियों में से कोई भी , कृपया।

यह , इसलिए बाइट्स जीत में सबसे कम स्कोर है।


टिप्पणियाँ विस्तारित चर्चा के लिए नहीं हैं; इस वार्तालाप को बातचीत में स्थानांतरित कर दिया गया है ।
जेम्स

3
मुझे नहीं पता कि यह क्यों फिर से खोला गया जब पहली बार में बंद किए गए कारणों में से कोई भी संबोधित नहीं किया गया है, बस चैट में mods द्वारा छिपाया गया है
जो किंग

2
इसके अलावा, कब से आप अपने खुद के पद को फिर से खोलने के लिए वोट कर सकते हैं ??
जो किंग

7
इस चुनौती का मुकाबला करने के लिए आपको एक प्रोग्रामर के बजाय एक वकील होने की आवश्यकता है।
एंथोलीग जूल

2
यह निश्चित रूप से अपनी वर्तमान स्थिति में फिर से खोला नहीं जाना चाहिए था।
मेगो

जवाबों:


30

x86 / x64 मशीन कोड, 1 बाइट

c3

सभा:

ret

इसे ऑनलाइन आज़माएं! (NASM)

¯ \ _ (ツ) _ / ¯


2
लेकिन यह फ़ंक्शन को एक नाम नहीं देता है या फ़ंक्शन को एक चर में संदर्भ में संग्रहीत करता है।
टान्नर स्विट

4
@TannerSwett इसे पते से बुलाया जा सकता है।
नकारात्मक सात

7
आप असेंबली में एक लेबल जोड़ सकते हैं। यह संकलित कोड के आकार में वृद्धि नहीं करता है, और फ़ंक्शन को एक नाम देता है।
डेनियल तूतुबलिन

21

जेली , 0 बाइट्स

इसे ऑनलाइन आज़माएं!

एक मौद्रिक लिंक जो अपना तर्क देता है। चूंकि यह स्क्रिप्ट में दिखाई देने वाला पहला कार्य है, इसलिए इसे उपयोग करना कहा जा सकता है1Ŀ

@Lirtosiast को यह बताने के लिए धन्यवाद कि जेली में एक 0 बाइट लिंक / फ़ंक्शन काम करेगा।

अर्थात


3,4,5 1Ŀ

इसे ऑनलाइन आज़माएं!


0 बाइट जवाब काम करना चाहिए।
lirtosiast

@KevinCruijssen हाँ! अच्छा स्थान
निक केनेडी

@NickKennedy आप <pre><code>...</code></pre>कोड-ब्लॉकों में अग्रणी / अनुगामी रिक्त स्थान / नईलाइन्स को संरक्षित करने के लिए उपयोग कर सकते हैं । मैंने उसी के अनुसार आपका उत्तर संपादित किया है। :)
केविन क्रूज़सेन

@ केविनक्रूजसेन धन्यवाद!
निक केनेडी

जेली का मेरा ज्ञान बहुत पतला है, लेकिन क्या आपको लिंक को समाप्त करने के लिए एक नई रूपरेखा की आवश्यकता नहीं है? इसका उपयोग उदाहरण में किया गया लगता है।
पोस्ट रॉक गार्फ हंटर

13

जावास्क्रिप्ट, 6 बाइट्स

f=_=>0

जिसमें चर असाइनमेंट शामिल है। यहां देखने के लिए ज्यादा नहीं है।


28
इसे और अधिक इमोजी की तरह o=_=>o
दिखने के लिए

3
एक और इमोजीd=_=>b
tsh

3
@tsh, अफसोस, bइस मामले में परिभाषित नहीं है।
डेनियल तूतुबलिन

2
@ डैनियलो: एक निश्चित रूप से बहस कर सकता है। लेकिन मेरी राय में, एक और भी अधिक प्रभावी ढंग से तर्क दे सकता है कि आप इसे कॉल नहीं कर सकते हैं, इसलिए यह एक फ़ंक्शन नहीं है। जावास्क्रिप्ट में, एक फ़ंक्शन कॉल को स्पष्ट रूप से कोष्ठक के साथ दर्शाया जाता है।
पुनरावर्ती

2
@DaniilTutubalin लेकिन यह केवल तभी मायने रखता है जब आप इसे लागू करते हैं। और फ़ंक्शन के बारे में ऐसी कोई आवश्यकता नहीं है कि क्या अपवाद को फेंकने के बिना चलना चाहिए।
tsh


8

जेडएक्स स्पेक्ट्रम बेसिक, 6 बाइट्स

DEF FN f()=PI

हेक्स डंप CE 66 28 29 3D A7:। CEके लिए 1-बाइट कीवर्ड है DEF FN(अनुगामी स्थान सहित), जबकि A71-बाइट कीवर्ड के लिए है PI। का उपयोग कर कॉल करें FN f()। उदाहरण कार्यक्रम:

  10 PRINT FN f(): DEF FN f()=PI

आउटपुट:

3.1415927

8

हास्केल , 3 बाइट्स

o=9

यह कोड एक पॉलीमॉर्फिक फ़ंक्शन को परिभाषित करता है जिसे oएक प्रकार का पैरामीटर और एक टाइपकास्ट उदाहरण पैरामीटर लेता है। जब इस फ़ंक्शन को कॉल किया जाता है, तो यह दिए गए टाइपकास्ट का उदाहरण लेता है, अपना fromIntegerसदस्य प्राप्त करता है, उस सदस्य को कॉल करता हैInteger 9 मूल्य के , और परिणाम देता है।

दी, जो मैंने अभी वर्णित किया वह हास्केल फ़ंक्शन का व्यवहार है 9, और मेरा कोड केवल एक फ़ंक्शन को परिभाषित करता है, oजो इसके बराबर है9

अब केवल सवाल है, है 9 फ़ंक्शन "आपके द्वारा बनाया गया" है या यह "भाषा से डिफ़ॉल्ट फ़ंक्शन" है?

मुझे लगता है कि यह "आपके द्वारा बनाया गया है।" यह कहने का मेरा कारण यह है कि यदि आप हास्केल के लिए विनिर्देश पढ़ते हैं, तो आप 9कहीं भी एक फ़ंक्शन का उल्लेख नहीं करेंगे । इसके बजाय, विनिर्देश बताता है कि आप एक या अधिक अंक एक साथ स्ट्रिंग करके एक संख्या शाब्दिक बना सकते हैं। इसलिए, मैंने अंकों का एक तार लिखकर, मैंने एक फ़ंक्शन लिखा है- भले ही मैं ऐसा केवल एक अंक का उपयोग करने के लिए हुआ हो।


चतुर, टाइप स्तर के कार्य
मेगा मैन

8

आर , 9 बाइट्स

body(t)=0

इसे ऑनलाइन आज़माएं!

मुझे लगता है कि यह नियमों का अनुपालन करता है। फ़ंक्शन tकोई इनपुट और आउटपुट नहीं लेता है 0। यह काम करता है क्योंकि पहले से ही एक फ़ंक्शन t(ट्रांसपोज़ेशन फ़ंक्शन) मौजूद है और यह फ़ंक्शन के शरीर को फिर से परिभाषित करता है; यह कहने के साथ काम नहीं करेगा body(a)=0(कोई वस्तु नहीं कहा जाता है a) या body(F)=0(F एक तार्किक है, फ़ंक्शन नहीं है)। मुझे लगता है कि यह अनुपालन करता है क्योंकि यह अभी भी मेरे द्वारा बनाया गया है: मैं पुन: उपयोग नहीं कर रहा हूं कि पूर्व-परिभाषित फ़ंक्शन क्या करता है, बस इसका नाम।

मुझे नहीं लगता कि मैंने कभी आर गोल्फर्स द्वारा इसका उपयोग किया है, लेकिन ऐसी परिस्थितियां हो सकती हैं जहां यह हमें चुनौतियों पर कुछ बाइट्स बचाने की अनुमति देता है जहां हमें एक सहायक फ़ंक्शन की आवश्यकता होती है।

एक अधिक मानक समाधान होता:

आर , 13 बाइट्स

f=function()0

इसे ऑनलाइन आज़माएं!

फंक्शन जो कोई इनपुट और आउटपुट नहीं लेता है 0। यह फ़ंक्शन से 1 बाइट छोटा है जो कोई इनपुट नहीं लेता है और कुछ भी नहीं आउटपुट करता है, जो कि होगा

f=function(){}

यदि हम किसी फ़ंक्शन को किसी निकाय ( f=function()) के साथ परिभाषित करने का प्रयास करते हैं , तो R इसे अपूर्ण कमांड के रूप में व्याख्या करता है (यह R के पुराने संस्करणों में सच नहीं हो सकता है)।

जैसा कि ओगनम द्वारा बताया गया है, हम इसे 11 बाइट्स के साथ नीचे ले जाते हैं

आर , 11 बाइट्स

function()0

इसे ऑनलाइन आज़माएं!

जो तकनीकी रूप से चुनौती की आवश्यकता का अनुपालन करता है कि फ़ंक्शन को किसी प्रकार के चर को सौंपा जाए, क्योंकि यह (पंचांग) को सौंपा गया है .Last.value


1
function()0फ़ंक्शन के नाम की आवश्यकता नहीं होने के बाद से आपके दूसरे उत्तर के लिए काम करना चाहिए। पर नीट ट्रिक body<-, मैंने प्रयोग करने की कोशिश की है bodyऔर भाषा के साथ खिलवाड़ करने के लिए कुछ अजीब तरह की चुनौतियाँ
Giuseppe

1
@Giuseppe "फ़ंक्शन को किसी प्रकार के चर को सौंपा जाना चाहिए", इसलिए मुझे नहीं लगता कि function()0इस चुनौती के नियमों का अनुपालन होता है। मुझे एक उत्तर देने में खुशी होगी, जो body()="चाल का सफलतापूर्वक उपयोग करता है ।
रॉबिन राइडर

4
function()0को सौंपा जाएगा, .Last.value()हालांकि वह इसे आगे
बढ़ाएगा

@OganM अच्छा बिंदु!
रॉबिन राइडर

pryr::f(x)अगर हम अनुमति देते हैं।
21


6

सी (जीसीसी) , 5 बाइट्स

एक फ़ंक्शन को परिभाषित करता है fजो कोई तर्क नहीं लेता है और तकनीकी रूप से एक अपरिभाषित पूर्णांक मान लौटाता है।

f(){}

इसे ऑनलाइन आज़माएं!


1
"कोई तर्क नहीं लेता है" - बुरी तरह से झूठ। यह सी के बारे में आम गलतफहमी में से एक है: खाली तर्क सूची का मतलब है कि उन्हें उपयोग करने के लिए पोर्टेबल तरीके के बिना अपरिभाषित प्रकार के तर्क की अपरिभाषित मात्रा। एक विचार के रूप में, यह भी C / C ++ असंगतता है।
वैल का कहना है कि मोनिका


6

[वुल्फराम भाषा (गणितज्ञ)], 1 बाइट

यह थोड़ा संदिग्ध है:

f

परिभाषित करता है f, जिसे "उदाहरण के लिए" कहा जा सकता है f[], जो अभिव्यक्ति को "वापस" करता हैf[]


1
अरे, यह कहा जा सकता है, और वापसी मूल्य वैकल्पिक है। यह मायने रखता है।
संयोजक जूल

1
यदि यह समाधान स्वीकार्य है, तो शून्य-बाइट उत्तर उतना ही अच्छा है: आपकी "परिभाषा" fकुछ भी नहीं करती है (याद रखने के अलावा "मैंने देखा है f") और छोड़ा जा सकता है। आप f[]फिर भी, बिना बुलाए वापस आ सकते हैं f[]। हालाँकि, किसी भी मामले में आप ज्यादातर पैटर्न-प्रतिकृति के साथ चालें खेल रहे हैं और किसी फ़ंक्शन का मूल्यांकन करने का निर्देश नहीं दे रहे हैं।
रोमन

@ रमन ने मुझे शून्य बाइट संस्करण जोड़ने पर विचार किया है, लेकिन अंत में मुझे ऐसा लगा कि यह और भी अधिक संदिग्ध है: यह वास्तव में प्रतीक बनाता है Global`f, जबकि खाली संस्करण ऐसा नहीं करता है (आप तर्क दे सकते हैं कि Nullइसे सौंपा गया है %1, लेकिन Nullहै एक अंतर्निहित "फ़ंक्शन")। लेकिन जैसा कि मैंने उत्तर में उल्लेख किया है, कि क्या एक बाइट समाधान वैध है, यह भी पूरी तरह से स्पष्ट नहीं है ...
लुकास लैंग


5

लुआ , 8 बाइट्स

f=load''

इसे ऑनलाइन आज़माएं!

(वैश्विक) फ़ंक्शन को परिभाषित करता है f

यह loadदिए गए स्ट्रिंग को संकलित करने के लिए Lua फ़ंक्शन का उपयोग करता है जो हमारे मामले में खाली होता है (खाली कोड मान्य कोड है) फ़ंक्शन में जो हमने उसके शरीर में लिखा था: कुछ भी नहीं।

सोच रहे लोगों के लिए, मानक समाधान होगा

function f()end

लेकिन यह लंबा (15 बाइट्स) है।


5

पोसिक्स श, 6 बाइट्स

s()(1)

घुंघराले ब्रेसिज़ का उपयोग करने के लिए एक और चरित्र की आवश्यकता होती है।


5

जावा, 10 बाइट्स

यह चुनौती के नियमों से मेल खाना चाहिए

void f(){}

1
मुझे पूरा यकीन f=a->a;है कि यह भी मान्य है। :)
केविन क्रूज़सेन

@ केविन क्रूज़सेन मैं कोई जावा विशेषज्ञ नहीं हूं और मैंने कभी भी जावा सरणी संकेतन का उपयोग नहीं किया। मैं आपके समाधान को कैसे संकलित कर सकता हूं? मैंने शुरू में इस TIO में अपने तरीके का "परीक्षण" किया और फिर वहां अपना दृष्टिकोण जोड़ा। अब, कंपाइलर एक पहचानकर्ता की अपेक्षा करता है। मेरे द्वारा कोई स्पष्टीकरण या गलत उपयोग?
Pixma140

2
यह एक जावा 8+ लंबदा फ़ंक्शन है। इसलिए इन दोनों में से कोई भी इस मामले में काम करेगा। यदि आप अभी तक उनसे परिचित नहीं हैं, तो यहां जावा 8+ लैम्ब्डा की अधिक गहराई से व्याख्या की गई है।
केविन क्रूज़सेन


4

कोटलिन , 8 बाइट्स

val f={}

एक चर f में संग्रहित एक खाली फ़ंक्शन।
इसका उपयोग करके कॉल करें f()या f.invoke()



4

सी (जीसीसी) , 14 13 बाइट्स

(*f)()=L"Ã";

इसे ऑनलाइन आज़माएं!

यह एक समारोह को परिभाषित करता है fलौटने intऔर मापदंडों के एक अनिर्दिष्ट संख्या (और प्रकार) को स्वीकार करने, जिनमें से मशीन कोड स्ट्रिंग शाब्दिक भीतर निहित है। यूनिकोड वर्ण Ã( 0xc3 0x00 0x00 0x00थोड़ा एंडियन मशीन पर मेमोरी में संग्रहीत ) x86 retनिर्देश से मेल खाता है जो फ़ंक्शन से लौटता है। गैर x86 आर्किटेक्चर को वापस लौटने के लिए अलग-अलग opcode (s) की आवश्यकता हो सकती है।

gcc-zexecstackसीगफॉल्ट से बचने के लिए ध्वज की आवश्यकता हो सकती है ।



3

Tcl , 6 5 11 बाइट्स

set f {_ ;}

इसे ऑनलाइन आज़माएं!

नियमों के अनुपालन के लिए बाईटेकाउंट के हिस्से के रूप में चर f को असाइनमेंट शामिल है। इस बदलाव के साथ, नीचे दी गई अधिक पारंपरिक परिभाषा बाईटेकाउंट के लिए ऊपर दी गई है:

proc f _ {}

क्या यह एक नामित कार्य है? फ़ंक्शन को किसी प्रकार के चर को सौंपा जाना चाहिए ताकि बाद के समय तक पहुंच संभव हो।
mbomb007

@ mbomb007 मैं आपकी बात देखता हूं, और उसी के अनुसार तय करता
हूं

3

XSLT, 134 बाइट्स

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:template name="a"></xsl:template></xsl:stylesheet>

एक टेम्पलेट एक निकटतम चीज़ है जो इस भाषा में एक फ़ंक्शन के लिए है। यह निश्चित रूप से कहा जा सकता है; यह शून्य तर्क लेता है और खाली स्ट्रिंग को "रिटर्न" करता है।




3

क्या तुम सिर्फ def f():0एक बाइट को बचाने के लिए नहीं कर सकते ?
एडीनरैड

@EdgyNerd Dat ने उस कोड के साथ मेरे सामने जवाब दिया, और मैं इसे कॉपी नहीं करना चाहता
U10- फॉरवर्ड

ओह ठीक है, फिर कभी मन नहीं करता
EdgyNerd


2

AppleScript, 10

on a()
end

समझाया, संकलित, और आह्वान सहित:

on a()    -- declare event handler "a"
end a     -- end declaration

-- invoke it:
a()


2

SmileBASIC (> = 3), 9 बाइट्स

DEF A
END

फ़ंक्शन द्वारा कहा जाता है A


वैकल्पिक रूप DEF A*ENDसे SB4 में
12M2121

2

वोल्फ्राम भाषा (गणितज्ञ) , 2 बाइट्स

#&

इसे ऑनलाइन आज़माएं!

दुर्भाग्य से, बस &काम नहीं करता है (एक अनाम फ़ंक्शन जो कुछ भी नहीं करता है)।


आपको नियमों के अनुसार फ़ंक्शन को एक चर में सहेजने की आवश्यकता है, जैसेf=#&
लुकास लैंग

@LukasLang यह स्वचालित रूप से सहेजा जाता है %1ताकि किसी चर जैसे स्पष्ट असाइनमेंट की कोई आवश्यकता न हो f
रोमन

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