Minecraft Mirrored


51

これはカルビンです。このユーザーがPPCG Minecraft Serverチャットルームでチャットできるように、20人の担当者を取得しようとしています

正の整数を取り込むプログラムまたは関数を作成します。

整数が偶数(2、4、6、...)の場合、この正確なASCIIアート文字列を出力または返します。

                       __    __   __             __  ___
  /\  /\    |  |\  |  |     /    |  |     /\    |     |
 /  \/  \   |  | \ |  |--  |     |--\    /__\   |--   |
/        \  |  |  \|  |__   \__  |   \  /    \  |     |

整数が奇数(1、3、5、...)の場合、この正確なASCIIアート文字列を出力または返します。

                       __    __
\        /  |  |  /|  |     /    |   /  \ __ /  |     |
 \  /\  /   |  | / |  |--  |     |--/    \  /   |--   |
  \/  \/    |  |/  |  |__   \__  |__|     \/    |__  _|_

入力は常に正の整数であると仮定できます。

両方の出力の場合、オプションで、各行の「T」の右端までの任意の数の後続スペース、および/または単一の後続改行があります。各文字の間に2列のスペースがあることに注意してください。

バイト単位の最短コードが優先されます。


54
私が担当者を探している新しいユーザーだった場合、私もカルビンに名前をドロップしたいと思います;)
Geobits

13
@Geobitsそれは私です。
カルバンの趣味

52
@Geobitsいいえ、その私です。実際に自分を公開した場合、誰も賛成しないことを知っていました。
オプティマイザー

19
誰が作成したのが重要なのですか?担当者は投稿の内容に基づいてはいけませんか?
マーシュ

19
@marsh理論上、はい。現実には、人々には欠陥があります。実行するのは興味深い実験になるでしょう。受信者の違いを測定するためのいくつかのチャレンジを投稿するために、高解像度のユーザーに新しいアカウントを作成させることです。
ジオビット

回答:


23

JavaScript(ES6)、343 336 289 267 265 260バイト

ただお楽しみに... :)(46バイトをカットしてくれたXufoxに感謝します。

n=>`887141${n%2?`
98/202/05/4|3/29 1 /2|5|
 92/92/30 / 0--2|5|--/492/3|--3|
29/29/40/2013912|1|59/4|12_|_`:`3185121_
2/92/9409205/405/94|5|
 /29/2930 9 0--2|5|--94/193|--3|
/892029013912|392/492|5|`}`.replace(/\d/g,x=>+x?x<2?'__':x<9?' '.repeat(x):'\\':'|  |')

と呼ばれる、a(4)または同様。ここで試してください:

空白を2to から数字の文字列に凝縮しました8(例887= 23スペース)。次に、各数字が対応する数のスペースに置き換えられます。0を表し| |、を1表し__ます。全体として、このプログラムは結合された2つの文字列(203 + 227 = 430)よりも170バイト短いため、満足しています。:)

編集:どういうわけか、この時点で他の唯一のエントリとまったく同じ長さです。...o_o

編集2:文字列に変更n%2<1?n%2?て交換することにより、スペースを節約しました。また、2つの文字列の先頭が同じであるという事実を利用して、さらに5バイトを削減しました。

編集3: |2|ひどい多くのように見えたので、各発生をxに簡略化し、7バイト節約しました。Xufoxの提案はさらに40バイトを削減しました。

編集4: Xufoxの提案で\n、実際の改行に置き換えて、合計から6バイトを削除しました。変更x0__1(ここでは邪悪な笑い挿入)、彼は彼のエントリで行ったように、その後、すべての(ここでは、正規表現の挿入複数)の組み合わせ、余分な16のバイトを救いました。

編集5: ES6標準を使用することを選択したため、カスタムテンプレート文字列補間を使用して、最後の2バイトを削りました。


1
その番号には何かが必要です!私にはJavaScriptのないアイデアを持っていないので、完全な立方体であることに加えて、あること:-) ...あなたの答えに投票することはできません
ルイスMendo

1
どう.replace(/\d/g,d=>' '.repeat(d))
セバスチャンサイモン

1
@ETHproductionsいいね!さて、私の答えを打ち負かすことはできますか?あと9バイトだけ…;)ところで、バイトをカウントすると、gEditカウントツールを使用して289と表示されます…
セバスチャンサイモン

1
たぶん、テンプレート文字列を使用して\n、の代わりに実際の改行を作成できるようにすると、改行ごとに1バイト節約できますか?
セバスチャンサイモン

1
今、私はあなたよりも2バイト少なくなっています。= P
セバスチャンサイモン

12

Matlab、343 341

a=' -/\_|';
if mod(input(''),2)
x='003C00E00E000L0005N5000I000005550I0000I0055N4UVYO26R4004400400U005300UUXO060O060003C00C30CO00IO00UUUS060S5B54000';else
x='0I2000L0000L000E05H50C0000000555000C00C00H554UVYO26R4004400400U000250WUU006O006O0I2002I00O0I0O0C0UUU006S05BT0004';end
disp(a(reshape(dec2base(base2dec(reshape(x,[],7),36),6),4,[])-47))

入力番号はstdinから提供されます。

サンプル実行:

>> a=' -/\_|';
if mod(input(''),2)
x='003C00E00E000L0005N5000I000005550I0000I0055N4UVYO26R4004400400U005300UUXO060O060003C00C30CO00IO00UUUS060S5B54000';else
x='0I2000L0000L000E05H50C0000000555000C00C00H554UVYO26R4004400400U000250WUU006O006O0I2002I00O0I0O0C0UUU006S05BT0004';end
disp(a(reshape(dec2base(base2dec(reshape(x,[],7),36),6),4,[])-47))
1
                       __    __   __             __  ___
  /\  /\    |  |\  |  |     /    |  |     /\    |     | 
 /  \/  \   |  | \ |  |--  |     |--\    /__\   |--   | 
/        \  |  |  \|  |__   \__  |   \  /    \  |     | 

1
それはただおかしいです。+1。
rayryeng-モニカの復元15年

1
@rayryeng Yeah :-) Matlabが最大36までしかベースを許可しないのは残念です。より大きな値はかなりのバイトを節約するでしょう
ルイスメンドー

1
@LuisMendo JavaScriptソリューションの作成中に私が考えていたとおりに…
セバスチャンサイモン

JSの@Xufoxのbtoa()およびatob()関数は、それぞれbase64エンコードおよびデコードです。
クラップ

11

CJam、158の 149 145 138バイト

li2%"A+×rµ^ÅÆÿ»£ºoU#ü T^U^ÝZe<ÄÊKÞÒ£^ÛWWø5Úí§¹T^Úêer^^°^Ã}Ã^A0R2"281b7b"/
 -_\|"f=N/S3**_"_ ":T/TW%*4/zW%1m>N*1>"\/"_W%er"^W^]5OU"{i_32>T=t}/\4/zN*?

コードには印刷できない文字が含まれているため、上記ではキャレット表記を使用しています。

CJamインタプリタでオンラインで試してください。

ブラウザでパーマリンクが機能しない場合は、この貼り付けからコードをコピーできます。

実行例

$ LANG=en_US
$ xxd -ps -r > minecraft.cjam <<< 6c69322522412bd772b585c6ffbba3ba6f5523fc2054159d5a653cc4ca4bded2a39b5757f835daeda7b9549aea65721eb0837dc30130523222323831623762222f0a202d5f5c7c22663d4e2f53332a2a5f225f20223a542f5457252a342f7a5725316d3e4e2a313e225c2f225f5725657222171d354f55227b695f33323e543d747d2f5c342f7a4e2a3f
$ cjam minecraft.cjam <<< 2; echo
                       __    __   __             __  ___
  /\  /\    |  |\  |  |     /    |  |     /\    |     | 
 /  \/  \   |  | \ |  |--  |     |--\    /__\   |--   | 
/        \  |  |  \|  |__   \__  |   \  /    \  |     | 
$ cjam minecraft.cjam <<< 1; echo
                       __    __                        
\        /  |  |  /|  |     /    |   /  \ __ /  |     | 
 \  /\  /   |  | / |  |--  |     |--/    \  /   |--   | 
  \/  \/    |  |/  |  |__   \__  |__|     \/    |__  _|_

アイデア

MINECRAFT文字列(行の長さが一定になるようにパディング)を直接エンコードする代わりに、行と列が転置された「zip」バージョンをエンコードします。

改行を圧縮して削除した後、この文字列(Rと呼ぶ)をエンコードする必要があります。

   /  /  /   \    \   /  /   \    \    \         |||         ||| \    \    \ |||         |||_ -__ -_          |  / \_  __  _         |||_ - _ -  |\    \           /  /  /_  \_   \    \         |||_ - _ -         _   _|||_   

スペースの実行は多数あるため、スペーストリプレットが出現するたびに改行で置き換えます。

7つの異なる文字を持つ。これは、葉たちを(\n -/\_|)、私たちはからそれらの各番号を割り当てるので、06バイトの文字列として、我々はその後、エンコードベース7の数、の結果の配列の数字を考えます。

デコードは、上記の手順を逆にすることで機能します。

ミラーリングされた文字列は、元の文字列から作成できます。

4つの行の順序を逆にしてソリッドを交換すると、次の結果が得られます。

\        /  |  |  /|  |__   /__  |   /  \    /  |     | 
 \  /\  /   |  | / |  |--  |     |--/    \__/   |--   | 
  \/  \/    |  |/  |  |     \    |  |     \/    |     | 
                       __    __   __             __  ___

なんとなく似ていますが、行を回転させて一番下の行を一番上にする必要があります。

                       __    __   __             __  ___
\        /  |  |  /|  |__   /__  |   /  \    /  |     | 
 \  /\  /   |  | / |  |--  |     |--/    \__/   |--   | 
  \/  \/    |  |/  |  |     \    |  |     \/    |     | 

それはそれらの厄介なアンダースコアのためではなかった場合、それはそれでしょう。

元の文字列を上から下に読み、改行を無視し(したがってRを取得します)、各アンダースコア、スペースが続くスペース、アンダースコアが続く行をシフトする前に置換すると、結果は次のようになります。

                         _     _                      _ 
\        /  |  |  /|  |_    /_   |   /  \ __ /  |     | 
 \  /\  /   |  | / |  |--  |     |--/    \  /   |--   | 
  \/  \/    |  |/  |  |__   \__  |__|     \/    |__  _|_

ずっといい!あとは、最初の行の最初のスペースを削除し(最初の行のすべての下線を1文字左に移動)、ECの誤って配置された下線を1行上に移動し、Tの下線を破棄します。

コード

li2%           e# Read an integer from STDIN and push its parity.

"A+×rµ^ÅÆÿ»£ºoU#ü T^U^ÝZe<ÄÊKÞÒ£^ÛWWø5Úí§¹T^Úêer^^°^Ã}Ã^A0R2"

281b7b         e# Convert the byte string from base 281 to base 7.
"/\n -_\\|"f=  e# Replace each digit by its corresponding character.
N/S3**         e# Turn linefeeds into three spaces.
_              e# Copy the resulting string.
"_ ":T         e# Define T.
/TW%*          e# Replace occurrences of T with T reversed.
4/z            e# Split into chunks of length 4 and zip.
W%1m>          e# Reverse and rotate the rows.
N*             e# Join the rows, separating by linefeeds.
1>             e# Discard the first character.
"\/"_W%er      e# Swap the soliduses.
"^W^]5OU"      e# Push the string that corresponds to [23 29 53 79 85].
{              e# For each character:
  i            e#   Push its code point.
   _32>        e#   Push 1 iff the code point is larger than 32.
       T=      e#   Select the element at that index from T = "_ ".
         t     e#   Replace the element at the code point's index with that char.
}/             e#
\              e# Swap the partially generated MINECARFT string on top.
4/z            e# Split into chunks of length 4 and zip.
N*             e# Join the rows, separating by linefeeds.
?              e# Select the first string iff the input was odd.

どのように機能しますか?
アナトリグ

@anatolyg回答を編集しました。
デニス

10

Pyth-182バイト

ベースエンコーディングアプローチを使用します。インデックス作成はPythでモジュール式であるため、奇数の場合でも何もする必要はなく、正しい順序で並べて使用するだけ@Qです。ボーナスとして、これは負の数でも機能します。

@mjbcs@L"_| /\\-"jCd6 56,"EWbòH\x00B)þK٣ĭIOõìæ«FFãbÐÄBØ\«¼,vã<RN>­º:w÷ò¾<éifP9e|ÉWf!FÔèà""EWbòH\x00B)þOHÿ$@ËþçX'D[¾«Â?°´=&£üá ¹»ázH×Æz3äkÕg{`!|ðY!ðGV"Q

最初のコードだけをエンコードしてから、スラッシュを反転して切り替えようとしましたが、最初と最後の行は難しすぎました。

コードに実際のヌルバイトを入れることで6バイト節約できましたが、それは面倒です。

こちらからオンラインでお試しください

出力ボックスが小さすぎて折り返されているため、オンラインでは非常に悪く見えます。dev-consoleをいじってをに変更するcol-md-5ことをお勧めしcol-md-7ます。


2つの文字列には重複した文字の束があり、そのように 11バイトを削除できます。
PurkkaKoodari

8

JavaScript(ES6)、 312285281272270263262、260

以前の編集については、編集履歴を参照してください。

編集5:変換で、関連付けられている番号-(現在は0)と空白(現在は1)を切り替えました。結果のブロックでは、数字1、2、および3は使用されなくなりました。これにより、不足している数字の配列を使用することができました。

編集6:配列リテラルを改善しました。私は以前にこれを試しましたが、数字の代わりに文字列として使用し77777これを逃したことに気づきました。

編集7:「ゴルフコード」は、質問で指定されている機能であり、f=この仕様を満たす必要はありません。したがって、それを削除して、2バイトを節約します。


Firefox 39で実行可能:

// Testing:

f=

// Golfed code:

n=>[...`11111113ss17ss1pp11117pp3ppp
97dj3dj7822j78z213e17z3v8397gm78212
7f3kf3k1z27k7z20021200k17fppk1z001z
d7983987j2287jz2ss1lss2aabj3d7987j2aa3aza`.replace(/[123]/g,x=>[,777,'77z',77][x])].map(a=>isNaN(i=parseInt(a,36))?a:'- /\\_|'[n%2?i%6:~~(i/6)]).join``

// Testing:

;document.body.appendChild(document.createElement('pre')).innerHTML=f(0);
document.body.appendChild(document.createElement('pre')).innerHTML=f(1);
document.body.appendChild(document.createElement('pre')).innerHTML=f(2);
document.body.appendChild(document.createElement('pre')).innerHTML=f(35);

これは、基数6の数値システムに基づいており、各ASCII文字は数値を表します。

"-": 0
" ": 1
"/": 2
"\": 3
"_": 4
"|": 5

次に、各ASCII文字列の数値表現を組み合わせました。例えば:最初のASCII文字列が含まれる場合、/一箇所と他方が含ま\同じ位置の位置となること、32(ベース6、2010進数)。これを基数36に変換すると(2つの基数6 ごとに1つの基数36 を取得するため)、が得られます。k

これらはすべて事前に行われ、関数は基本的にこのプロセスを元に戻します。

これで、2つのJavaScript回答には、それぞれ1つの回答があり、同じバイトカウントを持ちます…


PS:自分自身へのメモと他の人への参照として、これは私が使用したコードです:

// 1. ASCII here
a=`|\\-/ _`;

// 2. ASCII here
b=`/|\\_ -`;

// Note: the ASCII strings’ backslashes have to be escaped!

[...a]
  .map((c,i)=>parseInt((c+b[i])
    .replace(/-/g,'0')
    .replace(/ /g,'1')
    .replace(/\//g,'2')
    .replace(/\\/g,'3')
    .replace(/_/g,'4')
    .replace(/\|/g,'5'),6))
  .map(c=>isNaN(c)
    ?`
`
    :c.toString(36))
  .join``
// Returns "wn3g7o", which is then put into the function as the block at the top.

2
まあ、なぜ~NaN == -1ですか?!
セバスチャンサイモン

ASCII文字列を1行ずつ反転させて、さらに後続のスペースを削除することも考えました(置換で2バイトも節約されました:[…][x]+7777もう文字列である必要はありません)。価値がなかった…
セバスチャンサイモン

一年前に最初に読んだとき、私はこれを理解していませんでしたが、今ではテクニックを見ることができます。一つに文字のすべてのペアを組み合わせることで、非常に賢いです:-)私が考えるに、置き換えることができるisNaN1+し、~~(i/6)i/6|0
-ETHproductions

ハハ、私は今1バイト進んでいます;)
ETHproductions

@ETHproductionsさて、ちょっと待ってください... f=最初はあなたが持っていないことに気づきましたが、私は持っています。また、それを削除することも認められているので、自分で削除することにしましたが、今は260バイトです。;)
セバスチャンサイモン

6

CJam、136バイト

"^ASÓ8¥È÷^K¯¾/^HÕ2^ÄË1jÒÝ^D^Á0îl;)HR§û|^Ê^Þ^ÇÝÅ^ßNlz^TfÑ^Øj>À^à 4#bH\¿^Äî·íì^E^A~(¿ø³(ú´,^È(¡j>è?#'»vçPïju87)×"
265b8b[S9*'|3*+S2*]"/-_\| "+f=s4/56/ri=zN*

コードには印刷できない文字が含まれているため、上記ではキャレット表記を使用しています。

改行は、「読みやすさ」のみを目的としています。CJamインタプリタでオンラインで試してください。

ブラウザでパーマリンクが機能しない場合は、この貼り付けからコードをコピーできます。

実行例

$ LANG=en_US
$ xxd -ps -r > minecraft.cjam <<< 220153d338a5c8f70bafbe2f08d53284cb316ad2dd048130ee6c3b294852a7fb7c8a9e87ddc59f4e6c7a1466d1986a3ec08320342362485cbf84eeb7edec05017e28bff8b328fab42c8828a16a3ee83f2327bb76e750ef6a75383729d7223236356238625b53392a277c332a2b53322a5d222f2d5f5c7c20222b663d73342f35362f72693d7a4e2a
$ cjam minecraft.cjam <<< 2; echo
                       __    __   __             __  ___
  /\  /\    |  |\  |  |     /    |  |     /\    |     | 
 /  \/  \   |  | \ |  |--  |     |--\    /__\   |--   | 
/        \  |  |  \|  |__   \__  |   \  /    \  |     | 
$ cjam minecraft.cjam <<< 1; echo
                       __    __                        
\        /  |  |  /|  |     /    |   /  \ __ /  |     | 
 \  /\  /   |  | / |  |--  |     |--/    \  /   |--   | 
  \/  \/    |  |/  |  |__   \__  |__|     \/    |__  _|_

アイデア

このアプローチは、他の回答のアプローチと似ていますが、はるかに単純で、(残念ながら)少し短くなっています。

次の文字列をエンコードする方法を探します。

                       __    __   __             __  ___                       __    __                         
  /\  /\    |  |\  |  |     /    |  |     /\    |     | \        /  |  |  /|  |     /    |   /  \ __ /  |     | 
 /  \/  \   |  | \ |  |--  |     |--\    /__\   |--   |  \  /\  /   |  | / |  |--  |     |--/    \  /   |--   | 
/        \  |  |  \|  |__   \__  |   \  /    \  |     |   \/  \/    |  |/  |  |__   \__  |__|     \/    |__  _|_

各行のパディング(行の長さを一定にするため)、圧縮(行と列の入れ替え)、および改行の削除後、この文字列をエンコードする必要があります。

   /  /  /   \    \   /  /   \    \    \         |||         ||| \    \    \ |||         |||_ -__ -_          |  / \_  __  _         |||_ - _ -  |\    \           /  /  /_  \_   \    \         |||_ - _ -         _   _|||_    \    \    \   /  /   \    \   /  /  /           |||         |||   /  /  /   |||         |||_ -__ -_          |  / \_  __  _         |||  -_  -_  /| /           \    \  _ \ _ /  /  /           |||  -_  -_           _ |||   _

我々は、各サブストリングを置き換えるだろう" |||"0、それぞれのサブストリング" "1との文字"/-_\| "27バイトの文字列として符号化することができる基地8桁のアレイを形成します。

デコードは、上記の手順を逆にすることで機能します。

コード

"^ASÓ8¥È÷^K¯¾/^HÕ2^ÄË1jÒÝ^D^Á0îl;)HR§û|^Ê^Þ^ÇÝÅ^ßNlz^TfÑ^Øj>À^à 4#bH\¿^Äî·íì^E^A~(¿ø³(ú´,^È(¡j>è?#'»vçPïju87)×"

265b8b        e# Convert from base 265 to base 8.
[S9*'|3*+S2*] e# Push ["         |||" "  "].
"/-_\| "+     e# Concatenate to push ["         |||" "  " '/' '-' '_' '\' '|' ' '].
f=            e# Select the elements that correspond to the base 8 digits.
s4/           e# Flatten and chop into chunks of length 4 (columns).
56/           e# Chop into two subarrays of 56 columns.
ri            e# Read an integer from STDIN.
=             e# Select the corresponding subarray.
              e# Arrays wrap around, so [A B]0= eq. [A B]2= and [A B]1= eq. [A B]3=.
zN*           e# Zip and join the rows, separating by linefeeds.


4

ラケット、 443 434 386バイト

(require file/gunzip net/base64)(define(f n)(define o(open-output-bytes))(gunzip-through-ports(open-input-bytes(base64-decode #"H4sIAK8Lt1UAA22Q3Q3AIAiE352CBcwtRHLpHg7f8lubahRUDuVD5DjItrH9REgOEWgskfVMDeca1GWcSmN2WFBtlUTdzdmSOT0BpEpGnjxUAf2RmvPq1OyKGF6N5V1nvgYcWjeod/Hj8JotBRtH0qM48OeoWrBxJH23KL/dOMh4IDXe8MUbT1AqtKkBAAA="))o)(list-ref(string-split(get-output-string o)"a")(modulo n 2)))

キックのためだけに。

(require file/gunzip net/base64)
(define (f n)
  (define o (open-output-bytes))
  (gunzip-through-ports
   (open-input-bytes
    (base64-decode #"H4sIAK8Lt1UAA22Q3Q3AIAiE352CBcwtRHLpHg7f8lubahRUDuVD5DjItrH9REgOEWgskfVMDeca1GWcSmN2WFBtlUTdzdmSOT0BpEpGnjxUAf2RmvPq1OyKGF6N5V1nvgYcWjeod/Hj8JotBRtH0qM48OeoWrBxJH23KL/dOMh4IDXe8MUbT1AqtKkBAAA="))
   o)
  (list-ref (string-split (get-output-string o) "a") (modulo n 2)))

注意:#lang racketDrRacketで実行するには、このラインが必要な場合があります。


1
正確に100バイトオフ。
user253751

1
いい加減にして!
オプティマイザー

私はこのアプローチを放棄しない限り、それが起こるとは思わない。
ウィニー

base64文字を使用する必要はありません。gunzipが送信する生のユニコード文字だけを使用できます
MilkyWay90

4

05AB1E179の 177 176 バイト

"
 -/\_|"•ÿ%Ò´Åçδ’Üå·Äm…½µƵδø5)ǝ®∊∊Ý®þCĀ₆áÝoþ²ši¤Æ%ßû¤%¦Ï≠θĀ5¾₃ʒŸQ>Šn°η8±8d¸6':…é’b…÷‡ö©«&‡huѦ%λÁZÊJÌ₅ú∞°»ó₄ι«ÓW´×ƒ×ùqiò2D1āwθóÆ˲’
Tι#и∊²ý‚KʒFæΩZºÿÏ";ηiʒæøвøïž‚è°ć½∊•7вèJ2äIè

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

説明:

•ÿ%Ò´Åçδ’Üå·Äm…½µƵδø5)ǝ®∊∊Ý®þCĀ₆áÝoþ²ši¤Æ%ßû¤%¦Ï≠θĀ5¾₃ʒŸQ>Šn°η8±8d¸6':…é’b…÷‡ö©«&‡huѦ%λÁZÊJÌ₅ú∞°»ó₄ι«ÓW´×ƒ×ùqiò2D1āwθóÆ˲’
Tι#и∊²ý‚KʒFæΩZºÿÏ";ηiʒæøвøïž‚è°ć½∊•

圧縮された数です:

669530978249988431396781816197276307266403407188962925862194299697873953319419752813246251351417090709766331736351616127424760949905163941809417778114834562736028512279028673309866195447599979612590918985644583407413903825059942009898007791080822453262749380245316127735585410697701790387188175543639634091138422651942833048832372950797322005040161476426127678479662921265139425

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

リストとしてBase-7に変換するため、数字のリストを取得します。

[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,5,1,1,1,1,5,5,1,1,1,5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,5,5,1,1,5,5,5,0,1,1,3,4,1,1,3,4,1,1,1,1,6,1,1,6,4,1,1,6,1,1,6,1,1,1,1,1,3,1,1,1,1,6,1,1,6,1,1,1,1,1,3,4,1,1,1,1,6,1,1,1,1,1,6,0,1,3,1,1,4,3,1,1,4,1,1,1,6,1,1,6,1,4,1,6,1,1,6,2,2,1,1,6,1,1,1,1,1,6,2,2,4,1,1,1,1,3,5,5,4,1,1,1,6,2,2,1,1,1,6,0,3,1,1,1,1,1,1,1,1,4,1,1,6,1,1,6,1,1,4,6,1,1,6,5,5,1,1,1,4,5,5,1,1,6,1,1,1,4,1,1,3,1,1,1,1,4,1,1,6,1,1,1,1,1,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,5,1,1,1,1,5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,4,1,1,1,1,1,1,1,1,3,1,1,6,1,1,6,1,1,3,6,1,1,6,1,1,1,1,1,3,1,1,1,1,6,1,1,1,3,1,1,4,1,5,5,1,3,1,1,6,1,1,1,1,1,6,0,1,4,1,1,3,4,1,1,3,1,1,1,6,1,1,6,1,3,1,6,1,1,6,2,2,1,1,6,1,1,1,1,1,6,2,2,3,1,1,1,1,4,1,1,3,1,1,1,6,2,2,1,1,1,6,0,1,1,4,3,1,1,4,3,1,1,1,1,6,1,1,6,3,1,1,6,1,1,6,5,5,1,1,1,4,5,5,1,1,6,5,5,6,1,1,1,1,1,4,3,1,1,1,1,6,5,5,1,1,5,6,5]

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

è文字列のインデックスの各桁"\n-/\_|"、そしてJその後、私たちに次のようになります一緒にリスト全体を、結合します。

                       __    __   __             __  ___
  /\  /\    |  |\  |  |     /    |  |     /\    |     |
 /  \/  \   |  | \ |  |--  |     |--\    /__\   |--   |
/        \  |  |  \|  |__   \__  |   \  /    \  |     |                       __    __                        
\        /  |  |  /|  |     /    |   /  \ __ /  |     |
 \  /\  /   |  | / |  |--  |     |--/    \  /   |--   |
  \/  \/    |  |/  |  |__   \__  |__|     \/    |__  _|_

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

文字列を2つの部分に分割します。
入力を取得し、(自動ラップアラウンドで)インデックスを作成して、2つの部分のいずれかを取得し、暗黙的に出力します。

大きなおかげ@MagicOctopusUrnのASCII圧縮機の圧縮番号とベース7 transliteralを生成するために使用しました。オンラインでお試しください。(その後、スタック上の文字列と数字を逆にして、в代わりにBそれを数字のリストにし、で文字列にインデックスを付けることにより、音訳がゴルフされましたè


3

C、251バイト

k(w){char*f="_-/\\|]^^^\0<&*&)&3&(&&WX&J&*&\0t_&/&3&\0`);35)I5M\0a).@7).8-;./.-\0j()(0(1+4()(*+4+4()(04+",*o=f+4,m[229]="",i=7,c=10,p;for(memset(m,32,228);i;c=*f++^(w%2&i--/2==2)*115)for(p=0;*++o;m[(w%2?4-i/6-p/57:p/57)*57+p%57]=c)p+=*o-37;printf(m);}

これは、kパラメータを受け取り、メッセージをに出力する関数ですstdout

より読みやすいバージョン:

k(w)
{
    char*f="\n_-/\\|", // characters to fill in
        *o= " "// for each character, the list of positions to put it in, difference-encoded
        "]%%^^^\0"                  // for '\n' (newline)
        "<&*&)&3&(&&WX&J&*&\0"      // for '_' (underscore)
        "t_&/&3&\0"                 // for '-' (minus)
        "`);35)I5M\0"               // for '/' or '\' (slashes)
        "a).@7).8-;./.-\0"          // for '\' or '/' (slashes)
        "j()(0(1+4()(*+4+4()(04+",  // for '|' (vertical bar)
        m[229]="",  // message to generate
        i, // index of character, running 7...1
        c, // current character to fill in
        p, // where to place the character
        y; // y-coordinate of the character

    memset(m,32,228); // fill the message with spaces
    for(i=7;--i;)
    {
        c=*f++;
        c^=~w%2|i/2^1?0:115; // flip the direction of slashes, if needed
        for(p=0;*++o;)
        {
            p+=*o-37; // jump to next position
            y=p/57; // extract the y-coordinate
            y=w%2?4-i/5-y:y; // flip the y-coordinate, if needed
            m[y*57+p%57]=c; // place the character
        }
    }
    printf(m); // print the message
}

最初に、空のメッセージ(スペースで埋められます)を準備します。各文字(|または-)には、その文字を配置する位置のリストがあります。

逆さまのバージョンを印刷する必要がある場合、各位置について、位置が反転します。つまり、その垂直座標y4-yまたは3-y(文字がアンダースコアかどうかに応じて)に置き換えられます。また、スラッシュの方向は反転します-これはXORwith によって実行され115ます。

この制御構造は、改行文字を配置するためにも使用されます-明示的なループを記述するよりも、リストにさらに4つの座標を追加する方が効率的です。


このシステムにはいくつかの小さな不具合があります。まず第一に、最後の文字Tは、反転バージョンでは少し異なります。

___ 
 |    |
 |    |
 |   _|_

正しく出力するには、コードは|文字の後に_文字を配置する必要があります。

さらに、制御文字列にASCII文字のみが含まれていることを確認するために、エンコードしました。

  • 位置自体の代わりに位置間の差を記録します-これにより範囲が縮小されます
  • 37ASCII範囲32 ... 127にシフトするために、文字列内の数字が追加されています。小さい数字を追加することもできますが37、文字列リテラル内でエスケープする必要がある"やなどの文字は避け\ます。
  • 2つの数字は127を超えていました。たとえば、最初の-文字は137の位置に表示されます。これを考慮して、-別の位置(79)に人工文字を追加しました|

別の面白いことはputs、文字列を出力するために使用できなかったことです-これは余分な末尾の改行を生成します。だからprintf代わりに使った。

また、数57はゴルフコードに4回表示されます。一見長い巻き線の表現(w%2?4-i/6-p/57:p/57)*57+p%57により、変数を削除yしてコードを短くすることができます。


Cはそのような「常にこのコードでこのコンストラクトを書く」ような種類の言語のようです...これ...は...非常に...ええと... +1;)
clap

3

Perl、292 259 246バイト

$_="Svv __SS__S nnSv nnSnnn
i kjSkj hw|j h|wS /SwrhSi pq hwS |
 mSlmSlS |S| l |S|--wS |--lSSmnnlS |--S |
k ihSih jw|h j|S|__S g__S|oosjSk ih jS|ooSo|o";s/v/SSSSS/g;s/w/S|S/g;s/S/  /g;<>&1?y"g-s"\\/\\  /\\ ___ |":y"g-s"\\  \\/\\/_ /\\| ";print $_

2つの文字列がほとんど同じ(IEとC全体)であるという事実を利用して、表示されるバージョンに応じて異なる文字列を表示します。例えば、mは「右上がりの文字列にはスラッシュ、逆さまの文字にはバックスラッシュ」を意味します。音訳置換を行って、正しい文字を表示します。スペースも、文字列置換を使用してエンコードされたランレングスです。

複数行:

$_="Svv __SS__S nnSv nnSnnn
i kjSkj hS|S|j h|S|SS /SS|SrhSi pq hS|SS |
 mSlmSlS |S| l |S|--S|SS |--lSSmnnlS |--S |
k ihSih jS|S|h j|S|__S g__S|oosjSk ih jS|ooSo|o";
s/v/SSSSS/g;
s/w/S|S/g;
s/S/  /g;
<>&1?
    y"g-s"\\/\\  /\\ ___ |"
:
    y"g-s"\\  \\/\\/_ /\\| ";
print $_

アイデア:

出力には22の一意の列しかないため、56文字のルックアップとともに、0〜17の範囲の22 * 4 = 88文字(すべての「二重意味」文字)として格納できるはずです。列ごとに0〜21の範囲の1つのエントリを持つテーブル。理論的には、これは100バイト未満でエンコードできますが、デコードするためのより複雑なコードのため、これを最終的に成功させるのは困難です。


2
数バイト削ることができます-y / foo / bar /はtr / foo / bar /と同義語です
ryanm

2

CJAM、206

2つのascii画像はbase-216でエンコードされており、1バイト= 3文字です。

" _\/|-":A;S7*"!D!D"+:B;qi2%{B"h  °°¤8 2 °2,J° °"",4# °³8=Ô° Ó\"# Ó °""\"z °Â89D-D·° z ·!¶"}{B"'    '!J"+"#h °¼88 2 °°  ° °""2/\" °²8=Ô° Óh#L Ó °""  h°°9D-D°,2 h° °"}?]{{i32-__36/A=@6/6%A=@6%A=}/N}/

ここでテストしてください


2

PowerShellの、275の 253 248バイト

param($n)$d='8 \83484/7/484302 92984308 92918--118--128||6//0\16116129558| \/ |8 /02083\6/10018/6\302 955776_71 9_7_'
'8\,__,777,/6 /,\6/6\,_8 -- _,88,888,  ,||||||'-split','|%{$d=$d-replace+$i++,$_}
0..3|%{$l=$_;-join$d[(0..55|%{$_*8+$l*2+$n%2})]}

テストスクリプト:

$f = {

param($n)$d='8 \83484/7/484302 92984308 92918--118--128||6//0\16116129558| \/ |8 /02083\6/10018/6\302 955776_71 9_7_'
'8\,__,777,/6 /,\6/6\,_8 -- _,88,888,  ,||||||'-split','|%{$d=$d-replace+$i++,$_}
0..3|%{$l=$_;-join$d[(0..55|%{$_*8+$l*2+$n%2})]}

}

&$f 2
&$f 1

出力:

                       __    __   __             __  ___
  /\  /\    |  |\  |  |     /    |  |     /\    |     |
 /  \/  \   |  | \ |  |--  |     |--\    /__\   |--   |
/        \  |  |  \|  |__   \__  |   \  /    \  |     |
                       __    __
\        /  |  |  /|  |     /    |   /  \ __ /  |     |
 \  /\  /   |  | / |  |--  |     |--/    \  /   |--   |
  \/  \/    |  |/  |  |__   \__  |__|     \/    |__  _|_

主なアイデア

圧縮方法は、Dennis♦ によるCJamの拡張方法です。

  1. 圧縮前に文字列を作成します。
    • 両方のASCIIアートの最初の列の文字、次に
    • 2番目の列の文字、次に
    • 3列目の文字など...
  2. 10個の連続した置換を使用して圧縮します(Powershellは文字列として0..9の数字を使用できるため、これにより圧縮解除アルゴリズムが短くなります。置換はブルートフォースによって検出されました。)

圧縮用のスクリプト:

$src =
"                       __    __   __             __  ___", # line1, art1
"                       __    __                         ", # line1, art2
"  /\  /\    |  |\  |  |     /    |  |     /\    |     | ", # line2, art1
"\        /  |  |  /|  |     /    |   /  \ __ /  |     | ", # line2, art2
" /  \/  \   |  | \ |  |--  |     |--\    /__\   |--   | ", # line3, art1
" \  /\  /   |  | / |  |--  |     |--/    \  /   |--   | ", # line3, art2
"/        \  |  |  \|  |__   \__  |   \  /    \  |     | ", # line4, art1
"  \/  \/    |  |/  |  |__   \__  |__|     \/    |__  _|_"  # line4, art2

$z=-join(0..$src[0].Length|%{
    $p=$_
    $src|%{$_[$p]}
})
$z

圧縮前の文字列は次のとおりです。

   \  /     /\    /    \  \    /    \/      /\    /    \  \    /    \/     /  \                   ||||||                  ||||||  \    /    \/     /  \   ||||||          ||||||__  --____  --__                    ||    //  \\__    ____    __                  ||||||_   -- __   -- _  | \/ |   /  \                    \  /     /\  /__  \  \__  /    \/     /  \                   ||||||_   -- __   -- _                _      __ ||||||_      _

あなたの答えの説明は、おそらく私のすべての答えを合わせたものよりも多くの努力を注いだでしょう!+1
MilkyWay90

1

SAS、442バイト

%macro a(b);&b=tranwrd(&b,put(i,1.),repeat('A0'x,i));%mend;%macro b(z);length a b c d$99;if mod(&z,2)then do;a='992__3__';b='\7/1|1|1/|1|4/3|2/1\0__0/1|4|';c='0\1/\1/2|1|0/0|1|--1|4|--/3\1/2|--2|';d='1\/1\/3|1|/1|1|__2\__1|__|4\/3|__1_|_';end;else do;a='992__3__2__65__1___';b='1/\1/\3|1|\1|1|4/3|1|4/\3|4|';c='0/1\/1\2|1|0\0|1|--1|4|--\3/__\2|--2|';d='/7\1|1|1\|1|__2\__1|2\1/3\1|4|';end;do i=0to 9;%a(a)%a(b)%a(c)%a(d)end;put a/b/c/d;%mend;`

ゴルフ以外:

%macro a(b);
  &b=tranwrd(&b,put(i,1.),repeat('A0'x,i));
%mend;

%macro b(z);
length a b c d$99;
if mod(&z,2)then do;
  a='992__3__';
  b='\7/1|1|1/|1|4/3|2/1\0__0/1|4|';
  c='0\1/\1/2|1|0/0|1|--1|4|--/3\1/2|--2|';
  d='1\/1\/3|1|/1|1|__2\__1|__|4\/3|__1_|_';
end;
else do;
  a='992__3__2__65__1___';
  b='1/\1/\3|1|\1|1|4/3|1|4/\3|4|';
  c='0/1\/1\2|1|0\0|1|--1|4|--\3/__\2|--2|';
  d='/7\1|1|1\|1|__2\__1|2\1/3\1|4|';
end;
do i=0to 9;
  %a(a)
  %a(b)
  %a(c)
  %a(d)
end;
put a/b/c/d;
%mend;

テスト:

data a;
  %b(1)
  %b(2)
  %b(0)
  %b(35)
run;
                       __    __
\        /  |  |  /|  |     /    |   /  \ __ /  |     |
 \  /\  /   |  | / |  |--  |     |--/    \  /   |--   |
  \/  \/    |  |/  |  |__   \__  |__|     \/    |__  _|_
                       __    __   __             __  ___
  /\  /\    |  |\  |  |     /    |  |     /\    |     |
 /  \/  \   |  | \ |  |--  |     |--\    /__\   |--   |
/        \  |  |  \|  |__   \__  |   \  /    \  |     |
                       __    __   __             __  ___
  /\  /\    |  |\  |  |     /    |  |     /\    |     |
 /  \/  \   |  | \ |  |--  |     |--\    /__\   |--   |
/        \  |  |  \|  |__   \__  |   \  /    \  |     |
                       __    __
\        /  |  |  /|  |     /    |   /  \ __ /  |     |
 \  /\  /   |  | / |  |--  |     |--/    \  /   |--   |
  \/  \/    |  |/  |  |__   \__  |__|     \/    |__  _|_

それらを入力ブロックに入れることでコードを少し節約できるかもしれませんが、それはマクロをデータステップごとに一度しかできないという制限を追加します。これはマクロとしてそれを書く精神に違反すると感じます。(そして、データステップで入力を取得するためのプロンプトを追加すると、さらに文字が追加されると思われます)。


1

bash、247バイト

(($1%2)) && c=tail || c=head
base64 -d <<<H4sIAF/3uFUCA31Q2w3AIAj8ZwoWMLcQyS3i8JWXtWlTI6BwPA7Vz0Nunc9HhKSowlJU57qWJjBoZ/4a41o8aC4NsTBjbMgYkQDStCIrDz3AbmRuYjpzPTOGG5P9/gmKtQddFy8eMbOn4Khb7NE88ObRs+DgUez3iqrtwYPMAoWJhU/KBeJFPOCqAQAA | zcat | $c -n4

文字列は連結され、gzipされます。


1

PHP、225バイト

glyい、総当たりのソリューション。

echo str_split(gzinflate(base64_decode('dZDdDcAgCITfnYIFzC1Ecos4fOW3Nm2NgsohfIp8DrJtbB8RkkMEGktk7anhXIO6jFNpzA4Lqq2SqLs5WzKnJ4BUycjOQzXQhdScd6dmV8Rwa7rqP9/QukE9ixeGt2wpODASHoWBN0a1ggMj4fuHsuyBQcYDqfH/XrwA')),224)[$argv[1]%2];

表示する連結文字列を圧縮してからbase64でエンコードしました。このコードは、224文字ごとにデコード、解凍、分割します。最初の文字列は末尾に改行のない224文字で、2番目の文字列は201文字です(その後に改行もありません)。コマンドライン引数($argv[1]%2)のパリティは、によって生成される配列のインデックスとして使用されstr_split()ます。


1

Haskell、138バイト

m x=do
 h<-readFile"a"
 return$take 225.drop(225*mod x 2)<$>find((==h).hash.pack)(replicateM 425"/\\|_- ")

これはちょっとしたハックです。私は2つのMinecraftのテキストの連結のSHA256ハッシュを強引に実行し、それらを別々に分割し、パラメータxに基づいて適切なテキストを選択しています。これは非常に非現実的であり、リアルタイムで計算することはできません。また、私が知っているすべての方法で衝突が発生する可能性もあります。

Haskellは文字列にそのハッシュのASCII表現を含めることができないため、「a」というファイルからそれを読み取っており、そのためにスコアに32バイトを追加しています。

  • readFileとpackはData.ByteString.Char8からのものです
  • ハッシュはCrypto.Hash.SHA256からのものです

説明:

replicateM 425"/\\|_- "

425文字(両方のMinecraftテキストの長さを組み合わせた)の文字 "/ \ | _-"のすべての組み合わせのリストを作成します

find((==h).hash.pack)

ハッシュに一致する最初のものを選択します

take 225.drop(225*mod x 2)

最初のテキストの長さは225文字で、もう1つのテキストは200文字です。


138ではなく106バイト

私の説明を参照してください。32バイトの長いファイルを読み取っているので、32バイトを追加しました
-BlackCap

1

Javascript(ES6)、403 296バイト

(私の以前の回答から移動しました)新しい方法を試してください:

n=>`55555559Å9Å${n%2?`55555558556776}}5Y75Y¥Æ75786¡YAA[7ćA5Fï5¡YFéA8Y§5}\x83AEÅKÅ\x99}5§5\x999\x95`:`Q5555Q9Ý>6¡77¡}}5Y7756¡75768Y¡AA£7ćA5Fû5u¡FéAY55¡}}­EÅKÅ}G;5¡}5}`}`.replace(r=/./g,x=>(163+x.charCodeAt()).toString(6).slice(1)).replace(r,x=>' /|\\_-'[x]).match(/.{56}/g).join`
`

印刷できない文字がいくつかあることに注意してください。これらは、例えばに置き換えられました\x83

エンコード自体は他のエンコードよりも約40バイト短くなりますが、デコードプロセスはより複雑です。他の人がテキストをエンコードするために使用したbase-216システムを使用しました。参考のために、私が使用したコードは次のとおりです。

// normal MINECRAFT
a='00000000000000000000000440000440004400000000000004400444'+
  '00130013000020023002002000001000020020000013000020000020'+
  '01003100300020020302002550020000025530000144300025500020'+
  '100000000300200200320024400034400200030010000300200000200';

// upside-down MINECRAFT
// un-comment this one to run it
/*
a='00000000000000000000000440000440000000000000000000000000'+
  '30000000010020020012002000001000020001003044010020000020'+
  '03001300100020020102002550020000025510000300100025500020'+
  '003100310000200210020024400034400244200000310000244004240';
*/

console.log(a.replace(/.../g,x=>String.fromCharCode(parseInt(b[i],6)+53)));

これは基本的にASCIIテキスト(ベース6に事前変換済み)を取得し、それ自体を3倍にしてベース216に変更します。次に、53が追加され、ほとんどの非印刷文字が削除されます。

提案を歓迎します!


元の403バイトコードは次のとおりです。

a=n=>{y=[' ','/','|','\\','_','-'],x=`55555559Å9Å${n%2?`55555555¡55Y}}eA5;5};GÝY}5}¡k;77;} 757Ĉ5G;7ć75§H5AB77Ý8ÝEÑ5H5EÅÕ`:`Q5555Q9Ý6¡k5}\u008FAA5;5}}5k5}5}Y§G77G} 757Ċ5?×7ć7;55GAAI7Ý8ÝA865GA5A`}`;b=x.split('').map(x=>x.charCodeAt(0)-53);for(c=[],i=b.length;i--;){c[i]=b[i].toString(6);while(c[i].length<3)c[i]='0'+c[i]}d=c.join('').replace(/\d/g,x=>y[x]).split('');d[56]=d[112]=d[168]=`
`;return d.join('')};

使用するforループ、whileループ、一度だけ使用された4つの変数、および簡単なもののために長いアルゴリズムのトンを。少年、私は改善しました...


あなたはおそらく完全に削除しy=[' ','/','|','\\','_','-'],、代わりにy[x]書き込むことができます' /|\\_-'[x]。=)
セバスチャンサイモン

@Xufox私はそれをやったことがあり、全部で107バイトのゴルフをしました!
ETHproductions

0

Python、312バイト

def y(b):
 x=int(['4vwhclv10tuk4z18gf73aimn6zvwkrhxekphfn1lxocj9ezchd1cd1cv97p3f6k12s8hcjznnm5iq3om4vgxvugp3makgu4n3f6qxvdrtl4c0lva12hwt','8uzwdylhtrf6oqnwnck8pfxu25m5844tuo2700v3zoeuvossx1b47rnwyrmqodau3feu3spi9jydhyxvntv48vojx9iq9af78wufzn1'][b%2],36);x<<=69;s="";t=" /\\-|_\n"
 while x:s+=t[x&7];x>>=3
 print s

関数は、intを指定して出力を出力します


ええ、私はちょうどそれをさらに圧縮するきちんとした方法を見ています
ブルー

これはどのように作動しますか?
オリバーNi

base-36ですか?しかし、それが16598125653940296495007405984048067937906981182427207589486265398555496561913976121109917896233762115477615438181875147062369253802653987802486539858466848179256705775331854915993645
Oliver Ni

基本的に、2つの結果をリストに保存し、モジュラス関数を使用して正しい結果を取得します。次に、考えたとおりにベース36からデコードします。2の大きな累乗であるため、>> 69を実行していくつかの文字を削除しました。次に、基本的な変換関数を使用して、正しい出力に変換します。
ブルー

0

C、321バイト

繰り返しと文字インデックスを文字列にエンコードしました。

main(n,v,p,c)char**v,*p,*c;{c=" _/\\|-\n";for(p=atoi(v[1])%2?"8@8iXivs8rhththrthtPrXt`rhspiprhtPtvpshrshr`thtprpthtmhtPtmrXshr`tm`tvhsrhsrXthtrhthti`sihtitPsrXtihqtq":"8@8iXi`i8PihavhrshrsXthtshthtPrXthtPrsXtPtvprhsrhs`thtpspthtmhtPtmsXris`tm`tvr8shththsthti`siht`shrXshtPtw";*p;p++)for(n=*p/8^15;n--;)putchar(c[*p&7]);}

0

Python 3、486 533 612

r=str.replace;m,p=r(r(r('''YYYYY   __YA AYY   A___
  /\  /\YX\  X Y/YX Y/\Y| Y|
 /  \/  \   X \ X--  | Y|--\Y/__\   |--   |
/YY\  X  \XA \A|   \  /Y\  | Y| ''','X','|  |'),'Y','    '),'A','__  '),print;
if int(input())%2==0:p(m)
else:
 q,i,u=m.split('\n')[::-1],0,[[23,24,29,30],[42,43],[],[23,24,29,30,34,35,53,49,50,55]];q.insert(0,q.pop())
 while i<len(q):
  x=list(r(q[i],'_',' '))+[' ']
  for a in u[i]:x[a]='_'
  p(r(r(r(r(''.join(x),'___',''),"\\",'t'),'/',"\\"),'t','/'))
  i+=1


0

ルビー、290バイト

$><<(gets.to_i%2<1?"xCeCdCnCcC_
c/Bc/Be|ABAAf/e|Af/Be|f|
b/cB/cBd|AbBb|A--Af|--Be/CBd|--d|
/iBAAcB|ACdBCAdBc/eBAf|":"xCeC
Bi/AAc/|Af/e|d/cBbCb/Af|
bBc/Bc/d|Ab/b|A--Af|--/eBc/d|--d|
cB/cB/e|A/AACdBCAC|fB/e|Cc_|_").gsub(?C,'__').tr(?B,?\\).gsub(?A,'c|').gsub(/[a-z]/){|e|' '*(e.ord-97)}

おそらく弱くて改善可能なエントリーです。基本的に非常に単純な(手作りの)圧縮で、小文字は多くのスペース(実​​際にはord(ch)-'A'スペース)と大文字を意味し、数バイトを節約する一般的な用語です。



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