พื้นหลัง
ขึ้นอยู่กับเกมสี่ปีของฉันได้รับจากอาจารย์ของเขา
ว่า "เป้าหมาย" คือการ "ค้นหา" 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
โดยเฉพาะ?