Python-ի ներածություն

set

Պատկերացրեք, որ շատ հաճախորդներ ունեք աշխարհի տարբեր քաղաքներից: Դուք հետևում եք նրանց քաղաքներին և ունեք քաղաքների ցուցակ, որտեղից գալիս են ձեր հաճախորդները: Այդ ցանկը կարող է լինել այսպիսին՝ ['San Francisco', 'New York', 'Yerevan', 'New York', 'Tel Aviv', ...].
Դուք նկատել եք, որ կան որոշ հաճախորդներ նույն քաղաքից՝ օրինակ New York-ից: Կցանկանայիք իմանալ, թե որոնք են այն քաղաքները, որոնցից հաճախորդներ ունեք առանց կրկնությունների:
Սա հեշտ է անել Python-ի set-ով.
cities = ['San Francisco', 'New York', 'Yerevan', 'New York', 'Tel Aviv', 
					'San Diego', 'San Francisco', 'Yerevan']
uniques = set(cities)
print(uniques)
# {'San Diego', 'Yerevan', 'San Francisco', 'New York', 'Tel Aviv'}

print(len(cities))     # 8
print(len(uniques))    # 5
set-ը չկարգավորված հավաքածու է՝ առանց կրկնվող տարրերի: Այն օգնում է հետևել տարրերի առկայությանը և չունի հատուկ կարգ կամ հերթականություն: set-ը կարող ենք դիտարկել, որպես զանգվածի կամ tuple-ի նման տարրերի հավաքածու է, բայց առանց կարգի, որտեղ երաշխավորում է, որ տարրերի չեն կրկնվում:
 
Մենք կարող ենք ստուգել՝ արդյոք տարրը set-ի մեջ է in օպերատորով.
print('San Francisco' in uniques)   # True
print('Tel Aviv' in uniques)        # True
print('London' in uniques)          # False
print('Amsterdam' in uniques)       # False
print(3 in uniques)                 # False
Շատ ավելի արագ է ստուգել, թե արդյոք որոշակի տարր առկա է set-ում, համեմատած այն զանգվածում ստուգելու հետ: Սա պայմանավորված է set-ի տվյալների կառուցվածքով: Զանգվածների համար Python-ը պետք է մեկ առ մեկ համեմատի տարրերը ցուցակի առաջին տարրից մինչև վերջինը և վերադարձնի True, եթե այն առկա էր, իսկ հակառակ դեպքում՝ False: Այսպիսով, այն անցնում է ամբողջ ցուցակի վրայով մեկ առ մեկ՝ ստուգումը կատարելու համար: set-ի կառուցվածքը թույլ է տալիս այս ստուգումը կատարել ավելի քիչ գործողություններով:

Առաջադրանք

Դուք օգնում եք մթերային խանութին կառավարել իր գույքագրումը: Յուրաքանչյուր ապրանքի համար նրանք գրել են այդ ապրանքը մատակարարող ընկերության անվանումը։ Նրանք կցանկանային հաղորդագրություն ուղարկել այդ ընկերություններին` ասելով, թե իրենց ապրանքներից որքան անհրաժեշտ կլինի առաջիկա մեկ ամսվա ընթացքում: Որոշ ընկերություններ մատակարարում են մի քանի ապրանք, ուստի խանութը չի ցանկանա մի քանի հաղորդագրություն ուղարկել նույն խանութին ամեն ապրանքի համար: Փոխարենը, նրանք կցանկանային ստանալ այն ընկերությունների ցանկը, որոնց հետ նրանք աշխատում են, որպեսզի հետո հաղորդագրություն ուղարկեն իրենց: Նրանք ձեզ խնդրում են գրել ծրագիր՝ տպելու բոլոր ընկերությունները, որոնց հետ նրանք համագործակցում են:
Մուտքի առաջին տողը պարունակում է մեկ ամբողջ թիվ n - ապրանքների քանակը: Հաջորդ n տողերը պարունակում են յուրաքանչյուր ապրանքի համար ընկերության անվանումը:
Ծրագիրը պետք է տպի ընկերությունների չկրկնվող անունները, որոնց հետ համագործակցում է խանութը, յուրաքանչյուրը առանձին տողում:
Մուտք
Ելք
5 Nestle Mars Nestle Coca Cola Nestle
Nestle Mars Coca Cola
 

Constraints

Time limit: 1 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in