毛布を作ってください!


16

このような毛布が欲しい。各ストリップは上、下、上、下に行きます。印刷できますか?

\\\\////\\\\////\\\\////\\\\////\\\\////\\\\////
 \\////  \\////  \\////  \\////  \\////  \\//// 
  ////    ////    ////    ////    ////    ////  
 ////\\  ////\\  ////\\  ////\\  ////\\  ////\\ 
////\\\\////\\\\////\\\\////\\\\////\\\\////\\\\
\//  \\\\//  \\\\//  \\\\//  \\\\//  \\\\//  \\\
\\    \\\\    \\\\    \\\\    \\\\    \\\\    \\
\\\  //\\\\  //\\\\  //\\\\  //\\\\  //\\\\  //\
\\\\////\\\\////\\\\////\\\\////\\\\////\\\\////
 \\////  \\////  \\////  \\////  \\////  \\//// 
  ////    ////    ////    ////    ////    ////  
 ////\\  ////\\  ////\\  ////\\  ////\\  ////\\ 
////\\\\////\\\\////\\\\////\\\\////\\\\////\\\\
\//  \\\\//  \\\\//  \\\\//  \\\\//  \\\\//  \\\
\\    \\\\    \\\\    \\\\    \\\\    \\\\    \\
\\\  //\\\\  //\\\\  //\\\\  //\\\\  //\\\\  //\
\\\\////\\\\////\\\\////\\\\////\\\\////\\\\////
 \\////  \\////  \\////  \\////  \\////  \\//// 
  ////    ////    ////    ////    ////    ////  
 ////\\  ////\\  ////\\  ////\\  ////\\  ////\\ 
////\\\\////\\\\////\\\\////\\\\////\\\\////\\\\
\//  \\\\//  \\\\//  \\\\//  \\\\//  \\\\//  \\\
\\    \\\\    \\\\    \\\\    \\\\    \\\\    \\
\\\  //\\\\  //\\\\  //\\\\  //\\\\  //\\\\  //\

各行の末尾にあるスペースと改行を使用できます。

これはであるため、バイト数が最も少ないコードが優先されることに注意してください。

リーダーボード

これは、通常のリーダーボードと言語ごとの勝者の概要の両方を生成するスタックスニペットです。

回答が表示されるようにするには、次のマークダウンテンプレートを使用して、見出しから回答を開始してください。

# Language Name, N bytes

N提出物のサイズはどこですか。スコアを改善する場合、古いスコアを打つことで見出しに残すことができます。例えば:

# Ruby, <s>104</s> <s>101</s> 96 bytes

ヘッダーに複数の数字を含める場合(たとえば、スコアが2つのファイルの合計であるか、インタープリターフラグペナルティーを個別にリストする場合)、実際のスコアがヘッダーの最後の数字であることを確認します。

# Perl, 43 + 2 (-p flag) = 45 bytes

言語名をリンクにして、リーダーボードスニペットに表示することもできます。

# [><>](http://esolangs.org/wiki/Fish), 121 bytes


右端がずれているようです。
魔法のタコUr

左端は重なっていませんか?
-xnor

@xnorすみません、悪いです。
オリバーNi

@carusocomputing修正済み。
オリバーNi

10
Sandboxを使用していた場合、これらの問題は、これがメインになる前に回避できたはずです。
メゴ

回答:


8

Python 2、84バイト

R=range(24)
for i in R:print''.join(" \// \/\\"[i+~j>>2&1^i+j>>1&2^i&4]for j in R*2)

算術演算をビット単位に変換する6バイトのSp3000に感謝します。


わあ...どう????
オリバーNi

1
i+~j>>2&1^i+j>>1&2^i&4、おそらく?
Sp3000

@ Sp3000これは、いくつかの素晴らしいビット単位の優先順位です。算術的に導出されたブール値をインデックスに結合するとき、それを覚えておく必要があります。
xnor

5

Pyth、36バイト

V24sm@" \// \/\\"im<3%k8++BNdt-NdT48

オンラインで試す:デモンストレーション

説明:

3つの条件を確認することで、シンボルを決定できます。

A := row % 8 > 3
B := (row + column) % 8 > 3
C := (row - column - 1) % 8 > 3

[A,B,C]2進数として解釈すると、次のマッピングが得られます。

01234567
 \// \/\

[A,B,C]10進数として解釈し、文字列でモジュラーインデックスルックアップを実行することもできます。違いはありません10 mod 8 = 2

次にコードを説明します。

V24繰り返しますN(row-idx)[0, 1, ..., 23]ます。

sm...48の番号d(column-idx)をマップします[0, 1, ..., 47]をcharsに、結合された文字列を出力します。

++BNdリストを生成し[N, N+d]+...t-Nd追加しN-d-1ます。だからリストを取得しました[N, N+d, N-d-1]m<3%k8計算された各数値をチェックしますk(の場合3 < k % 8)。これにより、条件付きのリストが得られます[A, B, C]

i...T これを10進数に変換してから、 @" \// \/\\"、文字列を検索します。

ほぼ同じPython2のコード:98バイト

R=range(8)
for r in R*3:print''.join(" \// \/\\"[4*(r>3)+2*((r+c)%8>3)+((r-c-1)%8>3)]for c in R*6)

Pythを理解しようとするだけで、適切な説明を含む適切な回答があれば、賛成票をもらいます。私のベース3の実験:)の後にPythをしようとするつもりだった
ElPedro

Python2の回答も投稿する必要があります...
ジェリージェレミア

3

Perl、209 + 17 = 226バイト

実行-mList::Util=max -M5.010(2番目のフラグは無料です)。バイトカウントのコンペティションには勝てませんが、これが私の解決策です。

for(0..7){@b=(1)x8;@b[$_+3..$_+7]=(3)x4;@b[7-$_..10-$_]=(2)x4;for$c(0..2){$b[$c+8]=max$b[$c+8],$b[$c];$b[5-$c]=max$b[5-$c],$b[13-$c];}push@a,sprintf("%-8s",join("",@b[3..10])=~tr[123][ /\\]r)x6;}say for@a,@a,@a

読みやすい:

for(0..7){
    @b=(1)x8;
    @b[$_+3..$_+7]=(3)x4;
    @b[7-$_..10-$_]=(2)x4;
    for$c(0..2){
        $b[$c+8]=max$b[$c+8],$b[$c];
        $b[5-$c]=max$b[5-$c],$b[13-$c];
    }
    push@a,sprintf("%-8s",join("",@b[3..10])=~tr[123][ /\\]r)x6
}
say for@a,@a,@a

各セグメントを手続き的に生成し、パターンを6回繰り返し、合計結果を3回出力します。


うーん、私はもはや最長の不安ではありません:)とにかくPerlでそれを行うために+1。
エルペドロ

他のみんなと同じようにできたかもしれませんが(たくさんの行を印刷するだけでした)、もっとクールだと感じたので、明示的にではなくアルゴリズム的にやることに決めました。
ガブリエルベナミー

私の基準でクール。面白い挑戦だったので、これまで試したことのないアプローチを取りました。私が言ったように、+ 1。私のコメントが意図したin辱はありません。それが私が賛成した理由です。
エルペドロ

3

Pythonの3、174の 172 138バイト

print("\n".join(o*6for o in("bbbb////"," bb//// ","  ////  "," ////bb ","////bbbb","b//  bbb","bb    bb","bbb  //b")*3).replace("b","\\"))

ブランケットで見つけられる最小のパターン(「アンダー」および「オーバー」パターン)を見つけ、リストに貼り付け、リストを理解し、すべてを展開するための文字列操作を追加しました。エスケープされたすべてのバックスラッシュを「b」で置き換え、数バイトを節約するために後で置き換えます。

2バイトのゴルフをしてくれたOliverに感謝します!

パターンを変更することで34バイトを削減しました。ブランケットのパターン全体が1つのリストに含まれるようになったため、パターンの展開に必要なループは1つだけです。


1
PPCGへようこそ!素敵な最初の投稿!python 2で1バイト削ることができると思います。印刷のためにparendsは必要ないと思います。
Rɪᴋᴇʀ

1
Easterly Irkに感謝します。私は長い間コードゴルフに潜んでいましたので、参加することにしました。:)
TheCrazyInventor

1
あなたは後にスペースを削除することで2つのバイトを保存することができます0*6し、u*6
オリバー・ニッケル

1
二重バックスラッシュに「b」を使用することで4バイトを節約でき、単一のバックスラッシュが必要な場所ではエスケープのみを使用できますprint((("\n".join(o*6 for o in("bb////"," b//// "," //// "," ////b ",""))+"\n".join(u*6 for u in("////bb","\\// b\\","b b","b\\ //\\","")))*3).replace("b","\\\\"))
。– dzaima

dzaima:あなたのコードは有効なブランケットを生成していないようです。
TheCrazyInventor

3

Python 2、171 170 168バイト

a,b,c=r"\\","/"*4," "
f,g=c*2,c+a+b+c
d=(a*2+b)*6,g*6,(f+b+f)*6,g[::-1]*6,(b+a*2)*6,('\\//'+f+a+"\\")*6,(a+f*2+a)*6,(a+"\\"+f+'//\\')*6
for e in 0,1,2:print'\n'.join(d)

可愛くないし、賢くない。最も頻繁に使用される文字列グループに変数を設定し、それらを組み合わせて結果を3回出力するだけです。より良いアプローチが見つからない場合は、後でゴルフを試してみてください。

割り当てで生の入力を使用して保存された1バイト。ありがとう@ nedla2004

-2いくつかの変数を割り当てることにより、まだ深刻な競合他社ではない


1
aをr "\\"として定義できます
-nedla2004

ありがとう@ nedla2004良い点。すぐにこれを一緒に投げて、後で見ようとしていました。それは良いスタートです:)
ElPedro

*6ただし、各タプル要素を巡回する方法を見つけることに最も関心があります。何か案は?
エルペドロ

1
どうすればそれができるのかわかりませんが、最後の行はになる可能性がありますexec r"print'\n'.join(d);"*3
nedla2004

興味のない代替を投稿しました。それについてのあなたのコメントも大切にします。
エルペドロ

2

SOML、106 バイト

3{"\\\\////”6*p" \\//// ”6*p"  ////  ”6*p" ////\\ ”6*p"////\\\\”6*p"\//  \\\”6*p"\\    \\”6*p"\\\  //\”6*p

最近追加したばかりの機能を使用した非競合バージョン:(83 67 66バイト)

説明:

  →$\\→#////→@”6*p"→~3{"##@~ #@ ~$@$~ @# ~@##~\//$#\~#$$#~#\$//\~”
  →$                                                                in the further code replace "$" with "  "
    \\→#                                                            replace "#" with "\\"
        ////→@                                                      replace "@" with "////"
              ”6*p"→~3{"##@~ #@ ~$@$~ @# ~@##~\//$#\~#$$#~#\$//\~” the code to exchange stuff in

so that results in:
”6*p"→~3{"\\\\////~ \\//// ~  ////  ~ ////\\ ~////\\\\~\//  \\\~\\    \\~\\\  //\~”
”6*p"→~3{"A~B~C~D~E~F~G~H~”  modified version of the program (removing "/","\" and " " and replaced with A,B,C,ect.)
”6*p"→~                      replace in the further program "~" with ”6*p" which is:
”                            end string
 6*                          repeat the last thing in stack 6 times
   p                         output the result
    "                        start a string
resulting program: 
3{"A”6*p"B”6*p"C”6*p"D”6*p"E”6*p"F”6*p"G”6*p"H”6*p"”
shortened example:
3{"A”6*p"B”6*p"H”6*p"”
3{                      repeat 3 times
  "A”                   push "A" (original: "\\\\////")
     6*p                output it multiplied by 6
        "B”             push "B" (original: " \\//// ")
           6*p          output it multiplied by 6
              "H”       push "H" (original: "\\\  //\")
                 6*p    output it multiplied by 6
                    "”  push an empty string (shorter to do ~” than ”6*p)

2

ルビー、75バイト

1152.times{|i|$><<"\\/ /\\\\ /"[(i+j=i/48)/4&1|(i-j)/2&2|j&4]+$/*(i%48/47)}

改善された4バイト文字列ではなく、他のパラメーターに加えてj&4によってインデックス付けされた単一の8バイト文字列検索を使用して、より良いゴルフをします。

Ruby、81バイト

1152.times{|i|j=i/48%8;$><<"\\#{'/\\'[j/4]} /"[(i+j)/4&1|(i-j)/2&2]+$/*(i%48/47)}

文字ごとに斜めのストライプを印刷します。正しい文字は、各ストランドの有無に応じて4文字の文字列から選択されます。重なり文字は、どのストランドが一番上にあるかによって異なります。

コメント済み

1152.times{|i|j=i/48%8;        #Iterate through all printable chars. j is line number.
  $><<"\\#{'/\\'[j/4]} /"[     #Print a char from "\/ /" if j/4 even or "\\ /" if odd. character changes depending which strand on top.
   (i+j)/4&1|(i-j)/2&2]+       #Print \ if (i+j)/4==0, / if (i-j)/2&2 >0, space if both false. As above if both true. 
   $/*(i%48/47)                #If on column 47, print a newline.
}

2

Perl、132 131 113バイト

@a=((0)x4,1..4);map{say+(map$a[7-$_]?$a[$_]*$r?'/':'\\':$a[$_]?'/':$",0..7)x6;push@a,shift@a;$_%4||($r=!$r)}0..23

ゴルフをしていない:

use strict;
use warnings;
use feature 'say';

my @a = ((1) x 4, (0) x 4);  # print '\' if true
my @b = ((0) x 4, (1) x 4);  # print '/' if true
my $r = 0;                   # print '\' over '/' if true

for (0 .. 23) {
    say((map { $a[$_] ? ($b[$_] * $r ? '/' : '\\') : ($b[$_] ? '/' : ' ') } 0 .. 7) x 6);
    unshift(@a, pop(@a));    # circular shift to left
    push(@b, shift(@b));     # circular shift to right
    $r = !$r if !($_ % 4);   # change print priority
}

2

05AB1E、37バイト

CP-1252エンコードを使用します。

24FNU48FXXN+XN-<)8%3›J" \// \/\"è?}¶?

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

説明

Jakubeのpyth answer詳しく説明されているmod-8トリックを使用します

24F                                    # for N in [0 ... 23] do:
   NU                                  # save N in X
     48F                               # for N in [0 ... 48] do:
        XXN+XN-<)                      # push [X,X+N,X-N-1]
                 8%                    # mod each by 8
                   3›                  # compare with 3
                     J                 # join
                      " \// \/\"è?     # index into string and print
                                  }    # end inner loop
                                   ¶?  # print newline

2

パイソン、245 236 234 233 230 216 212 198 195バイト

OK、最後の(および他の)回答よりも長いですが、アプローチに関するフィードバックに興味があります。

for a in(40,4496,6200,5456,3240,1188,720,228)*3:print((`a%6561/2178`+`a%2178/729`+`a%729/243`+`a%243/81`+`a%81/27`+`a%27/9`+`a%9/3`+`a%3/1`)*6).replace('0','\\').replace('1','/').replace('2',' ')

編集

-9 @ nedla2004が私よりもボールに乗っているため

-2ループの外側でラムダを取得し、2つのインデントスペースを失う

使用しないため、in' '*3代わりに-1をin 0,1,2使用hとにかくます。それはただのカウンターです。

-3なぜ、なぜ、なぜ2番目とforの間に改行と2つのインデントを残したのですか?遅いです。明日再訪します。

-14実際にラムダを完全に失い、printステートメントの直後にベース3デコーダを含めることができます。乱雑に見えますが、結局のところ、これはコードゴルフです:)

-4整数リストの変数を設定するポイントがありません。2番目のforループで直接使用するだけです。

-14および外側のループを使用するポイントはありません。整数のタプルに3を掛けるだけです(@ nedla2004から恥知らずに盗まれて200未満になります:))

-3 \ = 0、/ = 1、space = 2にして3を保存しました。これにより、3の基数のうち3つに先行0が付くため、整数リストが短くなります。

仕組み(および機能)

3文字のみが使用されるため:

  1. lは、 "" = 0、 "\" = 1および "/" = 2を想定した、ベース3表現の整数等価物としての8つの繰り返しパターンのリストです。

  2. ラムダ printステートメントの後の最初のコードは、整数からベース3文字列への軽量コンバーターです。

  3. 最初のループは3回ループし、2番目のループは、ベース3文字に6を掛けて、/、\またはスペースで置き換えた各行を印刷します。

入れ子になったreplace()の代わりに正規表現を使用できると確信していますが、今は試してみて疲れています。これは単なる実験であり、以前のPythonの努力よりも長いものでしたが、アプローチに関するコメントを投稿しただけです(また、ベース3で作業したことがなく、コンバーターの作成を楽しんだためです)。


1
ベース3変換の最初の区分を削除するだけで済みます。
nedla2004

何らかの理由でそれが以前私に問題を引き起こしていましたが、試しただけで動作します。私よりも目を覚ましてくれてありがとう。私は答えを再編集します(そしてあなたはちょうど私に9バイトを保存しました:))
ElPedro

1
基数3の変換を書き直しました。これはラムダではなく、関数にする必要がありましたが、ラムダに変換できる可能性があります。ここで関数を見つけることができます。
nedla2004

ありがとう。この2つの組み合わせはうまくいくと思うが、それはおそらく明日の夜の仕事だろう:)コメントをありがとう。
エルペドロ

1
ここで 169まで下げまし
nedla2004

2

ルビー、135バイト

puts [3320,1212,720,2172,6520,4144,2920,3184].map{|e|(e.to_s(3).rjust(8,"0").gsub("0"," ").gsub("1","\\").gsub("2","/"))*6+"\n"}.join*3

数値配列は、各行の各コンポーネントに対応し、ベース3に変換されます:= 0、\= 1、/= 2、次に10進数に変換されます。ただし、gsub()呼び出しは大きすぎます。

そして、ちょうど今、@ ElPedroの答えを見ました。:-(ちょうど偶然。


e.to_s(3).rjust(8,"0")("%8s"%e.to_s(3)); gsub("0"," ").gsub("1","\\")..gsub("2","/")tr("013"," \\/"); "\n"$/; .join*""。また、4によって、アレイ内の数字のすべてを分割し、置き換えることにより、バイトを保存することができe(e*4)
ヨルダン

おっと、それはそうあるべきだと思うtr("021"," /\\")
ヨルダン

90バイト:tio.run
ヨルダン

2

PHP 157バイト

コメントの@Titusリストの変更を取得しています...キャッチすべきポイント1を逃しましたが、strtr()が存在することを知りませんでした。

新着:

while($i<32)echo$b=strtr([3322,' 322 ','0220',' 223 ',2233,12013,3003,13021][$i++%8],['  ','\\','//','\\\\']),"$b$b$b$b$b\n";

古い:

<?$a=[zzyy,' zyy ',syys,' yyz ',yyzz,xysxz,zssz,xzsyx];while($i<32){$b=$a[$i++%8];$b=str_replace([z,x,y,s],['\\\\','\\','//','  '],$b);echo"$b$b$b$b$b$b
";}

すべてのバックスラッシュはエスケープする必要があるため、異なる文字としてパックして出力用に置き換えるためにかなりのスペースを節約し、str_replace()を呼び出したら、できるだけ頻繁に使用するのが理にかなっています。


1
を使用する場合は、開始タグを削除できます-r。次の5つの手順を使用して、さらに30バイトを保存します。ideone.com / wt4HGB 1)パラメーター$a[...]としてstr_replace割り当てる代わりに、直接パラメーターとして使用します。2)のstrtr代わりにstr_replace。3)文字の代わりに数字を使用します。4)エコーに割り当てを含めます。5)割り当てないで$a、ただ使用します。
タイタス

1

パイソン2、169 161 165 160 155 154 152

@ElPedroの回答に基づき、少し改善されています。説明を見るには、彼らの答えをご覧ください。の近くに括弧があるように見えますが、これはPython 2 printです。

の変数を使用して8バイトを保存しましたreplaceこれは文字列に対してのみ機能し、そのための関数の使用は長くなります。

@ElPedroがlを必要としないことに気付き、4バイトを節約しました。私もそうしませんでした。

を反転せず、rに追加するrange(8)代わり+=に、新しい数字の末尾にrを追加して、5バイトを節約しました。repl.itを使用して試してください

@ElPedroの新しい値のリストを盗んで5バイトを節約しました。

inとの間のスペースを削除して1バイトを保存しました(

変数aを削除して2バイトを保存しました。

for x in(40,4496,6200,5456,3240,1188,720,228)*3:
 r=''
 for i in range(8):r=`x/3**i%3`+r
 print(r*6).replace('0','\\').replace('1','/').replace('2',' ')

あなたは、間にスペースを除去することにより、1を保存することができますinし、(ために最初に
ElPedro

また、ベース3リストの各文字を表す数字の順序を並べ替えることにより、3バイトを失いました。説明については私の答えをご覧ください。コピーしてください。私の知る限り、これは共同の努力であり、元のアイデアに少なくとも潜在的な可能性があったことを嬉しく思います:)
ElPedro

必要ありませんa=3**i。ただ、使用for i in range(8):r=のx / 3 ** I%3 +rカップルを保存します。演算子の優先順位が残りを処理します:)
ElPedro

文字列変換文字を区切る方法がわからない。パーサーは私の最後のコメントでそれらを削除したので、私の提案からコピーして貼り付けないでください。そうしないと壊れます:)
ElPedro

良い点、わかりました。
nedla2004

1

PHP、184バイト

<?$p=['1111////',' 11//// ','  ////  ',' ////11 ','////1111','1//  111','11    11','111  //1'];for($j=0;$j<3;$j++)for($i=0;$i<8;$i++)echo str_replace(1,'\\',str_repeat($p[$i],6))."\n";

出力:

C:\PHP>php make-me-a-blanket.php
\\\\////\\\\////\\\\////\\\\////\\\\////\\\\////
 \\////  \\////  \\////  \\////  \\////  \\//// 
  ////    ////    ////    ////    ////    ////  
 ////\\  ////\\  ////\\  ////\\  ////\\  ////\\ 
////\\\\////\\\\////\\\\////\\\\////\\\\////\\\\
\//  \\\\//  \\\\//  \\\\//  \\\\//  \\\\//  \\\
\\    \\\\    \\\\    \\\\    \\\\    \\\\    \\
\\\  //\\\\  //\\\\  //\\\\  //\\\\  //\\\\  //\
\\\\////\\\\////\\\\////\\\\////\\\\////\\\\////
 \\////  \\////  \\////  \\////  \\////  \\//// 
  ////    ////    ////    ////    ////    ////  
 ////\\  ////\\  ////\\  ////\\  ////\\  ////\\ 
////\\\\////\\\\////\\\\////\\\\////\\\\////\\\\
\//  \\\\//  \\\\//  \\\\//  \\\\//  \\\\//  \\\
\\    \\\\    \\\\    \\\\    \\\\    \\\\    \\
\\\  //\\\\  //\\\\  //\\\\  //\\\\  //\\\\  //\
\\\\////\\\\////\\\\////\\\\////\\\\////\\\\////
 \\////  \\////  \\////  \\////  \\////  \\//// 
  ////    ////    ////    ////    ////    ////  
 ////\\  ////\\  ////\\  ////\\  ////\\  ////\\ 
////\\\\////\\\\////\\\\////\\\\////\\\\////\\\\
\//  \\\\//  \\\\//  \\\\//  \\\\//  \\\\//  \\\
\\    \\\\    \\\\    \\\\    \\\\    \\\\    \\
\\\  //\\\\  //\\\\  //\\\\  //\\\\  //\\\\  //\

0

バッチ、152バイト

@call:l
@call:l
:l
@for %%s in (\\\\//// " \\//// " "  ////  " " ////\\ " ////\\\\ "\//  \\\" "\\    \\" "\\\  //\")do @echo %%~s%%~s%%~s%%~s%%~s%%~s

Batchでの文字列処理はひどいので、これがおそらく最良のアプローチです。呼び出しとフォールスルーは、ネストされたforループよりもわずかに短くなります。少なくとも、バックスラッシュを引用する必要はありません!


0

APL、110バイト

私はAPLが初めてなので、これは単純な解決策です。

A←48⍴'\\\\////'⋄B←48⍴' \\//// '⋄C←48⍴'  ////  '⋄F←48⍴'\//  \\\'⋄G←48⍴'\\    \\'⋄24 48⍴A,B,C,(⊖B),(⊖A),F,G,⊖F  

私のアプローチは次のとおりです。ブランケットの最初の8行の後に、パターンが繰り返されることに注意してください。したがって、最初の8行を定義するだけで、3回繰り返すことができます。また、各行は最初の8文字の後に繰り返されることに注意してください。したがって、1行を定義するには、最初の8文字を定義してから8回繰り返すだけです。

これは、未解決のソリューションです。

A←48⍴'\\\\////'⋄ ⍝ set A to a 48 element vector (48⍴) of repeated '\\\\////'s
B←48⍴' \\//// '⋄ ⍝ set B to a 48 element vector (48⍴) of repeated ' \\//// 's
C←48⍴'  ////  '⋄ ⍝ ...
D←48⍴' ////\\ '⋄ ⍝ Note that this is actually the reverse of vector B
E←48⍴'////\\\\'⋄ ⍝ Note that this is actually the reverse of vector A
F←48⍴'\//  \\\'⋄
G←48⍴'\\    \\'⋄
H←48⍴'\\\  //\'⋄ ⍝ Note that this is actually the reverse of vector F

24 48 ⍴ A,B,C,D,E,F,G,H ⍝ Make a 24 by 48 character matrix (24 48⍴) by concatenating A,B...H
                        ⍝ and repeating the string until the matrix is full

上記のとおり、DはBの逆、EはAの逆、HはFの逆です。実際のコードでは、D、F、またはHを定義せず、逆関数を使用してこれを利用しています

24 48⍴A,B,C,(⊖B),(⊖A),F,G,⊖F


0

Ruby、132バイト

puts Zlib.inflate Base64.decode64 "eJzt0bENADAMAsGeKdggC/3+cyQRC+A2ipuT3RgJgHWGUjm6VXb2Vjn/3KpJ/qtIPlp1v+XSKZKPVk3y/x5+D6/3sAEUXQ+Q"

非常に簡単な答え。


0

Haskell、96バイト

f n=n`mod`8`div`4
putStr$unlines[["\\ //\\ \\/"!!(f(x-y)+2*f(x+y)+4*f y)|x<-[0..47]]|y<-[0..23]]
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.