Lý lịch
Dựa trên một trò chơi, đứa con bốn tuổi của tôi đã nhận được từ giáo sĩ của mình.
"Mục tiêu" là "tìm" các chữ cái theo một thứ tự nhất định, vd aecdb. Bạn được cấp một chồng thẻ thư, vd daceb. Bạn chỉ có thể tìm kiếm thông qua ngăn xếp theo thứ tự cho trước, mặc dù theo chu kỳ. Khi bạn gặp một lá thư bạn cần, bạn lấy nó ra khỏi ngăn xếp.
Mục tiêu
Đưa ra một thứ tự và một ngăn xếp (hoán vị không trùng lặp của nhau), tìm chuỗi các chữ cái ngăn xếp trên cùng (tất cả đều là ASCII có thể in được) mà bạn thấy trong khi chơi trò chơi.
Ví dụ từng bước
Chúng ta cần tìm thứ tự aecdb, đưa ra ngăn xếp daceb:
Top of stack d: Không phải thứ chúng ta đang tìm kiếm ( a), vì vậy chúng ta thêm nó vào chuỗi: dvà xoay để lấy stack : acebd.
Đầu ngăn xếp a: Có! vì vậy chúng tôi thêm nó vào chuỗi: davà xóa nó khỏi ngăn xếp : cebd.
Top of stack c: Không phải thứ chúng ta đang tìm kiếm ( e), vì vậy chúng ta thêm nó vào chuỗi: dacvà xoay để lấy stack : ebdc.
Đầu ngăn xếp e: Có! vì vậy chúng tôi thêm nó vào chuỗi: dacevà xóa nó khỏi ngăn xếp : bdc.
Top of stack b: Không phải thứ chúng ta đang tìm kiếm ( c), vì vậy chúng ta thêm nó vào chuỗi: dacebvà xoay để lấy stack : dcb.
Top of stack d: Không phải thứ chúng ta đang tìm kiếm ( c), vì vậy chúng ta thêm nó vào chuỗi: dacebdvà xoay để lấy stack : cbd.
Đầu ngăn xếp c: Có! vì vậy chúng tôi thêm nó vào chuỗi: dacebdcvà xóa nó khỏi ngăn xếp : bd.
Top of stack b: Không phải thứ chúng ta đang tìm kiếm ( d), vì vậy chúng ta thêm nó vào chuỗi: dacebdcbvà xoay để lấy stack : db.
Đầu ngăn xếp d: Có! vì vậy chúng tôi thêm nó vào chuỗi: dacebdcbdvà xóa nó khỏi ngăn xếp : b.
Đầu ngăn xếp b: Có! vì vậy chúng tôi thêm nó vào chuỗi: dacebdcbdbvà xóa nó khỏi ngăn xếp : .
Và chúng ta đã hoàn thành. Kết quả là dacebdcbdb.
Thực hiện tham khảo
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'))
Các trường hợp thử nghiệm
try, yrt→yrtyry
1234, 4321→4321432434
ABCDEFGHIJKLMNOPQRSTUVWXYZ, RUAHYKCLQZXEMPBWGDIOTVJNSF→RUAHYKCLQZXEMPBWGDIOTVJNSFRUHYKCLQZXEMPWGDIOTVJNSFRUHYKLQZXEMPWGIOTVJNSFRUHYKLQZXMPWGIOTVJNSRUHYKLQZXMPWIOTVJNSRUYKLQZXMPWOTVNSRUYQZXPWOTVSRUYQZXPWTVSRUYQZXWTVSRUYZXWTVSUYZXWTVUYZXWVYZXWYZXYZ
?, ?→?
 a, a →a a
abcd, abcd→abcd
99cụ thể?