首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >储物柜号码!

储物柜号码!
EN

Code Golf用户
提问于 2017-04-27 14:06:37
回答 4查看 1.3K关注 0票数 26

给定一个正整数< 100 (从1到99,包括1和99),输出那么多储物柜。

储物柜的定义如下:

代码语言:javascript
复制
+----+
|    |
|    |
|    |
| nn |
+----+

其中nn是储物柜号,以10为基数。如果有1位数,则在前面用0表示。例如,储物柜编号2显示数字02

储物柜可以堆放,但只有两个高度:

代码语言:javascript
复制
+----+
|    |
|    |
|    |
| on |
+----+
|    |
|    |
|    |
| en |
+----+

on表示奇数,en表示偶数.储物柜也可以放在一起。

代码语言:javascript
复制
+----+----+
|    |    |
|    |    |
|    |    |
| 01 | 03 |
+----+----+----+
|    |    |    |
|    |    |    |
|    |    |    |
| 02 | 04 | 05 |
+----+----+----+

请注意,储物柜5号是一个奇数储物柜,在底部。这是因为当你有奇数输入时,最后一个储物柜应该放在地板上(因为一个悬停的储物柜太贵了)。因此,上面的示例是n=5的预期输出。n=0应该返回空值。

规则:输入/输出的标准方法。输入任何方便的格式,输出为字符串。适用标准漏洞。

测试用例:

代码语言:javascript
复制
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 |
+----+----+----+----+----+----+----+----+

这是密码-高尔夫,所以最短的代码赢了!

EN

回答 4

Code Golf用户

回答已采纳

发布于 2017-04-27 15:22:26

皮斯,66字节

代码语言:javascript
复制
A.[Y2m+.rKXJr6j" | "++km.[\02`kdkjkUT;" -|+"+*3]KJ_.T_McSQ2js[GHhH

测试套件。

票数 7
EN

Code Golf用户

发布于 2017-04-27 18:44:56

批处理,305个字节

代码语言:javascript
复制
@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所需的额外引用没有帮助)。

票数 1
EN

Code Golf用户

发布于 2017-12-25 12:31:31

木炭,37字节

代码语言:javascript
复制
NθF…·¹θ«F⁵¿﹪ι²¿⁼ιθ→↗↓B⁶±⁶↗→→0P←⮌Iι←←↙

在网上试试!链接是详细的代码版本。解释:

代码语言:javascript
复制
Nθ

将储物柜的数量输入q

代码语言:javascript
复制
F…·¹θ«

循环从1q包含的储物柜。

代码语言:javascript
复制
F⁵¿﹪ι²¿⁼ιθ→↗↓

计算方向到下一个储物柜,并重复5次(高尔夫比使用跳跃运动)。

代码语言:javascript
复制
B⁶±⁶

画储物柜,从左下角开始。(右下角也需要4个字节,右上角需要5个字节。左上角只需要3个字节,但是储物柜号要花更长的时间才能画出来。)

代码语言:javascript
复制
↗→→0

如果必要的话,画出储物柜号的前导零。

代码语言:javascript
复制
P←⮌Iι

将储物柜号码反画,从右向左,有效地向右证明其合理性.

代码语言:javascript
复制
←←↙

移回左下角,准备计算下一个储物柜的方向。

编辑:更高版本的木炭支持这个32字节的解决方案:

代码语言:javascript
复制
F⪪…·¹N²«F⮌ι«↗→→0P←⮌Iκ↖↖↖↑UR⁶»M⁵χ

在网上试试!链接是详细的代码版本。解释:

代码语言:javascript
复制
F⪪…·¹N²«

将数字从1取到包含在输入号码中的成对的数字。(如果输入数字是奇数,则最后一个数组将只有一个元素。)

代码语言:javascript
复制
F⮌ι«

以相反的顺序遍历每对。

代码语言:javascript
复制
↗→→0

如果必要的话,画出储物柜号的前导零。

代码语言:javascript
复制
P←⮌Iι

将储物柜号码反画,从右向左,有效地向右证明其合理性.

代码语言:javascript
复制
↖↖↖↑UR⁶

移到储物柜的左上角并画出来。这也是下一个储物柜的左下角,所以如果适用的话,我们准备画第二个储物柜。

代码语言:javascript
复制
»M⁵χ

移到下一对储物柜。(为了节省1字节,这应该在内循环之前,但因为某种原因,炭会为输入1生成不正确的输出。)

票数 0
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/117798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档