Đó là mùa bulking


12

Các thanh tạ tại phòng tập thể dục của tôi trông như thế này:

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

Họ có thể giữ các đĩa gồm năm kích cỡ khác nhau, 2,5 pound, năm pounds, mười pounds, 25 pounds và 45 pounds:

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

Để an toàn, chúng tôi cũng thêm một clip ]hoặc [bên ngoài tất cả các tấm của chúng tôi nếu có. Thanh chính nó nặng 45 pounds. Chúng tôi luôn đặt các tấm nặng nhất gần trung tâm nhất, không có khoảng trống giữa bất kỳ tấm nào và đặt các tấm giống hệt nhau ở cả hai bên. Chúng tôi cũng luôn sử dụng số lượng tấm tối thiểu có thể, ví dụ: chúng tôi không bao giờ sử dụng hai tấm năm pound ở một bên thay vì một tấm mười pound. Vì vậy, nếu tôi muốn nâng £ 215, thanh của tôi trông như thế này:

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

Mã của bạn, một hàm hoặc chương trình hoàn chỉnh, phải lấy một số nguyên từ 45 đến 575, luôn là bội số của 5 và xuất ra thanh cộng với trọng số đó. Ví dụ:

Đầu vào: 45

Đầu ra (lưu ý không có clip trên thanh trống):

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

Đầu vào: 100

Đầu ra:

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

Đầu vào: 575

Đầu ra:

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

Bạn có thể có khoảng trắng ở mỗi dòng hoặc không, nhưng đầu ra của bạn không thể có các dòng trống hàng đầu hoặc dấu (đầu ra cho 45 nên là một dòng, cho 50 nên là ba dòng, cho 65 nên là năm dòng, v.v.)

Đây là mã golf, mã ngắn nhất thắng!


Chúng tôi có được phép in một dòng trống ở cuối cho mọi trường hợp không, kể cả dòng 7 cao, như thể chuỗi được in bằng Python print không?
PurkkaKoodari

Câu trả lời:


1

Bình thường, 126 byte

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

Mã nguồn chứa các ký tự không thể in được, vì vậy ở đây nó là một bãi chứa 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

Mã này là cực kỳ chậm , đến mức không sử dụng thực tế. Bạn có thể tăng tốc lên khoảng 1000 lần bằng cách thêm một cuộc gọi .{( set) ở giữa, trong khi vẫn giữ mã tương đương về mặt chức năng. Đây là phiên bản thân thiện với bản sao của mã kết quả:

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

2

Python 2, 295 byte

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

Xây dựng thanh theo chiều dọc, sau đó xoay và in các dòng không trống.


-v-1là một ứng cử viên chính cho phủ định bitwise; ~v.
Jonathan Frech

1

Than , 65 byte

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

Hãy thử trực tuyến! Liên kết là phiên bản dài dòng của mã. Giải trình:

¹²[]P×=⁹

In 12 -giây, []và 9 =giây. Điều này bao gồm một nửa của thanh. Con trỏ được để lại ở đầu =s.

≔⁻N⁴⁵θ

Trừ 45 từ đầu vào để cho phép trọng lượng của thanh.

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

Lọc danh sách các trọng số có thể có của các cặp trọng số cho các trọng số không lớn hơn đầu vào và lặp lại trong khi danh sách không trống.

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

Tách chuỗi |||.,|.,|!,||.,||!trên dấu phẩy và chọn đoạn tương ứng với trọng lượng nặng nhất có thể, và in cả chuỗi lên và xuống. (Ngoài ra, có thể chỉ cần in nó lên trên và phản chiếu ¬theo hướng ở cuối; một số biến thể có cùng độ dài.)

→P[

In clip (sẽ được ghi đè bằng trọng lượng tiếp theo nếu có).

≧⁻⊟ιθ»

Trừ trọng lượng từ đầu vào.

‖B←

Phản ánh để hoàn thành các barbell.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.