1. 程式人生 > >每日一練 no.8

每日一練 no.8

問題:

已知有兩支乒乓球隊要進行比賽,每隊各出三人; 甲隊為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']]