क्या कोई भाषा विशेष रूप से ASCII कला में अच्छी हैं?


20

मैं सोच रहा था कि क्या कोई गूढ़ या गोल्फ भाषाएँ हैं जो विशेष रूप से पाठ आउटपुट और ASCII कला को लक्षित करती हैं?

उदाहरण के लिए, 05AB1E कम से कम आधार रूपांतरणों को लक्षित करके शुरू किया गया। क्या टेक्स्ट आउटपुट और टेक्स्ट आउटपुट आर्ट को लक्षित करने वाली कोई गोल्फिंग भाषाएँ हैं?

यदि हां, तो क्या उनके यहां टिप पेज हैं, और क्या वे आम उपयोग में हैं?

नोट: मैं उन भाषाओं की तलाश नहीं कर रहा हूँ जो ASCII कला का उत्पादन करने में सक्षम हैं , बल्कि वे जानबूझकर डिजाइन किए गए हैं जो अपेक्षाकृत कम और संक्षिप्त तरीके से चुनौतियों को पूरा करने में सक्षम हैं ।


1
जब से आपने इसका उल्लेख किया है, मेरे अनुभव में 05AB1E, एससीआई कला चुनौतियों में बहुत अच्छा है।
DJMcMayhem

1
मैं एक ASCII- कला भाषा देखना चाहता हूँ, जिसका नाम "ASC और II होगा।" (गंभीरता से, अगर कोई पहले से ही बाहर नहीं निकलता है, तो वहां काफी संभावनाएं हैं।)
हैक्टर

मैंने क्रेयॉन नामक एक भाषा डिज़ाइन की है जो विशेष रूप से ASCII कला बनाने के लिए बनाई गई है, लेकिन दुर्भाग्य से मेरे पास इसे लागू करने का समय नहीं है।
ETHproductions

@ ASCII- केवल और मैं एक ASCII- कला भाषा पर काम कर रहे हैं। यह अभी भी डिज़ाइन चरण में है, लेकिन हम आपके (या किसी के) इनपुट को पसंद करेंगे। यदि आप रुचि रखते हैं तो हमसे चैट में शामिल हों
DLosc

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

जवाबों:


15

खैर, तथ्य की बात के रूप में, वहाँ है! ऐसी ही एक भाषा है जिसे मैं कुछ समय से वी नाम से काम कर रहा हूं ।

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

भाषा पर कुछ इतिहास। जब मैंने कोड-गोल्फ के लिए विम टेक्स्ट एडिटर का उपयोग करना शुरू किया, तो मुझे पता चला कि यह वास्तव में बहुत अच्छा है, लेकिन इसमें कुछ कष्टप्रद विशेषताएं हैं जो इसे प्रतिस्पर्धा करना अधिक कठिन बनाते हैं। उदाहरण के लिए, आप किस प्रकार के "लूप" कर सकते हैं

qq<foobar>@qq@q

जो <foobar>एक त्रुटि होने तक दोहराएगा । इसमें बॉयलरप्लेट कोड के 7 बाइट्स हैं। V में, इसे छोटा किया जाता है ò<foobar>ò

कुछ चीजें जो एएससीआईआई-कला के लिए वी महान बनाती हैं:

  • यह स्वभाव से 2d है। एक विशेषता यह है कि एक "कर्सर" स्थिति है, जहां अधिकांश कमांड पाठ में कर्सर के आधार पर कुछ करते हैं। अन्य कमांड कर्सर के स्थान को स्थानांतरित करते हैं। उदाहरण के लिए, x एकल वर्ण को हटाता है, लेकिन Wx एक शब्द को आगे बढ़ाता है और फिर एक वर्ण को हटाता है। चूंकि अधिकांश अन्य भाषाएं जानबूझकर 2 आयामी नहीं हैं, यह एक अच्छी बढ़त प्रदान करता है जब चुनौती 2 डी अंतरिक्ष में पाठ की स्थिति के बारे में होती है

  • यह पूरी तरह से स्ट्रिंग आधारित है। आप कुछ मैथी संचालन का उपयोग कर सकते हैं, लेकिन ये आमतौर पर चीजों को प्राप्त करने का लंबा तरीका है।

  • यह टेक्स्ट को जल्दी से बदलने के लिए रेगेक्स कम्प्रेशन का उपयोग करता है ।

  • यह सब आंतरिक मेमोरी है, जो कि पात्रों का सिर्फ एक 2d सरणी है, जब कार्यक्रम समाप्त होता है तो इसे स्पष्ट रूप से मुद्रित किया जाता है। इसके अतिरिक्त, सभी इनपुट को आंतरिक रूप से आंतरिक मेमोरी में जोड़ दिया जाता है , जो अच्छा है जब अधिकांश चुनौती इनपुट को एक निश्चित तरीके से बदलने के बारे में होती है।

इसलिए मैं वास्तव में इस भाषा का उपयोग करने का आनंद लेता हूं , और यदि आप विशेष रूप से भाषा की तलाश कर रहे हैं, तो मैं इसकी अत्यधिक अनुशंसा करता हूं। हालाँकि , मैं कुछ अस्वीकरण भी दूंगा।

  • यह सीखने के लिए बहुत भ्रामक है। यह बहुत शक्तिशाली भी है, लेकिन क्योंकि यह बहुत लोकप्रिय टेक्स्ट एडिटर पर आधारित है जो 30 साल पुराना है, इसमें बहुत सारी अस्पष्ट विशेषताएं हैं जो नए उपयोगकर्ताओं को बहुत आसानी से भ्रमित कर सकती हैं।

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

  • यह अभी भी एक WIP है। कुछ कीड़े हैं, और कुछ चीजें जो मैंने अभी तक जोड़ने के लिए आस-पास नहीं की हैं।

  • इसके बहुत सारे उपयोगकर्ता नहीं हैं। (उपयोगकर्ताओं की वर्तमान संख्या: 1)।

यदि आप अधिक सीखने में रुचि रखते हैं, तो यहां कुछ अच्छे संसाधन हैं:

  • एक चैट रूम जहां मुझे आपके किसी भी प्रश्न का उत्तर देने में खुशी होगी, और यह समझाने में मदद करेगा कि यह आपके लिए कैसे काम करता है।

  • विम में गोल्फिंग के लिए एक टिप्स धागा , लेकिन अधिकांश युक्तियां ले जाती हैं।

  • कुछ अधिक विस्तार से वी का वर्णन करने वाली एक मेटा पोस्ट


8

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

वर्तमान में, कोई डॉक्स नहीं हैं, इसलिए आप संभवतः इसका उपयोग नहीं कर पाएंगे, जब तक आप मेरे दुभाषिया को पढ़ना नहीं चाहते हैं, जो कि शायद आप ऐसा कुछ नहीं करना चाहते हैं। मुझे लगता है कि दुभाषिया में कीड़े भी हो सकते हैं, लेकिन अगर यह बग है तो कहने के लिए कल्पना पर्याप्त विकसित नहीं है। Turtlèd संभवतः डॉक्स और सभी के साथ जल्द ही समाप्त हो जाएगा, हालांकि


3

05AB1E के लिए ASCII-Golfing का परिचय (आधार रूपांतरण [सरल])

जबकि 05AB1E सीधे ASCII- कला के लिए अभिप्रेत नहीं है, मैंने इसके साथ 2 चुनौतियां जीती हैं। 05AB1E के बारे में सबसे अच्छी बात यह है कि यहां तक ​​कि सरल आधार रूपांतरण के साथ अक्सर ऐसे ट्रिक्स होते हैं जिनका उपयोग आप अपने बाइट-काउंट को बढ़ाने और यहां तक ​​कि आधा करने के लिए कर सकते हैं। अक्सर ASCII चुनौतियों में पुनरावृत्ति के गुर होते हैं जिनका उपयोग आप केवल आधे पैटर्न को आकर्षित करने के लिए कर सकते हैं फिर फ्लिप और कॉनकनेट कर सकते हैं। यदि यह चार तरह का पैटर्न है, तो आप केवल पैटर्न के एक कोने को आकर्षित करने के लिए ज़िप और बाइफ़रसेट जैसी चीजें कर सकते हैं। इस सरल आधार संपीड़न विचार के साथ संयोजन के रूप में उपयोग करने के लिए बहुत सारे डेटा-संरचना हेरफेर तकनीक हैं।


यहां आधार रूपांतरण रणनीति पर त्वरित क्रैश-कोर्स है:

उदाहरण के लिए, 05AB1E में, मैं ASCII- कला में उपयोग किए जाने वाले सभी पात्रों की गणना करता हूं:

--===___===--

परिणाम होगा:

-
=
_

मैं फिर उन्हें 1 से 0 फिर 2 से शुरू होने वाली संख्याएँ प्रदान करता हूँ:

- is 1.
= is 0.
_ is 2.

मैं संख्याओं के साथ मूल स्ट्रिंग में वर्णों को प्रतिस्थापित करता हूं:

1122200022211

मैं सबसे कम संभव आधार (3) का उपयोग करके दशमलव में परिवर्तित करता हूं:

879412

( 05AB1E का उपयोग करके यह कैसे करें )

मैं फिर इसे 214 बेस में बदल देता हूं:

Jh]

( 05AB1E का उपयोग करके यह कैसे करें )

मैं फिर इसे निम्नलिखित कोड में लपेटता हूं:

05AB1E , 16 बाइट्स

•Jh]•3B…102…-_=‡

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

या इसे मध्यवर्ती चरणों के साथ प्रदर्शित करें।

फाइनल समझाया गया:

•Jh]•            # Push the compressed ASCII integer.
     3B          # Convert it to base 3.
       …102      # Push the keys to the conversion.
           …-_=  # Push the values to the conversion.
               ‡ # Transliterate, replace 0, 1 and 2 with the symbols.

अब, इस विशिष्ट चुनौती के साथ स्ट्रिंग इतनी कम है कि इसका कोई मतलब नहीं है। मैं शायद आधा स्ट्रिंग और 10 बाइट्स के लिए Palindromize "--===__"ûया गोल्फ को धक्का दे सकता हूं, जैसे अदनान ने भाज्य, स्मार्ट आदमी का उपयोग करते हुए टिप्पणी की •Jh]•3B5!…-=_‡। उन्होंने यह भी है (? में से एक) निर्माता (रों?) 05AB1E की।


अधिक जटिल उदाहरण:

/codegolf//a/106621/59376


इसके अलावा, शायद डेनिस की कोलमोगोरोव-जटिलता भाषा का प्रयास करें: बबलगम ; यह कैसे उपयोग करने के लिए कोई विचार नहीं है।


2
बबलगम वास्तव में एएससीआईआई-कला के लिए अच्छा लंग नहीं है, क्योंकि यह संभवतः इनपुट (दो उदाहरणों को छोड़कर ) नहीं ले सकता है , जो अधिकांश एएससीआईआई-कला चुनौतियों के लिए आवश्यक है। दालचीनी गम एक बेहतर विकल्प हो सकता है, हालांकि मुझे इसके बारे में ज्यादा जानकारी नहीं है और मेरी जानकारी में डॉक्स नहीं हैं
ETHproductions

1
वास्तव में महत्वपूर्ण नहीं है, लेकिन आप इसे नीचे कर सकते हैं:•Jh]•3B5!…-=_‡
अदनान

1
@ "--===__"û10 के लिए अदनान ;)।
मैजिक ऑक्टोपस Urn

2

तूलिका

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

कुछ उदाहरण GitHub रिपॉजिटरी में पाए जा सकते हैं।

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