序列相加

问题描述 投票:0回答:1

先生。里克认为改变汽油支付时间表只会对他不利。于是迪普先生提出了一种划分付款时间的方法。对于每 2n,他们将通过交换模式 2(n−1) 中支付的顺序(补数)来改变模式。这是 Dip 提出的模式:

n 图案
0 A
1 AR
2 ARRA
3 ARRARAAR

可以看出,粗体文本与图案的非粗体部分相反。里克先生非常喜欢这个主意。帮助 Ric 先生创建一个程序来生成此模式。使用函数或过程来解决这个问题。线索:该序列是前一个序列的互补序列的添加,如示例所示。准备一个大小为先前序列 2 倍的字符数组。

Example 1
Enter character 1: A
Enter character 2: R
Enter the value of n: 2
The obtained pattern: ARRA

Example 2
Enter character 1: U
Enter character 2: W
Enter the value of n: 4
The obtained pattern: UWWUWUUWWUUWUWWU

我尝试过这个,但输出有点关闭

def pattern(char1, char2, n):
    pattern = char1
    for i in range(n):
        pattern += char2 * (i + 1)
        pattern += char1
    return pattern
def main():
    char1 = input("Enter character 1: ")
    char2 = input("Enter character 2: ")
    n = int(input("Enter the value of n: "))
    
    result = pattern(char1, char2, n)
    print("The obtained pattern:", result)

if __name__ == "__main__":
    main()
python arrays function
1个回答
0
投票

我建议你把问题进一步分解。每个步骤都会将上一步的逆值附加到字符串中。所以第一步是获取字符串的逆。

import re

def invert(s, a, b):
    return re.sub(rf"({a}|{b})", lambda m: b if m.group(0) == a else a, s)

从那里开始就很简单了。首先将

char1
添加到结果中。然后在每个循环中将结果的倒数与其自身相加。

© www.soinside.com 2019 - 2024. All rights reserved.