首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >镜像数字钟

镜像数字钟
EN

Code Golf用户
提问于 2017-12-18 22:21:42
回答 6查看 2.8K关注 0票数 19

许多数字时钟使用简化的数字显示时间,这些数字仅由七种不同的灯组成,无论是开着还是关着:

当水平镜像时,数字018不会改变,因为它们是对称的。另外,25的数字被交换,2变成5,反之亦然。当镜像时,所有其他数字都变得无效。

因此,给定24小时数字时钟,有许多时钟读数,因此数字显示器的镜像图像也是有效的时钟读数。您的任务是输出所有这样的时钟读数和镜像读数。

例如,22:21变成15:5500:15变成21:00。另一方面,12:3416:27在镜像时不再有效(数字34679变得无效),22:2218:21也不再有效,因为一天只有24小时,一小时只有60分钟,没有一个正常的时钟会显示55:5512:81

任务

编写不需要输入并按升序输出所有有效对的程序或函数,如下所示:

代码语言:javascript
复制
00:00 - 00:00
00:01 - 10:00
00:05 - 20:00
00:10 - 01:00
00:11 - 11:00
00:15 - 21:00
00:20 - 05:00
00:21 - 15:00
00:50 - 02:00
00:51 - 12:00
00:55 - 22:00
01:00 - 00:10
01:01 - 10:10
01:05 - 20:10
01:10 - 01:10
01:11 - 11:10
01:15 - 21:10
01:20 - 05:10
01:21 - 15:10
01:50 - 02:10
01:51 - 12:10
01:55 - 22:10
02:00 - 00:50
02:01 - 10:50
02:05 - 20:50
02:10 - 01:50
02:11 - 11:50
02:15 - 21:50
02:20 - 05:50
02:21 - 15:50
02:50 - 02:50
02:51 - 12:50
02:55 - 22:50
05:00 - 00:20
05:01 - 10:20
05:05 - 20:20
05:10 - 01:20
05:11 - 11:20
05:15 - 21:20
05:20 - 05:20
05:21 - 15:20
05:50 - 02:20
05:51 - 12:20
05:55 - 22:20
10:00 - 00:01
10:01 - 10:01
10:05 - 20:01
10:10 - 01:01
10:11 - 11:01
10:15 - 21:01
10:20 - 05:01
10:21 - 15:01
10:50 - 02:01
10:51 - 12:01
10:55 - 22:01
11:00 - 00:11
11:01 - 10:11
11:05 - 20:11
11:10 - 01:11
11:11 - 11:11
11:15 - 21:11
11:20 - 05:11
11:21 - 15:11
11:50 - 02:11
11:51 - 12:11
11:55 - 22:11
12:00 - 00:51
12:01 - 10:51
12:05 - 20:51
12:10 - 01:51
12:11 - 11:51
12:15 - 21:51
12:20 - 05:51
12:21 - 15:51
12:50 - 02:51
12:51 - 12:51
12:55 - 22:51
15:00 - 00:21
15:01 - 10:21
15:05 - 20:21
15:10 - 01:21
15:11 - 11:21
15:15 - 21:21
15:20 - 05:21
15:21 - 15:21
15:50 - 02:21
15:51 - 12:21
15:55 - 22:21
20:00 - 00:05
20:01 - 10:05
20:05 - 20:05
20:10 - 01:05
20:11 - 11:05
20:15 - 21:05
20:20 - 05:05
20:21 - 15:05
20:50 - 02:05
20:51 - 12:05
20:55 - 22:05
21:00 - 00:15
21:01 - 10:15
21:05 - 20:15
21:10 - 01:15
21:11 - 11:15
21:15 - 21:15
21:20 - 05:15
21:21 - 15:15
21:50 - 02:15
21:51 - 12:15
21:55 - 22:15
22:00 - 00:55
22:01 - 10:55
22:05 - 20:55
22:10 - 01:55
22:11 - 11:55
22:15 - 21:55
22:20 - 05:55
22:21 - 15:55
22:50 - 02:55
22:51 - 12:55
22:55 - 22:55

允许使用尾行或前导换行符。在行提要之前有几个空格也是允许的。时间必须是hh:mm格式的,必要时用零填充。

这是密码-高尔夫,所以以字节为单位的最短答案获胜。和往常一样,标准漏洞是不允许的。

EN

回答 6

Code Golf用户

发布于 2017-12-19 00:38:01

皮斯,48字节

代码语言:javascript
复制
Lj\:c2bjf!:T"5.:|25:"0mj" - ",ydyX_d`25)^"0125"4

在网上试试!

生成所有可能的0125组合,然后操纵它们进入时代。这些是按正确的顺序排列的,因为它们是按字典顺序产生的。最后,通过删除与regex 5.:25:匹配的行来过滤额外的无效时间。可悲的是,压缩似乎不能很好地工作在任何字符串,这个程序使用,除非我做了一个错误或疏忽。

票数 2
EN

Code Golf用户

发布于 2017-12-23 05:17:19

日本v2 (+ -R),51字节

代码语言:javascript
复制
G²Çs4 ùT4 i':2î+" - "+Zw r\d_^Z>1})r3,5Ãkf/5.|25):

在线测试!

解释

代码语言:javascript
复制
G²Ç   s4 ùT4 i':2à ®   +" - "+Zw r\d_  ^Z>1})r3,5à kf/5.|25):
G²oZ{Zs4 ùT4 i':2} mZ{Z+" - "+Zw r\dZ{Z^Z>1})r3,5} kf/5.|25):/   Ungolfed

G²              Calculate 16**2, or 256.
  oZ{       }   Create the range [0...256) and map each integer Z to:
Zs4               Convert Z to a base-4 string.  [0, 1, 2, 3, 10, ..., 3331, 3332, 3333]
    ùT4           Pad-left with 0's to length 4. [0000, 0001, 0002, ..., 3331, 3332, 3333]
        i':2      Insert a colon at index 2.     [00:00, 00:01, 00:02, ..., 33:31, 33:32, 33:33]

mZ{      }      Map each string Z in the resulting array to:
Zw r\dZ{     }    Reverse Z, and replace each digit Z' with
        Z^Z>1       Z' xor'd with (Z>1). This turns 2 to 3 and vice versa.
                  We now have [00:00, 10:00, 30:00, 20:00, 01:00, ..., 12:22, 32:22, 22:22]
Z+" - "+          Append this to Z with " - " in between. This gives
                    [00:00 - 00:00, 00:01 - 10:00, 00:02 - 30:00, ..., 33:32 - 32:22, 33:33 - 22:22]
r3,5              Replace all 3s in the result with 5s.
                    [00:00 - 00:00, 00:01 - 10:00, 00:02 - 50:00, ..., 55:52 - 52:22, 55:55 - 22:22]

k               Remove all results that
 f/5.|25):/       match the regex /(5.|25):/g. This removes times with impossible hours.

                Implicit: output result of last expression, joined with newlines (-R)
票数 2
EN

Code Golf用户

发布于 2017-12-19 00:36:38

木炭,59字节

代码语言:javascript
复制
F012F0125F0125F015¿›‹⁺ικ25⁼⁺λμ25«ικ:λμ - F⟦μλ3κι⟧§015::2Iν⸿

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

代码语言:javascript
复制
F012F0125F0125F015

为未镜像的数字创建四个嵌套循环。

代码语言:javascript
复制
¿›‹⁺ικ25⁼⁺λμ25«

检查一下,时间和分钟都不是25小时。(镜像25分钟将导致25小时,所以这是一个禁止。)

代码语言:javascript
复制
ικ:λμ - 

打印未镜像的时间。

代码语言:javascript
复制
F⟦μλ3κι⟧§015::2Iν⸿

通过将反向数字(或冒号的3 )从字符串转换为整数,并在翻译表中查找它们,打印镜像时间。

或者,也可以使用59个字节:

代码语言:javascript
复制
F¹¹F¹⁶¿⁻¹¹κ¿⁻²﹪κ⁴«≔⟦÷ι⁴﹪ι⁴¦⁴÷κ⁴﹪κ⁴⟧θFθ§0125:λ - F⮌θ§0152:λ⸿

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

代码语言:javascript
复制
F¹¹F¹⁶

为小时和分钟创建循环。

代码语言:javascript
复制
¿⁻¹¹κ¿⁻²﹪κ⁴«

排除25和以2结尾的任何分钟。

代码语言:javascript
复制
≔⟦÷ι⁴﹪ι⁴¦⁴÷κ⁴﹪κ⁴⟧θ

将小时和分钟转换为基数4。

代码语言:javascript
复制
Fθ§0125:λ

打印在翻译表中查找的数字。

代码语言:javascript
复制
 - 

打印分隔符。

代码语言:javascript
复制
F⮌θ§0152:λ⸿

打印在镜像翻译表中查找的反向数字。

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

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

复制
相关文章

相似问题

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