アスキーアートの古くからの友人の写真


36

この写真があなたになじみのあるものであることを願っています。

ここに画像の説明を入力してください

パックマンがパワーピルを食べた後の、「脆弱な」状態パックマンの幽霊の1つです。

チャレンジ

ASCIIアートを使用して、小さなフレームに幽霊を描きます。通常のスケール(これについては後ほど説明します)では、上の画像の各正方形は1文字に対応し、フレームは上下に1文字の間隔があり、ゴーストの左右に2文字の間隔があります。 :

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

しかし、これはあまりきれいに見えません。#アクティブなピクセルに最適な選択肢ではないかもしれません。それに、キャラクターのセルは正方形ではありません。これにより、私たちの友人は彼がすでにいるよりも幽霊っぽく見えます。

したがって、柔軟性を高めるために、画像は3つの入力パラメーターに従って変化します。

  • アクティブなピクセルに使用される文字。
  • 水平スケール係数。
  • 垂直スケール係数。

例えば、で%42ouputをより良い探して絵になります

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

ルール

すべてのビルトインが許可されます。

入力は、合理的な形式と順序で行われます。上記の最初の入力(アクティブピクセルの文字)は、印刷可能なASCII文字(コード32〜126)であることが保証されています。

各行の後のスペースまたは最後の行の後の改行は許容されます。

コードゴルフ、最少バイトが勝ちます。


数秒間画像を注意深く見てください。次に何が起こるか見て...!
sergiol

これまで炭の提出がないとは信じられません。
ウェイジュン周

回答:


34

CJam、53 51 49バイト

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

3つの文字は印刷できないことに注意してください。オンラインでお試しください!

バックグラウンド

スケーリングされていない出力の右半分は左のものと同一であるため、そのうちの1つをエンコードするだけで十分です。スペースをゼロで置き換え、非スペースを1で置き換えると、

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

ここで、各行は2進数として解釈できます。これにより

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

この情報をエンコードする最も簡単な方法は、そのコードポイントで各整数をUnicode文字に置き換えることですが、それらはすべて2バイトをUTF-8でエンコードする必要があります。

整数を544とXORすることにより、2つを除くすべての整数を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

Perlの、113 105 104 100 97 96

に+2を追加 -ap

dev-null save 9バイトによる提案Dennisが気づいた間違ったカウントを修正

を使用して実行 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

Dyalog APL、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配列は、2文字の文字列にインデックスを付けて結果を生成するために使用されます。この文字列の形式は'% ''%'入力された文字です。

@Conorで述べたように、このコードは2つの文字を入力としても機能します。この場合、インデックスが作成される最終的な文字列'%_ 'は、入力が2文字の文字列の形式になります'%_'。インデックス配列は最初の2文字のみをアドレス指定するため、スペースは単に無視されます。

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のよう、スペースでカンマを置き換える
ルイス・Mendo

3

C(gcc)199 197バイト

@JonathanFrechのおかげで-2バイト

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単位ですが、一番上の行と一番下の行を除き、右端の3つの列は同じです。これにより、整数を使用する代わりに、画像の半分を文字として保存できます。

#######  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

結果の文字列は、forループの降順で数バイトを取り出すために逆にされました(16進エスケープに関する厄介な問題も解決します)。対称性のおかげで、他のループは問題なく反転できます。

各文字は左にシフトされ、境界線が与えられます(最初と最後の行に特別な注意を払って)。次に、正しくスケーリングされた文字列を出力するだけです。

すべてのforループは、より良い方法があると感じさせます。



@JonathanFrechああ、ありがとう!
ガストロプナー


@JonathanFrechきちんとしたものですが、印刷できないものにはあまり熱心ではありません。
ガストロプナー

TIO)に\xff置き換えられない理由はありますか?ÿ
ジョナサンフレッチ

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

DennisのCJam answerと同じ戦略ですが、値は544とのXORではなく16進数でエンコードされ、文字列操作はSeriouslyでははるかに困難です。

オンラインでお試しください!


2

BBC BASIC、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値です。

このプログラムは、Brandy Basicと、元のモデルBのBASIC 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

3番目のものは、画面にいくつかの色で表示されます。とてもいいです:-)
ルイスメンドー

1

JavaScript(ES6)、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``

@Dennisの回答に基づきます。の代わりにリテラルFFを使用することで別のバイトを削ることができると思いますが\f、ここに貼り付けることはできません。これを試すとき\u01CAは、NJキャラクターの代わりに使用することもできます。

悲しいことに、文字引数の前にスペースを追加すると、全体で6バイトかかります。


1

Python 2、838 828 618バイト

配列の代わりに文字列を使用して210バイトを節約しました。その提案をしてくれたDennisのおかげで、さらに改善できることはわかっていますが、今のところは改善されています。

これは私ができる最善の方法です。コマンドラインのグラフィックスはあまり得意ではありません。

私は小さな幽霊をベースにした。

デフォルトではascii 219を使用していますが、これはその文字でゴーストがすごいからです!!!

ゴルフ

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で試してください

非ゴルフ

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

テスト

ここに画像の説明を入力してください


単純に、圧縮されていない拡大縮小されていない画像を文字列に保存すると、はるかに良いスコアを達成できます。また、デフォルトの引数とreturnステートメントでバイトを浪費しています。
デニス

ASCIIコード219のようなものはありません
mbomb007

1

Python 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

Python 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'

以下のようにデニスの答え、この文字列の各文字は、 『画像』の左半分の1行、XOR 544のバイナリ表現を表します。

for c in <unicode string>:

文字列内の各文字について、次の手順を実行します。

    bin(ord(c)^544)

文字を整数表現に変換してから、544とバイナリXORを実行します。次に、この整数を「0xb1111111111」のようなバイナリ表現の文字列に変換します。

    for d in <string>[2:]

位置2(先頭の0bをスキップする)から始まる文字列の各文字に対して、次の操作を行います。

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

文字== "1"の場合は、指定された文字に置き換えます。それ以外の場合は、スペースに置き換えます。次に、この文字をx回コピーします。(x = 0は空の文字列になります。)

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

すべての文字列を1つの長い文字列に連結し、空の文字列「」で区切ります。

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

b + bの逆の文字列を作成し、この文字列のyインスタンスを含む配列を作成し(y = 0は空のリスト[]を生成します)、このリストをリストzに追加します。

print"\n".join(z)

最後に、生成された各文字列を改行で区切ってスクリーンに出力します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.