首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >它是洗牌的FizzBuzz吗?

它是洗牌的FizzBuzz吗?
EN

Code Golf用户
提问于 2022-06-29 00:59:21
回答 5查看 965关注 0票数 9

的孪生兄弟。

FizzBuzz是取一系列正整数的地方,用"Fizz“代替可被3整除的数字,用"Buzz”代替可被5整除的数字,用"FizzBuzz“代替可被15整除的数字。例如,从1到10的FizzBuzz是1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz

您的挑战是,给出一个Buzzes、Buzzes、FizzBuzzes和一个表示整数的值(我将使用Int)的列表,以确定是否可以将其排列为有效的FizzBuzz。

例如,可以将Int, Fizz, Fizz, Buzz安排为有效的Fizz, Buzz, Int, Fizz (例如,9、10、11、12)。但是Buzz, Fizz, Buzz不能这样做,因为两个Buzz需要有五个值。

您可以选择任意四个值来表示Fizz、Buzz、FizzBuzz和Int。

这是密码-高尔夫,最短的胜利!

Truthy

代码语言:javascript
运行
复制
Int, Int, Fizz
Fizz, Int, Fizz, Buzz
Fizz, Fizz, Fizz, Int, Int, Int, Buzz
Buzz, Int, Int, Int, Fizz, FizzBuzz
FizzBuzz, Int, Int, Int, Int

Falsy

代码语言:javascript
运行
复制
Buzz, FizzBuzz, Fizz
Buzz, Fizz, Buzz
Int, Int, Int
Fizz, Int, Fizz
FizzBuzz, Int, Int, Buzz, Fizz
Int, Int, Fizz, Fizz, Fizz, Buzz, Buzz
EN

回答 5

Code Golf用户

发布于 2022-06-29 01:35:02

维沙尔,13字节

代码语言:javascript
运行
复制
L₄+v₍₃₅ÞS?Ṗ↔ḃ

在网上试试!超慢。[0,0]用于Int[1,0]用于Fizz[0,1]用于Buzz[1,1]用于FizzBuzz

测试用例,使用14而不是26使它更快.

代码语言:javascript
运行
复制
L₄*v₍₃₅ÞS?Ṗ↔ḃ
L₄+           # Length of input + 26 (14 would be enough, but 26 is one byte)
   v₍₃₅       # For each in range [1, that], calculate [n % 3 == 0, n % 5 == 0]
       ÞS     # All sublists
           ↔  # Keep only lists that are in...
         ?Ṗ   # The permutations of the input
            ḃ # Is this truthy? (does it have at least one element?)
票数 4
EN

Code Golf用户

发布于 2022-06-29 02:01:21

JavaScript (ES6),72字节

期望0用于Int,1用于Fizz,2用于Buzz,3用于FizzBuzz。返回01

这是与我对另一个挑战的回答中相同的算法。

代码语言:javascript
运行
复制
f=(a,i=k=15)=>k--&&a.sort().map(_=>++i%3<1|2*!(i%5)).sort()+''==a|f(a,k)

在网上试试!

评论

代码语言:javascript
运行
复制
f = (             // f is a recursive function taking:
  a,              //   a[] = input array
  i =             //   i = index in the FizzBuzz sequence
  k = 15          //   k = counter
) =>              //
  k-- &&          // decrement k; abort if it was 0
  a.sort()        // normalize a[] by sorting it in lexicographical order
  .map(_ =>       // for each value in a[]:
    ++i % 3 < 1 | //   generate the FizzBuzz sequence,
    2 * !(i % 5)  //   starting at i + 1
  )               // end of map()
  .sort()         // normalize this new array
  + '' == a |     // coerce it to a string and compare it with a[]
  f(a, k)         // recursive call with i set to the new value of k
票数 3
EN

Code Golf用户

发布于 2022-06-29 01:56:39

Python3,213个字节:

代码语言:javascript
运行
复制
def v(r,l,k=[]):
 if not r:yield k
 for i,a in enumerate(l):
  if r[0]%(a|1)<1:yield from v(r[1:],l[:i]+l[i+1:],k+[a])
def f(l,c=0):
 while(c:=c+1)<sum(i**2for i in l):
  if next(v(range(c,c+len(l)),l),0):return 1

在网上试试!

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

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

复制
相关文章

相似问题

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