首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >计数交替排列

计数交替排列
EN

Code Golf用户
提问于 2022-06-03 05:34:24
回答 7查看 864关注 0票数 15

交替置换是第一n 整数\{ 1 ... n \} 的置换,使得置换中相邻的值对在增减之间交替(反之亦然)。

等效地,它是一个排列,其中没有一个长度为> 2 的连续递增或递减值的“运行”。

例如,2 4 1 5 3 6n = 6 的交替排列,因为2 < 4 4 > 1 1 < 5 5 > 3 3 < 6 :每对在它们的相对比较中交替。

然而,1 3 2 4 6 5并不是一个有效的交替排列,因为它包含不断增加的序列2 4 6 ( 2 < 4 4 < 6 )。

在这个挑战中,我们将考虑给定正整数n 的交替排列数。

例如,对于n = 4 ,存在4! = 24 排列,其中10 是交替排列:

代码语言:javascript
运行
复制
1 3 2 4
1 4 2 3
2 1 4 3
2 3 1 4
2 4 1 3
3 1 4 2
3 2 4 1
3 4 1 2
4 1 3 2
4 2 3 1

您可能会注意到,每个置换都有一个副本,正好相反。因此,对于这个挑战,当有一对互为逆转的排列时,你应该只计算一次。

请注意,对于n = 1 ,只有一个置换,只有1,它没有明显的相反。因此,对于n = 1 ,输出仍然是1

对于n = 0 ,也只有一个置换,即空置换,但是您不需要处理它(我们只关心n \ge 1 )。

最后,您的任务是输出正整数n 的交替排列数的顺序,不包括反向重复。这个序列开始:

代码语言:javascript
运行
复制
1, 1, 2, 5, 16, 61, 272, 1385, 7936, 50521, 353792, 2702765

这是OEIS中的A000111 (在n = 0 之后),它是A001250 (n = 1 之后)的一半。

规则

  • 与标准的序列挑战一样,您也可以选择:
    • 接受一个输入n 并输出序列中的n 第四项
    • 接受一个输入n 并输出第一个n 术语
    • 无限期地输出序列,例如使用生成器

  • 您可以使用0 -或1 -indexing
  • 您可以使用任何标准I/O法
  • 标准漏洞被禁止
  • 这是密码-高尔夫,所以以字节为单位的最短代码获胜。
EN

回答 7

Code Golf用户

发布于 2022-06-03 06:10:24

Dyalog Unicode,12 字节数

全程序。丁格尔多珀的回答港。

代码语言:javascript
运行
复制
⊃(⌽0,+\)⍣⎕,1

在网上试试!

31字节:

代码语言:javascript
运行
复制
{1<⍵:2÷⍨(k!⍵-1)+.××∘⌽⍨∇¨k←⍳⍵⋄1}

在吧高尔夫上试试吧!

从OEIS中实现一个公式:

2\times a(n+1) = \sum_{k=0..n} {n \choose k}\times a(k)\times a(n-k)

31字节:

代码语言:javascript
运行
复制
{+/2((-\⍳⍵-1)≡⍥×-/)¨∪⍋⍤,¨,⍳⍴⍨⍵}

在吧高尔夫上试试吧!

生成所有排列并计数以增量开头的交替排列。

票数 4
EN

Code Golf用户

发布于 2022-06-03 06:39:40

木炭,22字节

代码语言:javascript
运行
复制
⊞υ¹FN≔⊞O⮌EυΣ…υ⊕λ⁰υI§υ⁰

在网上试试!链接是详细的代码版本。为n=0工作。说明:使用OEIS的公式。

代码语言:javascript
运行
复制
⊞υ¹

从空排列开始。

代码语言:javascript
运行
复制
FN

重复n时间。

代码语言:javascript
运行
复制
≔⊞O⮌EυΣ…υ⊕λ⁰υ

取列表的累积和,反转结果,并附加零。

代码语言:javascript
运行
复制
I§υ⁰

输出最终列表的第一个元素。

票数 3
EN

Code Golf用户

发布于 2022-06-09 14:51:02

,7字节

代码语言:javascript
运行
复制
bous(1)

在网上试试!

这个序列是序列布斯特罗芬变换1,0,0,0,\dots

跳是一种非常强大的整数序列语言。要打印序列的前20个项(0索引),只需运行hops --prec=20 "bous(1)"

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

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

复制
相关文章

相似问题

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