首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Numpad的骑士数字

Numpad的骑士数字
EN

Code Golf用户
提问于 2016-04-18 18:55:20
回答 6查看 4.8K关注 0票数 33

用于标准numpad上的非零位数。

代码语言:javascript
复制
789
456
123

考虑将一个国际象棋骑士放在任何数字上,然后用任意数量的L形状的跳跃移动它,跟踪一个正数的十进制整数。什么样的正整数可以用这样的方式表达?

其中之一是38,因为骑士可以从3开始,然后向左移动到8381383也是可能的。

如果不采取跳转(这是允许的),3本身是可能的。5也是,但是不能从5到达其他数字,因此它是数字5出现的唯一数字。

编写一个程序或函数,该程序或函数接受正十进制整数(如果需要,可以将其作为字符串),如果数字可以由数字上的骑士以描述的方式表示,则打印或返回特鲁西值,但否则输出虚妄值。

--以字节为单位的最短代码获胜。打破平局是较早回答

示例

特鲁西:

代码语言:javascript
复制
1, 2, 3, 4, 5, 6, 7, 8, 9, 16, 18, 38, 61, 81, 294, 349, 381, 383, 729, 767, 38183, 38383, 18349276, 183492761, 618349276

法尔西:

代码语言:javascript
复制
10, 11, 50, 53, 55, 65, 95, 100, 180, 182, 184, 185, 186, 187, 188, 189, 209, 305, 2009, 5030, 3838384, 4838383, 183492760
EN

回答 6

Code Golf用户

发布于 2016-04-18 21:49:08

Python2,52字节

代码语言:javascript
复制
f=lambda n:n<6or`n%100`in'18349276167294381'*f(n/10)

检查字符串'18349276167294381'中是否有两个连续的数字。为了获得连续的数字,而不是执行zip(`n`,`n`[1:]),函数重复检查最后两个数字并删除最后一个数字。

票数 18
EN

Code Golf用户

发布于 2016-04-18 20:05:07

Ruby,57字节

匿名函数。参数是字符串。

代码语言:javascript
复制
->n{(0..n.size).count{|i|!"16729438183492761"[n[i,2]]}<1}

带有测试套件的程序:

代码语言:javascript
复制
f=->n{(0..n.size).count{|i|!"16729438183492761"[n[i,2]]}<1}

a=%w{1 2 3 4 5 6 7 8 9 16 18 38 61 81 294 349 381 383 729 767 38183 38383 18349276 183492761 618349276
10 11 50 53 55 65 95 100 180 182 184 185 186 187 188 189 209 305 2009 5030 3838384 4838383 183492760}

a.each {|e|p [e, f[e]]}

我只是编码了所有可能的骑士移动到一个字符串,并检查输入中的每2位数字是否存在于该字符串中。

票数 7
EN

Code Golf用户

发布于 2016-04-18 20:24:17

grep 58字节

代码语言:javascript
复制
grep "^((?=18|16|29|27|34|38|49|43|61|67|72|76|81|83|94|92).)*.$"

因为如果你不能打败grep..。

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

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

复制
相关文章

相似问题

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