Фон
На основі гри мій чотирирічний діточок отримав від свого рабина.
«Мета» - «знайти» букви в заданому порядку, наприклад aecdb
. Вам надається стопка листівкових карток, наприклад daceb
. Ви можете шукати лише через стек у заданому порядку, хоча й циклічно. Коли ви зустрінете потрібний лист, ви виймаєте це зі стопки.
Об'єктивна
З огляду на замовлення та стек (перекладки, що не містять дублікатів один одного), знайдіть послідовність літер верхнього стека (це все друковані ASCII), які ви бачите під час гри.
Покроковий приклад
Нам потрібно знайти замовлення aecdb
, враховуючи стек daceb
:
Верх стека d
: Не те , що ми шукаємо ( a
), тому ми додамо його в послідовності: d
і повернути , щоб отримати стек: acebd
.
Верх стека a
: Так! тому ми додаємо його до послідовності: da
і видаляємо зі стека : cebd
.
Верх стека c
: Не те , що ми шукаємо ( e
), тому ми додамо його в послідовності: dac
і повернути , щоб отримати стек: ebdc
.
Верх стека e
: Так! тому ми додаємо його до послідовності: dace
і видаляємо зі стека : bdc
.
Верх стека b
: Не те , що ми шукаємо ( c
), тому ми додамо його в послідовності: daceb
і повернути , щоб отримати стек: dcb
.
Верх стека d
: Не те , що ми шукаємо ( c
), тому ми додамо його в послідовності: dacebd
і повернути , щоб отримати стек: cbd
.
Верх стека c
: Так! тому ми додаємо його до послідовності: dacebdc
і видаляємо зі стека : bd
.
Верх стека b
: Не те , що ми шукаємо ( d
), тому ми додамо його в послідовності: dacebdcb
і повернути , щоб отримати стек: db
.
Верх стека d
: Так! тому ми додаємо його до послідовності: dacebdcbd
і видаляємо зі стека : b
.
Верх стека b
: Так! тому ми додаємо його до послідовності: dacebdcbdb
і видаляємо зі стека : .
І ми зробили. Результат - dacebdcbdb
.
Довідкова реалізація
def letters(target, stack):
string = ''
while stack:
string += stack[0]
if stack[0] == target[0]:
stack.pop(0)
target = target[1:]
else:
stack.append(stack.pop(0))
return string
print letters('aecdb', list('daceb'))
Тестові справи
try
, yrt
→yrtyry
1234
, 4321
→4321432434
ABCDEFGHIJKLMNOPQRSTUVWXYZ
, RUAHYKCLQZXEMPBWGDIOTVJNSF
→RUAHYKCLQZXEMPBWGDIOTVJNSFRUHYKCLQZXEMPWGDIOTVJNSFRUHYKLQZXEMPWGIOTVJNSFRUHYKLQZXMPWGIOTVJNSRUHYKLQZXMPWIOTVJNSRUYKLQZXMPWOTVNSRUYQZXPWOTVSRUYQZXPWTVSRUYQZXWTVSRUYZXWTVSUYZXWTVUYZXWVYZXWYZXYZ
?
, ?
→?
a
, a
→a a
abcd
, abcd
→abcd
99
саме?