Фон
На основі гри мій чотирирічний діточок отримав від свого рабина.
«Мета» - «знайти» букви в заданому порядку, наприклад 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саме?