Gambarkan kubus ubin dengan berbagai ukuran

12

Gambar kubus ubin dengan berbagai ukuran, dalam seni ASCII.

Anda akan diberi tiga angka a, bdan c, dan program harus menampilkan kubus berukuran * * b * c.

Contohnya

3 3 3 ->

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

5 2 3 ->

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

4 6 5 ->

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

Kode terpendek menang.

beary605
sumber
Saya pikir itu akan terlihat sedikit lebih baik jika bagian kanan bawah /bukan |sehingga cocok dengan bagian atas, dan jumlah pipa di setiap garis vertikal identik.
mellamokb
Juga, apa yang rentang berlaku untuk a, bdan c? Misalnya, apakah ada dimensi yang diizinkan 0?
mellamokb
@stevether: Saya tidak berpikir tentang "ubin kubus", itu nama yang lebih baik.
beary605
4
Sebuah kubus memiliki tepi yang sama. Lebih baik menyebutnya ubin paralelepiped atau bata.
DavidC
5
@ beary605 Saya bukan ahli matematika, tapi saya pikir Anda mungkin mengacu pada berbentuk kubus persegi panjang. ( en.wikipedia.org/wiki/Cuboid ) Sebuah kubus, jenis kuboid persegi panjang tertentu, memiliki wajah persegi. ( en.wikipedia.org/wiki/Cube ) Sejauh yang saya tahu, nama bentuk objek tidak berubah ketika objek itu berupa ubin.
DavidC

Jawaban:

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
    ____ ____ ____ ____ ____
  /____/____/____/____/____/|
 /____/____/____/____/____/||
/____/____/____/____/____/|||
|____|____|____|____|____||||
|____|____|____|____|____||||
|____|____|____|____|____||||
|____|____|____|____|____|||/
|____|____|____|____|____||/
|____|____|____|____|____|/
Keith Randall
sumber
Bisakah kita melihat gambar hasil cetak?
DavidC
@ DavidCarraher: selesai.
Keith Randall
4

Mathematica 148 143 139 karakter

Saya memutuskan untuk menggunakan ubin kaca transparan.

Kode berikut mencetak karakter ASCII "-" dalam bentuk berbentuk kubus dengan ujung, a, b, dan c. Satu-satunya hal yang Anda lihat pada gambar di bawah ini adalah tanda hubung.

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]

masukkan deskripsi gambar di sini

DavidC
sumber
Itu bukan ascii ... ide keren, tapi tidak.
Stanby
1
Itu diakui kurang ajar di pihak saya. Terima kasih untuk umpan baliknya.
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)

Sudah dikalahkan, tetapi ide bisa membantu orang lain.

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

Sekali lagi skor yang buruk dibandingkan dengan langs lainnya - sehingga guru golf C dapat meningkatkan?

bayi-kelinci
sumber