# -*- coding: utf-8 -*-
import random
cards_damage = ( \
"Пистолет;Метание карты;Coup de Grâce;Faceoff;Арсенал;Прицельный выстрел;Скрытое ношение;Бэт-символ;Смертная казнь;" +\
"Миротворческая операция;Бронебойные патроны;Демоническая форма;Средь бела дня;By our powers combined;Вихрь ножей;Коррозия" +\
";Обрез под столом;Assassinate;Сообщник;Нападение;Storm of Steel;Планирование;Апгрейд;Вивисекция;Лицензия на убийство" ) .split ( ";" )
cards_control = ( \
"Столовая;Служба безопасности;План побега;Куратор спецслужб;Досмотр;Расписание охраны;Под защитой;Перехват;Запрет;Телохранитель;Шипы;Хулиганство;Кровотечение;" +\
"За вами придут!;Бронежилет;Супергерой;Der Prozess;Nightmare;Город может спать спокойно;Осечка;Mana Burn;Отравленный клинок;Дружба это магия;RSVP;Большой Брат" ) .split ( ";" )
cards_scout = ( \
"Социальная инженерия;Свидетель;Обыск;Догадка;Флешбек;Уполномочить;Сеть агентов;Ловкость рук;Соцопрос;Иллюминаты;Эксгумация;Оракул;Пентестинг;Нож-кредитка;" +\
"Маскировка;Дактилоскопия;Мозговой штурм;Начать расследование;Патрулирование улиц;Камера наблюдения;Бандитизм;Черная метка;Под прицелом;Спиритический сеанс;Жучок" ) .split ( ";" )
cards_support = ( \
"Подготовка;Дед-дроп;Карманные расходы;Независимый доход;Зарплата;Совет;Озарение;Ополчение;Благословление;Прихвостень;Кофе;Карьерный рост;Безлимитный тариф;" +\
"Укол стимулятора;Повестка;RSVP;Налоговый вычет;Что меня не убивает;Подарок;Последняя записка;Фокус;Стохастический терроризм;Я обвиняю!;Сбор ополчения;Алиби;" ) .split ( ";" )
cards = [ cards_damage, cards_control, cards_scout, cards_support]
chances = {
"Boss" :[ 3 , 85 , 9 , 3 ] ,
"Consigliere" :[ 3 , 9 , 3 , 85 ] ,
"Spy" :[ 9 , 3 , 85 , 3 ] ,
"Killer" :[ 85 , 3 , 3 , 9 ] ,
"Commie" :[ 9 , 3 , 85 , 3 ] ,
"Doctor" :[ 3 , 85 , 9 , 3 ] ,
"Vigi" :[ 85 , 3 , 3 , 9 ] ,
"Cop" :[ 3 , 9 , 3 , 85 ] ,
"Civilian" :[ 25 , 25 , 25 , 25 ]
}
current_role = "Boss"
def random_card( ) :
chance = chances[ current_role]
distr = [ str ( x) *chance[ x] for x in [ 0 , 1 , 2 , 3 ] ]
flat = [ y for x in distr for y in x]
color = cards[ int ( random .choice ( flat) ) ]
card = random .choice ( color)
return card
def random_round( ) :
round = [ random_card( ) , random_card( ) , random_card( ) ]
if len ( set ( round ) ) != 3 : return random_round( )
else : return round
def random_draw( ) :
return [ random_round( ) for x in range ( 15 ) ]
for round in random_draw( ) :
print ( round )
IyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KaW1wb3J0IHJhbmRvbQoKY2FyZHNfZGFtYWdlID0gKFwKItCf0LjRgdGC0L7Qu9C10YI70JzQtdGC0LDQvdC40LUg0LrQsNGA0YLRiztDb3VwIGRlIEdyw6JjZTtGYWNlb2ZmO9CQ0YDRgdC10L3QsNC7O9Cf0YDQuNGG0LXQu9GM0L3Ri9C5INCy0YvRgdGC0YDQtdC7O9Ch0LrRgNGL0YLQvtC1INC90L7RiNC10L3QuNC1O9CR0Y3Rgi3RgdC40LzQstC+0Ls70KHQvNC10YDRgtC90LDRjyDQutCw0LfQvdGMOyIrXAoi0JzQuNGA0L7RgtCy0L7RgNGH0LXRgdC60LDRjyDQvtC/0LXRgNCw0YbQuNGPO9CR0YDQvtC90LXQsdC+0LnQvdGL0LUg0L/QsNGC0YDQvtC90Ys70JTQtdC80L7QvdC40YfQtdGB0LrQsNGPINGE0L7RgNC80LA70KHRgNC10LTRjCDQsdC10LvQsCDQtNC90Y87Qnkgb3VyIHBvd2VycyBjb21iaW5lZDvQktC40YXRgNGMINC90L7QttC10Lk70JrQvtGA0YDQvtC30LjRjyIrXAoiO9Ce0LHRgNC10Lcg0L/QvtC0INGB0YLQvtC70L7QvDtBc3Nhc3NpbmF0ZTvQodC+0L7QsdGJ0L3QuNC6O9Cd0LDQv9Cw0LTQtdC90LjQtTtTdG9ybSBvZiBTdGVlbDvQn9C70LDQvdC40YDQvtCy0LDQvdC40LU70JDQv9Cz0YDQtdC50LQ70JLQuNCy0LjRgdC10LrRhtC40Y870JvQuNGG0LXQvdC30LjRjyDQvdCwINGD0LHQuNC50YHRgtCy0L4iKS5zcGxpdCgiOyIpCgpjYXJkc19jb250cm9sID0gKFwKItCh0YLQvtC70L7QstCw0Y870KHQu9GD0LbQsdCwINCx0LXQt9C+0L/QsNGB0L3QvtGB0YLQuDvQn9C70LDQvSDQv9C+0LHQtdCz0LA70JrRg9GA0LDRgtC+0YAg0YHQv9C10YbRgdC70YPQttCxO9CU0L7RgdC80L7RgtGAO9Cg0LDRgdC/0LjRgdCw0L3QuNC1INC+0YXRgNCw0L3RizvQn9C+0LQg0LfQsNGJ0LjRgtC+0Lk70J/QtdGA0LXRhdCy0LDRgjvQl9Cw0L/RgNC10YI70KLQtdC70L7RhdGA0LDQvdC40YLQtdC70Yw70KjQuNC/0Ys70KXRg9C70LjQs9Cw0L3RgdGC0LLQvjvQmtGA0L7QstC+0YLQtdGH0LXQvdC40LU7IitcCiLQl9CwINCy0LDQvNC4INC/0YDQuNC00YPRgiE70JHRgNC+0L3QtdC20LjQu9C10YI70KHRg9C/0LXRgNCz0LXRgNC+0Lk7RGVyIFByb3plc3M7TmlnaHRtYXJlO9CT0L7RgNC+0LQg0LzQvtC20LXRgiDRgdC/0LDRgtGMINGB0L/QvtC60L7QudC90L470J7RgdC10YfQutCwO01hbmEgQnVybjvQntGC0YDQsNCy0LvQtdC90L3Ri9C5INC60LvQuNC90L7QujvQlNGA0YPQttCx0LAg0Y3RgtC+INC80LDQs9C40Y87UlNWUDvQkdC+0LvRjNGI0L7QuSDQkdGA0LDRgiIpLnNwbGl0KCI7IikKCmNhcmRzX3Njb3V0ID0gKFwKItCh0L7RhtC40LDQu9GM0L3QsNGPINC40L3QttC10L3QtdGA0LjRjzvQodCy0LjQtNC10YLQtdC70Yw70J7QsdGL0YHQujvQlNC+0LPQsNC00LrQsDvQpNC70LXRiNCx0LXQujvQo9C/0L7Qu9C90L7QvNC+0YfQuNGC0Yw70KHQtdGC0Ywg0LDQs9C10L3RgtC+0LI70JvQvtCy0LrQvtGB0YLRjCDRgNGD0Lo70KHQvtGG0L7Qv9GA0L7RgTvQmNC70LvRjtC80LjQvdCw0YLRizvQrdC60YHQs9GD0LzQsNGG0LjRjzvQntGA0LDQutGD0Ls70J/QtdC90YLQtdGB0YLQuNC90LM70J3QvtC2LdC60YDQtdC00LjRgtC60LA7IitcCiLQnNCw0YHQutC40YDQvtCy0LrQsDvQlNCw0LrRgtC40LvQvtGB0LrQvtC/0LjRjzvQnNC+0LfQs9C+0LLQvtC5INGI0YLRg9GA0Lw70J3QsNGH0LDRgtGMINGA0LDRgdGB0LvQtdC00L7QstCw0L3QuNC1O9Cf0LDRgtGA0YPQu9C40YDQvtCy0LDQvdC40LUg0YPQu9C40YY70JrQsNC80LXRgNCwINC90LDQsdC70Y7QtNC10L3QuNGPO9CR0LDQvdC00LjRgtC40LfQvDvQp9C10YDQvdCw0Y8g0LzQtdGC0LrQsDvQn9C+0LQg0L/RgNC40YbQtdC70L7QvDvQodC/0LjRgNC40YLQuNGH0LXRgdC60LjQuSDRgdC10LDQvdGBO9CW0YPRh9C+0LoiKS5zcGxpdCgiOyIpCgpjYXJkc19zdXBwb3J0ID0gKFwKItCf0L7QtNCz0L7RgtC+0LLQutCwO9CU0LXQtC3QtNGA0L7QvzvQmtCw0YDQvNCw0L3QvdGL0LUg0YDQsNGB0YXQvtC00Ys70J3QtdC30LDQstC40YHQuNC80YvQuSDQtNC+0YXQvtC0O9CX0LDRgNC/0LvQsNGC0LA70KHQvtCy0LXRgjvQntC30LDRgNC10L3QuNC1O9Ce0L/QvtC70YfQtdC90LjQtTvQkdC70LDQs9C+0YHQu9C+0LLQu9C10L3QuNC1O9Cf0YDQuNGF0LLQvtGB0YLQtdC90Yw70JrQvtGE0LU70JrQsNGA0YzQtdGA0L3Ri9C5INGA0L7RgdGCO9CR0LXQt9C70LjQvNC40YLQvdGL0Lkg0YLQsNGA0LjRhDsiK1wKItCj0LrQvtC7INGB0YLQuNC80YPQu9GP0YLQvtGA0LA70J/QvtCy0LXRgdGC0LrQsDtSU1ZQO9Cd0LDQu9C+0LPQvtCy0YvQuSDQstGL0YfQtdGCO9Cn0YLQviDQvNC10L3RjyDQvdC1INGD0LHQuNCy0LDQtdGCO9Cf0L7QtNCw0YDQvtC6O9Cf0L7RgdC70LXQtNC90Y/RjyDQt9Cw0L/QuNGB0LrQsDvQpNC+0LrRg9GBO9Ch0YLQvtGF0LDRgdGC0LjRh9C10YHQutC40Lkg0YLQtdGA0YDQvtGA0LjQt9C8O9CvINC+0LHQstC40L3Rj9GOITvQodCx0L7RgCDQvtC/0L7Qu9GH0LXQvdC40Y870JDQu9C40LHQuDsiKS5zcGxpdCgiOyIpCgpjYXJkcyA9IFtjYXJkc19kYW1hZ2UsIGNhcmRzX2NvbnRyb2wsIGNhcmRzX3Njb3V0LCBjYXJkc19zdXBwb3J0XQoKY2hhbmNlcyA9IHsKCSJCb3NzIjpbMywgODUsIDksIDNdLAoJIkNvbnNpZ2xpZXJlIjpbMywgOSwgMywgODVdLAoJIlNweSI6WzksIDMsIDg1LCAzXSwKCSJLaWxsZXIiOls4NSwgMywgMywgOV0sCgkiQ29tbWllIjpbOSwgMywgODUsIDNdLAoJIkRvY3RvciI6WzMsIDg1LCA5LCAzXSwKCSJWaWdpIjpbODUsIDMsIDMsIDldLAoJIkNvcCI6WzMsIDksIDMsIDg1XSwKCSJDaXZpbGlhbiI6WzI1LCAyNSwgMjUsIDI1XQp9CgpjdXJyZW50X3JvbGUgPSAiQm9zcyIKCmRlZiByYW5kb21fY2FyZCgpOgoJY2hhbmNlID0gY2hhbmNlc1tjdXJyZW50X3JvbGVdCglkaXN0ciA9IFtzdHIoeCkqY2hhbmNlW3hdIGZvciB4IGluIFswLDEsMiwzXV0KCWZsYXQgPSBbeSBmb3IgeCBpbiBkaXN0ciBmb3IgeSBpbiB4XQoJY29sb3IgPSBjYXJkc1tpbnQocmFuZG9tLmNob2ljZShmbGF0KSldCgljYXJkID0gcmFuZG9tLmNob2ljZShjb2xvcikKCXJldHVybiBjYXJkCgpkZWYgcmFuZG9tX3JvdW5kKCk6Cglyb3VuZCA9IFtyYW5kb21fY2FyZCgpLHJhbmRvbV9jYXJkKCkscmFuZG9tX2NhcmQoKV0KCWlmIGxlbihzZXQocm91bmQpKSAhPSAzOiByZXR1cm4gcmFuZG9tX3JvdW5kKCkKCWVsc2U6IHJldHVybiByb3VuZAoJCmRlZiByYW5kb21fZHJhdygpOgoJcmV0dXJuIFtyYW5kb21fcm91bmQoKSBmb3IgeCBpbiByYW5nZSgxNSldCgkKZm9yIHJvdW5kIGluIHJhbmRvbV9kcmF3KCk6CglwcmludChyb3VuZCk=
stdout
['Служба безопасности', 'Mana Burn', 'Большой Брат']
['RSVP', 'Под защитой', 'Coup de Grâce']
['Шипы', 'Расписание охраны', 'Служба безопасности']
['Nightmare', 'Осечка', 'Der Prozess']
['Флешбек', 'Супергерой', 'Mana Burn']
['Осечка', 'Служба безопасности', 'Супергерой']
['Nightmare', 'Под защитой', 'Телохранитель']
['Осечка', 'Хулиганство', 'Отравленный клинок']
['Кровотечение', 'RSVP', 'Телохранитель']
['Запрет', 'Служба безопасности', 'Эксгумация']
['Дружба это магия', 'Отравленный клинок', 'Большой Брат']
['Служба безопасности', 'Шипы', 'Бронежилет']
['Эксгумация', 'Столовая', 'Der Prozess']
['Куратор спецслужб', 'Mana Burn', 'Nightmare']
['Под защитой', 'Телохранитель', 'Mana Burn']