tło
Alice i Bob grają w grę o nazwie binarne słowo . Aby zagrać w grę, ustalamy długość n >= 0, zestaw Gdługości ndwójkowych słów zwanych zestawem bramek oraz nciąg długości tzawierający litery Ai Bnazywany porządkiem tury . Gra trwa przez ntury, a na turę igracz określony przez t[i]wybiera trochę w[i]. Po zakończeniu gry gracze patrzą na binarne słowo w, które skonstruowali. Jeśli to słowo zostanie znalezione w zestawie bramek G, Alice wygrywa grę; w przeciwnym razie Bob wygrywa.
Na przykład, powiedzmy, fix n = 4, G = [0001,1011,0010]i t = AABA. Alice dostaje pierwszą turę, a ona wybiera w[0] = 0. Druga tura należy również do Alicji, a ona wybiera w[1] = 0. Bob ma trzecią turę i wybiera w[2] = 0. W ostatniej turze Alice wybiera w[3] = 1. Wynikowe słowo, 0001znajduje się w G, więc Alice wygrywa.
Teraz, gdyby Bob wybrał w[2] = 1, Alice mogłaby wybrać w[3] = 0w swojej ostatniej turze i nadal wygrywać. Oznacza to, że Alice może wygrać grę bez względu na to, jak gra Bob. W tej sytuacji Alice ma zwycięską strategię . Strategię tę można zwizualizować jako oznaczone drzewo binarne, które rozgałęzia się na poziomach odpowiadających zwrotom Boba i którego każda gałąź zawiera słowo z G:
A A B A
-0-0-0-1
\
1-0
Alice gra po prostu śledząc gałęzie w swojej turze; bez względu na to, którą gałąź wybierze Bob, Alice w końcu wygrywa.
Wejście
Jako dane wejściowe podano długość n, a zestaw Gjako (być może pustą) listę ciągów długości n.
Wynik
Twój wynik to lista rozkazów tury, dla których Alice ma strategię wygrywającą, co jest równoważne z istnieniem drzewa binarnego, jak opisano powyżej. Kolejność rozkazów tury nie ma znaczenia, ale duplikaty są zabronione.
Szczegółowe zasady
Możesz napisać pełny program lub funkcję. W przypadku programu możesz wybrać separator dla wejścia i wyjścia, ale musi być taki sam dla obu. Wygrywa najkrótsza liczba bajtów, a standardowe luki są niedozwolone.
Przypadki testowe
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]
Śmieszny fakt
Liczba zleceń skrętu na wyjściu jest zawsze równa liczbie słów w zestawie celów.
11101dwa razy; zabawny fakt wciąż obowiązuje dla zestawów. Zgarb, czy dane wejściowe mogą zawierać powtarzające się elementy, czy był to błąd?