Фон
Аліса та Боб грають у гру, яка називається побудувати бінарне слово . Для того, щоб грати в цю гру, ви фіксуєте довжину n >= 0
, набір G
з довжина- n
довічних слів називається поставлена мета , і довжина- n
рядок , t
що містить букви A
і B
, званий порядок обороту . Гра триває n
повороти, а по черзі i
гравець, визначений, t[i]
вибирає трохи w[i]
. Коли гра закінчена, гравці переглядають створене ними бінарне слово w
. Якщо це слово знайдеться у встановленій цілі G
, Аліса виграє гру; інакше перемагає Боб.
Наприклад, давайте виправити n = 4
, G = [0001,1011,0010]
і t = AABA
. Аліса отримує першу чергу, і вона вибирає w[0] = 0
. Друга черга - також Аліса, і вона обирає w[1] = 0
. У Боба третя черга, і він обирає w[2] = 0
. На завершальній черзі вибирає Аліса w[3] = 1
. Отримане слово 0001
,, знаходиться в G
, тому Аліса виграє гру.
Тепер, якби Боб вибрав w[2] = 1
, Аліса могла обрати w[3] = 0
в остаточному ході і все-таки перемогти. Це означає, що Аліса може виграти гру незалежно від того, як грає Боб. У цій ситуації Аліса має виграшну стратегію . Цю стратегію можна візуалізувати як позначене бінарне дерево, яке гілляться на рівнях, що відповідають виткам Боба, і кожна з яких гілок містить слово з G
:
A A B A
-0-0-0-1
\
1-0
Аліса грає, просто стежачи за гілками на своїй черзі; незалежно від того, яку галузь обрав Боб, Аліса врешті виграє.
Вхідні дані
Ви вводите як введення довжину n
, а набір - G
як (можливо, порожній) список рядків довжини n
.
Вихідні дані
Вихід - це перелік поворотів, для яких Аліса має стратегію виграшу, що еквівалентно існуванню бінарного дерева, як описано вище. Порядок наказів повороту не має значення, але дублікати заборонені.
Детальні правила
Ви можете написати повну програму або функцію. Що стосується програми, ви можете вибрати роздільник для введення та виводу, але він повинен бути однаковим для обох. Виграє найкоротший байт, а стандартні лазівки заборонені.
Випробування
3 [] -> []
3 [000,001,010,011,100,101,110,111] -> [AAA,AAB,ABA,ABB,BAA,BAB,BBA,BBB]
4 [0001,1011,0010] -> [AAAA,BAAA,AABA]
4 [0001,1011,0010,0110,1111,0000] -> [AAAA,BAAA,ABAA,BBAA,AABA,AAAB]
5 [00011,00110,00111,11110,00001,11101,10101,01010,00010] -> [AAAAA,BAAAA,ABAAA,BBAAA,AABAA,AAABA,BAABA,AAAAB,AABAB]
Кумедний факт
Кількість порядків повороту на виході завжди дорівнює кількості слів у встановленій цілі.
11101
двічі; цікавий факт все ще стосується наборів. Згарб, може вхід містити повторювані елементи, чи це була помилка?