全天候编码


47

编写一个单行程序,两个或更多字符长,不包含任何行终止符且不输入任何内容。例如,您的程序可能是:

MyProgram

当您的程序排列成12、3、6和9点钟的形状时,它需要输出相应的小时数。没有其他时间需要支持。

特别:

  • 当您的程序排列成12时(🕛)的时针时

    m
    a
    r
    g
    o
    r
    P
    y
    M
    

    运行它应该输出12

  • 当您的程序像三点钟的指针一样排列时(🕒)

    m
    a
    r
    g
    o
    r
    P
    y
    MyProgram
    

    运行它应该输出3

  • 当您的程序排列成6点钟(🕕)的时针时

    m
    a
    r
    g
    o
    r
    P
    y
    M
    y
    P
    r
    o
    g
    r
    a
    m
    

    运行它应该输出6

  • 当您的程序像9点钟(clock)的时针一样排列时

    ........m
    ........a
    ........r
    ........g
    ........o
    ........r
    ........P
    ........y
    margorPyM
    

    运行它应该输出9

笔记

  • 程序中的第一个字符始终位于时钟的中心。(请注意M,六点钟示例中只有一个。)

  • 可以使用任何一个非换行符来缩进9点钟位置的程序。在示例.中使用的是空格或/或,但#同样有效。

  • 对于三点钟的安排,右上角的空白区域中不得包含任何字符。(即,将其保留为空,不要用空格填充。)

  • 初始程序安排(MyProgram原样)不需要执行任何操作。仅12、3、6和9点钟位置需要具有正确的,定义明确的输出。

  • 不允许仅用作功能或REPL命令的代码。四种安排中的每一种都应准备好按原样运行完整程序。

以字节为单位的最短程序获胜。例如MyProgram具有9个字节的长度。


27
我什至不知道如何开始执行此操作
Nic Hartley

1
如果先打印字符然后用退格键删除,可以吗?
feersum '16

5
这是一个CJam脚本,可以从一行和一个填充字符生成所有四个代码:cjam.tryitonline.net/…随时将其包含在帖子中。
Martin Ender

4
我本来打算在Brainfuck中尝试这种方法,但事实证明,在BF之前,挑战就使我的大脑崩溃了。

2
@cat我相信这是不可能的,因为程序36Brainfuck不会有区别,因为它们仅在空白处有所不同。
Martin Ender

Answers:


37

GolfScript,11个10字节

21;;3#9];6

用途#作为填充字符。

12点

6
;
]
9
#
3
;
;
1
2

在线尝试!

这个怎么运作。

  • 6被推入堆栈,;将其丢弃。

  • ] 将堆栈包装在一个数组中(不影响输出)。

  • 93推入堆栈,;;丢弃它们。

  • 最后,12被压入堆栈,并隐式打印而不会分离。

3点钟

6
;
]
9
#
3
;
;
1
21;;3#9];6

在线尝试!

这个怎么运作

  • 6被推入堆栈,;将其丢弃。

  • ] 将堆栈包装在一个数组中(不影响输出)。

  • 93推入堆栈,;;丢弃它们。

  • 121推入堆栈,;;将其丢弃。

  • 3 被推入堆栈。

  • # 开始评论,直到行尾。

6点钟

6
;
]
9
#
3
;
;
1
2
1
;
;
3
#
9
]
;
6

在线尝试!

这个怎么运作

  • 6被推入堆栈,;将其丢弃。

  • ] 将堆栈包装在一个数组中(不影响输出)。

  • 93推入堆栈,;;丢弃它们。

  • 121被推入堆栈。

  • ;;丢弃最后一个12

  • 39被推入堆栈。

  • ]并将;堆栈包装成数组并丢弃,清除堆栈。

  • 6 被推入堆栈。

9点

#########6
#########;
#########]
#########9
##########
#########3
#########;
#########;
#########1
6;]9#3;;12

在线尝试!

这个怎么运作

  • 除最后一行外的所有行均为注释。

  • 6被推入堆栈,;将其丢弃。

  • ] 将堆栈包装在一个数组中(不影响输出)。

  • 9 被推入堆栈。

  • # 开始评论,直到行尾。


25

> <>,20个字节

X   n-+g+aa0g+9a2c!v

那里有不可打印的内容,即:

  • 之后X\x06\t
  • 之后c\x03

每次都运行源代码的相同部分,使用g源代码的两部分来确定从12中减去什么。

v                         Make IP move downwards
 !\x03                    Jump over the \x03
      c                   Push 12
       2a9+g              Get the char at position (2, 19), i.e. the \t for
                          3 o'clock, the \x03 for 9 o'clock, 0 otherwise
            0aa+g         Get the char at position (0, 20), i.e. first char on
                          the line after the X, \x06 for 6 o'clock
                 +        Add
                  -       Subtract from the 12
                   n      Output as number
                    \t    Unrecognised instruction - errors out

12点 | 3点 | 6点 | 9点(由于制表符而显得未对齐)


7
“ 12票0答案?请等Sp证明它是微不足道的。” – Helka,在聊天中
Alex A.

1

ROOP,54个字节

OW    3#H V  1#1  H#6  WO#H V>V1#OW V>V9#OW   2#OW   1

用途<作为填充字符。

12点 | 3点 | 6点 | 9点

12点

12是靠近顶部秋天为3个周期。当他们到达W操作员时,操作员会将数字放在中O,它代表输出。

1这部分

1


V

H

下降2个周期,V操作员将其移至下方,并在下一个周期激活H结束程序的操作员。

3点钟

O也是移动和掉落的物体。由于该代码现在一行包含多个字符,因此所有其他行均填充空白。所有O动作向右移动并掉下,导致W操作员无处发送12

唯一O不动的是被困在中心的那个。在3上述下降了4个周期到W

然后,下降的数字将填充W和之间的4个空格3。填满后,另一个数字可以越过所有数字,并到达H结束程序的操作员。

6点钟

1


H
#
6


W
O

与12非常相似,6落在W1H。这将在2个周期内发生,在12种情况发生之前结束程序。

9点

<9
<V
<>
<V
< 
<W
<O
<#
<1
<V
<>
<V
< 
<H

(我只显示一列,<因为其他列什么都不做)。

V向上的截齿9并将其移动到下方的管,其偏转对象到左侧。管道<将对象向下移动,而下一个向右移动。该V运营商把9在下面的空白处,然后将其发送到输出。

所述1使得等于运动并到达H,从而结束程序。当管道在同一周期中移动对象时,所有这些都需要一个周期。

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.