列表交替元素交换逻辑存疑:我与朋友谁的思路正确?
问题:判断哪种逻辑符合列表交替元素交换的题目要求
定义函数SWAP(SCORES),交换列表SCORES中的所有交替元素。
示例:若SCORES为[200, 456, 300, 100, 234, 678],输出应为[300, 200, 100, 456, 678, 234]。
该排列模式较为特殊,例如输入列表[1,2,3,4,5,6]时,预期结果为[3,1,4,2,6,5]。
while True: l=eval(input('List: ')) x=len(l) n=x//4 t=4*n l1=l[:t] print(l1) l2=l[t:] print(l2) for i in range((len(l1)//2)): l1[i],l1[i+2]=l1[i+2],l1[i] #l1 shuffling over if len(l2)==1: l1+=l2 print('Shuffled list:',l1) elif len(l2)>=2: l2=l2[::-1] l1+=l2 print('Shuffled list:',l1) elif len(l2)==0: print('Shuffled list:',l1) #treating l2 separately
这是我编写的代码,测试后运行效果如下:
================================== RESTART: C:/Users/Harikrishnan/OneDrive/Desktop/peculiar shuffling q.py ================================== List: [200,456,300,100,234,678] [200, 456, 300, 100] [234, 678] Shuffled list: [300, 100, 200, 456, 678, 234] List: [1,2,3,4] [1, 2, 3, 4] [] Shuffled list: [3, 4, 1, 2] List: [1,2,3,4,5] [1, 2, 3, 4] [5] Shuffled list: [3, 4, 1, 2, 5] List: [1,2,3,4,5,6,7] [1, 2, 3, 4] [5, 6, 7] Shuffled list: [3, 4, 1, 2, 7, 6, 5] List: [1,2,3,4,5,6,7,8] [1, 2, 3, 4, 5, 6, 7, 8] [] Shuffled list: [3, 4, 5, 6, 1, 2, 7, 8] List: Traceback (most recent call last): File "C:/Users/Harikrishnan/OneDrive/Desktop/peculiar shuffling q.py", line 2, in <module> l=eval(input('List: ')) KeyboardInterrupt
我的逻辑是:处理列表的前4n个元素,交换奇数位置和对应后两位的元素、偶数位置和对应后两位的元素;剩余元素分为四种情况处理:无剩余、剩1个、剩2个、剩3个。
我的朋友提出另一种逻辑:
我认为规律是最后两个元素交换,倒数第3个与倒数第5个交换,倒数第4个与倒数第6个交换,倒数第7个与倒数第10个交换,倒数第8个与倒数第11个交换,倒数第9个与倒数第12个交换
我现在感到困惑,想请教:我与朋友谁的逻辑符合题目要求?
内容的提问来源于stack exchange,提问作者Harikrishnan M
相关产品推荐
相关产品推荐

