어떤 크기의 타일 큐브를 그립니다


12

ASCII 형식으로 모든 크기의 타일 큐브를 그립니다.

당신은 세 개의 숫자를 받게됩니다 a, bc, 프로그램은해야 출력하는 A * B * C 크기의 큐브.

3 3 3 ->

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

5 2 3 ->

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

4 6 5 ->

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

가장 짧은 코드가 승리합니다.


오른쪽 하단 부분이 /대신 |상단 부분과 일치하고 각 세로 줄의 파이프 수가 동일 하면 약간 더 좋아질 것이라고 생각합니다 .
mellamokb

또한, 대한 유효 범위 무엇인가 a, b그리고는 c? 예를 들어 어떤 치수가 허용 0됩니까?
mellamokb

@ stevether : 나는 "타일 큐브"에 대해 생각하지 않았다, 그것은 더 나은 이름입니다.
beary605

4
큐브의 가장자리는 동일합니다. 타일 ​​형 평행 육면체 또는 벽돌이라고 부르는 것이 좋습니다.
DavidC

5
@ beary605 저는 수학자가 아니지만 사각형의 직육면체를 말하는 것 같습니다. ( en.wikipedia.org/wiki/Cuboid ) 직육면체의 특정 유형 인 정육면체는 정사각형면을 가지고 있습니다. ( en.wikipedia.org/wiki/Cube ) 내가 아는 한, 객체가 바둑판 식으로 배열 될 때 객체의 모양 이름은 바뀌지 않습니다.
DavidC

답변:


10

파이썬, 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 : 끝났습니다.
Keith Randall

4

Mathematica 148143139

투명 유리 타일을 사용하기로 결정했습니다.

다음 코드는 모서리가 a, b 및 c 인 직육면체 형태로 ASCII 문자 "-"를 인쇄합니다. 아래 그림에서 볼 수있는 유일한 것은 하이픈입니다.

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]

여기에 이미지 설명을 입력하십시오


그건 아스키가 아닙니다 ... 근사한 아이디어지만 아닙니다.
boothby

1
그것은 내 입장에서 명백하게 건방진했다. 피드백 감사드립니다.
DavidC

0

파이썬 3 (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)

그것은 이미 맞았지만 아이디어는 다른 사람을 도울 수 있습니다.


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.