作业帮 > 综合 > 作业

python编程 给一个大于等于0的整数n,创建一个有以下规律,长度为n*n的数列.

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/22 01:27:48
python编程 给一个大于等于0的整数n,创建一个有以下规律,长度为n*n的数列.
n=3 :{0,0,1,0,2,1,3,2,1} (空格只是说这里有三组)
square_up(3) → [0,0,1,0,2,1,3,2,1]
square_up(2) → [0,1,2,1]
square_up(4) → [0,0,0,1,0,0,2,1,0,3,2,1,4,3,2,1]
def square_up(n):
关于我下面追加提问的镜面问题我这边有所有的例子
max_mirror([21,22,9,8,7,6,23,24,6,7,8,9,25,7,8,9 ]) → 4
max_mirror([1,2,1,20,21,1,2,1,2,23,24,2,1,2,1,25]) → 4
max_mirror([1,2,3,2,1]) → 5
max_mirror([1,2,3,3,8]) → 2
max_mirror([1,2,7,8,1,7,2]) → 2
max_mirror([1,1,1]) → 3
max_mirror([1]) → 1
max_mirror([]) → 0
max_mirror([9,1,1,4,2,1,1,1]) → 3 懂英文的可以看原题
We'll say that a "mirror" section in an array is a group of contiguous elements such that somewhere in the array,the same group appears in reverse order.For example,the largest mirror section in {1,2,3,8,9,3,2,1} is length 3 (the {1,2,3} part).Return the size of the largest mirror section found in the given array.
def square_up(n):
L = []
for i in [[0] * (n - i) + list(range(i,0,-1)) for i in range(1,n + 1)]:
L += i
return L
其中列表表达式生成的是形如[[0,1],[2,1]]这样的序列,接下来的步骤是去掉中括号.
再问: 太牛了 再问一个 如果能解决加30分 谢谢啊!! 求最大的‘镜子’组 比如{1, 2, 3, 8, 9, 3, 2, 1} 是 3 ( {1, 2, 3} 部分). return 最大的‘镜子’组 max_mirror([1, 2, 3, 8, 9, 3, 2, 1]) → 3 max_mirror([1, 2, 1, 4]) → 3 max_mirror([7, 1, 2, 9, 7, 2, 1]) → 2 def max_mirror(nums):
再答: 用奇怪的思路写了一个唠叨的实现…… from random import randrange def shift(iterable, n): return iterable[-n:] + iterable[:-n] def sim(iter1, iter2): m_seq = 0 count = 0 for i, j in zip(iter1, iter2): if i != j: m_seq = max(m_seq, count) count = 0 elif i == j: count += 1 m_seq = max(m_seq, count) return m_seq def mirror(iterable): rev = list(reversed(iterable)) m_seq = [None] * len(iterable) for n in range(len(iterable)): mirror = shift(rev, n) if n == 0: m_seq[n] = sim(iterable[-n:], mirror[-n:]) m_seq[n] = max(sim(iterable[-n:], mirror[-n:]), sim(iterable[:-n], mirror[:-n])) return max(m_seq) L = [randrange(10) for i in range(20)] L1 = [9, 6, 9, 6] print(mirror(L), L, mirror(L1))