ASCII कला में एक पुराने दोस्त की तस्वीर


36

मुझे उम्मीद है कि यह तस्वीर आपको परिचित लग रही है।

यहाँ छवि विवरण दर्ज करें

यह Pacman के भूतों में से एक है, जो अपनी "कमजोर" स्थिति में है , क्योंकि Pacman ने एक बिजली की गोली खाई है।

चुनौती

ASCII कला का उपयोग करते हुए, हमारे भूत को एक छोटे फ्रेम में चित्रित करें। सामान्य पैमाने पर (इसके बारे में अधिक बाद में), ऊपर की छवि में प्रत्येक वर्ग को एक वर्ण के अनुरूप होना चाहिए, और फ्रेम में एक-चरित्र को ऊपर और नीचे अलग करना चाहिए, और भूत के बाएं और दाएं को दो-वर्ण अलग करना चाहिए। :

####################
#                  #
#       ####       #
#     ########     #
#    ##########    #
#   ############   #
#   ############   #
#   ###  ##  ###   #
#  ####  ##  ####  #
#  ##############  #
#  ##############  #
#  ##  ##  ##  ##  #
#  # ##  ##  ## #  #
#  ##############  #
#  ## ###  ### ##  #
#  #   ##  ##   #  #
#                  #
####################

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

तो, अधिक लचीलापन होने के लिए, तस्वीर तीन इनपुट मापदंडों के अनुसार बदल जाएगी:

  • सक्रिय पिक्सल के लिए उपयोग किए जाने वाले चरित्र;
  • क्षैतिज पैमाने का कारक;
  • ऊर्ध्वाधर पैमाने का कारक।

उदाहरण के लिए, के साथ %, 4, 2ouput बेहतर की तलाश में चित्र होगा

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%                                                                        %%%%
%%%%                                                                        %%%%
%%%%                            %%%%%%%%%%%%%%%%                            %%%%
%%%%                            %%%%%%%%%%%%%%%%                            %%%%
%%%%                    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%                    %%%%
%%%%                    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%                    %%%%
%%%%                %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%                %%%%
%%%%                %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%                %%%%
%%%%            %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%            %%%%
%%%%            %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%            %%%%
%%%%            %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%            %%%%
%%%%            %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%            %%%%
%%%%            %%%%%%%%%%%%        %%%%%%%%        %%%%%%%%%%%%            %%%%
%%%%            %%%%%%%%%%%%        %%%%%%%%        %%%%%%%%%%%%            %%%%
%%%%        %%%%%%%%%%%%%%%%        %%%%%%%%        %%%%%%%%%%%%%%%%        %%%%
%%%%        %%%%%%%%%%%%%%%%        %%%%%%%%        %%%%%%%%%%%%%%%%        %%%%
%%%%        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%        %%%%
%%%%        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%        %%%%
%%%%        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%        %%%%
%%%%        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%        %%%%
%%%%        %%%%%%%%        %%%%%%%%        %%%%%%%%        %%%%%%%%        %%%%
%%%%        %%%%%%%%        %%%%%%%%        %%%%%%%%        %%%%%%%%        %%%%
%%%%        %%%%    %%%%%%%%        %%%%%%%%        %%%%%%%%    %%%%        %%%%
%%%%        %%%%    %%%%%%%%        %%%%%%%%        %%%%%%%%    %%%%        %%%%
%%%%        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%        %%%%
%%%%        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%        %%%%
%%%%        %%%%%%%%    %%%%%%%%%%%%        %%%%%%%%%%%%    %%%%%%%%        %%%%
%%%%        %%%%%%%%    %%%%%%%%%%%%        %%%%%%%%%%%%    %%%%%%%%        %%%%
%%%%        %%%%            %%%%%%%%        %%%%%%%%            %%%%        %%%%
%%%%        %%%%            %%%%%%%%        %%%%%%%%            %%%%        %%%%
%%%%                                                                        %%%%
%%%%                                                                        %%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

नियम

सभी भवन निर्माण की अनुमति दी।

इनपुट को किसी भी उचित प्रारूप और किसी भी क्रम में लिया जाता है। ऊपर पहला इनपुट (सक्रिय पिक्सेल के लिए वर्ण) एक मुद्रण योग्य ASCII वर्ण (कोड 32 से 126) होने की गारंटी है।

प्रत्येक पंक्ति के बाद का स्थान या अंतिम पंक्ति के बाद की नई सीमा को अनुगामी स्थान स्वीकार्य है।

कोड गोल्फ, सबसे कम बाइट्स जीतता है।


कुछ सेकंड के लिए चित्र को ध्यान से देखें। फिर देखिए क्या होता है! ...
सेरगिओल

विश्वास नहीं कर सकते हैं कि अब तक चारकोल सबमिशन नहीं हैं।
वीजुन झोउ

जवाबों:


34

CJam, 53 51 49 बाइट्स

q~"ǟ #/?Y__Fy_Nf ǟ"f{'Ƞ^2b_W%+S@+f=}fe*e*N*

ध्यान दें कि तीनों अक्षर अप्राप्य हैं। इसे ऑनलाइन आज़माएं!

पृष्ठभूमि

बिना बिके हुए आउटपुट का दायाँ हिस्सा बाएँ वाले के समान है, इसलिए यह उनमें से किसी एक को एन्कोड करने के लिए पर्याप्त है। यदि हम शून्य के साथ रिक्त स्थान और गैर-रिक्त स्थान को अपने साथ रखते हैं, तो हम प्राप्त करते हैं

1111111111
1000000000
1000000011
1000001111
1000011111
1000111111
1000111111
1000111001
1001111001
1001111111
1001111111
1001100110
1001011001
1001111111
1001101110
1001000110
1000000000
1111111111

जहां प्रत्येक पंक्ति की व्याख्या द्विआधारी संख्या के रूप में की जा सकती है। यह प्रदान करता है

1023 512 515 527 543 575 575 569 633 639 639 614 601 639 622 582 512 1023

इस जानकारी को एन्कोड करने का सबसे आसान तरीका है कि प्रत्येक पूर्णांक को उस कोड बिंदु पर यूनिकोड वर्ण के साथ बदल दिया जाए, लेकिन उन्हें UTF-8 के साथ एनकोडेड होने के लिए दो बाइट्स की आवश्यकता होगी।

544 के साथ पूर्णांक XORing करके, हम सभी लेकिन दो पूर्णांकों को 128 से नीचे रखते हैं और अशक्त बाइट से बचते हैं।

परिणाम है

479 32 35 47 63 31 31 25 89 95 95 70 121 95 78 102 32 479

पूर्णांकों के रूप में या

ǟ #/?\x1f\x1f\x19Y__Fy_Nf ǟ

भागे हुए स्ट्रिंग के रूप में।

यह काम किस प्रकार करता है

q~                e# Read and evaluate all input. This pushes the vscale factor V,
                  e# the hscale factor H, and the character C.
"ǟ #/?Y__Fy_Nf ǟ" e# Push that string.
f{                e# For each character, push C and the character; then:
'Ƞ^               e#   XOR the character with '\u0220' (544), casting to integer.
 2b               e#   Convert from integer to base 2.
 _W%              e#   Push a reversed copy of the binary digits.
 +                e#   Concatenate.
 S@+              e#   Append C to " ".
 f=               e#   Replace each binary digit with ' ' or C.
}                 e#
fe*               e# Repeat each character in each string H times.
e*                e# Repeat each string V times.
N                 e# Join the strings, separating by linefeeds.

7
कितनी जल्दी, और संक्षिप्त कोड! प्रभावशाली!
लुइस मेंडो

10

पर्ल, 113 105 104 100 97 96

के लिए +2 जोड़ा गया -ap

देव-नल द्वारा सुझाव 9 बाइट्स बचाएं डेनिस द्वारा देखे गए अनुसार गलत गणना

का उपयोग कर चलाएं echo "2 4 %" | perl -ap pacman.pl

pacman.pl:

}for(map+(unpack(aXBXB8Xb8XBXa),$/)x"@F","\xff\x00\x03\x0f\x1f\x3f\x3f\x39\x79\x7f\x7f\x66\x59\x7f\x6e\x46\x00\xff"=~/./g){s%%($&?$F[2]:$")x$F[1]%ge

सिवाय इसके कि तार "\xff\x00\x03\x0f\x1f\x3f\x3f\x39\x79\x7f\x7f\x66\x59\x7f\x6e\x46\x00\xff" को द्विआधारी रूप में एकल उद्धरण के साथ लिखा जाना चाहिए

प्रतिस्थापन चरित्र के रूप में अंतरिक्ष खाली स्ट्रिंग बन जाता है और छोटी लाइनों की ओर जाता है। लेकिन यह सब कुछ भी खाली दिखेगा


9

डायलाग एपीएल, 64 बाइट्स

{/∘⍉/⍺,⊂' '⍵[1+,∘⌽⍨1⍪⍨1⍪1,0⍪⍨0⍪0,0,⍉(7/2)⊤⎕AV⍳'Äâ\⊥⊥∘)⍞⍞┬#⍞`⍒']}

यह स्केल कारक को इसके बाएं तर्क के रूप में लेता है और चरित्र को इसके सही तर्क के रूप में, अर्थात:

      2 1{/∘⍉/⍺,⊂' '⍵[1+,∘⌽⍨1⍪⍨1⍪1,0⍪⍨0⍪0,0,⍉(7/2)⊤⎕AV⍳'Äâ\⊥⊥∘)⍞⍞┬#⍞`⍒']}'%'
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
 %%                                    %% 
 %%              %%%%%%%%              %% 
 %%          %%%%%%%%%%%%%%%%          %% 
 %%        %%%%%%%%%%%%%%%%%%%%        %% 
 %%      %%%%%%%%%%%%%%%%%%%%%%%%      %% 
 %%      %%%%%%%%%%%%%%%%%%%%%%%%      %% 
 %%      %%%%%%    %%%%    %%%%%%      %% 
 %%    %%%%%%%%    %%%%    %%%%%%%%    %% 
 %%    %%%%%%%%%%%%%%%%%%%%%%%%%%%%    %% 
 %%    %%%%%%%%%%%%%%%%%%%%%%%%%%%%    %% 
 %%    %%%%    %%%%    %%%%    %%%%    %% 
 %%    %%  %%%%    %%%%    %%%%  %%    %% 
 %%    %%%%%%%%%%%%%%%%%%%%%%%%%%%%    %% 
 %%    %%%%  %%%%%%    %%%%%%  %%%%    %% 
 %%    %%      %%%%    %%%%      %%    %% 
 %%                                    %% 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 

स्पष्टीकरण:

  • ⍉(7/2)⊤⎕AV⍳'Äâ\⊥⊥∘)⍞⍞┬#⍞`⍒': सीमा के बिना भूत का बायां आधा भाग। (यह सममित है।) गैर-मुद्रण वर्णों को चुनने से रोकने के लिए प्रत्येक वर्ण का अपना उच्च बिट सेट है ⎕AV, लेकिन केवल पहले 7 बाइट्स का उपयोग किया जाता है।

  • 0,⍪⍨0⍪0,0,: बाईं ओर, ऊपर और नीचे रिक्त स्थान की सीमा जोड़ें

  • 1⍪⍨1⍪1,: बाईं ओर, ऊपर और नीचे फ़्रेम जोड़ें
  • ,∘⌽⍨: इसके वर्टिकल मिरर से इसे मिलाएं
  • 1+: 1 जोड़ें, क्योंकि सरणियाँ डिफ़ॉल्ट रूप से 1-अनुक्रमित हैं
  • ' '⍵[... ]: स्ट्रिंग में एक इंडेक्स के रूप में उस मैट्रिक्स का उपयोग करें ' '⍵, इसलिए प्रत्येक 0 को खाली करने के लिए मैप किया जाता है और प्रत्येक 1 में मैप किया जाता है
  • ⍺,⊂: मैट्रिक्स को संलग्न करें और इसे स्केल कारकों में शामिल करें
  • /: निम्नलिखित समारोह के साथ सही गुना:
  • /∘⍉: क्षैतिज रूप से स्थानांतरण और पैमाने

7

MATL , 71 बाइट्स

32hO511-3-12-16-32O6-64-6O25 13-38 17 40 70-511Nq$hYs10H$Bt!P!hi1$lX*Q)

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

व्याख्या

छवि क्षैतिज रूप से सममित है, इसलिए केवल बाएं आधे को कोडित करने की आवश्यकता है। प्रत्येक 10-पिक्सेल पंक्ति बाइनरी को 0 और 1023 के बीच की संख्या के रूप में कोडित किया जाता है। सक्रिय पिक्सेल को 1 के बजाय 0 के रूप में कोडित किया जाता है, इसलिए पहली पंक्ति 1023 के बजाय 0 नंबर है।

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

जरूरत संख्या तब है

0 511 -3 -12 -16 -32 0 6 -64 -6 0 25 13 -38 17 40 70 -511

0 Oफ़ंक्शन का उपयोग करके MATL में पेश किया गया है, जो पड़ोसी संख्या के साथ एक विभाजक से बचा जाता है। इसके अलावा, नकारात्मक संकेत अतिरिक्त बाइट्स का मतलब नहीं है क्योंकि वे विभाजक के रूप में काम करते हैं।

एक बार सरणी बना लेने के बाद, यह संचयी रूप से सारांशित, बाइनरी-डिकोडेड और क्षैतिज रूप से प्रतिबिंबित होता है। परिणामी उत्पादन के लिए दो-चार स्ट्रिंग को अनुक्रमित करने के लिए परिणामी 2D सरणी का उपयोग किया जाता है। यह तार रूप का है '% ', जहाँ'%' एक इनपुट चार है।

जैसा कि @Conor ने नोट किया है, कोड भी इनपुट के रूप में दो चार्ट के साथ काम करता है। इस स्थिति में अंतिम स्ट्रिंग अनुक्रमित रूप में होगी '%_ ', जहां इनपुट दो-चार स्ट्रिंग है '%_'। अंतरिक्ष को केवल अनदेखा किया जाएगा, क्योंकि अनुक्रमण सरणी केवल पहले दो वर्णों को संबोधित करती है।

32                                             % space (ASCII)
h                                              % concat horizontally with 1st input: char
O511-3-12-16-32O6-64-6O25 13-38 17 40 70-511   % push these numbers
Nq$h                                           % concat all those numbers
Ys                                             % cumulative sum
10H$B                                          % convert to 10-digit binary numbers
                                               % gives 2D array, each number in one row
t                                              % duplicate
!P!                                            % flip horizontally
h                                              % concat horizontally
i                                              % take 2nd input: array [V H]
1$l                                            % matrix oh V×H ones  
X*                                             % Kronecker product to increase vertical
                                               % and horizontal scales by V and H resp.
Q                                              % add 1. Converts array of 0,1 into 1,2
)                                              % uses those 1,2 as indices into string


1
भाषा के संस्करण 16.0.0 के अनुसार, रिक्त स्थान को कॉमा से बदलें
लुइस मेंडो

3

सी (जीसीसी) , 199 197 बाइट्स

-2 बाइट्स @JonathanFrech को धन्यवाद

n,j;f(c,h,v){for(char t[20],i=18;i--;){for(n=10;n--;)t[n]=t[19-n]=((("\xff\0""1;\x7fM3\x7f\x7fON~~|x`\0\xff"[i]<<3)|(i&&i^17?1:7))>>n)&1?c:32;for(j=v;j--;puts(""))for(n=20*h;n--;)putchar(t[n/h]);}}

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

188 बाइट्स (अप्रतिबंधित)

@JonathanFrech के सौजन्य से।

n,j;f(c,h,v){for(char t[20],i=18;i--;){for(n=10;n--;)t[n]=t[19-n]=((("\xff\0001;M3ON~~|x`\0\xff"[i]<<3)|(i&&i^17?1:7))>>n)&1?c:32;for(j=v;j--;puts(""))for(n=20*h;n--;)putchar(t[n/h]);}}

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

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

#######  127     \x7f
           0     \0
##        96     `
####     120     x
#####    124     |
######   126     ~
######   126     ~
#  ###    78     N
#  ####   79     O
#######  127     \x7f
#######  127     \x7f
 ##  ##   51     3
#  ## #   77     M
#######  127     \x7f
 ### ##   59     ;
 ##   #   49     1
           0     \0
#######  127     \x7f

परिणामस्वरूप स्ट्रिंग को लूप के लिए अवरोही होने पर कुछ बाइट्स को बाहर निकालने के लिए उलट दिया गया था (हेक्साडेसिमल एस्केप के साथ एक कष्टप्रद समस्या को हल करने के लिए)। समरूपता के लिए धन्यवाद के बिना अन्य छोरों को फ़्लिप किया जा सकता है।

प्रत्येक पात्र को बाईं ओर स्थानांतरित किया गया है और एक सीमा दी गई है (पहली और अंतिम पंक्तियों पर विशेष ध्यान देने के साथ)। तो फिर यह सही ढंग से बढ़ाया स्ट्रिंग का उत्पादन करने की बात है।

सभी छोरों के लिए मुझे लगता है कि एक बेहतर तरीका है।



@JonathanFrech आह, धन्यवाद!
गैस्ट्रोपनर


@JonathanFrech नीट एक, लेकिन यह भी unprintables के लिए उत्सुक नहीं है।
गैस्ट्रोपनर

क्या आपके पास कोई विचार है \xffजिसे ÿ( TIO ) द्वारा प्रतिस्थापित क्यों नहीं किया जा सकता है ?
जोनाथन फ्रीच

2

गंभीरता से, 116 बाइट्स

╩' "3ff 200 203 20f 21f 23f 23f 239 279 27f 27f 266 259 27f 26e 246 200 3ff"s`24╙(¿¡╜'1(Æ' '0(Æ"╛*"£M;R@+εj2└@n`M'
j

वह न्यूलाइन महत्वपूर्ण है। Hexdump:

00000000: ca27 2022 3366 6620 3230 3020 3230 3320  .' "3ff 200 203
00000010: 3230 6620 3231 6620 3233 6620 3233 6620  20f 21f 23f 23f
00000020: 3233 3920 3237 3920 3237 6620 3237 6620  239 279 27f 27f
00000030: 3236 3620 3235 3920 3237 6620 3236 6520  266 259 27f 26e
00000040: 3234 3620 3230 3020 3366 6622 7360 3234  246 200 3ff"s`24
00000050: d328 a8ad bd27 3128 9227 2027 3028 9222  .(...'1(.' '0(."
00000060: be2a 229c 4d3b 5240 2bee 6a32 c040 6e60  .*".M;R@+.j2.@n`
00000070: 4d27 0d0a 6a                             M'..j

डेनिस के सीजाम के जवाब के रूप में एक ही रणनीति , लेकिन मान 5x के साथ XORed के बजाय हेक्स में एन्कोड किए गए हैं, और स्ट्रिंग हेरफेर सीरियसली में बहुत कठिन है।

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


2

बीबीसी बेसिक, 239 236 232 214 बाइट्स

0DEFPROCM(A,B,C)C=C-32:FORU=0TO18*A-1:FORV=0TO20*B-1:Y=U DIVA:X=V DIVB:V.32-C*FNC((X<10)*-X-(X>9)*(19-X),Y):N.:P.:N.:E.
1DEFFNC(X,Y)Z=Y*10+X:=((ASCMI."#Cb^2aC*[#1CF<;)C$;I9I$;EYLb&#",Z/6+1)-35)AND(2^(Z MOD6)))=0

कॉलिंग PROCM(1,1,35)# प्रतीकों से बने भूत का उत्पादन करता है। PROCM के तर्क हैं: क्षैतिज पैमाने, ऊर्ध्वाधर पैमाने, ASCII वर्ण का मान।

यह कार्यक्रम ब्रांडी बेसिक और बेसिक 2 के लिए एक मूल मॉडल बी पर काम करेगा।


2

बैच, 740 722 720 बाइट्स

@echo off
setlocal enabledelayedexpansion
set h=%3
set w=
set s=
for /l %%a in (1,1,%2)do set w=%1!w!&set s= !s!
call:l ####################
call:l #                  #
call:l #       ####       #
call:l #     ########     #
call:l #    ##########    #
call:l #   ############   #
call:l #   ############   #
call:l #   ###  ##  ###   #
call:l #  ####  ##  ####  #
call:l #  ##############  #
call:l #  ##############  #
call:l #  ##  ##  ##  ##  #
call:l #  # ##  ##  ## #  #
call:l #  ##############  #
call:l #  ## ###  ### ##  #
call:l #  #   ##  ##   #  #
call:l #                  #
call:l ####################
exit/b
:l
set l=%*
set l=!l: =%s%!
for /l %%a in (1,1,%h%)do echo !l:#=%w%!

संपादित करें: अनावश्यक रिक्त स्थान को हटाकर 18 20 बाइट्स सहेजे गए।


2

स्टैक्स , 45 बाइट्स

àÄÅ╣>u°↨2ö|dτÅbn╦─▀:ΣFúÇz?⌂É\!n▄§V0Ncó╤½8|δò_

इसे चलाएं और डीबग करें

स्पष्टीकरण:

"<long string>"!E' x+:BA/s|*mn|*:m Full program, implicit input.
"<long string>"!E                  Push 1531747987795407832964332490922049710271411270772589567
                 ' x+              Push a space plus the given character
                     :B            Interpret the number in binary, replacing 0 with ' ' and 1 with the given char
                       A/          Group into pieces of length 10.
                                   Gives the first half of each line.
                         s|*       Repeat each line <vertical scale factor> times
                            m      For each line:
                             n|*     Repeat each character <horizontal scale factor> times
                                :m   Mirror
                                     Implicit output with newline

मेरी स्क्रीन पर कुछ रंगों के साथ तीसरा शो है। बहुत अच्छा :-)
लुइस मेंडू

1

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

(s,w,h)=>[...`NJ56:*

\fLJJSlJ[s5NJ`].map(c=>`${t=(c.charCodeAt()^565).toString(2)}${[...t].reverse().join``}
`.replace(/./g,b=>` ${s}`[b].repeat(w)).repeat(h)).join``

@ डेनिस के जवाब के आधार पर। मुझे लगता है कि आप इसके बजाय एक शाब्दिक FF का उपयोग करके एक और बाइट दाढ़ी कर सकते हैं \f, लेकिन मुझे संदेह है कि मैं यहां एक पेस्ट कर सकता हूं। इसे आज़माते समय आप चरित्र के \u01CAबजाय उपयोग करना चाह सकते हैं NJ

दुख की बात है कि चरित्र तर्क के लिए एक स्थान तैयार करने में पूरे 6 बाइट खर्च होते हैं।


1

पायथन 2, 838 828 618 बाइट्स

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

यह सबसे अच्छा मैं कर सकता हूं, मैं कमांड लाइन में ग्राफिक्स के साथ बहुत अच्छा नहीं हूं।

मैंने छोटे भूत को आधार के रूप में लिया।

मैं ascii 219 का उपयोग डिफ़ॉल्ट रूप से कर रहा हूँ, क्योंकि उस चार के साथ, भूत बहुत भयानक लग रहा है !!!

golfed

def g(c,s,w,h,l=""):
 x="c-20,c-1,s-18,c-1,c-1,s-7,c-4,s-7,c-1,c-1,s-5,c-8,s-5,c-1,c-1,s-4,c-10,s-4,c-1,c-1,s-3,c-12,s-3,c-1,c-1,s-3,c-12,s-3,c-1,c-1,s-3,c-3,s-2,c-2,s-2,c-3,s-3,c-1,c-1,s-2,c-4,s-2,c-2,s-2,c-4,s-2,c-1,c-1,s-2,c-14,s-2,c-1,c-1,s-2,c-14,s-2,c-1,c-1,s-2,c-2,s-2,c-2,s-2,c-2,s-2,c-2,s-2,c-1,c-1,s-2,c-1,s-1,c-2,s-2,c-2,s-2,c-2,s-1,c-1,s-2,c-1,c-1,s-2,c-14,s-2,c-1,c-1,s-2,c-2,s-1,c-3,s-2,c-3,s-1,c-2,s-2,c-1,c-1,s-2,c-1,s-3,c-2,s-2,c-2,s-3,c-1,s-2,c-1,c-1,s-18,c-1,c-20"
 for r in x.split(","):
  d=r.split("-");l+=d[0].replace("s",s).replace("c",c)*int(d[1])*w
  if len(l)==20*w:print(l+"\n")*h,;l=""

पहनकर देखो repl.it आज़माएँ

Ungolfed

def pacmanGhost(char = "█", sep = " ", width = 1, height = 1):
    coords = [[[char, 20]], [[char, 1], [sep, 18], [char, 1]],[[char, 1], [sep, 7], [char, 4], [sep, 7], [char, 1]], [[char, 1], [sep, 5], [char, 8], [sep, 5],
         [char, 1]], [[char, 1], [sep, 4], [char, 10], [sep, 4], [char, 1]], [[char, 1], [sep, 3], [char, 12], [sep, 3], [char, 1]], [[char, 1], [sep, 3],
         [char, 12], [sep, 3], [char, 1]], [[char, 1], [sep, 3], [char, 3], [sep, 2], [char, 2], [sep, 2], [char, 3], [sep, 3], [char, 1]], [[char, 1],
         [sep, 2], [char, 4], [sep, 2], [char, 2], [sep, 2], [char, 4], [sep, 2], [char, 1]], [[char, 1], [sep, 2], [char, 14], [sep, 2], [char, 1]],
         [[char, 1], [sep, 2], [char, 14], [sep, 2], [char, 1]], [[char, 1], [sep, 2], [char, 2], [sep, 2], [char, 2], [sep, 2], [char, 2], [sep, 2],
         [char, 2], [sep, 2], [char, 1]], [[char, 1], [sep, 2], [char, 1], [sep, 1], [char, 2], [sep, 2], [char, 2], [sep, 2], [char, 2], [sep, 1], [char, 1],
         [sep, 2], [char, 1]], [[char, 1], [sep, 2], [char, 14], [sep, 2], [char, 1]], [[char, 1], [sep, 2], [char, 2], [sep, 1], [char, 3], [sep, 2],
         [char, 3], [sep, 1], [char, 2], [sep, 2], [char, 1]], [[char, 1], [sep, 2], [char, 1], [sep, 3], [char, 2], [sep, 2], [char, 2], [sep, 3],
         [char, 1], [sep, 2], [char, 1]], [[char, 1], [sep, 18], [char, 1]], [[char, 20]]]
    for coord in coords:
        line = ""
        for element in coord:
            line = "{}{}".format(line, element[0] * element[1] * width)
        for i in range(height):
            print(line)
    return

परीक्षा

यहाँ छवि विवरण दर्ज करें


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

ASCII कोड 219 जैसी कोई चीज नहीं है।
mbomb007

1

पायथन 2, 244 बाइट्स

p,w,h=raw_input().split()
for i in range(18): mystr=''.join([(p if i=='1'else' ')*int(w)for i in str(10+(i%17==0))+format(ord('\xff\x00\x03\x0f\x1f??9y\x7f\x7ffY\x7fnF\x00\xff'[i]),'08b')]);print'\n'.join([mystr+mystr[::-1]for j in[1]*int(h)])

1

पायथन 2, 169 बाइट्स

def a(s,x,y):
    z=[]
    for c in u'\u01df #/?\x1f\x1f\x19Y__Fy_Nf \u01df':
        b="".join((s if d=="1"else" ")*x for d in bin(ord(c)^544)[2:]);z+=[b+b[::-1]]*y
    print"\n".join(z)

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

स्पष्टीकरण:

u'\u01df #/?\x1f\x1f\x19Y__Fy_Nf \u01df'

जैसा कि डेनिस के उत्तर में है, इस तार में प्रत्येक वर्ण "छवि", XOR 544 के बाएं आधे हिस्से की एक पंक्ति के द्विआधारी प्रतिनिधित्व का प्रतिनिधित्व करता है।

for c in <unicode string>:

स्ट्रिंग में प्रत्येक वर्ण के लिए, निम्नलिखित करें:

    bin(ord(c)^544)

चरित्र को उसके पूर्णांक प्रतिनिधित्व में रूपांतरित करें, फिर 544 के साथ एक बाइनरी एक्सओआर करें। फिर इस पूर्णांक को अपने द्विआधारी प्रतिनिधित्व के चरित्र स्ट्रिंग में बदल दें, जैसे '0xb1111111111'।

    for d in <string>[2:]

स्टिंग में प्रत्येक चरित्र के लिए, स्थिति 2 पर शुरू (जो शुरुआत में 0 बी को छोड़ देता है), निम्नलिखित करें:

    (s if d=="1"else" ")*x

यदि वर्ण == "1", इसे आपूर्ति किए गए वर्ण से बदलें, अन्यथा इसे एक स्थान से बदलें। फिर इस चरित्र को x बार कॉपी करें। (x = 0 परिणाम एक रिक्त स्ट्रिंग में होगा।)

    b="".join(<previously generated list of strings>)

खाली स्ट्रिंग "" द्वारा अलग किए गए सभी तारों को एक लंबी स्ट्रिंग में समेटें।

    z+=[b+b[::-1]]*y

बी की एक स्ट्रिंग बनाओ + बी के पीछे, फिर इस स्ट्रिंग के वाई इंस्टेंस युक्त एक सरणी बनाएं (y = 0 एक खाली सूची []] का उत्पादन करेगा, फिर इस सूची को सूची z में जोड़ें।

print"\n".join(z)

अंत में, लाइन टूट द्वारा अलग किए गए उत्पादित तारों में से प्रत्येक को स्क्रीन पर प्रिंट करें।

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