作为计算机科学家,您可能都熟悉pop和push的基本列表操作。这些是修改元素列表的简单操作。但是,您听说过操作失败吗?(如倒装触发器)?很简单 给定数字n,反转列表的前n个元素。这是一个例子:
>>> a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> a.flop(4)
[4, 3, 2, 1, 5, 6, 7, 8, 9, 10]
翻牌操作很酷的事情是,您可以使用它对列表执行一些很酷的事情,例如对它进行排序。我们将对拖鞋做类似的事情:
给定一个整数列表,“邻居”。换句话说,对它进行排序,以便每个重复的元素连续出现。
这可以用拖鞋完成!例如,采用以下列表:
>>> a = [3, 2, 1, 4, 3, 3, 2]
>>> a.flop(4)
[4, 1, 2, 3, 3, 3, 2]
>>> a.flop(3)
[2, 1, 4, 3, 3, 3, 2]
>>> a.flop(6)
[3, 3, 3, 4, 1, 2, 2]
这使我们得出了当今挑战的定义:
给定一个整数列表,输出将导致该列表相邻的任何一组触发器。
以最后一个列表为例,您应该输出:
4
3
6
因为将列表按4,然后按3,然后按6进行翻页将产生一个相邻列表。请记住,你并不需要打印的最短的名单触发器是邻居列表。如果您已打印:
4
4
4
3
1
1
6
2
2
相反,这仍然是有效的输出。但是,你可能没有比列表的长度过大输出的数字。这是因为对于list a = [1, 2, 3]
,调用a.flop(4)
是没有意义的。
这里有些例子:
#Input:
[2, 6, 0, 3, 1, 5, 5, 0, 5, 1]
#Output
[3, 7, 8, 6, 9]
#Input
[1, 2]
#Output
<any list of integers under 3, including an empty list>
#Input
[2, 6, 0, 2, 1, 4, 5, 1, 3, 2, 1, 5, 6, 4, 4, 1, 4, 6, 6, 0]
#Output
[3, 19, 17, 7, 2, 4, 11, 15, 2, 7, 13, 4, 14, 2]
#Input
[1, 1, 1, 1, 2, 2, 2, -1, 4]
#Output
[]
#Input
[4, 4, 8, 8, 15, 16, 16, 23, 23, 42, 42, 15]
#Output
[12, 7]
请记住,在每个示例中,给定的输出只是一个潜在的有效输出。就像我之前说过的,与给定列表相邻的任何一组触发器都是有效的输出。您可以使用此python脚本来验证给定的触发器列表是否正确地与列表相邻。
您可以采用任何合理的格式进行输入和输出。例如,函数参数/返回值,STDIN / STDOUT,读/写文件等都有效。像往常一样,这是代码高尔夫,所以请尽可能做最短的程序,并玩得开心!:)