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: d
dan memutar untuk mendapatkan stack: acebd
.
Top of stack a
: Ya! jadi kami menambahkannya ke urutan: da
dan menghapusnya dari stack: cebd
.
Atas tumpukan c
: Tidak apa yang kita cari ( e
), jadi kami menambahkannya ke urutan: dac
dan memutar untuk mendapatkan stack: ebdc
.
Top of stack e
: Ya! jadi kami menambahkannya ke urutan: dace
dan menghapusnya dari stack: bdc
.
Atas tumpukan b
: Tidak apa yang kita cari ( c
), jadi kami menambahkannya ke urutan: daceb
dan memutar untuk mendapatkan stack: dcb
.
Atas tumpukan d
: Tidak apa yang kita cari ( c
), jadi kami menambahkannya ke urutan: dacebd
dan memutar untuk mendapatkan stack: cbd
.
Top of stack c
: Ya! jadi kami menambahkannya ke urutan: dacebdc
dan menghapusnya dari stack: bd
.
Atas tumpukan b
: Tidak apa yang kita cari ( d
), jadi kami menambahkannya ke urutan: dacebdcb
dan memutar untuk mendapatkan stack: db
.
Top of stack d
: Ya! jadi kami menambahkannya ke urutan: dacebdcbd
dan menghapusnya dari stack: b
.
Top of stack b
: Ya! jadi kami menambahkannya ke urutan: dacebdcbdb
dan 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
99
khusus?