Для большего MtG-добра: Магия: Сражение со способностями
Предпосылка:
В Magic: the Gathering вы разыгрываете заклинания, оплачивая их мановую стоимость, нажимая земли на требуемое количество. Эти земли могут производить один из пяти цветов:
- Белый (W)
- Синий (U)
- Черный (B)
- Красный (R)
- Зеленый (G)
Стоимость состоит из двух частей: числа, которое является общим требованием к мане, и серии символов, представляющих цветное требование к мане. Число представляет собой общую стоимость маны и может использовать любой цвет маны для ее удовлетворения, например, (3)
может быть оплачено WGG
. Символы являются требованием 1: 1 определенного цвета. Например WWUBR
, потребуется 2 белых маны, 1 синий, 1 черный и 1 красный. Общая часть всегда будет стоять перед цветной частью. Как напоминание, (0)
это действительная стоимость и должна быть обработана.
Вы можете иметь расходы, которые являются полностью общими, или полностью окрашенными, или и тем, и другим. Например, следующая карта стоит 4 ББ и оплачивается 4-мя цветными маны любого цвета и 2-мя черными маны:
Земли в этом испытании будут приносить одну ману. Тем не менее, мы рассмотрим земли, которые могут давать несколько цветов, но при этом приносить только 1 ману. Например, G
будет производиться зеленая мана, WG
может быть 1 белый или 1 зеленый.
Входные данные:
Вам будет предоставлено два ввода, стоимость карты и список земель.
Стоимость карты может быть либо строкой, либо кортежем, содержащим число и строку для цветной части. Если нет общей части, вы можете дополнить строку / кортеж 0.
Список земель будет списком строк, каждая из которых - это то, что может произвести данная земля. Этот список может быть пустым (у вас нет земель). Вы также можете принять это как список целых, используя логику битовой маски, но опубликуйте свою схему, если вы это сделаете. Заказ также зависит от вас, если это имеет значение, в противном случае он будет принят в WUBRG
порядке.
#Example input formats
"4BB", ("WG","B","B") #
(4,"BB"), (7,3,3) #Both should return falsy
Вывод:
truthy
Значение , если вы можете успешно оплатить стоимость данной ваши земель и falsey
значение , если вы не можете.
Правила:
- Вам будет гарантирован действительный ввод
- Предполагается, что мана всегда будет в порядке "WUBRG". Если вы хотите другой порядок, укажите это в своем ответе.
- Цвета всегда будут сгруппированы в стоимости, например, "WWUBBRG"
- Ввод будет использовать либо все заглавные или строчные, на ваш выбор.
- Вы должны быть в состоянии справиться с регулярным выражением
127[WUBRG]{127}
и 254 землями. - Стандартные лазейки запрещены
- Это Код-гольф, самый короткий ответ на язык выигрывает
Примеры:
"0", ("") => 1
"1BB", ("WG","B","B") => 1
"BB", ("WG","B","B") => 1
"WB", ("WG","B","B") => 1
"1UB", ("W","U","B") => 1
"1BB", ("WB","WB","WG") => 1
"1", ("WG","B","B") => 1
"1BB", ("WGR","WB","WB") => 1
"WUBRG", ("W","U","B","R","G") => 1
"1WWUBB", ("W","WG","U","B","B","R") => 1
"10BB", ("WGR","WB","WB","B","B","B","B","B","B","B","B","B") => 1
"R", ("") => 0
"4", ("WG","B","B") => 0
"1BB", ("WG","WB") => 0
"1UB", ("WG","W","UB") => 0
"1UBR", ("W","WG","UBR") => 0
"WUBRG", ("WUBRG") => 0
"1WWUBB", ("W","WG","U","B","B") => 0
"10UU", ("WGR","WB","WB","B","B","B","B","B","B","B","B","B") => 0