QOJ.ac

QOJ

Time Limit: 2.0 s Memory Limit: 256 MB Total points: 100

#19997. لعبة أطفال مع روبوت

Statistics

هذه مسألة تفاعلية.

يلعب Misha الصغير لعبة أطفال مع روبوت. في هذه اللعبة، يقف الروبوت في ساحة مقسمة إلى $3 \times 3$ مربعات ومحاطة بحواجز. تبدأ اللعبة من المربع الأوسط وتتألف من تنفيذ عشرة أفعال. كل فعل هو إما إلقاء عبارة أو محاولة الانتقال إلى أحد المربعات المجاورة. يُستخدم الإلقاء للانتظار أو لمجرد التسلية.

أحد المربعات مميز، لكن Misha لا يعرف مسبقًا أي مربع هو. يُبلغ الروبوت عندما ينتقل إلى المربع المميز. هدف اللعبة هو الانتقال إلى المربع المميز تحديدًا أثناء الفعل العاشر.

للتواصل مع الروبوت، يستخدم Misha إدخالًا وإخراجًا نصيين. يتعرف الروبوت على الأوامر التالية:

  • echo phrase — إلقاء phrase،

  • move north — التحرك مربعًا واحدًا نحو الشمال،

  • move east — التحرك مربعًا واحدًا نحو الشرق،

  • move south — التحرك مربعًا واحدًا نحو الجنوب،

  • move west — التحرك مربعًا واحدًا نحو الغرب.

لكل أمر إلقاء، يقرأ الروبوت العبارة المعطاة بصوت عال، ويطبعها أيضًا مجددًا كنص. لا يتحرك الروبوت أثناء الإلقاء. يُضمن أن الروبوت يعالج بصورة صحيحة العبارات التي تتكون من محارف ذات رموز ASCII من 32 إلى 126 شاملة الطرفين، ولا يتجاوز طولها 256 محرفًا.

لكل أمر حركة، يطبع الروبوت إحدى الكلمات الأربع التالية:

  • bump إذا اصطدم الروبوت بحاجز بدلًا من التحرك؛ وفي هذه الحالة يبقى في المربع نفسه،

  • moved إذا انتقل الروبوت بنجاح إلى مربع عادي،

  • found إذا انتقل الروبوت إلى المربع المميز أثناء أحد الأفعال التسعة الأولى،

  • win إذا انتقل الروبوت إلى المربع المميز أثناء الفعل العاشر.

ساعد Misha على اللعب بحيث يطبع الروبوت الكلمة المطلوبة win أثناء الفعل العاشر.

التفاعل

يجب أن يطبع برنامج الحل الأوامر إلى الإخراج القياسي، أمرًا واحدًا في كل سطر. لمنع بقاء الإخراج في الذاكرة المؤقتة، افرغ مخزن الإخراج المؤقت بعد كل أمر تصدره: يمكن فعل ذلك مثلًا باستخدام fflush (stdout) في C أو C++، أو System.out.flush () في Java، أو flush (output) في Pascal، أو sys.stdout.flush () في Python.

يُرسل الرد على كل أمر إلى الإدخال القياسي لبرنامج الحل في سطر مستقل.

بعد طباعة عشرة أوامر، يجب أن ينتهي برنامج الحل بصورة صحيحة.

أمثلة

في المثال المعطى، يقع المربع المميز شرق المركز. يُضمن أن هذا الاختبار سيكون الأول عند فحص حلك.

تظهر الأوامر (إخراج الحل) على اليسار، وتظهر الردود عليها (إدخال الحل) على اليمين.

الإدخال 1

moved
moved
found
moved
found
bump
moved
Ready!
Steady...
win

الإخراج 1

move north
move east
move south
move west
move east
move east
move south
echo Ready!
echo Steady...
move north

ملاحظة

في كل اختبار، يُختار المربع المميز مسبقًا ولا يتغير أثناء المسابقة.

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.