python - 一系列彩色球的排列,没有两个相同颜色的球相邻?
问题描述
输入是一个字符串 (a, b, c, d,...)。在这个字符串中,a 表示相同颜色的 a 球,b 表示另一种颜色的 b 球,依此类推。所以 (2, 1, 3) 表示 2 个红球,1 个蓝球和 3 个黄球。
输出 1 是可能排列的数量,没有 2 个相同颜色的球相邻。
输出 2 是所有这些排列的列表。
例如:
输入: (2, 1, 3)
输出 1:10 个排列
输出2:131323、132313、231313、312313、313123等。
所以我的主要问题是:如何过滤Python
程序中两个或多个相同颜色的球彼此相邻的排列?
解决方案
以下代码将解决您的问题:
import numpy as np
num = 221333 ## Any random permutation
lst = list(map(int, str(num)))
req_array = np.diff(lst)
if 0 in req_array:
print ("Yes")
上面的代码在以下逻辑中工作:
- 一个一个地迭代你的排列列表。上面的代码适用于该列表中的 1 个此类元素
- 转换
number
为array
- 减去连续元素
- 如果数组为零,则存在一种组合,其中 2 个球的颜色相同
推荐阅读
- php - 如何在 Yii2 高级模板中发布动作 REST API
- c# - 应用程序立即崩溃,而没有在调试中提供任何信息
- c++ - 使析构函数受保护以通过具有虚函数的基类禁用删除调用是个好主意吗
- asp.net - 按钮单击页面后如何维护类
- python - snakemake : 不同模式的规则输入
- typescript - 在nestjs中具有嵌套对象数组的类验证器
- c - 为什么定义的函数放在重定位表中
- c# - 如何使用 EWS 从所需参加者那里获取组详细信息
- powerapps - PowerApps - 使用用户级别访问权限登录(自定义登录屏幕)
- python - 使用 PyTorch v1.4 设置的自动编码器不会减少损失