任意のサイズのタイル張りの立方体を描く


12

ASCIIアートで、任意のサイズのタイルキューブを描画します。

3つの数字abおよびが与えられc、プログラムはa * b * cサイズのキューブを出力するはずです。

3 3 3 ->

    ____ ____ ____
  /____/____/____/|
 /____/____/____/||
/____/____/____/|||
|____|____|____|||/
|____|____|____||/
|____|____|____|/

5 2 3 ->

    ____ ____ ____ ____ ____
  /____/____/____/____/____/|
 /____/____/____/____/____/||
/____/____/____/____/____/||/
|____|____|____|____|____||/
|____|____|____|____|____|/

4 6 5 ->

      ____ ____ ____ ____ 
    /____/____/____/____/|
   /____/____/____/____/||
  /____/____/____/____/|||
 /____/____/____/____/||||
/____/____/____/____/|||||
|____|____|____|____||||||
|____|____|____|____|||||/
|____|____|____|____||||/
|____|____|____|____|||/
|____|____|____|____||/
|____|____|____|____|/

最短のコードが優先されます。


右下のピースが上では/なく|、上部と一致し、各垂直線のパイプの数が同じであれば、少し良く見えると思います。
mellamokb

また、何のための有効な範囲はabc?たとえば、どの次元でも許可されます0か?
mellamokb

@stevether:「タイルキューブ」については考えていませんでした。
beary605

4
立方体には等しいエッジがあります。それをタイル張りの平行六面体またはレンガと呼ぶ方が良い。
DavidC

5
@ beary605私は数学者ではありませんが、長方形の直方体を指しているのではないかと思います。(en.wikipedia.org/wiki/Cuboid)直方体の特定のタイプである立方体には、正方形の面があります。(en.wikipedia.org/wiki/Cube)私の知る限り、オブジェクトがタイル化されてもオブジェクトの形状の名前は変わりません。
DavidC

回答:


10

Python、145文字

a,b,c=map(int,raw_input().split())
for i in range(b+c+1):print(' '*(c-i)+((' /|'[(i>c)+(i>0)]+'_'*4)*(a+1))[:-4]+('|'*(b+c-i))[:b]+'/')[:5*a+c+1]

$ echo "5 6 3" | ./cube.py
    ____ ____ ____ ____ ____
  /____/____/____/____/____/|
 /____/____/____/____/____/||
/____/____/____/____/____/|||
|____|____|____|____|____||||
|____|____|____|____|____||||
|____|____|____|____|____||||
|____|____|____|____|____|||/
|____|____|____|____|____||/
|____|____|____|____|____|/

印刷の写真を見ることができますか?
DavidC

@DavidCarraher:できました。
キースランドール

4

Mathematicaの148 143 139文字

私は透明なガラスタイルを使用することにしました。

次のコードは、ASCII文字「-」を、エッジ、a、b、およびcを持つ直方体の形式で出力します。下の図にあるのはハイフンだけです。

w_~e~_ := {Arrowheads@Table[{1, p/9, Graphics@Style[Text["-"], Red]}, {p, 9}], White,Arrow@w};
GridGraph[{a, b, c} + 1, VertexSize -> 0, EdgeShapeFunction -> e]

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


それはアスキーではありません...クールなアイデアですが、ありません。
ブースバイ

1
私の側では明らかに生意気でした。フィードバックをお寄せいただきありがとうございます。
DavidC

0

Python3(188)

a,b,c=map(int,input().split())
x=a+1
k="_"*4
p=print
l=5*a+c+1
p(" "*c+k.join(" "*x))
r=" "*c+k.join("/"*x)+"|"*b+"/"
exec("r=r[1:];p(r[:l]);"*c+'b-=1;p((k.join("|"*x)+"|"*b+"/")[:l]);'*b)

それはすでにbeatられていますが、アイデアは誰か他の人を助けることができます。


0

C、226、212

s(x,y){x<1?:putchar(" |/_\n"[y],s(x-1,y));}i,j,x,y,z;main(){for(scanf("%d%d%d",&x,&y,&z);j<=y+z;s(i,1),s(j++>y,2),s(1,4)){s(z-j,0);for(i=x;s(1,j?j>z?1:2:0),i;i--)s(4,3);i=y+z-j;if(i>j)i=j;if(i>z)i=z;if(i>y)i=y;}}

もう一度、他の言語に比べてスコアが低い-だから、Cゴルフの達人は改善できますか?

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