पृष्ठभूमि
एक खेल के आधार पर मेरे चार वर्षीय अपने रब्बी से मिला।
"लक्ष्य" किसी दिए गए क्रम में अक्षरों को "ढूंढना" है, जैसे 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
विशेष रूप से क्यों ?