มันเป็นฤดูพะรุงพะรัง


12

บาร์เบลล์ที่โรงยิมของฉันหน้าตาแบบนี้:

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

พวกเขาสามารถเก็บแผ่นห้าขนาดต่าง ๆ 2.5 ปอนด์ห้าปอนด์สิบปอนด์ 25 ปอนด์และ 45 ปอนด์:

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

เพื่อความปลอดภัยเรายังเพิ่มคลิป]หรือ[ด้านนอกของแผ่นของเราทั้งหมดหากมี ตัวบาร์มีน้ำหนัก 45 ปอนด์ เรามักจะวางแผ่นที่มีน้ำหนักมากที่สุดใกล้กับศูนย์กลางโดยไม่มีช่องว่างระหว่างแผ่นใด ๆ และวางแผ่นที่เหมือนกันทั้งสองด้าน นอกจากนี้เรายังใช้จำนวนแผ่นต่ำสุดเท่าที่จะทำได้เสมอเช่นเราไม่เคยใช้แผ่นน้ำหนักห้าปอนด์สองแผ่นในด้านหนึ่งแทนแผ่นสิบปอนด์เดียว ดังนั้นถ้าฉันต้องการยก 215 ปอนด์บาร์ของฉันจะเป็นดังนี้:

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

รหัสของคุณฟังก์ชั่นหรือโปรแกรมที่สมบูรณ์ต้องใช้จำนวนเต็มตั้งแต่ 45 ถึง 575 คูณด้วยจำนวน 5 เสมอและส่งออกแท่งที่เพิ่มขึ้นตามน้ำหนักนั้น ตัวอย่างเช่น:

การป้อนข้อมูล: 45

เอาท์พุท (หมายเหตุไม่มีคลิปบนแถบว่าง):

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

การป้อนข้อมูล: 100

เอาท์พุท:

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

การป้อนข้อมูล: 575

เอาท์พุท:

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

คุณสามารถมีช่องว่างต่อท้ายในแต่ละบรรทัดหรือไม่ แต่ผลลัพธ์ของคุณไม่สามารถนำหน้าหรือต่อท้ายบรรทัดว่าง (ผลลัพธ์สำหรับ 45 ควรเป็นหนึ่งบรรทัดสำหรับ 50 ควรเป็นสามบรรทัดสำหรับ 65 ควรเป็นห้าบรรทัดและอื่น ๆ )

นี่คือรหัสกอล์ฟรหัสที่สั้นที่สุดชนะ!


เราได้รับอนุญาตให้พิมพ์บรรทัดว่างต่อท้ายหนึ่งบรรทัดสำหรับทุกกรณีหรือไม่รวมถึงบรรทัดที่ 7 สูงเช่นเดียวกับที่พิมพ์ด้วยสตริงของ Python print?
PurkkaKoodari

คำตอบ:


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

รหัสนี้ช้ามากจนถึงจุดที่ไม่ได้ใช้งานจริง คุณสามารถเพิ่มความเร็วได้ประมาณ 1,000 ครั้งโดยเพิ่มการโทร.{( set) ระหว่างนั้นในขณะที่รักษารหัสให้เทียบเท่ากับการใช้งาน นี่คือโค้ดผลลัพธ์ที่เป็นมิตรกับการคัดลอกวาง:

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 ไบต์

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เป็นผู้สมัครที่สำคัญสำหรับการปฏิเสธ bitwise; ~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.