A Drop of the Programming Sea

یک قطره از دریای برنامه نویسی: وبلاگ امیرحسین مهدی‌نژاد، برنامه‌نویس، مدرس برنامه‌نویسی و دانشجوی مهندسی کامپیوتر

A Drop of the Programming Sea

یک قطره از دریای برنامه نویسی: وبلاگ امیرحسین مهدی‌نژاد، برنامه‌نویس، مدرس برنامه‌نویسی و دانشجوی مهندسی کامپیوتر

● Bayan programming contest Qualification Round - C. Extraterrestrial Rotations

سه شنبه, ۲۲ مهر ۱۳۹۳، ۰۵:۳۰ ب.ظ

چرخش‌های خارق‌العاده 

سیاره‌ی دوردست ویژگی‌های خارق‌العاده‌ای دارد. کاوش‌های دانشمندان فضایی نشان می دهد که سیاره‌ی دوردست، برخلاف سایر سیّاره‌ها به شکل مکعب است و بر روی هر وجهِ این سیاره‌ی مکعبی، نامی نوشته شده است. همچنین این سیاره به جای چرخش به دور یک محور، حول سه محور می‌چرخد...

input
2
Front Up Down Left Right Back
2
Z 4
X 4
Front Up Down Left Right Back
3
Z 1
X 1
Y 1
output
Front Up Down Left Right Back
Down Back Front Right Left Up

انواع چرخش‌های سیاره به شرح زیر است:

چرخش نوع X: وجه‌های راست (Right) و چپ ثابت می‌مانند و مطابق شکل به سمت بالا می‌چرخد.


چرخش نوع Y: وجه‌های جلو (Front) و پشت ثابت می‌مانند و مطابق شکل به سمت راست می‌چرخد.


چرخش نوع Z: وجه‌های بالا (Top) و پایین ثابت می‌مانند و مطابق شکل به سمت راست می‌چرخد.


از شما خواسته شده تا برنامه‌ای بنویسید که تعیین کند بعد از تعدادی چرخش، چه کلماتی بر روی وجوهِ جلو، بالا، پایین، چپ، راست و پشت نوشته شده است.


ورودی:

در سطر اول ورودی عدد t نشان‌دهنده‌ی تعداد تست‌های ورودی آمده است. برای هر تست، در سطر اول، شش کلمه (هر یک به طول حداکثر 10 کاراکتر و شامل حروف انگلیسی) آمده است. این کلمات با کاراکتر فاصله از هم جدا شده‌اند و به ترتیب کلمات نوشته شده بر روی جلو، بالا، پایین، چپ، راست و پشت مکعب در ابتدای کار را نشان می‌دهند.


در سطر بعدی عدد n تعداد مجموعه‌ی چرخش‌ها آمده است. در هر یک از n سطر بعد، ابتدا نوع حرکت با یکی از حروف X، Y یا Z مشخص شده است و سپس عدد m بیانگر تعداد حرکات از آن نوع آمده است. 

1≤t≤100

1≤n≤10000

1≤m≤109


خروجی:

برای هر تست، پس از اعمال حرکات بر روی مکعب، در یک سطر به ترتیب کلمات دیده شده بر روی جلو، بالا، پایین، چپ، راست و پشت مکعب را بنویسید.

// A Drop of the Programming Sea - adops.blog.ir
#include <algorithm> #include <iostream> #include <fstream> #include <cstdlib> #include <cstring> #include <iomanip> #include <sstream> #include <conio.h> #include <vector> #include <cstdio> #include <deque> #include <ctime> #include <cmath> #include <stack> #include <set> #include <map> using namespace std; #define c_false ios_base::sync_with_stdio(false) int main() { c_false; int t; cin >> t; while(t--) { string Front, Up, Down, Left, Right, Back; cin >> Front >> Up >> Down >> Left >> Right >> Back; int n; cin >> n; while(n--) { char c; long m; cin >> c >> m; m %= 4; switch(c) { case 'X': { while(m--) { swap(Up, Back); swap(Up, Down); swap(Up, Front); } } break; case 'Y': { while(m--) { swap(Right, Down); swap(Right, Left); swap(Right, Up); } } break; case 'Z': { while(m--) { swap(Right, Back); swap(Right, Left); swap(Right, Front); } } break; } } cout<<Front<<' '<<Up<<' '<<Down<<' '<<Left<<' '<<Right<<' '<<Back<<endl; } }

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی