Herhangi bir boyutta döşenmiş bir küp çizin


12

ASCII sanatında herhangi bir boyutta döşenmiş bir küp çizin.

Üç numara verilecek a, bve c, ve program çıktılayacaktır bir a * b * c büyüklüğünde küp.

Örnekler

3 3 3 ->

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

5 2 3 ->

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

4 6 5 ->

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

En kısa kod kazanır.


Sağ-alt parça /yerine |üste eşit olsaydı biraz daha iyi görüneceğini düşünüyorum ve her dikey çizgideki boru sayısı aynı.
mellamokb

Ayrıca, geçerli aralıkları nelerdir a, bve c? Örneğin, boyutlardan herhangi birine izin veriliyor 0mu?
mellamokb

@stevether: "Çinili küp" hakkında düşünmedim, bu daha iyi bir isim.
beary605

4
Bir küpün eşit kenarları vardır. Kiremitli paralel bir tuğla veya tuğla demek daha iyidir.
DavidC

5
@ beary605 Ben bir matematikçi değilim, ama bence dikdörtgen bir küboidden bahsediyor olabilirsiniz. ( en.wikipedia.org/wiki/Cuboid ) Belirli bir dikdörtgen küboid türü olan bir küpün kare yüzleri vardır. ( en.wikipedia.org/wiki/Cube ) Bildiğim kadarıyla, nesne döşendiğinde nesnenin şeklinin adı değişmez.
DavidC

Yanıtlar:


10

Python, 145 karakter

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
    ____ ____ ____ ____ ____
  /____/____/____/____/____/|
 /____/____/____/____/____/||
/____/____/____/____/____/|||
|____|____|____|____|____||||
|____|____|____|____|____||||
|____|____|____|____|____||||
|____|____|____|____|____|||/
|____|____|____|____|____||/
|____|____|____|____|____|/

Çıktının bir resmini görebilir miyiz?
DavidC

@DavidCarraher: bitti.
Keith Randall

4

Mathematica 148143139 chars

Şeffaf cam karo kullanmaya karar verdim.

Aşağıdaki kod ASCII karakterlerini "-", kenarları a, b ve c olan bir küboid şeklinde yazdırır. Aşağıdaki şekilde gördüğünüz tek şey kısa çizgilerdir.

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]

resim açıklamasını buraya girin


Ascii değil ... harika bir fikir, ama hayır.
boothby

1
Kuşkusuz benim tarafımdan arsız. Geri dönüşünüz için teşekkür ederiz.
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)

Zaten dövüldü, ama fikir başka birine yardımcı olabilir.


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;}}

Bir kez daha diğer langs ile karşılaştırıldığında kötü bir puan - yani herhangi bir C golf gurusu geliştirmek mümkün?

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.