Latar Belakang
Berdasarkan permainan, anak saya yang berumur empat tahun dapatkan dari rabinya.
"Tujuan" adalah untuk "menemukan" surat-surat dalam urutan tertentu, misalnya aecdb. Anda diberi setumpuk kartu surat, mis daceb. Anda hanya dapat mencari melalui tumpukan dalam urutan yang diberikan, meskipun secara siklis. Ketika Anda memenuhi surat yang Anda butuhkan, Anda mengeluarkannya dari tumpukan.
Objektif
Diberi perintah dan tumpukan (permutasi duplikat bebas satu sama lain), temukan urutan huruf tumpukan teratas (semuanya dapat dicetak ASCII) yang Anda lihat saat bermain game.
Contoh langkah demi langkah
Kami perlu menemukan pesanan aecdb, mengingat tumpukan daceb:
Atas tumpukan d: Tidak apa yang kita cari ( a), jadi kami menambahkannya ke urutan: ddan memutar untuk mendapatkan stack: acebd.
Top of stack a: Ya! jadi kami menambahkannya ke urutan: dadan menghapusnya dari stack: cebd.
Atas tumpukan c: Tidak apa yang kita cari ( e), jadi kami menambahkannya ke urutan: dacdan memutar untuk mendapatkan stack: ebdc.
Top of stack e: Ya! jadi kami menambahkannya ke urutan: dacedan menghapusnya dari stack: bdc.
Atas tumpukan b: Tidak apa yang kita cari ( c), jadi kami menambahkannya ke urutan: dacebdan memutar untuk mendapatkan stack: dcb.
Atas tumpukan d: Tidak apa yang kita cari ( c), jadi kami menambahkannya ke urutan: dacebddan memutar untuk mendapatkan stack: cbd.
Top of stack c: Ya! jadi kami menambahkannya ke urutan: dacebdcdan menghapusnya dari stack: bd.
Atas tumpukan b: Tidak apa yang kita cari ( d), jadi kami menambahkannya ke urutan: dacebdcbdan memutar untuk mendapatkan stack: db.
Top of stack d: Ya! jadi kami menambahkannya ke urutan: dacebdcbddan menghapusnya dari stack: b.
Top of stack b: Ya! jadi kami menambahkannya ke urutan: dacebdcbdbdan menghapusnya dari stack: .
Dan kita selesai. Hasilnya adalah dacebdcbdb.
Implementasi referensi
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'))
Uji kasus
try, yrt→yrtyry
1234, 4321→4321432434
ABCDEFGHIJKLMNOPQRSTUVWXYZ, RUAHYKCLQZXEMPBWGDIOTVJNSF→RUAHYKCLQZXEMPBWGDIOTVJNSFRUHYKCLQZXEMPWGDIOTVJNSFRUHYKLQZXEMPWGIOTVJNSFRUHYKLQZXMPWGIOTVJNSRUHYKLQZXMPWIOTVJNSRUYKLQZXMPWOTVNSRUYQZXPWOTVSRUYQZXPWTVSRUYQZXWTVSRUYZXWTVSUYZXWTVUYZXWVYZXWYZXYZ
?, ?→?
a, a →a a
abcd, abcd→abcd
99khusus?