중첩 된 급진적 그리기


13

수학의 많은 공식에는 중첩 라디칼 (다른 제곱근 기호 안의 제곱근 기호)이 포함됩니다. 여기서 당신의 임무는 ASCII 아트를 사용하여 그림을 그리는 것입니다.

명세서

라디칼 내부의 수와 ​​라디칼의 수는 두 개의 정수로 주어집니다. 나는 당신이해야 할 일을 설명하는 가장 좋은 방법은 예를 든다고 생각합니다. 출력은 다음과 같습니다 2, 4.

        ____________________
\      /       _______________
 \    /  \    /     __________
  \  /    \  /  \  /   _____
   \/      \/    \/  \/ 2

다음은 참고할 사항입니다.

  • 각 급진파의 높이가 1 씩 증가합니다
  • 의 길이 _는 항상 5높이의 곱셈입니다
  • 마지막 이후 /와 다음 내부 급진파가 시작되기 전에 공백 이 있습니다
  • 내부 숫자는 4 자리를 넘지 않아야합니다.
  • 근호 수가 0 인 경우 숫자 만 출력하면됩니다.
  • 사각형에 채워 넣을 공간을 추가하는 것은 당신에게 달려 있습니다
  • 이것은 이므로 바이트 단위의 가장 짧은 코드가 이깁니다!

테스트 사례

2, 4:
        ____________________
\      /       _______________
 \    /  \    /     __________
  \  /    \  /  \  /   _____
   \/      \/    \/  \/ 2

23, 0:
23

4, 1:
  _____
\/ 4

1234, 3:
      _______________
\    /     __________
 \  /  \  /   _____
  \/    \/  \/ 1234

12
수평 막대가 모두 같은 지점에서 끝나야한다면 이것이 약간 더 나은 도전이라고 생각합니다.
Greg Martin

답변:


2

파이썬 3.5 145 137 바이트

def s(n,x):[([print(' '*j+'\\'+'  '*i+'/ '+' '*j,end='')for j in range(x-i-1,-1,-1)],print('  '*i+i*'_____'or n))for i in range(x,-1,-1)]

약간 골퍼되지 않음 :

def s(n,x):
    for i in range(x,-1,-1):
        for j in range(x-i-1,-1,-1):
            print(' '*j+'\\'+'  '*i+'/ '+' '*j,end='')
        print('  '*i+i*'_____' or n)

산출:

s(2,4)
        ____________________
\      /       _______________
 \    /  \    /     __________
  \  /    \  /  \  /   _____
   \/      \/    \/  \/ 2

print(' '*i+'_____'*i or n)7 바이트를 절약합니다. 편집 print(' '*i+i*'_____'or n)8 저장
Jonathan Allan

감사합니다. 나는 당신이 그런 '또는'을 사용할 수 있다는 것을 몰랐습니다.
James Hollis

2

자바 스크립트, 133 (132) 131 바이트

f=(n,r,q=r)=>~r?'1\\0/1 '[x='repeat'](d=q-r).replace(/\d/g,i=>' '[x](+i?d-=.5:r*2))+(r?' '[x](r*2)+'_'[x](5*r):n)+`
`+f(n,r-1,q):''


F=(n,r)=>console.log( f(n,r) )
F(2,4)
F(23,0)
F(4,1)
F(1234,3)
.as-console-wrapper{max-height:100%!important;top:0}


2

자바 스크립트 (ES6), 124 바이트

f=(s,n,i=0,r=(n,c=` `)=>c.repeat(n))=>n?r(n+n)+r(n*5,`_`)+`
`+f(s,n-1).replace(/^/gm,_=>r(i)+`\\${r(n+~i<<1)}/`+r(++i)):s+``
<div oninput=o.textContent=f(s.value,+n.value)><input id=s><input id=n type=number min=0><pre id=o>

첫 번째 매개 변수가 숫자가 아닌 문자열 일 수있는 경우 3 바이트를 저장하십시오.


1

PHP, 178 바이트

for($r=[" $argv[1]"];$i++<$argv[2];$r[]=$p("",2*$i).$p(_,5*$i,_))for($k=-1;++$k<$i;)$r[$k]=($p=str_pad)("\\".$p("",2*$k)."/",2*$i," ",2).$r[$k];echo join("\n",array_reverse($r));

끔찍하게 길다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.