首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >时间Anagram

时间Anagram
EN

Code Golf用户
提问于 2018-05-09 06:59:45
回答 7查看 4.3K关注 0票数 30

(原张贴(并删除)@Tlink,最有可能是受这个StackOverflow问题的启发

因为很遗憾它被删除了,因为它似乎是一个很好的挑战,所以我想我应该用适当的格式和规则重新发布它。(我试着联系@Tlink,并得到他/她的许可,但是(S)他不再回复了,这就是为什么我现在决定自己发。)

输入:六位数。

输出:24小时格式的第一个或最后一个有效时间(00:00:0023:59:59)。(您可以选择自己是输出第一个有效时间还是最后一个有效时间。)

示例:

当输入为1,8,3,2,6,4时,可以创建以下时间:

代码语言:javascript
复制
12:36:48    12:38:46    12:46:38    12:48:36
13:26:48    13:28:46    13:46:28    13:48:26
14:26:38    14:28:36    14:36:28    14:38:26
16:23:48    16:24:38    16:28:34    16:28:43
16:32:48    16:34:28    16:38:24    16:38:42
16:42:38    16:43:28    16:48:23    16:48:32
18:23:46    18:24:36    18:26:34    18:26:43
18:32:46    18:34:26    18:36:24    18:36:42
18:42:36    18:43:26    18:46:23    18:46:32
21:36:48    21:38:46    21:46:38    21:48:36
23:16:48    23:48:16

因此,在本例中,我们将输出12:36:4823:48:16,分别是第一个/最后一个。

挑战规则:

  • 说明您是在回答中输出第一个有效时间还是最后一个有效时间。
  • I/O灵活。输入可以是六个分隔整数;一个包含六位数字的字符串;一个整数列表/数组;一个单个(可能是八进制)数字;等等。输出可以是一个正确排序的数字列表/数组;一个格式为HH:mm:ss/HHmmss/HH mm ss;的字符串--用新行分隔符打印的每一个数字;等等。
  • 您可以按任意顺序获取数字,这样就可以将数字从最低到最高排序,反之亦然。
  • 如果无法用给定的数字(即2,5,5,5,5,5)创建有效时间,请以任何您想要的方式清楚地说明这一点。可以返回null/false"Not possible";带有错误的崩溃;等等(不能输出无效的时间,比如55:55:52,或者其他有效的时间,比如00:00:00)。请说明它如何处理无法为其创建有效时间的输入。
  • 不允许输出所有可能的有效时间。只应输出/返回最早的/最新的。
  • 24为小时(即24:00:00)或60为分钟/秒(即00:60:60)无效。范围为[00-23] (小时),[00-59] (分钟)和秒(秒)。

一般规则:

  • 这是密码-高尔夫,所以最短的答案(以字节为单位)-- wins. --不要让代码-高尔夫语言阻止你用非代码处理语言发布答案。试着为“任意”编程语言提供一个尽可能短的答案。
  • 适用标准规则作为您的答案,因此您可以使用STDIN/STDOUT,函数/方法具有适当的参数和返回类型的完整程序。你说了算。
  • 违约漏洞是禁止的。
  • 如果可能,请为您的代码添加一个带有测试的链接。
  • 此外,如有必要,请补充说明。

测试用例:

代码语言:javascript
复制
Input:          Earliest output:     Latest output:

1,2,3,4,6,8     12:36:48             23:48:16
2,5,5,5,5,5     None possible        None possible
0,0,0,1,1,1     00:01:11             11:10:00
1,1,2,2,3,3     11:22:33             23:32:11
9,9,9,9,9,9     None possible        None possible
2,3,5,5,9,9     23:59:59             23:59:59
1,2,3,4,5,6     12:34:56             23:56:41
0,0,0,0,0,0     00:00:00             00:00:00
1,5,5,8,8,8     18:58:58             18:58:58
1,5,5,5,8,8     15:58:58             18:58:55
1,1,1,8,8,8     18:18:18             18:18:18
EN

回答 7

Code Golf用户

发布于 2018-05-09 08:09:29

杰夫特,17字节

将输入作为数字字符串并输出第一个有效时间;如果没有有效时间,则无限循环。

代码语言:javascript
复制
á
@øXr':}a@ÐX ¤¯8

试试看

警告:非常慢--在第二个X之后添加*1000以加快速度。不要忘记,无效的输入会创建无限循环,并可能导致浏览器崩溃。

解释

代码语言:javascript
复制
                   :Implicit input of string U
á                  :Get all permutations of U
\n                 :Reassign that array to U
      }a           :Loop until true and then return the argument that was passed
        @          :By default that argument is an integer X which increments on each loop so first we'll pass X through a function
         ÐX        :  new Date(X)
            ¤      :  Get the time
             ¯8    :  Slice to the 8th character to get rid of the timezone info
@                  :The function that tests for truthiness
  Xr':             :  Remove all colons in X
 ø                 :  Does U contain the resulting string?
票数 5
EN

Code Golf用户

发布于 2018-05-09 10:57:03

Python 2,78字节

代码语言:javascript
复制
lambda s:min(x for x in range(62**3)if x%100<60>x/100%100<s==sorted('%06d'%x))

在网上试试!

阿纳尔德保存了一个字节。谢谢!

期望像['1','2','3','4','6','8']这样的列表按排序顺序排列:

您可以按任意顺序获取数字,这样就可以将数字从最低到最高排序,反之亦然。

输出12:36:48的整数,如123648。希望这是可以接受的。

票数 3
EN

Code Golf用户

发布于 2018-05-09 13:21:32

果冻,15字节

代码语言:javascript
复制
Œ!s€2Ḍf«¥“ç;;‘Ṃ

在网上试试!

在请求后张贴。这个方法和另一个答案是一样的,但是这个答案是独立开发的。

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

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

复制
相关文章

相似问题

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