गोल्फ के लिए भाषाओं का चयन [बंद]


28

गोल्फ के लिए सही भाषा चुनने के लिए कुछ सुझाव क्या हैं? भाषा को चुनने के लिए कौन से कारक प्रभावित करते हैं?

यहाँ कुछ उदाहरण समस्या के प्रकार हैं:

  • समस्याएँ जिन्हें I / O समाधान की आवश्यकता है , या तो कंसोल या फ़ाइल
  • समस्याएँ जिन्हें पार्स करने की आवश्यकता होती है
  • समस्याएँ जो आपको अपने समाधान को फ़ंक्शन परिभाषा के रूप में लिखने की आवश्यकता होती हैं
  • गणित की समस्याये
  • अभाज्य संख्याओं के साथ समस्या
  • संख्या पहेली हल करना
  • संख्यात्मक तरीके से प्रदर्शन करना
  • स्ट्रिंग प्रसंस्करण
  • अर्रे प्रसंस्करण
  • मुश्किल 2 डी सरणी समस्याओं
  • कम्प्यूटेशनल ज्यामिति
  • प्रत्यावर्तन
  • 2 डी ग्राफिक्स
  • 3 डी ग्राफिक्स
  • ऑडियो
  • नेटवर्किंग / वेब
  • समानांतर प्रसंस्करण

सीधे शब्दों में "गोल्फक्राफ्ट का उपयोग करें। जे" जैसी बातें न करें क्योंकि आप उन्हें पसंद करते हैं।


कुछ समस्याओं के लिए यह प्रकार प्रणाली है। उदाहरण के लिए, यदि आपको 64 बिट्स से अधिक के पूर्णांक से निपटने की आवश्यकता है, तो आप ऐसी भाषाएं चाहते हैं, जो उन भाषाओं के बजाय (जैसे कि गोल्फक्राफ्ट, हास्केल) में निर्मित हों, जो उन्हें महंगी बनाती हैं (जैसे जावा)।
पीटर टेलर

मैंने इसे "टिप्स" प्रकार के प्रश्नों पर हमारी नीति को ध्यान में रखते हुए बनाया है।
dmckee

यदि आपको किसी विशिष्ट अक्षर से शुरू होने वाली भाषा की आवश्यकता हो तो 99 बोतलें उपयोगी होती हैं ...
जेसी मिलिकन

इस धागे को बेहतर संसाधन बनाने में मदद करने के लिए कुडोस टू ऐस, ट्रिमस्टी, अल्गोरिदमशार्क और होशो 250। कृपया सबमिशन आते रहें! अल्गोरिदमशार्क और होशो 250 के बीच यह एक कठिन बाउंटी कॉल था, जिसे दोनों ने बहुत विस्तृत प्रयास किया, लेकिन अंत में हेरे शार्क को आगे बढ़ने का रास्ता मिल गया।
जोनाथन वान मैट्रे

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

जवाबों:


-1

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


2
मुख्य रूप से अजगर उपयोगकर्ता के रूप में, Py में आप चरित्र गणना में अपने आसानी के उपयोग के लिए भुगतान करते हैं, हालांकि कुछ वास्तव में हैक करने वाले ट्रिक्स हैं जो वर्णों को बचा सकते हैं। हास्केल और लिस्प, मस्ती करते हुए, पायथन की तुलना में अधिक समय तक चलते हैं।
गिरफ्तारी

यह संभवतः स्वीकृत उत्तर नहीं होना चाहिए। उच्च बनाम निम्न स्तर की भाषाओं के बारे में वर्णन का वास्तव में चरित्र गणना से कोई लेना-देना नहीं है।
सामी बेनचेरीफ़

हां, 23 फरवरी 2017 को संपादित किए गए एक प्रश्न का 2011 का उत्तर देना उचित है। शायद हमें जवाब देने के बाद प्रश्नों को बदलना बंद कर देना चाहिए?
ewanm89

10

विशेष रूप से सरणी प्रोग्रामिंग भाषाओं , जे और एपीएल पर मेरे दो सेंट लगाते हुए ।

के / कोना, क्यू और नियाल भी इस श्रेणी में आते हैं, लेकिन आम तौर पर उनके लाभ और आलोचनाएं समान हैं। विवेक का उपयोग करें। मैं नीचे J उदाहरणों का उपयोग करूंगा, ज्यादातर क्योंकि ये ASCII हैं और इस प्रकार लिखना आसान है - एपीएल वर्णों की तुलना में सिंगल बाइट्स के रूप में याद रखें, ताकि गोल्फ के लिए पसंद के रूप में भाषा के साथ आपकी समस्या न हो।

  • गणित की समस्याये
  • संख्या पहेली हल करना
  • संख्यात्मक तरीके से प्रदर्शन करना
  • मुश्किल 2 डी सरणी समस्याओं

ये दो बहुत अच्छी गणित और डेटा-हेरफेर भाषाएं हैं, क्योंकि वे उच्च स्तर के आसपास सरणियों को टॉस करते हैं, और बहुत सारे लूपिंग निहित रूप से किए जाते हैं , कहकर, उदाहरण के लिए 3, 4 और 5 ( 10 + 3 4 5) में से प्रत्येक में दस जोड़ते हैं या प्रत्येक को जोड़ते हैं। एक सरणी की पंक्ति ( +/"1 arr- लूपिंग में है "1)।

  • अभाज्य संख्याओं के साथ समस्या

विशेष रूप से प्राइम नंबर की समस्याओं के साथ, जे में तेज और शॉर्ट बिलिन प्राइमेटिव हैं, जैसा कि एपीएल की कुछ बोलियां हैं। (संपादित करें: मैं Nars2000 के बारे में सोच रहा हूं, जो कि भाग बोली है और पूरी तरह से अलग कार्यान्वयन है। एपीएल के पास अपराधों के लिए कोई बिल्ड नहीं है।) एन-वें प्राइम ( p:), नहीं। ( _1&p:,), फैक्टरिंग ( q:), जीसीडी और एलसीएम ( +.और *.), और इतने पर, वहाँ बहुत कुछ है। हालांकि, व्यवहार में, सवाल अक्सर निर्दिष्ट करेगा कि आपको अपने स्वयं के प्रधान कार्यान्वयन को पकाना होगा, इसलिए ये बहुत अधिक उपयोग नहीं करते हैं। अभी भी आप की जरूरत है प्रधानमंत्री सामान प्राप्त करने के स्वच्छ और फैंसी तरीके हैं, यह सिर्फ एक छोटे से कट-एंड-पेस्ट बन जाता है।

  • स्ट्रिंग प्रसंस्करण
  • अर्रे प्रसंस्करण

ऐरे और स्ट्रिंग प्रसंस्करण एक मिश्रित बैग का एक सा है: अगर यह ऐसा कुछ है जो एपीएल / जे में अच्छा है या इसके लिए एक आदिम या सामान्य मुहावरा है, तो यह लगभग तुच्छ है; अगर यह कुछ ऐसा है जो बहुत अनुक्रमिक है और बहुत समानांतर नहीं है, तो आपके पास एक बुरा समय होने वाला है। बीच में कुछ भी हवा में है, हालांकि आमतौर पर वे अनुकूल प्रतिक्रिया देंगे।

  • समस्याएँ जिन्हें I / O समाधान की आवश्यकता है, या तो कंसोल या फ़ाइल
  • समस्याएँ जो आपको अपने समाधान को फ़ंक्शन परिभाषा के रूप में लिखने की आवश्यकता होती हैं

IO अजीब है। APL में एकल-वर्ण इनपुट अभिव्यक्ति है, लेकिन J के साथ आपको एक संख्या में पढ़ने के लिए कम से कम 8 खर्च करना होगा ".1!:1]1:। आउटपुट थोड़ी कम क्रिया है, लेकिन आप अभी भी व्यवहार में 6 या 7 अक्षरों को बर्बाद कर रहे हैं। J विशेष रूप से वास्तव में इसे बहुत पसंद करता है यदि आप इनपुट में किसी फ़ंक्शन के लिए तर्क के रूप में ले सकते हैं, बजाय स्वयं OO के साथ घूमने के लिए।

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

लेकिन जे के साथ, स्पष्ट रूप से कार्यों को परिभाषित करने के लिए एक ओवरहेड का एक सा हिस्सा है - 3 :'...'और आपको अंदर किसी भी तार से बचना होगा - इसलिए आमतौर पर जो कुछ किया जाता है उसे टैसिट प्रोग्रामिंग कहा जाता है: आप फ़ंक्शन स्तर पर प्रोग्राम करते हैं, एक तरह से प्राइमेटिव्स का संयोजन करते हैं। हास्केल के विपरीत नहीं। यह एक आशीर्वाद और अभिशाप दोनों हो सकता है, क्योंकि आपको अपने तर्कों का हवाला देते हुए अधिक से अधिक पात्रों को खर्च करने की आवश्यकता नहीं है, लेकिन यह कोष्ठक में डूबना और दसियों वर्णों को खोना आसान है, जो आपके अन्यथा छोटे और चतुर समाधान को हैक करने की कोशिश कर रहे हैं कुछ ऐसा है जो काम करता है।

  • समस्याएँ जिन्हें पार्सिंग की आवश्यकता होती है
  • कम्प्यूटेशनल ज्यामिति

मेरे पास इन विशिष्ट समस्याओं को गोल्फ के साथ अनुभव नहीं है, लेकिन मैं यह कहूंगा: अंत में, सरणी प्रोग्रामिंग भाषाएं बहुत सारे डेटा को उसी तरह से पाइप करने और बदलने में बहुत अच्छी हैं। यदि आप समस्या को संख्या फेरबदल में एक अभ्यास में बदल सकते हैं, तो आप इसे एपीएल / जे समस्या बना सकते हैं, कोई पसीना नहीं।

कहा कि, सब कुछ एक एपीएल / जे समस्या नहीं है। गोल्फस्क्रिप्ट के विपरीत, एपीएल और जे सिर्फ गोल्फ के लिए अच्छा हुआ, उनके अन्य लाभों के साथ;)


उत्कृष्ट योगदान! पूल में पहला होने के लिए धन्यवाद।
जोनाथन वान मैटर

4

पर्ल की अभी तक प्रशंसा क्यों नहीं की गई है? यह एक उत्कृष्ट गोल्फ भाषा है, इनमें से लगभग हर एक के लिए, विशेष रूप से स्ट्रिंग से संबंधित सामान (रेगेक्स)।

संख्या-संबंधित कार्यक्रमों के लिए बर्लेस्क अच्छा है, जबकि रूबी सरल पाठ हेरफेर के लिए महान है।

यहाँ वास्तव में भाषाओं और गोल्फ स्कोर की एक सूची है


मैं पर्ल के बारे में नहीं जानता, लेकिन मैं सहमत हूं।
ckjbgames

2

मुझे काम करने के लिए अस्पष्ट प्रोग्रामिंग भाषाओं का उपयोग करना (कोशिश करना) पसंद है।

आपके द्वारा सूचीबद्ध विवरण के लिए यहाँ मेरा पसंदीदा है:

समस्याएँ जिन्हें I / O समाधान की आवश्यकता है, या तो कंसोल या फ़ाइल

की तरह बोली TI-बेसिक काम अच्छी तरह से, लेकिन मैं पसंद करते हैं रूबी की वजह सेputs

समस्याएँ जिन्हें पार्सिंग की आवश्यकता होती है

GolfScript यहाँ निश्चित रूप से आपकी सहायता करेगा

समस्याएँ जो आपको अपने समाधान को फ़ंक्शन परिभाषा के रूप में लिखने की आवश्यकता होती हैं

TI-84 तालिका - Y=जैसे Y=|X|एक्स के निरपेक्ष मान को लौटाता है

गणित की समस्याये

टीआई-बेसिक - एक कैलकुलेटर के लिए बनाया गया है, इसलिए इसमें गणित शामिल है;)

अभाज्य संख्याओं के साथ समस्या

कुछ खास नहीं; गणितज्ञ शायद नौकरी के लिए सही उपकरण है

संख्या पहेली हल करना

TI-Basic के रूप में यह स्वचालित रूप से सरणियों के माध्यम से loops

संख्यात्मक तरीके से प्रदर्शन करना

टीआई-बेसिक या गणितज्ञ

स्ट्रिंग प्रसंस्करण

अजगर - कुछ महान स्ट्रिंग कार्य हैं।

कोई फर्क नहीं पड़ता कि आपको लगता है कि टीआई-बेसिक कितना अच्छा है, इसे स्ट्रिंग्स के लिए उपयोग न करें ...

अर्रे प्रसंस्करण

टीआई-बेसिक - स्वचालित रूप से सरणियों के माध्यम से छोरों ; सरणी में सभी मान बढ़ाएँ -L1+1→L1

रूबी - में बहुत शक्तिशाली सरणी विशेषताएं हैं, और निश्चित रूप से !कोड को भी संपीड़ित करने में मदद करेगा

मुश्किल 2 डी सरणी समस्याओं

रूबी या पायथन यहां सबसे अच्छा काम करता है, क्योंकि TI-Basic 2D सरणियों का समर्थन नहीं करता है

कम्प्यूटेशनल ज्यामिति

TI-Basic में ज्यामितीय विशेषताएं हैं और इसका उपयोग अधिकांश गणित के लिए कलन और रैखिक बीजगणित तक किया जा सकता है


बोनस

लूपिंग

या तो Arduino या QuomplexArduino में एक अंतर्निर्मित है void loop(){}और Quomplex में कोष्ठक द्वारा निहित अनंत लूप हैं ( [])

ड्राइंग / जीयूआई

गेम मेकर लैंग्वेज में बहुत शक्तिशाली ड्राइंग फीचर्स होते हैं, औरग्राफ पर ड्राइंग के समर्थन के कारण TI-Basic भी एक आम तौर पर उपयोगी उपकरण है।

Quines

या तो HQ9 + या Quomplex क्योंकि HQ9 + को Qप्रोग्राम के सोर्स कोड को आउटपुट करना है और Quomplex अपने आप अपने सोर्स कोड को तब तक प्रिंट करेगा जब तक *(आउटपुट) निर्दिष्ट नहीं होता है या यह कोई आउटपुट नहीं देता है, जिसके साथ परिभाषित किया गया है#


2

यदि आप एक गणित की समस्या हल कर रहे हैं और आपके पास गणित नहीं है, तो ऋषि का प्रयास करें । यह पायथन पर आधारित है, इसलिए यदि आप पहले से ही अजगर को जानते हैं तो आपको इसके सिंटैक्स को सीखने के लिए ज्यादा समय की आवश्यकता नहीं है।

उदाहरण:

यह ग्राफ प्लॉटिंग और समीकरण हल करने के लिए भी उपयोगी है (जैसे आप solve()ऋषि में फ़ंक्शन का उपयोग कर सकते हैं , या यदि वह नियमों द्वारा निषिद्ध है, तो यह न्यूटन रैपसन प्रक्रिया के एक आसान कार्यान्वयन की अनुमति देता है क्योंकि इसमें diff()फ़ंक्शन है जो प्रतीकात्मक भेदभाव कर सकता है) ।

इसके अलावा, यदि आप Python2 प्रोग्रामर हैं, तो ऋषि का उपयोग करके आपको लंबे importबयानों को छोड़ कर धोखा देने की अनुमति मिल सकती है । उदाहरण के लिए, mathऔर sysपहले से ही डिफ़ॉल्ट रूप से आयात किया गया है। (ध्यान दें कि यह काम नहीं कर सकता है यदि आपका Python2 प्रोग्राम पूर्णांक विभाजन पर निर्भर करता है।)


अच्छी जानकारी! योगदान के लिए धन्यवाद।
जोनाथन वान माट्रे

1

मैं तीन भाषाएं जानता हूं - जावा, सी ++ और पायथन 3. मैं उच्च स्तर पर इनमें से किसी को भी नहीं जानता, लेकिन यह उनके साथ मेरा अनुभव है।

जावा:

मैं फिर से गोल्फ के लिए जावा का उपयोग कभी नहीं करूंगा। सिर्फ लिखने में 80 से अधिक अक्षर लगते हैं Hello World!। हालांकि, इसकी ताकत है:

इनपुट के लिए किसी Scannerवस्तु के निर्माण की आवश्यकता होती है । किसी एक वर्ण को इनपुट करना मुश्किल है। आपको किस प्रकार के इनपुट की आवश्यकता है, इसके विनिर्देशन की आवश्यकता है। लूप
की वजह से पार्सिंग काफी सरल है for। बढ़ाया forलूप इसके लिए उत्कृष्ट है।
जावा विधियों का समर्थन करता है, लेकिन विधि घोषणा काफी लंबी है।
जावा गणित में उत्कृष्ट है, साथ ही साथ अन्य सभी उच्च-स्तरीय भाषाएं।
जावा का उपयोग करना मुश्किल है जब समस्या में स्ट्रिंग्स को संशोधित करना शामिल है। आप किसी मौजूदा स्ट्रिंग में संशोधन नहीं कर सकते।
जावा के सरणियों का उपयोग करना सरल है।
जावा पुनरावृत्ति में अच्छा है।
जावा में अंतर्निहित ग्राफिक्स शामिल हैं। वे उपयोग करने के लिए बहुत आसान हैं।

सी ++

C ++ एक बहुत ही मजबूत भाषा है, लेकिन 56 अक्षरों पर गोल्फ के लिए प्रयास करते समय यह कुछ हद तक लंबा है Hello world!

इनपुट और आउटपुट आसान है। आपको यह निर्दिष्ट करने की आवश्यकता नहीं है कि आप किस प्रकार के इनपुट कर रहे हैं - जो स्वचालित रूप से किया जाता है। हालाँकि, आपको iostream लाइब्रेरी शामिल करनी चाहिए।
पार्स करना बहुत आसान है।
समारोह की घोषणा सरल है, लेकिन बहुत सारे महत्वपूर्ण पात्रों को खाती है। गणित में C ++ एक्सेल है, लेकिन इसमें PI या E शामिल नहीं है, जैसा कि Java करता है।
C ++ के स्ट्रिंग्स का उपयोग करना आसान है और आवश्यकतानुसार बदलना है।
मैं vectorएस के बजाय जहां संभव हो का उपयोग करता हूं array, लेकिन दोनों का उपयोग करना आसान है।
C ++ रिक्रिएशन में अच्छा है।
C ++ में अंतर्निहित ग्राफिक्स शामिल नहीं हैं।

अजगर ३

Python 3 C ++ और Java के समान है। यह बहुत छोटा है क्योंकि यह दृढ़ता से टाइप नहीं किया गया है - दूसरे शब्दों में, यह केवल अनुमान लगाता है कि चर क्या हैं।

इनपुट आसान है, लेकिन स्ट्रिंग्स के रूप में सब कुछ इनपुट है। आपको जो भी मान चाहिए वह सभी इनपुट को मैन्युअल रूप से परिवर्तित करना होगा।
पार्सिंग और लूपिंग बहुत सरल है।
पायथन फ़ंक्शन की घोषणाएं काफी सरल और संक्षिप्त हैं।
गणित में पायथन अच्छा है।
पायथन के तार उपयोग करने में सरल हैं।
Arrays उपयोग करने के लिए सरल हैं।
पायथन पुनरावृत्ति में अच्छा है।
पायथन में अंतर्निहित ग्राफिक्स शामिल नहीं हैं।


मुझे लगता है कि एन्हांस्ड लूप के लिए, आप रेंज-लूप के बारे में बात कर रहे हैं। C ++ 11 ( en.cppreference.com/w/cpp/language/range-for ) के बाद से C ++ इसका समर्थन करता है । यह सिंटैक्टिक रूप से जावा फॉर-रेंज लूप के समान है और इसमें दिए गए ऑब्जेक्ट के लिए अतिरंजित ऑब्जेक्ट की क्लास को स्टार्ट () और एंड () या स्टार्ट (टी) और एंड (टी) को लागू करने की आवश्यकता होती है। यह सी-स्टाइल स्ट्रिंग्स और अंतर्निहित सरणियों और सभी मानक पुस्तकालय कंटेनरों के लिए काम करता है।
फोबार

@foobar हाँ, मैं उस बारे में बात कर रहा था। जानकारी के लिए धन्यवाद, मैंने उस समय से कामना की है जब से मैंने जावा लिया है।
होशो

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