import itertools
from pprint import pprint
go_to_one_of = ['Finger Lakes', 'Central NY']
events = [
('Pittsburgh', 2),
('Miami Valley', 2),
('Tech Valley', 2),
('Central NY', 3),
('Finger Lakes', 3),
('Hudson Valley', 4),
('Long Island 1', 4),
('NYC', 6),
('Long Island 2', 6),
('Buckeye?', 5),
]
def conditions(combination):
back_to_back = abs(combination[0][1] - combination[1][1]) == 1
attending_close = combination[0][0] in go_to_one_of or combination[1][0] in go_to_one_of
return (not back_to_back) and attending_close and combination[0][1] != combination[1][1]
pprint(
list(
filter(
lambda comb: conditions(comb),
itertools.combinations(events, 2)
)
)
)
aW1wb3J0IGl0ZXJ0b29scwpmcm9tIHBwcmludCBpbXBvcnQgcHByaW50Cgpnb190b19vbmVfb2YgPSBbJ0ZpbmdlciBMYWtlcycsICdDZW50cmFsIE5ZJ10KCmV2ZW50cyA9IFsKICAoJ1BpdHRzYnVyZ2gnLCAyKSwKICAoJ01pYW1pIFZhbGxleScsIDIpLAogICgnVGVjaCBWYWxsZXknLCAyKSwKICAoJ0NlbnRyYWwgTlknLCAzKSwKICAoJ0ZpbmdlciBMYWtlcycsIDMpLAogICgnSHVkc29uIFZhbGxleScsIDQpLAogICgnTG9uZyBJc2xhbmQgMScsIDQpLAogICgnTllDJywgNiksCiAgKCdMb25nIElzbGFuZCAyJywgNiksCgogICgnQnVja2V5ZT8nLCA1KSwKXQoKCmRlZiBjb25kaXRpb25zKGNvbWJpbmF0aW9uKToKICBiYWNrX3RvX2JhY2sgPSBhYnMoY29tYmluYXRpb25bMF1bMV0gLSBjb21iaW5hdGlvblsxXVsxXSkgPT0gMQogIAogIGF0dGVuZGluZ19jbG9zZSA9IGNvbWJpbmF0aW9uWzBdWzBdIGluIGdvX3RvX29uZV9vZiBvciBjb21iaW5hdGlvblsxXVswXSBpbiBnb190b19vbmVfb2YKCiAgcmV0dXJuIChub3QgYmFja190b19iYWNrKSBhbmQgYXR0ZW5kaW5nX2Nsb3NlIGFuZCBjb21iaW5hdGlvblswXVsxXSAhPSBjb21iaW5hdGlvblsxXVsxXQoKcHByaW50KAogIGxpc3QoCiAgICBmaWx0ZXIoCiAgICAgIGxhbWJkYSBjb21iOiBjb25kaXRpb25zKGNvbWIpLAogICAgICBpdGVydG9vbHMuY29tYmluYXRpb25zKGV2ZW50cywgMikKICAgICkKICApCikK
[(('Central NY', 3), ('NYC', 6)),
(('Central NY', 3), ('Long Island 2', 6)),
(('Central NY', 3), ('Buckeye?', 5)),
(('Finger Lakes', 3), ('NYC', 6)),
(('Finger Lakes', 3), ('Long Island 2', 6)),
(('Finger Lakes', 3), ('Buckeye?', 5))]