一个神奇的实现:计算数组尾部对称长度

简介: 灵光一闪,得到这一句:all(map(lambda x:x==-1, series[-i:-mid] * series[-mid:])) # 对折,相乘,全是-1爽到死!完整代码如下:import numpy as npimport matplotlib.

灵光一闪,得到这一句:

all(map(lambda x:x==-1, series[-i:-mid] * series[-mid:])) # 对折,相乘,全是-1

爽到死!

完整代码如下:

import numpy as np
import matplotlib.pyplot as plt


# 函数:返回数组尾部对称长度
def symmetry(series):
    for i in range(50, 0, -2):
        mid = i // 2
        is_symmetry = all(map(lambda x:x==-1, series[-i:-mid][::-1] * series[-mid:])) # 对折,相乘,全是-1
        if is_symmetry:
            return i
    return 0


# 计算对称长度
series = np.random.choice([-1, 1], 100)
print(symmetry(series))


# 作图验证
fig, axes = plt.subplots(1, 1, sharex=True)
axes.plot(np.cumsum(series), 'rd-')
plt.show()

效果图

目录
相关文章
|
7月前
|
C语言 C++
【C++之数组与指针1】随机输入整数存入数组并用指针遍历
【C++之数组与指针1】随机输入整数存入数组并用指针遍历
|
15天前
|
算法
散列值生成初始哈希值
散列值生成初始哈希值
25 7
|
15天前
|
算法 安全 网络安全
散列值接收方重新计算哈希值
散列值接收方重新计算哈希值
23 5
|
6月前
|
C++
C++数组(定义、遍历、长度、地址、最大值、逆置、冒泡排序)
C++数组(定义、遍历、长度、地址、最大值、逆置、冒泡排序)
|
7月前
|
存储 算法 容器
排列对称串
排列对称串
34 1
判断一个数是否是对称数(数组/非数组解法)
判断一个数是否是对称数(数组/非数组解法)
|
算法
算法练习——(1)找数组中唯一成对的那个数(异或)
——如何找数组中唯一成对的那个数(数组特殊) 1-1000这一千个数放在含有1001个元素的数组中,只有唯一的一个元素值重复,其他均只出现一次。 每个数组元素只能访问一次,设计一个算法,将他找出来;不用辅助储存空间,设计一个算法实现.
119 0
|
算法 Java
找落单筷子的长度(数组,排序,java算法)
找落单筷子的长度(数组,排序,java算法)
87 0