每日一練 no.8
阿新 • • 發佈:2018-12-19
問題:
已知有兩支乒乓球隊要進行比賽,每隊各出三人; 甲隊為a,b,c三人,乙隊為x,y,z三人; 已抽籤決定比賽名單。 有人向隊員打聽比賽的名單。a說他不和x比,c說他不和x,z比,請程式設計序找出三隊賽手的名單。
解答:
本題看似很簡單,c不和x,z,那麼 只能c–y, a還不和x ,那麼 只能 a–z,最後只剩下 b–x 但是程式設計解決就沒那麼簡單,因為要兼顧各種情況,具有良好的適配性。 解決這個題目的邏輯很簡單:找到所有組合方式,然後剔除掉不滿足條件的,剩下的即為所求:
team1 = ['a', 'b', 'c']
team2 = ['x', 'y', 'z']
from itertools import permutations
team1_perm = permutations(team1, len(team1))
for item in team1_perm:
pair = []
for i in range(len(item)):
pair.append([item[i], team2[i]])
if not any([j in pair for j in [['a', 'x'], ['c', 'x'], ['c', 'z']]]):
print(pair)
結果:
[['b', 'x'], ['c', 'y'], ['a', 'z']]