UID436505性别保密经验 EP铁粒 粒回帖0主题精华在线时间 小时注册时间2022-6-3最后登录1970-1-1
|
发表于 2025-4-14 15:58:00 来自手机|显示全部楼层 IP:贵州省
根据图片描述的0-Y序列定义,我将通过一个Python代码示例来演示其展开过程。这里以示例序列 (1,4,10,13) 进行说明:
def y_sequence_expand(initial_seq):
# Step 1: 生成阶差序列直到差为1
def generate_diffs(seq):
diffs = []
while True:
current_diff = [seq[i+1]-seq[i] for i in range(len(seq)-1)]
if all(x == 1 for x in current_diff[-1:]):
break
diffs.append(current_diff)
seq = current_diff
return diffs
# Step 2: 构建山脉图结构
diffs = generate_diffs(initial_seq)
layers = [initial_seq] + diffs
parent_map = {}
# 记录父项关系
for l in range(1, len(layers)):
for i in range(1, len(layers[l])):
parent_map[(l, i)] = (l-1, i-1)
# Step 3: 确定好部和坏部
root = layers[-1][0]
good_part = []
bad_part = []
# 从最底层向上收集好部
for layer in reversed(layers):
if layer[0] == root:
good_part = layer[1:] # 根元素右侧为坏部
break
# Step 4: 复制坏部并按规则调整
def adjust_bad(bad, parent_pos):
adjusted = []
offset = 0
for i, val in enumerate(bad):
if parent_pos[i] < len(good_part):
offset += 1
adjusted.append(val + offset)
return adjusted
# 获取坏部元素的父位置
parent_positions = [parent_map.get((len(layers)-1, i), (0,0))[0]
for i in range(1, len(layers[-1]))]
# 复制并调整坏部
extended = good_part.copy()
adjusted_bad = adjust_bad(bad_part, parent_positions)
extended += adjusted_bad
return extended
# 示例使用
initial_sequence = [1, 4, 10, 13]
expanded = y_sequence_expand(initial_sequence)
print("展开后的序列:", expanded)
|
2#2025-4-14 15:58:00回复(0)收起回复 |