ASCII हवाई जहाज बैनर


11

दो आदानों को देखते हुए - उनमें से एक एक गैर खाली प्रिंट योग्य ASCII स्ट्रिंग (अंतरिक्ष सहित, न्यू लाइन को छोड़कर), दो अलग-अलग, अपनी पसंद (के अनुरूप मूल्यों के अन्य किया जा रहा है एक 1 / 0, l / r, left / right, आदि) - उत्पादन एक ASCII कला हवाई जहाज स्ट्रिंग का बैनर, या तो बाएँ या दाएँ इंगित करता है। संगति के लिए, मैं उपयोग कर रहा हूँ leftऔर rightइस चुनौती विवरण में।

विमान या तो |-DI>-/( left) या \-<ID-|( right) है। चूंकि बैनर स्पष्ट है, इसमें इनपुट स्ट्रिंग के अक्षर रिक्त स्थान से अलग होते हैं, या तो बाएं से दाएं ( left) या दाएं से बाएं ( right), और आकृति के एक बॉक्स से घिरा होता है

    /--/
---<  <
    \--\

या

\--\
 >  >---
/--/

नोट संदेश के आरंभ / अंत और के बीच एक जगह नहीं होना चाहिए >, <अक्षर।

उदाहरण के लिए, यहां संदेश HAPPY BIRTHDAY!और दिशा है left:

           /-------------------------------/
|-DI>-/---< H A P P Y   B I R T H D A Y ! <
           \-------------------------------\

यहाँ संदेश PPCGऔर दिशा है right। ध्यान दें कि बैनर के इस तरफ से देखे जाने पर अक्षर "पीछे की ओर" दिखाई देते हैं:

\---------\
 > G C P P >---\-<ID-|
/---------/

नियम

  • लीडिंग या अनुगामी newlines या व्हाट्सएप सभी वैकल्पिक हैं, जब तक कि वर्ण खुद को सही ढंग से पंक्तिबद्ध करते हैं।
  • या तो एक पूर्ण कार्यक्रम या एक समारोह स्वीकार्य हैं। यदि कोई फ़ंक्शन है, तो आप इसे प्रिंट करने के बजाय आउटपुट वापस कर सकते हैं।
  • यदि संभव हो, तो कृपया ऑनलाइन परीक्षण वातावरण का लिंक शामिल करें ताकि अन्य लोग आपके कोड को आज़मा सकें!
  • मानक खामियों को मना किया जाता है।
  • यह इसलिए सभी सामान्य गोल्फिंग नियम लागू होते हैं, और सबसे छोटा कोड (बाइट्स में) जीतता है।


2
जावास्क्रिप्ट, 4 बाइट्स: eval- एक प्रोग्राम इनपुट करें जो बाएं के लिए एक बाएं-सामने वाले प्लेन को उत्पन्न करता है, और एक प्रोग्राम जो दाएं के लिए राइट-फेसिंग प्लेन बनाता है।
darrylyeo

जवाबों:


6

जावास्क्रिप्ट (ईएस 6), 141 138 बाइट्स

स्ट्रिंग और डायरेक्शन क्युरिंग सिंटैक्स के माध्यम से इनपुट होते हैं।
'/\n|-DI>-/---< 'बाएं के लिए, '/\n|-DI<-\\---> 'दाएं के लिए।

t=>p=>(r=`${s='           '}/${_='-'.repeat(t.length*2+1)}${p}${[...t].join` `} ${d=p[12]} 
${s}\\${_}\\`,d>'<'?[...r].reverse().join``:r)


हा, उत्पादन के एक हिस्से को हार्ड कोडिंग करना एक खामियों के शोषण की तरह लगता है, लेकिन यह लिखित रूप में चुनौती के आधार पर ठीक लगता है। चतुर!
रिक हिचकॉक

4
@RickHitchcock अंतिम खामी है eval... बस अपनी पसंद के दो मूल्यों के रूप में बाएं और दाएं फ़ंक्शन स्रोत प्रदान करें। (मुझे लगा कि इस पर एक मेटा था, लेकिन मैं इसे नहीं ढूंढ सकता।)
नील

1
@Neil eval"ट्रिक" यह लूपहोल आत्मा में होगा, भले ही स्पष्ट रूप से न कहा गया हो। हालांकि यह उत्तर थोड़े चतुर है, हालांकि।
AdmBorkBork

हाँ, मैं बहस कर रहा था कि क्या evalएक गंभीर उत्तर के रूप में पोस्ट किया जाए । भविष्य की चुनौतियों के लिए इस तरह का एक समाधान बाइट काउंट के हिस्से के रूप में इनपुट शामिल करना हो सकता है।
darrylyeo

4

पर्ल 5 , 149 +1 (-पी) = 150 बाइट्स

$d=<>;chomp;$_=($q=$"x11 .'/'.'-'x(1+2*length)."/\n").'|-DI>-/---< '.s/./$& /gr."<\n".$q=~y|\\/|/\\|r;if($d){y|<>|><|;$_=reverse;s/>/ >/;s|-/-|-\\-|}

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

दो लाइन इनपुट। पहले संदेश है। दूसरा बाएं के लिए 0, दाएं के लिए 1 है।


4

वी , 73 , 65 बाइट्स

Ó./& 
É ÄÒ-ys$/YGpr\$.11>Hj|R|-DI>-/³-<A< ÀñkæG|æ}-r>$BR>³-\-<

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

सबसे बड़ा स्कोर नहीं, लेकिन ऐसा इसलिए है क्योंकि इसका लगभग आधा हिस्सा आउटपुट को उलटने से आता है।

Hexdump:

00000000: d32e 2f26 200a c920 c4d2 2d79 7324 2f59  ../& .. ..-ys$/Y
00000010: 4770 725c 242e 3131 3e48 6a7c 527c 2d44  Gpr\$.11>Hj|R|-D
00000020: 493e 2d2f b32d 3c1b 413c 201b c0f1 6be6  I>-/.-<.A< ...k.
00000030: 477c e616 7d2d 723e 2442 523e b32d 5c2d  G|..}-r>$BR>.-\-
00000040: 3c                                       <

बफर के इनपुट के रूप में स्ट्रिंग लेता है, और कमांड लाइन के तर्क के रूप में 0बाईं और 1दाईं ओर के रूप में दिशा ।


4

05AB1E , 63 बाइट्स

„\\S'-¹g·>×ýD∞2äθ‚11ú"|-DI>-/---<"¸¹ε²i∞θ}J'<«S«ð«J¸«Àε²i∞2äθ}»

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

भविष्य में तय हो सकने वाले बग के आधार पर।


@MagicOctopusUrn संभवतः
आउटगॉल्फ

@MagicOctopusUrn वास्तव में नहीं, यह उस तरह से काम नहीं करेगा ...
एरिक द आउटग्राफर

@MagicOctopusUrn 0दूसरी पंक्ति को a पर बदलने का प्रयास करें 1
आउटगॉल्फ

आह, अग्रणी स्थान ...
मैजिक ऑक्टोपस Urn

4

चारकोल , 44 40 39 35 बाइट्स

|-DI>-/³↗<→/-LηLη↙¹←< ¿N↷⁴‖T⮌⪫η ‖B↓

इसे ऑनलाइन आज़माएं! लिंक कोड के वर्बोज़ संस्करण के लिए है। पहला इनपुट दाएं के लिए 1 और बाएं के लिए 0 है, दूसरा बैनर स्ट्रिंग है। संपादित करें: वर्तमान में कर्सर स्थिति बग के रूप में उपयोग करके सहेजे गए 1 बाइट , लेकिन मैंने प्रिंट दिशा को उलट कर एक और 4 बाइट्स बचाए हैं, और अब यह कोई फर्क नहीं पड़ता कि मैं किसका उपयोग करता हूं। 38 34 32 बाइट संस्करण यदि बैनर को मिरर करने की अनुमति थी:ReflectButterfly(:Up) ReflectButterfly(:Down)

|-DI>-/³P⪫⪫<<η ↘→\-LηLη↖¹‖B↑¿N‖T

इसे ऑनलाइन आज़माएं! लिंक कोड के वर्बोज़ संस्करण के लिए है। पहला इनपुट दाएं के लिए 0 और बाएं के लिए 1 है। स्पष्टीकरण:

|-DI>-/

प्लेन को प्रिंट करें।

³↗<→/-LηLη↙¹←< 

बॉक्स के शीर्ष आधे भाग को प्रिंट करें (नोट पीछे की जगह)।

¿N↷⁴‖T

यदि दूसरा इनपुट नॉनजरो है, तो प्रिंट दिशा को उलट दें, अन्यथा विमान और बॉक्स को प्रतिबिंबित करें।

⮌⪫η 

संदेश को अतिरिक्त रिक्ति के साथ प्रिंट करें (नोट पीछे की जगह)। कर्सर विमान से बॉक्स के सबसे अंत में होता है इसलिए संदेश को उल्टा करने की आवश्यकता होती है।

‖B↓

बॉक्स के निचले आधे हिस्से को प्राप्त करने के लिए प्रतिबिंबित करें।


वर्बोज़ संस्करण में समस्याएँ हैं।
आउटगॉल्फ

@EriktheOutgolfer Deverbosifier हाल ही में टूट गया था; TIO अभी तक तय नहीं है।
नील

2

जेली , 68 65 बाइट्स

“/\<“\/>”y
³K“|-DI>-/---< “ < ”j
LḤ‘”-x⁾//jṭ⁶x11¤Fµ,Ñj¢œs3U⁴¡YÑ⁴¡

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

दाएं के लिए 1, बाएं के लिए 0 लेता है।

-3 बाइट्स थैंक्स टू @ जोनाथनअल्लन ( जीआरआर मैं हमेशा भूल जाता हूं AB+वही करता है B+@A)


³K“|-DI>-/---< “ < ”jएक बाइट बचाता है; LḤ‘”-x⁾//jṭ⁶x11¤Fµ,Ñj¢œs3U⁴¡YÑ⁴¡एक ही फैशन में एक और 2 बचाता है।
जोनाथन एलन

1

चारकोल , 56 बाइट्स

-8 बाइट्स पूरी तरह से अमानवीय और एरिक आउटगोलर के लिए धन्यवाद !

≔⪫S θ≔⁺Lθ²η× ¹¹/η/⸿|-DI>-/³<× η<‖B↓FN«‖TM⁺η³→≔⮌θθ»↑↑Mη←θ

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

बताए गए मामलों को ठीक करते हुए द्विमाया ने बाइट काउंट पर काफी टोल लिया। 36 बाइट्स अगर हम पात्रों की तरह रिवर्स करने की अनुमति दी जाती है <और /


1
अजगर में, ' '.join(s)काम करता है। निश्चित रूप से कि चारकोल में इस्तेमाल किया जा सकता है?
totallyhuman

1
@totallyhuman Joinतार पर भी काम करता है।
आउटगोल्फर

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

@EriktheOutgolfer ओह, मैंने ' '.joinचारकोल में पायथन के कॉल के रूप में @ पूरी तरह से अमानवीय सुझाव का गलत अर्थ निकाला । मैं आप दोनों को इसका श्रेय दूंगा।
18

आपने एस्ट्रो प्रोसेसर तोड़ दिया है ...
नील


1

पायथन 2 , 137 136 133 बाइट्स

lambda s,d:'{0}/{1}-/\n|-DI{3}-{4}---{5} {2} {5} \n{0}\\-{1}\\'.format(' '*11,'--'*len(s),' '.join(s),*list('></\\<>')[d::2])[::-d|1]

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

1दाएं और 0बाएं के लिए


135 बाइट्स (-1 बाइट) के1-2*d साथ बदलकर -d|1(नकारात्मक dएक्सोर 1)।
श्री Xcoder

टाइपो, यह एक्सओआर नहीं है, यह बिटवाइज़ है या वास्तव में।
श्री Xcoder

1
134 बाइट्स एक छोटे चाल के साथ:*list('></\\<>')[d::2]
jferard

1

PHP, 175 बाइट्स

[,$d,$s]=$argv;$f=str_repeat("--",strlen($s));$r="\-$f\           
 ".join(" ",str_split("><"[$d].$s)).($d?" <---/->":" >---\-<")."ID-|
/-$f/           ";echo$d?strrev($r):$r;

-nrपहले तर्क के साथ , 0दाईं ओर या 1बाईं ओर और दूसरा तर्क = पाठ के लिए
या इसे ऑनलाइन आज़माएं



1

Corea , 51 बाइट्स

"u *:>ip.j:l)X-'/S:>"
|-DI>-/---< V< 
"h}>>`tHL`idF

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

व्याख्या

कार्यक्रम कुछ हिस्सों से बना है:

1: प्रारंभ

"u *:>ip.j:l)X-'/S:>"
"..................."   execute the inside as code
 u                      repeat
   *                    a space, 11 times
    :                   duplicate this string
     >                  write this string to the content field
      i                 take a line of input
       p                push a space
        .j              insert that space after every character
          :l)           get (length(str) + 1)
             X-         repeat a hyphen that many times
               '/       push the "/" character
                 S      surround that string with the above character
                  :>    duplicate and write that string to the content field

2: कच्चा पाठ

निम्न पाठ सामग्री फ़ील्ड में आउटपुट किया गया है:


|-DI>-/---< V<

3: पोस्टमबल

"h}>>`tHL`idF
"               execute until the end of the file
 h              mirror the previous string horizontally
  }             move the modified input string to the front of the stack
   >>           write the top two strings to the content field
     `   `id    do the inside `i`nput times
      tH        reflect the content field horizontally and vertically
        L       reverse the input string
            F   save the input string in a field (default: V)
                this replaces all Vs in the code with the input string

0

एक्सेल VBA, 198 बाइट्स

बेनामी VBE तत्काल विंडो फ़ंक्शन जो इनपुट को स्ट्रिंग से [A1]और int से रेंज में ले जाता है [B1]जहां 1इंगित करता है कि विमान बाईं तरफ है और 0इंगित करता है कि विमान दाईं ओर है।

b=[B1]:a=StrConv(IIf(b,[A1],StrReverse([A1])),64):j=[Rept("-",2*Len(A1)+1)]:k="/"&j &"/":l="\"&j &"\":s=Space(11):?IIf(b,s &k,l):?IIf(b,"|-DI>-/---< "," > ")a;IIf(b,"<",">---\-<ID-|"):?IIf(b,s &l,k)

0

Google शीट, 210 बाइट्स

बेनामी वर्कशीट फ़ंक्शन जो इनपुट इनपुट को [A1] से स्ट्रिंग के रूप में लेता है और रेंज [B1] से इंट करता है, जहां 1 इंगित करता है कि विमान बाईं ओर है और 0 इंगित करता है कि विमान दाईं ओर है।

=If(B1,"           /","\")&Rept("-",2*Len(A1)+1)&If(B1,"/
","\
")&If(B1,"|-DI>-/---< "," > ")&RegexReplace(A1,"(.)","$1 ")&If(B1,"<
",">---\-<ID-|
")&If(B1,"           \","/")&Rept("-",2*Len(A1)+1)&If(B1,"\","/
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.