벌크 시즌


12

내 체육관의 바벨은 다음과 같습니다.

=========[]-----------------------[]=========

그들은 5 개의 다른 크기, 2.5 파운드, 5 파운드, 10 파운드, 25 파운드 및 45 파운드의 판을 담을 수 있습니다.

                .
        .   !   |
.   !   |   |   |
|   |   |   |   |
'   !   |   |   |
        '   !   |
                '

안전을 위해 클립이 ]있거나 [모든 플레이트 외부에 클립 이있는 경우 추가합니다. 바 자체의 무게는 45 파운드입니다. 우리는 항상 가장 무거운 판을 중앙에 가장 가깝게 놓고 판 사이에 간격을 두지 않고 양쪽에 동일한 판을 놓습니다. 우리는 또한 가능한 한 최소한의 플레이트를 사용합니다. 예를 들어 단일 10 파운드 플레이트 대신 한쪽에 2 개의 5 파운드 플레이트를 사용하지 마십시오. 따라서 215 파운드를 들어 올리려면 막대가 다음과 같이 보입니다.

        .                           .
      .!|                           |!.
     !|||                           |||!
====]||||[]-----------------------[]||||[====
     !|||                           |||!
      '!|                           |!'
        '                           '

함수 또는 완전한 프로그램 인 코드는 45에서 575 사이의 정수 (항상 5의 배수)를 가져와 해당 가중치에 합산되는 막대를 출력해야합니다. 예를 들면 다음과 같습니다.

입력: 45

출력 (빈 막대에 클립이 없음) :

=========[]-----------------------[]=========

입력: 100

산출:

        !                           !
       .|                           |.
======]||[]-----------------------[]||[======
       '|                           |'
        !                           !

입력: 575

산출:

    .....                           .....
  .!|||||                           |||||!.
 !|||||||                           |||||||!
]||||||||[]-----------------------[]||||||||[
 !|||||||                           |||||||!
  '!|||||                           |||||!'
    '''''                           '''''

각 줄에 후행 공백이있을 수 있지만 출력에 빈 줄이있을 수는 없습니다 (45의 출력은 한 줄, 50은 3 개의 줄, 65는 5 개의 줄 등).

이것은 코드 골프, 가장 짧은 코드 승리입니다!


마치 문자열이 마치 파이썬을 사용하여 인쇄 된 것처럼 7- 높이를 포함하여 모든 경우에 대해 빈 줄 하나를 인쇄 할 수 print있습니까?
PurkkaKoodari 1

답변:


1

Pyth, 126 바이트

K[Z5TyT50 90)jfrT6.e::++J+?qk3\=dsm@bxKdhfqQ+45sTSSM^K8?qk3r"[]23-[]"9*27d_J"=\|""]|""\|=""|["c7s@L". !|='"jC"¾ª±À£¤¯aàI7"6

소스 코드에는 인쇄 할 수없는 문자가 포함되어 있으므로 여기에 XXD 덤프가 있습니다.

0000000: 4b5b 5a35 5479 5435 3020 3930 296a 6672  K[Z5TyT50 90)jfr
0000010: 5436 2e65 3a3a 2b2b 4a2b 3f71 6b33 5c3d  T6.e::++J+?qk3\=
0000020: 6473 6d40 6278 4b64 6866 7151 2b34 3573  dsm@bxKdhfqQ+45s
0000030: 5453 534d 5e4b 383f 716b 3372 225b 5d32  TSSM^K8?qk3r"[]2
0000040: 332d 5b5d 2239 2a32 3764 5f4a 223d 5c7c  3-[]"9*27d_J"=\|
0000050: 2222 5d7c 2222 5c7c 3d22 227c 5b22 6337  ""]|""\|=""|["c7
0000060: 7340 4c22 2e20 217c 3d27 226a 4322 04be  s@L". !|='"jC"..
0000070: aa1f b1c0 a3a4 81af 61e0 4937 2236       ........a.I7"6

이 코드는 실제로 사용하지 않을 정도로 매우 느립니다 . 코드를 기능적으로 동일하게 유지하면서 사이에 .{( set) 호출 을 추가하여 약 1000 배 속도를 높일 수 있습니다 . 다음은 결과 코드의 복사하여 붙여 넣기 가능한 버전입니다.

K[Z5TyT50 90)jfrT6.e::++J+?qk3\=dsm@bxKdhfqQ+45sTS.{SM^K8?qk3r"[]23-[]"9*27d_J"=\|""]|""\|=""|["c7s@L". !|='"j96235640060099376576144045263159 6

2

파이썬 2, 295 바이트

i=input()-45
w=90,50,20,10,5;p=".|||||'"," !|||! "," .|||' ","  !|!  ","  .|'  "
a=[' '*46]
b=zip(*a*3+['='*9+'[]'+'-'*24+'[]'+'='*9]+a*3)
v=8
j=0
while i:
 if i>=w[j]:i-=w[j];b[v]=b[-v-1]=p[j];v-=1
 else:j+=1
if v<8:b[v]=b[10];b[-v-1]=b[9]
for l in zip(*b):
 L=''.join(l).rstrip()
 if L:print L

막대를 세로로 만든 다음 비어 있지 않은 선을 회전하여 인쇄합니다.


-v-1비트 부정의 주요 후보이다; ~v.
Jonathan Frech

1

, 65 바이트

¹²[]P×=⁹≔⁻N⁴⁵θWΦ⟦⁵χ²⁰¦⁵⁰¦⁹⁰⟧¬›κθ«P|§⪪”{⊞⧴&β1←Z↶RΣ”,Lι→P[≧⁻⊟ιθ»‖B←

온라인으로 사용해보십시오! 링크는 자세한 버전의 코드입니다. 설명:

¹²[]P×=⁹

12 -초, []9 =초를 인쇄합니다 . 이것은 막대의 절반으로 구성됩니다. 커서는 =s 의 시작 부분에 남아 있습니다.

≔⁻N⁴⁵θ

입력에서 45를 빼서 바의 무게를 허용합니다.

WΦ⟦⁵χ²⁰¦⁵⁰¦⁹⁰⟧¬›κθ«

입력보다 크지 않은 가중치에 대해 가능한 가중치 쌍의 가중치 목록을 필터링하고 목록이 비어 있지 않은 동안 반복하십시오.

P|§⪪”{⊞⧴&β1←Z↶RΣ”,Lι

문자열 |||.,|.,|!,||.,||!을 쉼표로 나누고 가능한 가장 무거운 무게에 해당하는 조각을 선택하여 위아래로 인쇄하십시오. 또는 대안으로 위쪽으로 인쇄 ¬하여 끝 방향으로 반사 할 수도 있습니다 . 여러 변형의 길이는 동일합니다.

→P[

클립을 인쇄하십시오 (있는 경우 다음 무게로 덮어 쓰기).

≧⁻⊟ιθ»

입력에서 무게를 뺍니다.

‖B←

바벨을 완성하십시오.

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