zl程序教程

您现在的位置是:首页 >  其它

当前栏目

一起挑战pythontip的题目(28)

挑战 题目 一起 28
2023-09-14 09:01:29 时间

第 136 题:单身狗
题目描述:自然界存在两种狗:恩爱狗和单身狗。恩爱狗总是成对出现,单身狗总是单个活
动。假设每只狗都有一个编号,每对恩爱狗的编号相同。恩爱狗协会组织了一次恩爱狗 Party,
会场混进了一只单身狗,请你帮助他们找出这只单身狗。给你一个长度为 n(1< n < 1000000)
的正整数列表 L,表示每只狗的编号, 请你输出单身狗的编号。
例如:L=[1,1,4,4,3,5,5]
则输出:3

>>> L=[1,1,4,4,3,5,5]
>>> print([L[i] for i in [L.index(j) for j in L if L.count(j)==1]][0])
3
>>> 

============================================================
第 137 题:单身狗 II
题目描述:故事背景和“单身狗”相同,只不过这次 Party 中混进了两只单身狗,请你输出
这两只单身狗的编号,小编号在前,大编号在后,以一个空格隔开。
例如:L=[1,1,4,4,3,5,5,7]
则输出:3 7
示例:
输入:L = [1, 1, 4, 4, 3, 5, 5, 7]
输出:3 7

>>> L=[1,1,4,4,3,5,5,7]
>>> print(' '.join([str(L[i]) for i in [L.index(j) for j in L if L.count(j)==1]]))
3 7
>>> 

============================================================
第 138 题:路径总数
题目描述:给你一个网格地图,网格图中有一个特殊点(特殊点保证不是右上角的点)。初始
你站在地图的左下角,只能向右走和向上走,请你求出从网格左下角走到右上角,且不经过
特殊点的方案总数。
现在告诉你地图的行数和列数 m, n (0 < m <= 30, 0 < n <= 30), 以及特殊点的坐标(x, y), 请你
输出方案总数。
例如:
m = 5, n = 4, x = 2, y = 3
则输出:
23
Note: 样例输入对应的地图如下,其中#为特殊点
....
....
....
..#.
....示例:
输入:m = 3
n = 4
x = 2
y = 3
输出:4
============================================================
第 139 题:吃糖果
题目描述:小 Py 喜欢吃糖果,但是他有一个怪癖,就是不喜欢将一样的糖果放在一起吃,
喜欢先吃一种,下一次吃另一种。 现在小 Py 获得了一批糖果,请你帮他计算,是否存在一
种吃糖果的顺序,使得他能把所有的糖果吃完。
现在给你一个正整数列表 L(L 的长度不超过 100),每个元素表示每种糖果的数量,如果存在
某种顺序使得小 Py 能够吃完所有的糖果, 则输出 Yes, 否则输出 No.
例如:L = [4, 1, 1]
则输出: No
L = [2, 2]
则输出: Yes 示例:
输入:L = [5, 4, 3, 2, 1]
输出:Yes


============================================================
第 140 题:k 差等数
题目描述:k 差等数的定义:任意两位之间的差的绝对值都为 k 的正十进制数,且不能有前导
0。例如'1234', '4321'都是 1 差等数。
现在给你两个正整数 n 和 k(1 < n <= 30, 0 <= k <= 9),请你输出 n 位 k 差等数的个数。
例如:n=2, k=5
则输出:9
Note: 2 位的 5 差等数如下:16,27,38,49,50,61,72,83,94

>>> iscdnum=lambda n,k:all([i==k for i in [abs(int(j[0])-int(j[1])) for j in [str(n)[i:i+2] for i in range(len(str(n))-1)]]])
>>> n,k=2,5
>>> [i for i in range(10**(n-1),10**n) if iscdnum(i,k)]
[16, 27, 38, 49, 50, 61, 72, 83, 94]
>>> n,k=3,2
>>> [i for i in range(10**(n-1),10**n) if iscdnum(i,k)]
[131, 135, 202, 242, 246, 313, 353, 357, 420, 424, 464, 468, 531, 535, 575, 579,
 642, 646, 686, 753, 757, 797, 864, 868, 975, 979]
>>> n,k=4,3
>>> [i for i in range(10**(n-1),10**n) if iscdnum(i,k)]
[1414, 1474, 2525, 2585, 3030, 3036, 3630, 3636, 3696, 4141, 4147, 4741, 4747,
 5252, 5258, 5852, 5858, 6303, 6363, 6369, 6963, 6969, 7414, 7474, 8525, 8585,
 9630, 9636, 9696]
>>> 

============================================================
来源:

Python 爬取pythontip网站的挑战题目(附全部题目178题)