====== روبات همیلتونی ====== بر روی صفحه‌ای $N$ نقطه‌ی $P_1$، $P_2$، ... و $P_N$ به ترتیب با مختصات $(x_1,y_1)$، $(x_2,y_2)$، ... و $(x_N,y_N)$ که همه اعدادی صحیح هستند داده شده است. روباتی قرار است از $P_1$ شروع به حرکت کرده، از همه‌ی نقاط فوق دقیقا یک بار عبور کند و مجددا به $P_1$ باز گردد. روبات در حرکت خود دارای محدودیت‌هایی است و فقط می‌تواند روی خط مستقیم حرکت کند. در نقطه‌ی $P_1$ روبات می‌تواند هر جهت دل‌خواهی را انتخاب کند تا به یکی از $P_i$ ها برسد، اما از آن پس روبات تنها می‌تواند در همان راستای قبلی حرکت کند، یا ۹۰ درجه به سمت چپ و یا ۹۰ درجه به سمت راست بچرخد. به بیان دیگر، برنامه‌ی حرکت روبات شامل پنج نوع دستورالعمل است: * $ORIENTATION(x_k,y_k)$، که فقط به عنوان اولین دستور به کار می‌رود و مفهوم آن این است که روبات در نقطه‌ی $P_1$ به سمت نقطه‌ی $P_k$ می‌چرخد $(1 ^ ورودي نمونه ^ خروجي نمونه ^ |4 \\ 2 -2 \\ 0 2 \\ -1 -1 \\ 3 1 |ORIENTATION(3,1) \\ MOVETO(3,1) \\ TURNLEFT \\ MOVETO(0,2) \\ TURNLEFT \\ MOVETO(-1,-1) \\ TURNLEFT \\ MOVETO(2,-2) \\ STOP | * [[سوال ۲|سوال بعد]]