首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >酰胺基(阿弥陀籤)简化

酰胺基(阿弥陀籤)简化
EN

Code Golf用户
提问于 2018-10-06 15:41:46
回答 1查看 569关注 0票数 11

如果你曾经接触过日本或东亚文化,你肯定会遇到阿米达库吉游戏:

作为维基百科解释,它是一种抽奖方式,用于随机选择N项的排列。

例如,它可以用于向N个人随机分配一个起始序列,或将N个奖品分配给N个人,等等。

理解游戏代表排列的诀窍是要认识到,每一次水平划水(称为“腿”)都会互换它的两个项目。

同一维基百科页面还解释说,N项的每个置换P对应于无限数量的Amidakuji图。水平笔画(腿)最少的一个(S)被称为那个特定排列P的“素数”。

您的任务是以这种格式(减去字母)接收具有2条或更多垂直行(在本例中为6)的Amidakuji图:

代码语言:javascript
复制
A B C D E F
| | | | | |
|-| |-| |-|
| |-| |-| |
| | | | |-|
| |-| |-| |
| | |-| |-|
| | |-| | |
|-| | |-| |
|-| |-| | |
| |-| | |-|
| | | | | |
B C A D F E

并产生它的一个素数(同样,减去字母):

代码语言:javascript
复制
A B C D E F
| | | | | |
|-| | | |-|
| |-| | | |
| | | | | |
B C A D F E

带有字母的第一行和最后一行不是格式的一部分。我把它们加在这里是为了显示排列。也不要求第一行或最后一行不包含腿|-|,也不要求输出尽可能紧凑。

这个特定的输入示例是维基百科页面顶部的Amidakuji图的(无限) ASCII表示之一。

关于这些ASCII图有一个不明显的规则:禁止相邻的腿。

代码语言:javascript
复制
|-|-|  <-  NO, this does not represent a single swap!

Wikipedia解释了从一个称为“冒泡”的图表中获取一个素数的标准过程,该过程包括一遍又一遍地应用以下简化:

1)右叉到左叉:

代码语言:javascript
复制
| |-|      |-| |
|-| |  ->  | |-|
| |-|      |-| |

2)消除双打:

代码语言:javascript
复制
|-|        | |
|-|   ->   | |

我不知道这种解释是否明确。您的代码可以使用该技术或生成所需素数的任何其他算法。

最短代码获胜.

适用标准规则和标准津贴。(如果输入无效,则程序可能会着火。输入/输出格式可以是stdin/stdout、string参数、行列表、字符矩阵,任何对您最有用的东西,等等)

EN

回答 1

Code Golf用户

发布于 2018-10-11 02:33:57

斯塔克斯,45 字节数

代码语言:javascript
复制
⌐φ²MC½↕uö∩┴║%≤Oo╧i╕ïô§ê{δ¿k>┴ê◘►╢lµ∙→Z↔8╨─(·£

运行并调试它

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

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

复制
相关文章

相似问题

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