首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场

排泡
EN

Code Golf用户
提问于 2017-01-12 18:12:53
回答 2查看 942关注 0票数 29

注意,从math.stackexchange询问的问题中复制的挑战。

最近,我获得了相当的吹泡泡的技巧。一开始我会像这样吹泡泡:

但后来事情开始变得奇怪了:

过了一会儿,我吹了一些很奇怪的泡泡:

吹了几百甚至几千个这样的泡泡后,我的额头突然皱起了一个问题:如果有n个泡泡,你能用多少种不同的方式排列它们?例如,如果n= 1,则只有1种排列。如果n=2时,则有2种安排。如果n= 3,则有4种安排。如果n= 4,则有9种安排。

以下是4个气泡的9种排列方式:

吹完所有这些美妙的泡泡后,我决定和你一起分享计算它们的安排的乐趣。下面是你的任务:

目标

编写一个程序、函数或类似的程序,以计数排列n气泡的方式。

输入

n,泡沫的数量。N>0

输出

你能安排这些气泡的方法的数目。

获奖标准

如果我们能在你的代码周围吹个泡泡,那就太酷了。代码越小,这样做就越容易。因此,使用最少字节数制作代码的人将赢得比赛。

附加信息

OEIS

EN

回答 2

Code Golf用户

发布于 2017-01-12 19:02:51

Mathematica,68字节

我敢打赌,使用从头开始的实现(即使在Mathematica中),这是可以克服的,但是下面是内置的版本:

代码语言:javascript
运行
复制
<<NumericalDifferentialEquationAnalysis`
Last@ButcherTreeCount[#+1]&

ButcherTreeCount是0索引的,因此是[#+1],并返回到其参数为止的所有值的列表,因此返回Last@。但否则,它只是这个函数的内部结构。但是,它需要加载一个包,这就是第一行所做的。

票数 10
EN

Code Golf用户

发布于 2020-05-21 01:11:53

Dyalog Unicode,40 字节数

代码语言:javascript
运行
复制
{1≥⍵:⍵⋄w÷⍨+/∊(0=v|⊂⌽v)×v××∘⊂⍨∇¨v←⍳w←⍵-1}

在网上试试!

或‘S的Python 2答案的一个端口,使用嵌套向量的向量代替嵌套的for-循环.

是如何工作的

代码语言:javascript
运行
复制
{1≥⍵:⍵⋄w÷⍨+/∊(0=v|⊂⌽v)×v××∘⊂⍨∇¨v←⍳w←⍵-1}  ⍝ Input: n
{1≥⍵:⍵⋄                                }  ⍝ If n≤1, return n; otherwise,
                                  w←⍵-1   ⍝ w←n-1
                               v←⍳w       ⍝ v←1..n-1
                             ∇¨  ⍝ a←Recursive call on each of v; a(1), .., a(n-1)
                         ×∘⊂⍨    ⍝ Multiply each of a with a, giving nested array
                                 ⍝ where [d][n-k] will contain the desired value at each iteration in Python code
                       v×  ⍝ Multiply each of v (the value of d) with each row of the above
                      ×    ⍝ Multiply each with
             (0=v|⊂⌽v)     ⍝ 1 if n-k is divisible by d, 0 otherwise
       w÷⍨+/∊  ⍝ Flatten, sum, and divide by n-1
票数 1
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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