相手の条件と希望条件を入れてマッチングするプログラム
プログラム
class Person:
def __init__(self, name, age, gender, hobbies, desired_age_range, desired_hobbies):
self.name = name
self.age = age
self.gender = gender
self.hobbies = hobbies
self.desired_age_range = desired_age_range
self.desired_hobbies = desired_hobbies
def find_match(men, women):
matches = []
for man in men:
matched = False
for woman in women:
# 男性と女性の性別が異なる場合にマッチングを試行
if man.gender != woman.gender:
# 年齢条件と趣味条件を満たすかを確認
if (man.age in woman.desired_age_range and
woman.age in man.desired_age_range and
any(hobby in woman.desired_hobbies for hobby in man.hobbies) and
any(hobby in man.desired_hobbies for hobby in woman.hobbies)):
matches.append((man.name, man.age, man.gender, woman.name, woman.age, woman.gender))
matched = True
break # 1対1のマッチングなので、マッチしたらループを抜ける
if not matched:
matches.append((man.name, man.age, man.gender, "マッチングしない"))
return matches
# テスト用のデータ
men = [
Person("田中", 30, "male", ["読書", "料理"], range(25, 35), ["ガーデニング", "ハイキング"]),
Person("佐藤", 25, "male", ["ハイキング", "写真"], range(20, 30), ["料理"]),
Person("鈴木", 32, "male", ["ガーデニング", "料理"], range(30, 40), ["読書"]),
Person("山田", 28, "male", ["読書", "ガーデニング"], range(25, 35), ["料理"]),
Person("伊藤", 35, "male", ["ガーデニング", "ハイキング"], range(30, 40), ["読書"])
]
women = [
Person("高橋", 28, "female", ["料理", "読書"], range(25, 35), ["ガーデニング", "ハイキング"]),
Person("渡辺", 26, "female", ["ハイキング", "料理"], range(20, 30), ["読書"]),
Person("山口", 29, "female", ["写真", "ガーデニング"], range(25, 35), ["読書"]),
Person("松本", 32, "female", ["読書", "ハイキング"], range(30, 40), ["料理"])
]
# 実行してマッチングを取得
matches = find_match(men, women)
# 結果を出力
for match in matches:
if match[3] != "マッチングしない":
print(f"{match[0]}({match[1]}歳, {match[2]}) は {match[3]}({match[4]}歳, {match[5]}) とマッチしました")
else:
print(f"{match[0]}({match[1]}歳, {match[2]}) はマッチングしない")
年齢と趣味でマッチングするプログラムです。他の要素も追加可能です
田中(30歳, male) は 山口(29歳, female) とマッチしました
佐藤(25歳, male) は 高橋(28歳, female) とマッチしました
鈴木(32歳, male) は 松本(32歳, female) とマッチしました
山田(28歳, male) は 高橋(28歳, female) とマッチしました
伊藤(35歳, male) はマッチングしない
ディスカッション
コメント一覧
まだ、コメントがありません