พื้นหลัง
ขึ้นอยู่กับเกมสี่ปีของฉันได้รับจากอาจารย์ของเขา
ว่า "เป้าหมาย" คือการ "ค้นหา" aecdbตัวอักษรในการสั่งซื้อที่ได้รับเช่น dacebคุณจะได้รับบัตรสแต็คของตัวอักษรเช่น คุณสามารถค้นหาได้จากสแต็กตามลำดับที่กำหนดแม้ว่าจะเป็นแบบวนรอบเท่านั้น เมื่อคุณพบจดหมายที่คุณต้องการคุณจะนำมันออกมาจากกอง
วัตถุประสงค์
เมื่อได้รับคำสั่งและสแต็ค (การเรียงสับเปลี่ยนที่ไม่ซ้ำกัน) ให้ค้นหาลำดับของตัวอักษรบนสุด (เป็น ASCII ที่พิมพ์ได้ทั้งหมด) ที่คุณเห็นขณะเล่นเกม
ตัวอย่างทีละขั้นตอน
เราจำเป็นต้องค้นหาคำสั่งที่aecdbได้รับกองdaceb:
ด้านบนของสแต็คd: ไม่ได้สิ่งที่เรากำลังมองหา ( a) เพื่อให้เราเพิ่มเข้าไปในลำดับ: และหมุนที่จะได้รับสแต็ค:dacebd
ด้านบนของสแต็คa: ใช่! เพื่อให้เราเพิ่มเข้าไปในลำดับ: และนำออกจากสแต็ค:dacebd
ด้านบนของสแต็คc: ไม่ได้สิ่งที่เรากำลังมองหา ( e) เพื่อให้เราเพิ่มเข้าไปในลำดับ: และหมุนที่จะได้รับสแต็ค:dacebdc
ด้านบนของสแต็คe: ใช่! เพื่อให้เราเพิ่มเข้าไปในลำดับ: และนำออกจากสแต็ค:dacebdc
ด้านบนของสแต็คb: ไม่ได้สิ่งที่เรากำลังมองหา ( c) เพื่อให้เราเพิ่มเข้าไปในลำดับ: และหมุนที่จะได้รับสแต็ค:dacebdcb
ด้านบนของสแต็คd: ไม่ได้สิ่งที่เรากำลังมองหา ( c) เพื่อให้เราเพิ่มเข้าไปในลำดับ: และหมุนที่จะได้รับสแต็ค:dacebdcbd
ด้านบนของสแต็คc: ใช่! เพื่อให้เราเพิ่มเข้าไปในลำดับ: และนำออกจากสแต็ค:dacebdcbd
ด้านบนของสแต็คb: ไม่ได้สิ่งที่เรากำลังมองหา ( d) เพื่อให้เราเพิ่มเข้าไปในลำดับ: และหมุนที่จะได้รับสแต็ค:dacebdcbdb
ด้านบนของสแต็คd: ใช่! เพื่อให้เราเพิ่มเข้าไปในลำดับ: และนำออกจากสแต็ค:dacebdcbdb
ด้านบนของสแต็ค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โดยเฉพาะ?