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.


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

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


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.


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?

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.