首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Fibonacci分发验证器

Fibonacci分发验证器
EN

Code Golf用户
提问于 2014-01-19 07:05:02
回答 4查看 584关注 0票数 11

相关:你好世界!斐波那契分布

如果给定的输入符合以下规范,则创建一个返回True的程序,否则为False:

  • 输入中数字字符(0-9)的计数与Fibonacci数匹配。
  • 输入中的非数字字符的计数!(0-9)与紧接数字字符计数之前的Fibonacci数匹配。

其他规则:

  • 您的程序必须使用正确的斐波纳契序列,按照OEIS -也就是说,斐波纳契序列必须从0, 1, 1, 2, ...开始。
  • 如果数字或非数字计数为1,则必须发生以下情况:
    • 数字1:非数字计数的0或1应该作为真-所有其他错误处理.
    • 非数字1:数字计数1或2应处理为真-所有其他错误.

  • 输入可以采取任何您喜欢,但程序必须能够处理任何任意文本。
  • True/False不区分大小写,可以用1/0或T/F代替。
  • 你只能对两个斐波那契数进行硬编码。
  • 输出只能是真/假或1/0或T/F。任何额外的文本或可见的错误都是不可接受的。
EN

回答 4

Code Golf用户

发布于 2014-01-19 08:34:27

Golfscript,36

代码语言:javascript
复制
:?1 2{.@+.?,<}do?,=@{.48<\58<^},,@=*

解释:

  • :?将输入存储到?中。
  • 1 2{.@+.?,<}do计算最后两个斐波那契数,直到它到达输入长度为止。该块的内容如下:“复制顶部,将第三个值旋转到顶部,添加它们,复制顶部,获取输入,获取其长度,进行比较”。
  • ?,=将最后计算的斐波那契数与输入长度进行比较。
  • @将输入带到顶部
  • {.48<\58<^},只过滤掉数字。该块的内容是“ASCII值是否低于48 XOR低于58?”
  • ,@=将过滤后的字符串长度与较低的斐波那契数(数位数)进行比较。
  • *将这两个比较合并为一个布尔值。

现场演示:http://golfscript.apphb.com/?c=OyIvMDU5OiIKOj8xIDJ7LkArLj8sPH1kbz8sPUB7LjQ4PFw1ODxefSwsQD0q

票数 4
EN

Code Golf用户

发布于 2014-01-19 18:37:07

Python 3,105个字符

脚本文件名通过命令行传递给程序。

代码语言:javascript
复制
import sys
a=[0]*2
for b in open(sys.argv[1]).read():a['/'<b<':']+=1
a,b=a
while a>0:a,b=b-a,a
print(b==1)

87个字符

脚本必须以名为s的文件形式编写

代码语言:javascript
复制
a=[0]*2
for b in open('s').read():a['/'<b<':']+=1
a,b=a
while a>0:a,b=b-a,a
print(b==1)
票数 3
EN

Code Golf用户

发布于 2014-01-21 06:40:34

Ruby,85

代码语言:javascript
复制
d=-(n=(i=A2lt;.read).gsub(/\d/,'').size)+i.size
a=b=1;while b<d;b=a+a=b end;p b==d&&a==n

STDIN上或作为文件名参数接受输入。

输出要么是"true",要么是"false"

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

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

复制
相关文章

相似问题

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