给定一个正整数< 100 (从1到99,包括1和99),输出那么多储物柜。
储物柜的定义如下:
+----+
| |
| |
| |
| nn |
+----+其中nn是储物柜号,以10为基数。如果有1位数,则在前面用0表示。例如,储物柜编号2显示数字02。
储物柜可以堆放,但只有两个高度:
+----+
| |
| |
| |
| on |
+----+
| |
| |
| |
| en |
+----+on表示奇数,en表示偶数.储物柜也可以放在一起。
+----+----+
| | |
| | |
| | |
| 01 | 03 |
+----+----+----+
| | | |
| | | |
| | | |
| 02 | 04 | 05 |
+----+----+----+请注意,储物柜5号是一个奇数储物柜,在底部。这是因为当你有奇数输入时,最后一个储物柜应该放在地板上(因为一个悬停的储物柜太贵了)。因此,上面的示例是n=5的预期输出。n=0应该返回空值。
规则:输入/输出的标准方法。输入任何方便的格式,输出为字符串。适用标准漏洞。
Input
Output
---------------------
1
+----+
| |
| |
| |
| 01 |
+----+
--------------------- (newlines optional in case 1)
4
+----+----+
| | |
| | |
| | |
| 01 | 03 |
+----+----+
| | |
| | |
| | |
| 02 | 04 |
+----+----+
---------------------
5
+----+----+
| | |
| | |
| | |
| 01 | 03 |
+----+----+----+
| | | |
| | | |
| | | |
| 02 | 04 | 05 |
+----+----+----+
---------------------
16
+----+----+----+----+----+----+----+----+
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| 01 | 03 | 05 | 07 | 09 | 11 | 13 | 15 |
+----+----+----+----+----+----+----+----+
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| 02 | 04 | 06 | 08 | 10 | 12 | 14 | 16 |
+----+----+----+----+----+----+----+----+这是密码-高尔夫,所以最短的代码赢了!
发布于 2017-04-27 15:22:26
发布于 2017-04-27 18:44:56
@echo off
set/a"n=%1&-2
if %1 gtr 1 call:l %n% 1
call:l %1 2
echo %s: =-%
exit/b
:l
set s=+
set "t=|
for /l %%i in (%2,2,%n%)do call:c %%i
if %1 gtr %n% call:c %1
for %%s in ("%s: =-%" "%s:+=|%" "%s:+=|%" "%s:+=|%" "%t%")do echo %%~s
exit/b
:c
set s=%s% +
set i=0%1
set "t=%t% %i:~-2% |+----+和| |都类似于+ +,因为它们可以通过一次替换生成,结果显示它们略短于单独生成它们( |s所需的额外引用没有帮助)。
发布于 2017-12-25 12:31:31
NθF…·¹θ«F⁵¿﹪ι²¿⁼ιθ→↗↓B⁶±⁶↗→→0P←⮌Iι←←↙在网上试试!链接是详细的代码版本。解释:
Nθ将储物柜的数量输入q。
F…·¹θ«循环从1到q包含的储物柜。
F⁵¿﹪ι²¿⁼ιθ→↗↓计算方向到下一个储物柜,并重复5次(高尔夫比使用跳跃运动)。
B⁶±⁶画储物柜,从左下角开始。(右下角也需要4个字节,右上角需要5个字节。左上角只需要3个字节,但是储物柜号要花更长的时间才能画出来。)
↗→→0如果必要的话,画出储物柜号的前导零。
P←⮌Iι将储物柜号码反画,从右向左,有效地向右证明其合理性.
←←↙移回左下角,准备计算下一个储物柜的方向。
编辑:更高版本的木炭支持这个32字节的解决方案:
F⪪…·¹N²«F⮌ι«↗→→0P←⮌Iκ↖↖↖↑UR⁶»M⁵χ在网上试试!链接是详细的代码版本。解释:
F⪪…·¹N²«将数字从1取到包含在输入号码中的成对的数字。(如果输入数字是奇数,则最后一个数组将只有一个元素。)
F⮌ι«以相反的顺序遍历每对。
↗→→0如果必要的话,画出储物柜号的前导零。
P←⮌Iι将储物柜号码反画,从右向左,有效地向右证明其合理性.
↖↖↖↑UR⁶移到储物柜的左上角并画出来。这也是下一个储物柜的左下角,所以如果适用的话,我们准备画第二个储物柜。
»M⁵χ移到下一对储物柜。(为了节省1字节,这应该在内循环之前,但因为某种原因,炭会为输入1生成不正确的输出。)
https://codegolf.stackexchange.com/questions/117798
复制相似问题