ASCII कला कोड जनरेटर


9

मेरे पास एक प्रोग्राम है जो स्वरूपित ब्रेनफ़क कोड उत्पन्न करता है। मैं अपना कार्यक्रम चलाता हूं

./example "S"

और आउटपुट है

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

जो ब्रेनफक में एस प्रिंट करता है।

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

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

अन्यथा,

कृपया अपनी सबमिशन को उस भाषा के साथ शीर्षक दें, जिसमें यह लिखा है, जिस भाषा में यह आउटपुट है, और बाइट्स में कुल आकार। जब आप स्ट्रिंग UNCOPYRIGHTABLE दर्ज करते हैं, तो कृपया अपने कार्यक्रम का आउटपुट शामिल करें।

धन्यवाद!


1
क्या प्रोग्राम को सभी मुद्रण योग्य ASCII वर्ण या सिर्फ अपरकेस अक्षर संभालना है? सफेद स्थान के बारे में क्या?
r3mainer

@squeamishossifrage सिर्फ बड़े अक्षर। व्हॉट्सएप बेहतर है, लेकिन मुझे एहसास है कि स्ट्रिंग "" का प्रतिनिधित्व करना असंभव हो सकता है, इसलिए इसका वैकल्पिक।
ओर्बी

जवाबों:


3

सी -> ब्रेनफक 556 बाइट्स

अनावश्यक व्हाट्सएप को छोड़कर। मैं आसानी d[]से quotmarks में हेक्स से एक स्ट्रिंग में फ़ॉन्ट डेटा को बदलकर एक और सौ बचा सकता था ।

i,j,s,t,u,v,w,h;
char a[99],b[9999],k,d[]={0x6F,0x3B,0x5A,0xD5,0x7A,0x6A,0x5B,0x2F,0xD0,0x57,0xA1,0x1B,0xCF,0x4F,0x5F,0x6E,0x6D,0x4E,0x79,0x3A,0x1F,0x95,0x9F,0xA6,0x3D,0x76};
f(int z){
  return d[a[j-1-t%(2*w*j)/w/2]-65]>>z&1?z=b[i*v/u],b[i++*v/u]=' ',z:' ';
}

main(){
  for(scanf("%s",a);a[j];i++)a[j]-k?k++,b[i]='+':(b[i]='.',t+=(0xE7572B70967DB>>(a[j]*2-130)&3)+5,j++);

  s=i/t+2;
  u=t*(s-1);
  v=i;
  i=0;

  w=2*s;h=2*s+1;
  for(t=2*w*h*j;t--;)putchar(
    t%(2*w*j)? 
      t/2/w/j%s?

        t%s||!(t/4%s)?' ':f(t/s%4/2+t/2/w/j/s*2|7*(t/s%4==2))  
      :(
        (t%s)&&(t/s+1&2)?f(4+t/2/w/j/s):' '
      )
    :10  //newline
  );

}

यह एक कैलकुलेटर फॉन्ट (कम एन्ट्रॉपी के लिए, केवल एक बाइट प्रति अक्षर) और https://codegolf.stackexchange.com/a/35801/15599 (मैं माइनस के बजाय प्लस का उपयोग करता हूं को छोड़कर ) से प्रेरित एक बहुत ही भोला दिमाग़ी कंपाइलर है । पहला forलूप टेक्स्ट aको स्ट्रिंग में संकलित करता है b, और फॉर्मैटेड कोड को खींचने के लिए आवश्यक स्ट्रोक की संख्या की गणना भी करता है, 13-अंकीय हेक्स मैजिक नंबर (सभी वर्ण 5-8 स्ट्रोक हैं) का उपयोग करते हुए।

कुल कार्यक्रम की लंबाई और स्ट्रोक की संख्या को देखते हुए, प्रति स्ट्रोक वर्णों की संख्या की गणना की जाती है (यदि अक्षर समान हैं या आरोही क्रम में हैं, और बहुत बड़े हैं यदि वर्ण अवरोही क्रम में हैं।)

कार्यक्रम के बाकी हिस्सों में से अधिकांश यह तय करने के लिए समर्पित है कि क्या व्हाट्सएप या एक स्ट्रोक को मुद्रित करने की आवश्यकता है। यदि कर्सर स्ट्रोक स्क्वायर से अधिक है, तो फ़ंक्शन fको उस स्ट्रोक की संख्या के साथ एक तर्क के रूप में कहा जाता है। यह एक स्थान देता है यदि वर्तमान पत्र के लिए उस स्ट्रोक की आवश्यकता नहीं है, या प्रोग्राम का एक चरित्र यदि यह है। क्योंकि ASCII कला को पूरा करने के लिए आवश्यक वर्णों की संख्या कार्यक्रम के पात्रों से अधिक हो सकती है, कभी-कभी एक स्थान डाला जाता है, इसलिए गणना b[i * v/u]

फ़ॉन्ट में चार एकल स्ट्रोक और चार डबल स्ट्रोक होते हैं, जिन्हें निम्न प्रकार से गिना जाता है, जो या तो उपस्थित या अनुपस्थित होते हैं, जो पत्र पर निर्भर करते हैं।

 6666 6666
3    7    2
3    7    2
3    7    2
3    7    2
 5555 5555
1    7    0
1    7    0
1    7    0
1    7    0
 4444 4444 

उत्पादन

Http://copy.sh/brainfuck/ पर परीक्षण करें

एबीसी

 + ++ +++                                ++++ + ++
+         +         +
+         +         +                   +
+                   +                   +
+         +         +
 ++++ + ++           +++  ++++
+                   +         +         +
+         +                   +         +
+         +         +                   +
+         +         +         +
                     ++++ + ++           ++.  +.+.

डीईएफ़

 + ++ ++ +           ++++  +++           ++ + ++++
          +         +                   +
     +    +                             +
     +    +         +                   +
          +         +                   +
                     ++ + +++            ++++ + ++
     +    +         +
     +    +         +                   +
     +              +                   +
     +    +         +
 ++++ + ++           ++.  +.+.

GHIJK

 + + +++                         ++  +++         +++  ++
+               +       +           +                               +
+               +       +           +                   +
+               +       +           +                   +           +
                  ++ +++                                         + + +++
+       +       +                   +           +       +           +   +
+               +       +           +           +       +           +
+       +       +       +           +           +                   +   +
 +++ + +                         ++. +.          +.+ .+.

LMNOP

                 + + +++         + + +++         + + +++         + + +++
+                   +   +       +       +       +               +       +
+               +   +           +       +       +       +       +
+               +   +   +       +               +       +       +       +
                                                                 + + +++
+               +   +   +       +       +               +       +
+       +       +       +       +       +       +       +
+       +       +   +   +               +       +       +       +
 + . +.+                                         . + .+.

QRSTU

 + + +++         +++ +++         +++ ++
+       +       +       +       +               +               +       +
+       +       +       +       +               +               +
+       +       +       +       +               +               +       +
 +++ +++                         + + +++         +++ +++
        +       +                       +       +               +
        +       +                       +       +               +       +
        +       +                       +       +               +       +
                                 +++  ++         +++ .+.         +.+ .+.

प्रतीक

                                                                + + +++
   +   +       +   +   +               +       +       +               +
   +   +       +   +   +           +           +       +               +
   +   +       +   +   +           +           +       +               +
                                +++ +++         + + +++         +++ ++
   +   +       +   +   +       +   +                   +       +
   +           +   +   +       +   +                   +       +
   +   +           +   +       +   +                   +       +
+++ + +         +++ +++                         ++  .+.         +.+ .+.

प्रतिलिपि बनाने योग्य

यादृच्छिक क्रम में अक्षरों के साथ अधिकांश तार के साथ (आरोही नहीं) अक्षर का आकार बहुत बड़ा है, और अक्षर बहुत बेहतर दिखते हैं। दुर्भाग्य से फ़ाइल का आकार काफी बड़ा हो जाता है। मैं यहां पूरा शब्द UCOPYRIGHTABLE अपलोड नहीं कर सकता, COPYABLE सबसे लंबे शब्द के बारे में है जिसकी मुझे अनुमति है।

        + +++++++++ +++++++++++                         + +++++++++ +++++++++++                         ++ ++++++++ +++++++++++                                                                         +++ +.+++++ +++++++.+.+                                                                                                                         ++++ ++++.+ +++++++++++            
       +                                               +                       +                       +                       +                                               +                       +                       +                       +                                               +                                               +                                   
       +                                               +                       +                       +                       +                       +                       +                       +                       +                       +                                               +                                               +                                   
       +                                               +                       +                                               +                       +                       +                       +                       +                       +                                               +                                               +                                   
       +                                               +                       +                       +                       +                       +                       +                       +                       +                       +                                               +                                               +                                   
       +                                               +                                               +                       +                       +                       +                       +                       +                       +                                               +                                               +                                   
       +                                               +                       +                       +                       +                       +                       +                       +                       +                       +                                               +                                               +                                   
       +                                                                       +                       +                       +                       +                       +                       +                       +                       +                                               +                                               +                                   
       +                                               +                       +                       +                       +                       +                       +                       +                       +                       +                                               +                                               +                                   
                                                       +                       +                       +                       +                       +                       +                       +                       +                       +                                               +                                               +                                   
       +                                               +                       +                       +                       +                       +                       +                       +                       +                       +                                               +                                                                                   
       +                                               +                       +                       +                       +                       +                       +                       +                       +                       +                                               +                                               +                                   
                                                                                                        +++++++++ + +++++++++++                         ++++++++++  +++++++++++                         +++++++++++  ++++++++++                         +++++++++++ + +++++++++                                                                         ++++++++++. +. ++++++++            
       +                                               +                       .                       +                                                                       +                       +                       +                       +                       +                       +                       +                       +                                   
       +                                               +                                               +                                                                       +                       +                       +                       +                       +                       +                       +                       +                                   
       +                                               +                       +                       +                                                                       +                       +                       +                       +                       +                       +                       +                       +                                   
                                                       +                       +                       +                                                                       +                       +                       +                       +                       +                       +                       +                       +                                   
       +                                               +                       +                       +                                                                       +                       +                       +                       +                       +                       +                       +                                                           
       +                                               +                       +                       +                                                                       +                       +                       +                       +                       +                       +                       +                       +                                   
       +                                               +                       +                       +                                                                       +                       +                       +                       +                       +                       +                                               +                                   
       +                                               +                       +                       +                                                                       +                       +                       +                       +                       +                       +                       +                       +                                   
       +                                               +                       +                       +                                                                       +                       +                       +                       +                       +                                               +                       +                                   
       +                                               +                       +                       +                                                                       +                       +                       +                       +                       +                       +                       +                       +                                   
       +                                               +                       +                       +                                                                       +                       +                       +                       +                                               +                       +                       +                                   
        +++++++++++ +++++++ +++                         +++++++++++ ++++++++ ++                                                                         +++++++++++ +++++++++ +                                                                         +++++++++++ ++++++++++                          +++++++++++ +++++++++++                          ++++++++++ ++++++++++.            

8

पर्ल → बेफुंज, 868 बाइट्स

ठीक है, मैं गेंद को लुढ़का दूंगा। यह थोड़ा और नीचे गोल्फ हो सकता है, लेकिन मेरे सिर को चोट लगी है ...

$_=" f,j f,jjj f,lgdlH,b >llb ,l,b lb ,lb , f,j f j f >>l>,lb ,9vb >lb,Hlb,H>vb >999*+,
mg8Hg8Ha8c8g8Hgb8Hab8,8k/ 8Ha8Hi /H8HgH8g8k >H9ghgH9b 'bhbhgH9ghg9+gH9ga//
ma8Hg8Ha8c8ahgbhabhh /bhah VdhibHH9ghb >H9ghgH9abhbhgH*g9+g ii /b>l,^b // 
>H^>>Hned*angne ned* eneknabnn<b nangn idH*gned*gneb*>>,b *kngH5g*6 Adb><aha//b
H*g2HgH3a4Hg5Ha6c7gHHgb1Hab2+3H ib4Ha5Hg6kiHH7g8c, id1H iabHk3k4+g >+ ,^>^dd 7/ ib *k //b 
+1g+HgH+g+Hg+Ha+c+g,Hgb+kk >^+ki +Ha+Hg+HgH+g+cki'+ki ,gk+k>^gbHc^H 9*gb8+b//a
^<b ^>^ebe^'>^e >^e>>^a >^>> >^gd>^ke> >^b '>^e>>^g>^g e^ >^a >^~'i>^b i >2+^b >^b e>gHaV V >^gb>^bHHHHHH";
s/n/*H/g;s/m/H8g8HgH8/g;s/l/v>/g;s/k/Hb/g;s/j/f>,/g;s/i/\\/g;s/h/9H/g;s/g/bd/g;s/f/ve/g;s/e/>>>/g;s/d/ H/g;s/c/HaH/g;s/b/  /g;s/a/    /g;@f=split$/;
@s=split('',$ARGV[0]);foreach$r(0..6){for($i=0;$i<@s;$i++){print substr($f[$r],(ord($s[$i])-65)*6,6).$"}print$r?'':' @',$/}

उदाहरण:

छोटे उदाहरणों को इस तरह के ऑनलाइन दुभाषियों में कॉपी-पेस्ट किया जा सकता है , लेकिन UNCOPYRIGHTABLE का परिणाम ऐसे प्रोग्राम से होता है जो सभी ऑनलाइन दुभाषियों को संभालने में बहुत लंबा होता है।

$ perl bf.pl ABCDEFGHI
 v>>>, v>>>>,  v>>>, v>>>>, v>>>>, v>>>>,  v>>>, v>   H  Hv>H,  @
H8   H 8H   H H8   H 8H   H 8H     8H     H8   H 8H   H   8H   
H8   H 8H   H H8     8H   H 8H     8H     H8     9H   H   9H   
>H^>>H *H>>>  H*     *H   H *H>>>  *H>>>  H* >>> *H>>>H   *H   
H*   H 2H   H H3     4H   H 5H     6H     H7   H HH   H   1H   
+1   H +H   H H+   H +H   H +H     +H     H+   H ,H   H   +H   
^<   ^ >^>>>   >>>^' >^>>>  >^>>>> >^      >^>>  >^   H  H>^H  


$ perl bf.pl JKLMNOPQR
   >v> v>   , v>,    v>   , v>   ,  v>>>, v>>>>,  v>>>  v>>>>,  @
    8, 8H  /  8H     8H\ /H 8H   H H8   H 8H   > H9   H 9H   H 
    9H 9H /   9H     9H V H 9H\  H H9   H 9H   > H9   H 9H   H 
    *H *H<    *H     *H   H *H \ H H*   H *H>>>  H*   H *H>>>  
    2+ 3H \   4H     5H   H 6H  \H H7   H 8H     H, \ H 1H \   
H   >^ +H  \  +H     +H   H +H   H H+   H +H     HH  \' +H  \  
 >>>>  >^   ' >^>>>> >^   H >^   H  >>>^  >^      >^~'\ >^   \ 


$ perl bf.pl STUVWXYZ
 v>>>  >>v>>, v>   , 9v   > v>  ,H v>  ,H >v   > 999*+,  @
H9   '   9H   9H   H H9   H 9H   H 9+   H H9   H     // 
H9       9H   9H   H H*   H 9+   H  \\ /   >v>,^    //  
 *>>,    *H   *H   H H5   H *6 A H   ><     9H     //   
    HH   3H   4+   H  >+ ,^ >^ H H  7/ \    *H    //    
,   HH   +H   >^   H   HH     H^H  9*   H   8+   //     
 >2+^    >^    >>>>    HH     V V  >^   H   >^   HHHHHH 


$ perl bf.pl UNCOPYRIGHTABLE
v>   , v>   ,  v>>>,  v>>>, v>>>>, >v   > v>>>>,  Hv>H,  v>>>, v>   H >>v>>,  v>>>, v>>>>, v>,    v>>>>,  @
9H   H 8H   H H8   H H8   H 8H   > H9   H 9H   H   8H   H8   H 8H   H   9H   H8   H 8H   H 8H     8H     
9H   H 9H\  H H8     H9   H 9H   >  >v>,^ 9H   H   9H   H8     9H   H   9H   H8   H 8H   H 9H     8H     
*H   H *H \ H H*     H*   H *H>>>    9H   *H>>>    *H   H* >>> *H>>>H   *H   >H^>>H *H>>>  *H     *H>>>  
4+   H 6H  \H H3     H7   H 8H       *H   1H \     1H   H7   H HH   H   3H   H*   H 2H   H 4H     5H     
>^   H +H   H H+   H H+   H +H       8+   +H  \    +H   H+   H ,H   H   +H   +1   H +H   H +H     +H     
 >>>>  >^   H  >>>^'  >>>^  >^       >^   >^   \  H>^H   >^>>  >^   H   >^   ^<   ^ >^>>>  >^>>>> >^>>>> 

ध्यान दें:

@उत्पादन की पहली पंक्ति के अंत में चरित्र चलना बंद करने के लिए Befunge बताता है। इसके बिना, कार्यक्रम एक ही शब्द को हमेशा के लिए दोहराता रहेगा।


मुझे एएससीआईआई फ़ॉन्ट पसंद है :)
Orby

3

सी → ब्रेनफक, 855 बाइट्स

पठनीयता में सुधार करने के लिए कुछ नई कड़ियाँ जोड़ी गईं। यह लोअरकेस अक्षर और प्रतीकों पर segfaults नोटिस। यहां आउटपुट का परीक्षण करें

#define p putchar
#define V(x) c=v[1][x]-65;
l[]={96,48,24,12,66,98,60,90,6,70,102,54,118,14,62,126},e[]={2863659686,
3937331886,1787332774,3937053358,4170115215,2291067023,1789692070,2863659690,
1646404134,1778384896,2864569258,4169697416,1145534458,1165457300,1789569702,
2291051182,1823124134,2863573678,1778804902,572662319,1789569706,648719018,
2943841348,2863033002,572680874,4164034831},a[]={36,36,24,34,30,26,29,36,20,20,
30,20,28,26,32,28,33,34,28,20,32,30,28,32,24,24},r,o,j,k,c,z;char*b[]={
"-[+>+<[+<]>]>+","-[+[>---<<]>+]>-","+[>+<+++++++]>",">+++[[-<]>>--]<",
"+[>+<+++]>----","+[>+<+++]>","-[+[+<]>>+]<+"};main(i,v)char**v;{for(;r<8;r++){
for(i=0;v[1][i];i++)for(o=0;o<8;o++){V(i)if((l[(e[c]>>(4*r))&15]>>o)&1){V(j)
if(k==a[c]){j++;k=0;}V(j)z=k-strlen(b[c/4]);if(z<0)p(b[c/4][k]);else{c=(c%4)-z;
!c?p(46):(c>0?p(43):p(62));}k++;}else p(32);}p(10);}}

उदाहरण

यह एक टर्मिनल पर बहुत अच्छा लग रहा है :(

$ ./art ABCDEFGHI

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

 $ ./art JKLMNOPQR

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

$ ./art STUVWXYZ

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

और अंत में,

$ ./art UNCOPYRIGHTABLE

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