アスキーアートのゴルフ


31

ゴルフをしている男性を代表するこのアスキーアートをゴルフしてみましょう。

      '\。。|> 18 >>
        \ 」|
       O >>。'o |
        \ |
        / \。|
       / /。 ' |
 jgs ^^^^^^^ `^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^

出典:JGS- http : //www.retrojunkie.com/asciiart/sports/golf.htm

ルール:

  • 入力不可
  • 外部リソースは許可されていません
  • 出力は、先頭および末尾の改行を含む等幅フォント(OSコンソール、JSコンソール、HTML <pre>タグなど)で表示されたこのテキストでなければなりません。
  • 引用符または二重引用符を囲むことができます(文字列を出力するとき、JSコンソールは二重引用符を追加します、これは大丈夫です)

最良の答えは、どの言語でも少ない文字を使用することです。

楽しむ!


2
「まさにこのテキスト」:最初に空行を含めますか?最後に空行を含めますか?末尾の改行ありまたはなし?(つまり、最後に0、1、または2つの
マーティン・エンダー14

@ m.buettnerは、出力に正確に1つの先行改行と1つの後続改行/改行を含める必要があります。(および回避できない場合は引用符):)
xem 14

1
そのASCIIは私にとってクリケットのショットのように見えます
エイリアン氏14

@ Mr.Alien Martin Kleppeの最近の講演で見ました:speakerdeck.com/aemkei/…(ビデオ:youtube.com/watch
v

回答:


14

CJam、62文字

"Ⴀ지尦렒>Ä΀ྀ㸀⡅쇋蒧ʸ鿀ʃ케袧Ƽ蟀ʄ導뤷쀂萯Ű⋥ἀ਎밊耧台 ⢙⿶ꝍ㕟劢햟騤꩏脽啎"2G#b128b:c~

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

試運転

$ base64 -d > golf.cjam <<< IgHhgqDsp4DlsKbroJLujJ8+w4TOgOC+gOO4gOKhheyHi+iSp8q46b+AyoPsvIDvoIPuhKvooqfGvOifgMqE5bCO66S37ICC6JCvxbDii6XhvIDgqI7rsIrvgYvogKflj7DCoOKimeK/tuqdjeOVn+WKou2Wn+mopO+em+qpj+iEve6arOWVjiIyRyNiMTI4Yjpjfg==
$ wc -m golf.cjam
62 golf.cjam
$ cjam golf.cjam

      '\                   .  .                        |>18>>
        \              .         ' .                   |
       O>>         .                 'o                |
        \       .                                      |
        /\    .                                        |
       / /  .'                                         |
 jgs^^^^^^^`^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
$

使い方

2G#b 前の文字列をbase-65536の数値と見なして整数に変換します。

128b:c整数をbase-128の数値と見なして、その整数を文字列(110バイト)に変換します~

"
^F'^@\^S.^B.^X|^@>^@1^@8^@>^@>^@
^H\^N.^I'^A.^S|^@
^GO^@>^@>^I.^Q'^@o^P|^@
^H\^G.&|^@
^H/^@\^D.(|^@
^G/^A/^B.^@')|^@
^A"2/{)iS*}%"jgs"'^7*'`'^51*N

(キャレット表記)

2/{)iS*}%

文字列を2文字のペアに分割し、ペアごとに次の処理を実行します。文字列の2番目の文字をポップし、整数に変換して、文字列" "を何回も繰り返します。

たとえば、のASCII文字コードは40 であるため、に".("なります。". "(

最後に、

"jgs"'^7*'`'^51*N

文字列"jgs"、文字^が7回繰り返され、文字`、文字^が51回繰り返され、改行がプッシュされます。


1
本当に素晴らしいが、私はペーストビンから62charバージョンを取り、「オンラインそれを試してみてください」と、改行が最後の行に「JGS ...」の前に不足している
XEM

@xem:RAW貼り付けデータセクションからコピーしましたか?フォーマットされたコードをコピーすると、同じ結果が得られます。
デニス14

15

ルビー、107

(既存の圧縮関数を使用する代わりに)実際にコードでイメージを「生成」しようとすると思いました。

S=?\s*351+?^*60
"⠀鰇𗀈렜렟🀸쐺⠾𗁇롖鱠롢🁶⡷𓱿뢋鲝𛲞🂯⢰𗂹룁🃨⣩볲𗃳룸🄡⤢봪봬뤯鴰🅚⥛𚥝𙵞𜵟𘅧".chars{|q|S[511&r=q.ord]=(r>>10).chr}
puts S

その配列リテラルには、印刷できない文字がいくつかあります。

以下は、印刷できない文字も表示するためのファイルの16進表示です。

0000000: 533d 3f5c 732a 3335 312b 3f5e 2a36 300a  S=?\s*351+?^*60.
0000010: 22e2 a080 e9b0 87f0 9780 88eb a09c eba0  "...............
0000020: 9ff0 9f80 b8ef a0b9 ec90 baee 80bb efa0  ................
0000030: bcef a0bd e2a0 bef0 9781 87eb a196 e9b1  ................
0000040: a0eb a1a2 f09f 81b6 e2a1 b7f0 93b1 bfef  ................
0000050: a280 efa2 81eb a28b e9b2 9df0 9bb2 9ef0  ................
0000060: 9f82 afe2 a2b0 f097 82b9 eba3 81f0 9f83  ................
0000070: a8e2 a3a9 ebb3 b2f0 9783 b3eb a3b8 f09f  ................
0000080: 84a1 e2a4 a2eb b4aa ebb4 aceb a4af e9b4  ................
0000090: b0f0 9f85 9ae2 a59b f09a a59d f099 b59e  ................
00000a0: f09c b59f f098 85a7 222e 6368 6172 737b  ........".chars{
00000b0: 7c71 7c53 5b35 3131 2672 3d71 2e6f 7264  |q|S[511&r=q.ord
00000c0: 5d3d 2872 3e3e 3130 292e 6368 727d 0a70  ]=(r>>10).chr}.p
00000d0: 7574 7320 53                             uts S

いくつかの大きな改善を行ったVenteroに感謝します (彼は基本的にコードを50%削減しました。)


素晴らしい努力です!ASCIIをgzipするだけではなく、そのような答えを期待していました;)
xem

1
2行目は、6.times{|i|S[i+1]=' '*55+?|}2文字を保存することです。
激しい14

@voidpigeonああありがとう。私は実際にそれから始めましたが、最初は何i度も必要だと思っていました。良いキャッチ!
マーティンエンダー14

2
これをもっと短くする方法をもう少し言及してもかまわないことを願っています!S.fill{' '*55+?|}代わりにを使用すると、さらにいくつかの文字が保存されます(ただし、Sとして定義し['']*7putsto puts p,S,pを変更して、すべてのy座標から1を減算する必要があります)。次に、f(def f(*p,c))でvarargsを使用[]して、関数呼び出しで保存できます。ああ、あなたは()周りにドロップすることができますy,x
Ventero 14

1
あなたが作る場合はS 、一次元、あなたは別の55個の文字を保存することができます;)ここのコードですあなたはそれを自分で行うにはしたくない場合は。
Ventero

13

bash + iconv + DosBox / x86マシンコード(104 97 96 95文字)

echo ↾각슈삨੽₲ɻ庲錿ʴ⇍罋곹삄ૃ蘊尧⺓⺂粘ㄾ㸸ਾ岈⺎➉⸠粓蜊㹏褾鄮漧粐蠊蝜꘮੼⾈葜꠮੼⾇⼠⺂ꤧ੼樠獧惇૳|iconv -futf8 -tucs2>o.com;dosbox o*

これを空のディレクトリのスクリプトに入れることをお勧めします。ターミナルにコピーアンドペーストするとすべてが壊れることがほぼ保証されています。さらに良いことに、ここでスクリプトをすぐに入手できます。

期待される出力: 期待される出力

使い方

bash部分は、スクリプトのUTF-8文字からファイルiconvを「解凍」.comしてDosBoxで起動するために使用する単なるランチャーです。

すべての入力シーケンスがiconv文句を言わずにUCS-2として解釈できるわけではないため、これはコンテンツに何らかの制限を課していることに注意してください。たとえば、何らかの理由で、bxレジスタを使用する多くの操作が、使用した場所に応じて大混乱を引き起こしたため、この問題を何度か回避する必要がありました。

現在、Unicodeのことは、「文字数」ルールを利用することです。スクリプトの実際のサイズ(バイト単位)は元の.COMファイルよりもはるかに大きくなります。

抽出された.comファイルは

00000000  be 21 01 ac 88 c2 a8 c0  7d 0a b2 20 7b 02 b2 5e  |.!......}.. {..^|
00000010  83 e0 3f 93 b4 02 cd 21  4b 7f f9 ac 84 c0 75 e4  |..?....!K.....u.|
00000020  c3 0a 0a 86 27 5c 93 2e  82 2e 98 7c 3e 31 38 3e  |....'\.....|>18>|
00000030  3e 0a 88 5c 8e 2e 89 27  20 2e 93 7c 0a 87 4f 3e  |>..\...' ..|..O>|
00000040  3e 89 2e 91 27 6f 90 7c  0a 88 5c 87 2e a6 7c 0a  |>...'o.|..\...|.|
00000050  88 2f 5c 84 2e a8 7c 0a  87 2f 20 2f 82 2e 27 a9  |./\...|../ /..'.|
00000060  7c 0a 20 6a 67 73 c7 60  f3 0a 0a 00              ||. jgs.`....|
0000006c

長さは108バイトです。NASMのソースは次のとおりです。

    org 100h

start:
    ; si: pointer to current position in data
    mov si,data
    ; load the character in al
    lodsb
mainloop:
    ; bx: repetition count
    ; - zero at startup
    ; - -1 after each RLE run
    ; - one less than each iteration after each "literal" run
    ; the constant decrement is not really a problem, as print
    ; always does at least one print, and there aren't enough
    ; consecutive literal values to have wraparound

    ; if the high bit is not set, we have a "literal" byte;
    ; we prepare it in dl just in case
    mov dl,al
    ; then check if it's not set and branch straight to print
    ; notice that bx=0 is fine, as print prints always at least one character
    ; test the top two bits (we need the 6th bit below)
    test al,0xc0
    ; to see if the top bit was set, we interpret it as the sign bit,
    ; and branch if the number is positive or zero (top bit not set)
    jge print
rle:
    ; it wasn't a literal, but a caret/space with a repetition count
    ; space if 6th bit not set, caret otherwise
    mov dl,' '
    ; exploit the parity bit to see if the 6th bit was set
    jnp nocaret
    mov dl,'^'
nocaret:
    ; lower 6 bits: repetition count
    ; and away the top bits and move in bx
    ; we and ax and not al because we have to get rid of the 02h in ah
    and ax,3fh
    xchg ax,bx
print:
    ; print bx times
    mov ah,2
    int 21h
    dec bx
    jg print
    ; read next character
    lodsb
    test al,al
    ; rinse & repeat unless we got a zero
    jnz mainloop
end:
    ret
data:
    ; here be data
    incbin "compressed.dat"
    ; NUL terminator
    db 0

これらはすべてcompressed.dat、次のような形式の単なる解凍プログラムです。

  • 高ビットが設定されていない場合、文字をそのまま出力します。
  • それ以外の場合、下位6ビットは繰り返しカウントで、2番目に高いビットは、スペース(ビットが設定されていない)またはキャレット(ビットが設定されている)を印刷する必要があるかどうかを指定します。

compressed.dat次に、元のテキストからPythonスクリプトを使用して生成されます。

全体はここで見つけることができます


10

Python、156

print'''
%6s'\%19s.  .%24s|>18>>
%8s\%14s.%9s' .%19s|
%7sO>>%9s.%17s'o%16s|
%8s\%7s.%38s|
%8s/\%4s.%40s|
%7s/ /  .'%41s|
 jgs'''%(('',)*19)+'^'*7+'`'+'^'*51

これは、いくつかの基本的な圧縮のためにスペースを埋め込んだ文字列フォーマットを使用しています。


7

PHP、147

これはコマンドラインで実行され、コンソールに直接出力されます。

php -r 'echo gzinflate(base64_decode("41IAA/UYBUygB0bYQY2doYWdHReMG4OhEwrUsRpRA9Pob2eHRRNccz5OjXAbcboQl0b9GBK0IWnUB0IFPXUFEjRmpRfHQUBCHOmAiwsA"));'

6

Perl-127 129 130 132 135 137 145

print q(
6'\19.2.24|>18>>
8\14.9'1.19|
7O>>9.17'o16|
8\7.38|
8/\4.40|
7/1/2.'41|
1jgs^^^^^^^`0
)=~s/\d++(?!>)/$"x$&||'^'x51/reg

RegExの最適化に協力してくれたVenterom.buettnerに感謝します。


1つの文字を保存するには、s/\d+(?!8?>)/%$&s/rg
Ventero 14

@Venteroは提案をありがとう。
core1024 14

2
あなたは使用して別のものを保存することができ独占的量を/\d++(?!>)/
マーティン・エンダー

@ m.buettnerそれは知らなかった。毎日新しいことを学ぶ:)
core1024 14

4

GCC C-203バイト

私はこれでいくつかの楽しみを持っていると思った。これは私のバージョンのMinGWでコンパイルされ、予想されるテキストを出力します。

明確にするために空白が追加されました。

char*v="\n ú'\\ í.  . è|>18>>\n ø\\ ò. ÷' . í|\n ùO>> ÷. ï'o ð|\n ø\\ ù. Ú|\n ø/\\ ü. Ø|\n ù/ /  .' ×|\n jgs^ù`^Í\n";
main(g,o,l){
    for(;*v;
        g=!g&*v<0&l?-*v++:g){
        v+=!(l=*v-35);
        putchar((g-=g>0)?o:(o=*v++));
    }
}

サイトを貼り付けるオンラインコードはいずれもASCII範囲外のシングルバイト文字の使用を許可していないため、アップロードした例ではそれらをエスケープする必要がありました。それ以外は同じです。http://codepad.org/nQrxTBlX

独自のコンパイラでいつでも検証できます。


4

LOLCODE、590文字

Cuz LOLCODE iz perfik language 4 golfin:iz easy 2は難解であり、冗長ではありません。

HAI
HOW DUZ I D C T
I HAZ A O
I HAZ A N ITZ 0
IM IN YR LOOP UPPIN YR N TIL BOTH SAEM N AN T
O R SMOOSH O AN C MKAY
IM OUTTA YR LOOP
FOUND YR O
IF U SAY SO
VISIBLE ""
VISIBLE SMOOSH "  '\" AN D " " 19 AN ".  ." AN D " " 24 AN "|>18>>" MKAY
VISIBLE "    \              .         ' .                   |"
VISIBLE "   O>>         .                 'o                |"
VISIBLE SMOOSH "    \       ." AN D " " 38 AN "|" MKAY
VISIBLE SMOOSH "    /\    ." AN  D " " 40 AN "|" MKAY
VISIBLE SMOOSH "   / /  .'" AN D " " 41 AN "|" MKAY
VISIBLE SMOOSH "jgs^^^^^^^`" AN D "^" 51 MKAY
VISIBLE ""
KTHXBYE

Im pritee sure dis werkz、しかし、私はhttp://repl.itのLOLCODEインタプリタを持っています。

(Tranzlashunはhttp://speaklolcat.comのロボットによって寛大に提供されています。


コードのインデント、スペース、およびコメント付きバージョン(LOLCODEコメントはBTWで始まります):

HAI BTW All LOLCODE programs start with HAI
    HOW DUZ I D C T BTW Function declarations follow the form "HOW DUZ I <func-name>[ <func-arg1>[ <func arg2>[ ...]]]". In this case, D is a function that repeats a YARN C (YARN is the equivalent of string in LOLCODE) NUMBR T (NUMBR = int) times.
        I HAZ A O BTW Variable declarations follow the form "I HAZ A <var-name>"

        I HAZ A N ITZ 0 BTW Variables can be intialised when declared by appending " ITZ <init-value>" to the declaration 
        IM IN YR LOOP UPPIN YR N TIL BOTH SAEM N AN T BTW Loops follow the form "IM IN YR LOOP <action> TIL <condition>" where action and condition are "UPPIN YR N" and "BOTH SAEM N AN T", respectively, in this case
            O R SMOOSH O AN C MKAY BTW "R" assigns a new value to a variable. YARN (string) concatenation follows the form "SMOOSH <str-1> AN <str-2>[ AN <str-3>[...]] MKAY"
        IM OUTTA YR LOOP BTW "IM OUTTA YR LOOP" ends LOLCODE loops

        FOUND YR O BTW "FOUND YR <value>" returns a value
    IF U SAY SO BTW "IF U SAY SO" ends functions

    VISIBLE "" BTW "VISIBLE" prints its argument to stdout
    VISIBLE SMOOSH "  '\" AN D " " 19 AN ".  ." AN D " " 24 AN "|>18>>" MKAY BTW The function I wrote above only "pays off" in terms of characters added/saved when repeating 19 or more characters (the function call itself takes 8 characters, assuming a one-character first argument and a 2-digit second one; you need to factor in the added quotes (2 characters), spaces (4) and ANs (4) for 18 total extra characters; and possible SMOOSH/MKAY)
    VISIBLE "    \              .         ' .                   |"
    VISIBLE "   O>>         .                 'o                |"
    VISIBLE SMOOSH "    \       ." AN D " " 38 AN "|" MKAY
    VISIBLE SMOOSH "    /\    ." AN  D " " 40 AN "|" MKAY
    VISIBLE SMOOSH "   / /  .'" AN D " " 41 AN "|" MKAY
    VISIBLE SMOOSH "jgs^^^^^^^`" AN D "^" 51 MKAY
    VISIBLE ""    
KTHXBYE BTW "KTHXSBYE" ends LOLCODE programs

それのような(笑)、素敵な圧縮、:D
ジョシュア

3

Pythonの- 205 203 197

i="""
G^y`G^MsGgGj!G
G|!o'G.!H/!G/!M
G|!n.!J\G/!N
G|!l.!M\!N
G|!VoG'!W.!O>HO!M
G|!Y.!G'!O.!T\!N
G>H8G1G>G|!^.!H.!Y\G'!L
G""".replace('!','G ')
o=''
j=140
while j:j-=2;o+=ord(i[j+1])%70*i[j]
print o

文字列iは、ASCIIの文字を、すべて逆順の文字として表される多重項でインターリーブします。さらに、「!」を使用してスペースを少し節約します。'G'の代わりにi、それを単に置き換えます。


3

パイソン(145)

'eJzjUgAB9RgFTKAHRthBjZ2hhZ0dF5SHphuhSx2rCTVQff52dlj0wPXm49IHtw+n83Do048hQRdCnz4QKuipE6sNqC8rvTgOAhLiSAdcAG/9Ri8='.decode('base64').decode('zip')

あまり独創的ではない、私は知っている。


2

Javascript(ES6193 175バイト

編集:RegPack v3変更して、改行を維持し、for inループを使用して3バイトを保存し、暗黙的なコンソール出力のevalを削除しました。

_="\nx'\\w{. z~|>18>>\n~\\~x.~ 'z{yx O>>~z 'owy~\\xzwxy~/\\{zw~yx / /  .'ww~ y jgs}`}}}}}}}^^\n~x  }^^^^^^^{   z .wy|\nx{{w~~";for(i of "wxyz{}~")with(_.split(i))_=join(pop())

xemのUnicode圧縮を使用:133文字

eval(unescape(escape('𧰽𘡜𫡸𙱜𧁷𮰮𘁺嵃🠱𞀾🡜𫡾𧁜屮𛡾𘀧𮡻𮑸𘁏🠾岍𘀧𫱷𮑾𧁜𮁺𭱸𮑾𛱜𧁻𮡷峀𮀠𛰠𛰠𘀮𙱷𭱾𘁹𘁪𩱳𯑠𯑽𯑽𯑽𯑞𧡜𫡾𮀠𘁽𧡞𧡞𧡞𧡻𘀠𘁺𘀮𭱹𯁜𫡸𮱻𭱾割𞱦𫱲𚁩𘁯𩠠𘡷𮁹𮡻𯑾𘠩𭱩𭁨𚁟𛡳𬁬𪑴𚁩𚐩𧰽𪡯𪑮𚁰𫱰𚀩𚐠').replace(/uD./g,'')))

すばらしいです!<3 RegPackの後処理!psst、143bで作成できます:xem.github.io/obfuscatweet
xem 14

143個の文字を@xemが、より多くのバイト
nderscore

はい、143文字です。質問では、文字を数えることができます。とにかく、regpackのアプローチはunicode-obfuscationよりも興味深い;)
xem 14

2
FWIW、mothereff.in / byte-counterは、文字とバイトの両方をカウントするツールです(UTF-8 に準拠)。
マティアスバイネンズ14

2

ES6、155文字

別のアプローチを試してみてください:

これをFirefoxのJSコンソールで実行します。

各Unicode文字の形式は次のとおりです:\ uD8 [ascii charcode] \ uDC [number of repeats]。

"𒠁𘀆𙰁𧀁𘀓𛠁𘀂𛠁𘀘𯀁🠁𜐁𞀁🠂𒠁𘀈𧀁𘀎𛠁𘀉𙰁𘀁𛠁𘀓𯀁𒠁𘀇𣰁🠂𘀉𛠁𘀑𙰁𫰁𘀐𯀁𒠁𘀈𧀁𘀇𛠁𘀦𯀁𒠁𘀈𛰁𧀁𘀄𛠁𘀨𯀁𒠁𘀇𛰁𘀁𛰁𘀂𛠁𙰁𘀩𯀁𒠁𘀁𪠁𩰁𬰁𧠇𨀁𧠳𒠁".replace(/../g,a=>String.fromCharCode(a[c='charCodeAt']()&255).repeat(a[c](1)&255))

http://jsfiddle.net/LeaS9/で作成されたUnicode文字列)


-3:.replace(/../g,a=>String.fromCharCode(a[c='charCodeAt']()&255).repeat(a[c](1)&255))
nderscore 14

ああ、ありがとう、ありがとう!
xem 14

2

PHP

方法1、より単純(139バイト):

事前に収縮された文字列を使用します。

<?=gzinflate(base64_decode('41IAA/UYBUygB0bYQY2doYWdHReMG4OhEwrUsRpRA9Pob2eHRRNccz5OjXAbcboQl0b9GBK0IWnUB0IFPXUFEjRmpRfHQUBCHOmACwA='));?>

方法2、スペースの実行をアルファベット文字(192バイト)にエンコードする:

<?=preg_replace_callback('#[D-NP-Zu]#',function($e){return str_repeat('a'<$e[0]?'^':' ',ord($e[0])-66);},"
H'\U.D.Z|>18>>
J\P.K' .U|
IO>>K.S'oR|
J\I.WS|
J/\F.ZR|
I/ /D.'ZS|
 jgs^^^^^^^`u
")?>

2

PowerShell、192 188 119

 -join('̠§Üঠ®Ġ®ఠü¾±¸ľРÜܠ®Ҡ§ ®ঠüΠÏľҠ®ࢠ§ïࠠüРÜΠ®ጠüР¯ÜȠ®ᐠüΠ¯ ¯Ġ®§ᒠü êçóϞà᧞'[0..70]|%{"$([char]($_%128))"*(+$_-shr7)})

上記の部分には、いくつかの非文字が含まれています。六角ダンプ:

00: 002D 006A 006F 0069 │ 006E 0028 0027 008A  -join('
10: 0320 00A7 00DC 09A0 │ 00AE 0120 00AE 0C20  ̠§Üঠ®Ġ®ఠ
20: 00FC 00BE 00B1 00B8 │ 013E 008A 0420 00DC  ü¾±¸ľРÜ
30: 0720 00AE 04A0 00A7 │ 00A0 00AE 09A0 00FC  ܠ®Ҡ§ ®ঠü
40: 008A 03A0 00CF 013E │ 04A0 00AE 08A0 00A7  ΠÏľҠ®ࢠ§
50: 00EF 0820 00FC 008A │ 0420 00DC 03A0 00AE  ïࠠüРÜΠ®
60: 1320 00FC 008A 0420 │ 00AF 00DC 0220 00AE  ጠüР¯ÜȠ®
70: 1420 00FC 008A 03A0 │ 00AF 00A0 00AF 0120  ᐠüΠ¯ ¯Ġ
80: 00AE 00A7 14A0 00FC │ 008A 00A0 00EA 00E7  ®§ᒠü êç
90: 00F3 03DE 00E0 19DE │ 0027 005B 0030 002E  óϞà᧞'[0.
A0: 002E 0037 0030 005D │ 007C 0025 007B 0022  .70]|%{"
B0: 0024 0028 005B 0063 │ 0068 0061 0072 005D  $([char]
C0: 0028 0024 005F 0025 │ 0031 0032 0038 0029  ($_%128)
D0: 0029 0022 002A 0028 │ 002B 0024 005F 002D  )"*(+$_-
E0: 0073 0068 0072 0037 │ 0029 007D 0029       shr7)})

エンコード方式は、表示する文字である下位7ビットより上にエンコードされた長さのRLEです。


1

パイソン-236

s=' ';print('\n'+6*s+"'\\"+19*s+'.  .'+24*s+"|>18>>\n"+8*s+'\\'+14*s+'.'+9*s+"' ."+19*s+"|\n       O>>"+9*s+'.'+17*s+"'o"+16*s+'|\n'+8*s+"\\       ."+38*s+'|\n'+8*s+"/\\    ."+40*s+"|\n       / /  ."+42*s+"|\n jgs^^^^^^^`"+51*'^'+'\n')

1

JS(190b)/ ES6(146b)/ ES6パック(118文字)

JSコンソールでこれを実行します。

JS:

"\n7'\\20.3.25|>18>>\n9\\15.10'2.20|\n8O>>10.9 9'o17|\n9\\8.39|\n9/\\5.41|\n8/2/3.'42|\n2jgs^^^^^^^`".replace(/\d+/g,function(a){return 18==a?a:Array(+a).join(' ')})+Array(51).join("^")+"\n"

ES6:

"\n6'\\19.2.24|>0>>\n8\\14.9'1.19|\n7O>>9.17'o16|\n8\\7.38|\n8/\\4.40|\n7/1/2.'41|\n1jgs58`101\n".replace(/\d+/g,a=>' ^'[a>51|0].repeat(a%51)||18)

ES6パック:(http://xem.github.io/obfuscatweet/

eval(unescape(escape('𘡜𫠶𙱜𧀱𞐮𜠮𜠴𯀾𜀾🡜𫠸𧁜𜐴𛠹𙰱𛠱𞑼𧁮𝱏🠾𞐮𜐷𙱯𜐶𯁜𫠸𧁜𝰮𜰸𯁜𫠸𛱜𧀴𛠴𜁼𧁮𝰯𜐯𜠮𙰴𜑼𧁮𜑪𩱳𝐸𨀱𜀱𧁮𘠮𬡥𬁬𨑣𩐨𛱜𩀫𛱧𛁡🐾𙰠𧠧𦱡🠵𜑼𜁝𛡲𩑰𩑡𭀨𨐥𝐱𚑼𯀱𞀩').replace(/uD./g,'')))

@nderscoreに感謝します!


1
ES6から158まで:(Unicode圧縮で124文字になります)"\n6'\\19.2.24|>18>>\n8\\14.9'1.19|\n7O>>9.17'o16|\n8\\7.38|\n8/\\4.40|\n7/1/2.'41|\n1jgs^^^^^^^`".replace(/\d+/g,a=>18-a?' '.repeat(a):a)+"^".repeat(50)+"\n"
nderscore 14

ああ、偉大な、私は繰り返し知りませんでした
XEM

@nderscoreは申し訳ありません、それは素晴らしいことだことはありません:)が、最後の行は、私のFirefoxのコンソールで壊れそうです
XEM

146:"\n6'\\19.2.24|>0>>\n8\\14.9'1.19|\n7O>>9.17'o16|\n8\\7.38|\n8/\\4.40|\n7/1/2.'41|\n1jgs58`101\n".replace(/\d+/g,a=>' ^'[a>51|0].repeat(a%51)||18)(stackexchangeは41の後に目に見えない改行文字を追加| \)
nderscore

おかげで、答えを更新しましたが、うまくいきました。:)また、別の158bアンサーを追加しました。おそらく、それを改善するためのアイデアがあるでしょう!
xem 14

1

ES6、163b / 127文字

@nderscoreに感謝します。

Firefoxのコンソールで実行します

JS(163b):

"\n'\\..|>18>>\n\\. '.|\nO>>    .'o|\n\\.&|\n/\\.(|\n//.')|\njgs<`h\n".replace(/[^'`Og\n>\\,-8j-|]/g,a=>" ^"[a=a.charCodeAt(),a>53|0].repeat(a%53))

パック済み(127c):

eval(unescape(escape('𘡜𫠆𙱜𧀓𛠂𛠘𯀾𜐸🠾𧁮𒁜𧀎𛠉𙰁𛠓𯁜𫠇𣰾🠉𛠑𙱯𔁼𧁮𒁜𧀇𛠦𯁜𫠈𛱜𧀄𛠨𯁜𫠇𛰁𛰂𛠧𚑼𧁮𐑪𩱳🁠𪁜𫠢𛡲𩑰𫁡𨱥𚀯𦱞𙱠𣱧𧁮🡜𧀬𛐸𪠭𯁝𛱧𛁡🐾𘠠𧠢𦱡👡𛡣𪁡𬡃𫱤𩑁𭀨𚐬𨐾𝐳𯀰𧐮𬡥𬁥𨑴𚁡𙐵𜰩𚐠').replace(/uD./g,'')))

@nderscoreが機能強化を見つけると確信しています:)
xem 14

SEはこのソリューションのいくつかの特徴を破壊していると思います。私はあなたの他の回答で行ったものと同様のアプローチを使用して、これは163にダウン:jsfiddle.net/2Fbxq/3
nderscore

まあ、それは素晴らしい機能強化です(そして非常に素晴らしいフィドル)。答えを更新しました。
xem 14

1

Python、70 UTF-16文字

挣摯湩㩧呕ⵆ㘱䕂
print砧RԘꁌ䘇䇘鶍薡ᶝ谗ꚋꄝᵍᆫ〵ﺍ癶㑘㗁ࣔᆷ஧楱返䄡鈛絆吠叐嘧䠟噣煺М쐤ຑꀀ䜮'.decode(稧楬b')

もちろん、おそらく16進バージョンを使用する必要があります。

23 63 6F 64 69 6E 67 3A 55 54 46 2D 31 36 42 45 0A 00 70 00 72 00 69 00 6E 00 74 00 27 78 9C E3 52 00 03 F5 18 05 4C A0 07 46 D8 41 8D 9D A1 85 9D 1D 17 8C 8B A6 1D A1 4D 1D AB 11 35 30 8D FE 76 76 58 34 C1 35 E7 E3 D4 08 B7 11 A7 0B 71 69 D4 8F 21 41 1B 92 46 7D 20 54 D0 53 27 56 1F 48 63 56 7A 71 1C 04 24 C4 91 0E 00 A0 2E 47 05 00 27 00 2E 00 64 00 65 00 63 00 6F 00 64 00 65 00 28 00 27 7A 6C 69 62 00 27 00 29 00

またはbase64バージョン:

I2NvZGluZzpVVEYtMTZCRQoAcAByAGkAbgB0ACd4nONSAAP1GAVMoAdG2EGNnaGFnR0XjIumHaFNHasRNTCN/nZ2WDTBNefj1Ai3EacLcWnUjyFBG5JGfSBU0FMnVh9IY1Z6cRwEJMSRDgCgLkcFACcALgBkAGUAYwBvAGQAZQAoACd6bGliACcAKQA=

プログラムの最初の「行」は、UTF-16エンコードを宣言します。ファイル全体はUTF16ですが、Pythonインタープリターは常にASCIIでコーディング行を解釈します(これはです#coding:UTF-16BE)。改行の後、UTF-16テキストが始まります。それは単にprint'<data>'.decode('zlib')、テキストがターゲットASCIIイメージの収縮バージョンである場所に相当します。ストリームにサロゲートがないことを確認するために、ある程度の注意が払われました(これはデコードを台無しにします)。


1
さて、最初の行は、私は「偉大なああ、誰かがユニコードのpythonを作った」考えさせられました
seequ

驚くばかり!UTF-32で〜35bでも同じことができますか?:)
xem 14

zip代わりにzlib1つの文字を保存できます。
シーズティマーマン14

@xem:ほとんどの文字は有効なUTF-32でなくなります(charsは<= 0x10ffffでなければなりません)。
nneonneo

1
@CeesTimmerman:実際の選択zlibではなくはzip非常に意図的です。zlib文字数は偶数です。
nneonneo

1

C#-354 332

システムを使用して;
System.IOを使用します。
System.IO.Compressionを使用します。
クラスX
{
    static void Main(string [] args)
    {
        var x = Convert.FromBase64String( "41IAA / UYBUygB0bYQY2doYWdHReMG4OhEwrUsRpRA9Pob2eHRRNccz5OjXAbcboQl0b9GBK0IWnUB0IFPXUFEjRmpRfHQUBCHOmAiwsA");
        Console.WriteLine(new StreamReader(new DeflateStream(new MemoryStream(x)、CompressionMode.Decompress))。ReadToEnd());
    }
}

少しゴルフ:

using System; using System.IO; using System.IO.Compression; class X {static void Main(){var x = Convert.FromBase64String( "41IAA / UYBUygB0bYQY2doYWdHReMG4OhEwrUsRpRA9Pob2eHRRNccz5OjXStreamNewメモリー(x)、(CompressionMode)0))。ReadToEnd());}}

そこにキャラクターよりも長い変数名がまだある場合、それは実際にはゴルフではありません。またはのような不必要なものstring[] args
ジョーイ14

Dunnoはルールですが、C#には他の方法はなく、コードをコンパイルする必要があります。これは最短です。
エレスロビンソン

1
Main引数を持つ必要はありませんが、Javaとは対照的にコンパイルされます。これを削除してインライン化すると、xすでに333になります。DeflateStreamctor 内の引数間のスペースを削除することにより、別のバイトを保存できます。enumメンバーにキャストを使用できます:(CompressionMode)0、これにより324になります。したがって、それはまだ可能な限り最短ではないと主張します;
Joey

あなたは..
エレスロビンソン

1

bzip2、116

CJAMの回答を見た後、これも資格があるはずだと思いました。

$ wc -c golf.txt.bz2 
116 golf.txt.bz2
$ bzip2 -dc golf.txt.bz2

  '\                   .  .                        |>18>>
    \              .         ' .                   |
   O>>         .                 'o                |
    \       .                                      |
    /\    .                                        |
   / /  .'                                         |
jgs^^^^^^^`^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

$

これ以上の説明が必要だとは思わない。:)


1
DEFLATEでBubblegumを使用すると、77バイトになります。オンラインでお試しください!
マイル


0

Vim、99キーストローク

63i^<Esc>0R jgs<C-O>7l`<Esc>O<Esc>55I <Esc>A|<Esc>Y5PA>18>><Esc>7|R'\<Down>\<Down><Left><Left>O>><Down><Left><Left>\<Down>\<Down><Left><Left><Left>/<Up>/<Down>/<Right><Right>.'<Up>.<Right><Up>.<Right><Right><Up>.<Right><Right><Right><Up>.<Right><Right><Right><Up>.<Right><Right>.<Right><Right><Down>'<Right>.<Down><Right>'o

おそらくゴルフ可能

説明:

63i^<Esc>0R jgs<C-O>7l`<Esc>
Bottom line, 63 '^'s, replace the beginning with ' jgs', then move 7 caracters to the right and replace one character with '`'

O<Esc>55I <Esc>A|<Esc>
Above current line, add one line and insert 55 spaces, then a trailing '|'

Y5PA>18>><Esc>
Copy that line and paste it above five times. Cursor ends up in topmost line. Append '>18>>'

7|R'\<Down>\<Down><Left><Left>O>><Down><Left><Left>\<Down>\<Down><Left><Left><Left>/<Up>/<Down>/<Right><Right>.'<Up>.<Right><Up>.<Right><Right><Up>.<Right><Right><Right><Up>.<Right><Right><Right><Up>.<Right><Right>.<Right><Right><Down>'<Right>.<Down><Right>'o
Go to 7th column, enter Replace-mode, and replace spaces with golfer and golf ball trail. Arrow keys are used to move around, since it uses fewer keypresses to use the arrow keys instead of <C-o>+movement for up to three keypresses.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.