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: d
và 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: da
và 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: dac
và 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: dace
và 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: daceb
và 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: dacebd
và 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: dacebdc
và 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: dacebdcb
và 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: dacebdcbd
và 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: dacebdcbdb
và 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
99
cụ thể?