首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Nth FizzBuzz数

Nth FizzBuzz数
EN

Code Golf用户
提问于 2021-12-17 18:51:15
回答 9查看 1.2K关注 0票数 29

Introduction

每个人都知道FizzBuzz序列。就像这样:

代码语言:javascript
运行
复制
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
.
.
.

如果你不知道,如果这个数字可以被3整除,那就是Fizz。如果它可以被5除,它就是Buzz。如果它可以被两者整除,那就是FizzBuzz。如果它不能被两者整除,它只是原来的数字。

任务

以两个输入为例(此处分隔的空间)

代码语言:javascript
运行
复制
Fizz 3

对于这个特定的示例输入,您应该输出9,即第三个Fizz。更普遍的是,以wordnumber为例,输出numberth word

word输入可能是Number,在这种情况下,您应该输出FizzBuzz序列中的numberth号,而不是FizzBuzzFizzBuzz

您可以选择表示FizzBuzzFizzBuzzNumber的任意4个不同、一致的输入。

测试用例

代码语言:javascript
运行
复制
Fizz 3 => 9
Buzz 4 => 25
FizzBuzz 2 => 30
Number 312 => 584

评分

最短代码获胜!

规则

  • 没有标准的漏洞。
EN

回答 9

Code Golf用户

发布于 2021-12-17 19:31:22

果冻,10字节

代码语言:javascript
运行
复制
³3,5ḍḄ⁼ʋ#Ṫ

在网上试试!

它使用0 = Number1 = Buzz2 = Fizz3 = FizzBuzz

果冻,8字节

代码语言:javascript
运行
复制
1g15=ɗ#Ṫ

在网上试试!

多亏了林恩。它使用1 = Number3 = Fizz5 = Buzz15 = FizzBuzz。单独包括,因为这些数字可以编码额外的数据。

他们是如何工作的

代码语言:javascript
运行
复制
³3,5ḍḄ⁼ʋ#Ṫ - Main link. Takes W=0,1,2,3 on the left, n on the right
       ʋ   - Last 4 links as a dyad f(k, W):
 3,5ḍ      -   Divisible by 3 or 5? Yields [0,0], [0,1], [1,0], [1,1]
     Ḅ     -   From binary; Yields 0, 1, 2, 3
      ⁼    -   Equals W?
³       #Ṫ - Starting from W, count up k = W, W+1, ..., returning the nth integer such that f(k, W) is true
代码语言:javascript
运行
复制
1g15=ɗ#Ṫ - Main link. Takes W=1,3,5,15 on the left, n on the right
     ɗ   - Last 3 links as a dyad f(k, W):
 g15     -   GCD(k, 15)
    =    -   Does that equal W?
1     #Ṫ - Count up k = 1, 2, ..., returning the nth integer such that f(k, W) is true
票数 6
EN

Code Golf用户

发布于 2021-12-17 19:29:40

JavaScript (ES6),44字节

期望(s)(n)与s=0代表数字,s=1用于Fizz,s=2用于Buzz,s=3用于FizzBuzz。

代码语言:javascript
运行
复制
(s,k=0)=>g=n=>n?g(n-=s==!(++k%3)+2*!(k%5)):k

在网上试试!

作弊版本,35字节

Fizz预期为4680,Buzz为1056,FizzBuzz为1,数字为27030。

代码语言:javascript
运行
复制
(s,k=0)=>g=n=>n?g(n-=s>>++k%15&1):k

在网上试试!

票数 5
EN

Code Golf用户

发布于 2021-12-17 22:59:47

Python 2,47字节

代码语言:javascript
运行
复制
f=lambda n,c,k=1:n and-~f(n-(k**4%15==c),c,k+1)

在网上试试!

将类别标签c取为:

代码语言:javascript
运行
复制
Number -> 1
Fizz -> 6
Buzz -> 10
FizzBuzz -> 0

我们使用k使用k**4%15对类别进行指纹识别,生成相应的值,如下所示。这个包在一个满足条件的n个数的递归函数中。

Python 2,54字节

代码语言:javascript
运行
复制
lambda n,c:([n*7/8-3*~n/4%2,~-n/4,~-n/2,0][c/2%4]+n)*c

在网上试试!

为每一种情况编写直接公式,输入c作为1,3,5,15之一。

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

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

复制
相关文章

相似问题

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