每个人都知道FizzBuzz序列。就像这样:
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
.
.
.如果你不知道,如果这个数字可以被3整除,那就是Fizz。如果它可以被5除,它就是Buzz。如果它可以被两者整除,那就是FizzBuzz。如果它不能被两者整除,它只是原来的数字。
以两个输入为例(此处分隔的空间)
Fizz 3对于这个特定的示例输入,您应该输出9,即第三个Fizz。更普遍的是,以word和number为例,输出numberth word。
word输入可能是Number,在这种情况下,您应该输出FizzBuzz序列中的numberth号,而不是Fizz、Buzz或FizzBuzz。
您可以选择表示Fizz、Buzz、FizzBuzz和Number的任意4个不同、一致的输入。
Fizz 3 => 9
Buzz 4 => 25
FizzBuzz 2 => 30
Number 312 => 584最短代码获胜!
发布于 2021-12-17 19:31:22
³3,5ḍḄ⁼ʋ#Ṫ它使用0 = Number、1 = Buzz、2 = Fizz和3 = FizzBuzz。
1g15=ɗ#Ṫ多亏了林恩。它使用1 = Number、3 = Fizz、5 = Buzz、15 = FizzBuzz。单独包括,因为这些数字可以编码额外的数据。
³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 true1g15=ɗ#Ṫ - 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发布于 2021-12-17 19:29:40
发布于 2021-12-17 22:59:47
f=lambda n,c,k=1:n and-~f(n-(k**4%15==c),c,k+1)将类别标签c取为:
Number -> 1
Fizz -> 6
Buzz -> 10
FizzBuzz -> 0我们使用k使用k**4%15对类别进行指纹识别,生成相应的值,如下所示。这个包在一个满足条件的n个数的递归函数中。
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之一。
https://codegolf.stackexchange.com/questions/239702
复制相似问题