散季


12

我健身房的杠铃看起来像这样:

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

它们可以容纳五种不同尺寸的盘子,分别为2.5磅,5磅,10磅,25磅和45磅:

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

为了安全起见,我们还会在所有板子的外部添加一个夹子]或夹子[。酒吧本身重45磅。我们总是将最重的印版放置在最靠近中心的位置,任何印版之间都没有间隙,并在两边放置相同的印版。我们也总是尽可能地使用最小数量的板,例如,我们绝不会在一侧使用两个五磅的板,而不是一个十磅的板。因此,如果我想举起215磅,我的杠栏应该是这样的:

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

您的代码(一个函数或完整的程序)必须取45到575之间的整数(始终为5的整数),并输出加起来等于该权重的小节。例如:

输入: 45

输出(请注意,空栏上没有剪辑):

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

输入: 100

输出:

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

输入: 575

输出:

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

您可以在每行上是否有尾随空格,但是输出不能有前导或尾随空行(45的输出应为一行,50的输出应为三行,65的输出应为五行,依此类推。)

这是代码高尔夫球,最短的代码获胜!


我们是否允许在每种情况下都打印一个尾随的空行,包括7高行,就好像该字符串是使用Python的字符串打印的一样print
PurkkaKoodari

Answers:


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

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是按位求反的主要候选者;~v
乔纳森·弗雷希

1

木炭,65字节

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

在线尝试!链接是详细版本的代码。说明:

¹²[]P×=⁹

打印12 -s,[]和9 =s。这占酒吧的一半。光标留在=s 的开头。

≔⁻N⁴⁵θ

从输入中减去45,以考虑钢筋的重量。

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

筛选不大于输入值的权重对的可能权重列表,并在列表不为空时重复。

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

|||.,|.,|!,||.,||!在逗号上分割字符串,然后选择与可能的最大重量相对应的部分,然后向上和向下打印。(或者,可以将其向上打印并在最后的¬方向上反射;许多变体具有相同的长度。)

→P[

打印剪辑(如果有的话,下一个砝码将覆盖它)。

≧⁻⊟ιθ»

从输入中减去权重。

‖B←

反思以完成杠铃。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.