ষড়ভুজ গ্রিডে গতি


15

ষড়্ভুজাকৃতির গ্রিডে আন্দোলনের প্রতিনিধিত্ব করে এমন কয়েকটি সিরিজের অক্ষরের একটি ইনপুট দেওয়া হয়েছে, "পয়েন্টার" এর চূড়ান্ত স্থানাঙ্কগুলি আউটপুট দেয়।

আমাদের হেক্সাগনগুলি এর মতোই সংখ্যায়িত হবে (প্রতিটি বিজোড়-সংখ্যাযুক্ত কলামটি নীচের দিকে কিছুটা স্থানান্তরিত করে একটি আয়তক্ষেত্রাকার গ্রিডটি কল্পনা করুন):

  _____         _____         _____         _____
 /     \       /     \       /     \       /     \
/ -3,-2 \_____/ -1,-2 \_____/  1,-2 \_____/  3,-2 \
\       /     \       /     \       /     \       /
 \_____/ -2,-1 \_____/  0,-1 \_____/  2,-1 \_____/
 /     \       /     \       /     \       /     \
/ -3,-1 \_____/ -1,-1 \_____/  1,-1 \_____/  3,-1 \
\       /     \       /     \       /     \       /
 \_____/ -2,0  \_____/  0,0  \_____/  2,0  \_____/
 /     \       /     \       /     \       /     \
/ -3,0  \_____/ -1,0  \_____/  1,0  \_____/  3,0  \
\       /     \       /     \       /     \       /
 \_____/ -2,1  \_____/  0,1  \_____/  2,1  \_____/
 /     \       /     \       /     \       /     \
/ -3,1  \_____/ -1,1  \_____/  1,1  \_____/  3,1  \
\       /     \       /     \       /     \       /
 \_____/       \_____/       \_____/       \_____/

পয়েন্টারটি (0, 0) এ শুরু হয়।

আপনার অবশ্যই নির্দেশাবলী সমর্থন করতে হবে:

  • q: উপরের-বামে সরান
  • w: উপরে উঠানো
  • e: ডানদিকে সরান
  • a: নীচে-বামে সরান
  • s: নিচে যাও
  • d: নীচে ডান সরান
  • r: গ্রিডকে ঘড়ির কাঁটার দিকে ঘোরান
  • R: গ্রিডকে ঘড়ির কাঁটার বিপরীতে ঘোরান

ঘূর্ণন কমান্ডগুলি একই স্থানাঙ্কে পয়েন্টার রাখার সময় পুরো গ্রিডটি ঘোরান। (কেন qweasd? তারা QWERTY কীবোর্ডে সুন্দরভাবে দিকের সাথে মেলে)

এটি কল্পনা করতে সহায়তা করতে, পয়েন্টারটি মাঝখানে শুরু হবে ধরে ধরে আন্দোলনের আদেশগুলি কী করবে তা এখানে রয়েছে:

         _____
        /     \
  _____/   w   \_____
 /     \       /     \
/   q   \_____/   e   \
\       /     \       /
 \_____/       \_____/
 /     \       /     \
/   a   \_____/   d   \
\       /     \       /
 \_____/   s   \_____/
       \       /
        \_____/

একটি ঘড়ির কাঁটার ঘোরার ( r) পরে, কমান্ডগুলি পুনরায় তৈরি করা হয়েছে (এটি পুরো হেক্স গ্রিডকে ঘোরানো হিসাবে বিবেচনা করে তবে "ডাব্লু" ইত্যাদি রাখে, যা নীচের সমতুল্য):

         _____
        /     \
  _____/   e   \_____
 /     \       /     \
/   w   \_____/   d   \
\       /     \       /
 \_____/       \_____/
 /     \       /     \
/   q   \_____/   s   \
\       /     \       /
 \_____/   a   \_____/
       \       /
        \_____/

একইভাবে, Rএরপরে ঘড়ির কাঁটার দিকে ঘোরানো ( ) এর পরে গ্রিডটি স্বাভাবিক অবস্থায় ফিরে আসত এবং ঘড়ির কাঁটার বিপরীতে আবার ঘোরানো "পুনরায় তৈরি" qwedsaহয়ে যায় aqweds

ইনপুট অবশ্যই একটি একক স্ট্রিং হিসাবে দেওয়া উচিত, এবং আউটপুট হয় কোনও একক স্ট্রিং হতে পারে কোনও অ-সংখ্যাসূচক অক্ষর (প্রাক্তন 1 2বা 3,4) বা পূর্ণসংখ্যার একটি অ্যারে দ্বারা যুক্ত হতে পারে।

যেহেতু এটি , তাই বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জিতবে।

পরীক্ষার কেস:

In                         Out
---------------------------------
edeqaaaswwdqqs             -2, 0
dddddddddd                 10, 5
wswseaeadqdq               0, 0
<empty string>             0, 0
esaaqrweesrqrq             -1, 0
wrwrwrwrw                  -1, 0
RRssrrrs                   -1, -1
aRRRRwddrqrrqqq            -1, -4
rrrrrrrrrrrrRRRRRRrrrrrrq  -1, -1
rrRrRrrRrrrrRRrRrRR        0, 0

উত্তর:


2

পাইথ, 81 বাইট

J_K1=Y"qwedsa"A,ZZFNz=kxYN ?<kZ=Y?<x\rNZ.>Y1.<Y1A,+G@[JZ1KZJ)k+H@[J_2JK2K)k;,G/H2

আউটপুট হ'ল স্থানাঙ্কগুলির প্রতিনিধিত্ব করে পূর্ণসংখ্যার একটি তালিকা।

আমার সমাধানটি আসলেই বিরক্তিকর; এটি কেবল একটি অ্যারেতে (ইন qwedsa) ইনপুটযুক্ত চরিত্রটি দেখায় এবং তারপরে দুটি স্থানে স্থায়ী পরিবর্তনগুলিতে সম্পর্কিত পরিবর্তনগুলি উপস্থাপন করে ac উদাহরণস্বরূপ, যদি ইনপুট হয় wতবে আমরা 1 পাই (এটি অ্যারেতে দ্বিতীয় অক্ষর হিসাবে)। তারপর আমরা যোগ A[1]করতে x(যেখানে Aপরিবর্তনে অ্যারে xএবং বিভিন্ন ইনপুট থেকে সম্মান মধ্যে) B[1]থেকে y(যেখানে Bপরিবর্তনগুলি হয় y)। rএবং Rকেবল ঘোরানোর মাধ্যমে অর্জন করা হয়qwedsa অ্যারে ।

আমি নিশ্চিত যে পাইথ ব্যবহার করে কেউ আরও অনেক কিছু করতে পারে। আমি যদিও আমার উত্তরটি গল্ফ করার চেষ্টা চালিয়ে যাব!

আপনি এটা চেষ্টা করে দেখতে পারেন এখানে


12

রেটিনা , 353 339 178 175 150 130 129 117 বাইট

R
5$*r
T`aq\we\ds`so`r.+
)`r(.*)
$1
^
:
a
sq
e
wd
+`(.+)q
w$1
+`(.+)d
s$1
+`sw

(.*)(\1w?):
$0$2
+`sw|ws

w+
-$0
\w
1

আউটপুট অখণ্ডে রয়েছে, একটি কোলন দ্বারা পৃথক। এর অর্থ আপনি আউটপুটে সত্যিই শূন্য দেখতে পাবেন না (যদিও কোনও কোলনের উপস্থিতি আপনাকে জানাবে যে দুটি স্থানাঙ্কের মধ্যে কোনটি শূন্য, যদি কেবল একটি থাকে)।

এটি অনলাইন চেষ্টা করুন!

এটি সত্যিই মজাদার ছিল এবং অবাক হওয়ার মতো সংক্ষিপ্ত হওয়া শেষ হয়েছিল। :)

ব্যাখ্যা

প্রথমে কিছু ব্যাকগ্রাউন্ড। ষড়ভুজাকৃতির গ্রিডগুলি বর্ণনা করার জন্য বেশ কয়েকটি সমন্বিত সিস্টেম রয়েছে। এক অফসেট স্থানাঙ্ক ব্যবহারের জন্য বলেছে। এটি মূলত আয়তক্ষেত্রাকার গ্রিড স্থানাঙ্কের মতো, এক অক্ষটি কিছুটা "ডুবে" " বিশেষত, প্রশ্নটি লিঙ্কযুক্ত পৃষ্ঠায় প্রদর্শিত "বিজোড়-কিউ" বিন্যাসের জন্য জিজ্ঞাসা করে। এই সমন্বয় ব্যবস্থাটি কাজ করতে কিছুটা বিরক্তিকর, কারণ স্থাবরক্রমে স্থানাঙ্কগুলি কীভাবে পরিবর্তিত হয় তা কেবল চালের দিকের উপরই নয়, বর্তমান অবস্থার উপরও নির্ভর করে।

অন্য একটি সমন্বিত সিস্টেম অক্ষীয় স্থানাঙ্ক ব্যবহার করে। এটি মূলত হেক্সগ্রিডকে একটি ঘনক্ষেত্রের ভলিউমের মাধ্যমে একটি তির্যক টুকরা হিসাবে কল্পনা করা এবং 2 ডি বিমানে অবস্থান নির্ধারণের জন্য দুটি অক্ষ (উদাহরণস্বরূপ x এবং z) ব্যবহার করে। হেক্স গ্রিডে, এর অর্থ হ'ল দুটি অক্ষ 60 (বা 120) ডিগ্রির কোণ গঠন করে। এই দিকটি কিছুটা স্বজ্ঞাত তবে এর সাথে কাজ করা আরও সহজ, যেহেতু প্রতিটি দিকই একটি নির্দিষ্ট "ব-দ্বীপ" ভেক্টরের সাথে মিল রয়েছে। (এই সমন্বিত সিস্টেমে কীভাবে পৌঁছানো যায় তার আরও ভাল ব্যাখ্যাের জন্য, লিঙ্কটি এবং সেখানে সুন্দর চিত্র এবং অ্যানিমেশনগুলি দেখুন)

সুতরাং আমরা এখানে যা করব: আমরা অক্ষীয় স্থানাঙ্কগুলিতে আন্দোলন গণনা করি (কমান্ডগুলির অর্থ পুনর্নির্মাণের মাধ্যমে চ্যালেঞ্জের পরামর্শ হিসাবে আবর্তনের যত্ন নেওয়া) এবং যখন আমরা সম্পন্ন করি তখন আমরা অক্ষকে বিজোড়-কিউ অফসেটে রূপান্তর করি স্থানাঙ্ক।

ছয়টি স্থানটি (এক্সজেড) অক্ষীয় স্থানাঙ্কে নিম্নলিখিত ব-দ্বীপ ভেক্টরগুলিতে মানচিত্র করে:

q => (-1,  0)
w => ( 0, -1)
e => ( 1, -1)
d => ( 1,  0)
s => ( 0,  1)
a => (-1,  1)

অপেক্ষা করুন, এটি রেটিনা, আমাদের আনারি সংখ্যার সাথে কাজ করতে হবে। আমরা কীভাবে নেতিবাচক আনরি নম্বর দিয়ে কাজ করব? ধারণাটি দুটি ভিন্ন অঙ্ক ব্যবহার করা হয়। একটি প্রতিনিধিত্ব করে +1এবং অন্যটি উপস্থাপন করে -1। এর অর্থ আমরা 1বর্তমান অবস্থান থেকে যুক্ত বা বিয়োগ করতে চাই না কেন , আমরা সর্বদা একটি সংখ্যার যোগ করে এটি করতে পারি। যখন আমরা সম্পন্ন হয়েছি তখন ভারসাম্যপূর্ণ সংখ্যাগুলি বাতিল করে আমরা ফলাফলটিকে তার প্রস্থে (সংশ্লিষ্ট অঙ্কের) ভেঙে ফেলি। তারপরে আমরা বাকী অঙ্কের উপর ভিত্তি করে সাইনটি বের করি এবং সমস্ত অঙ্কগুলি এর সাথে প্রতিস্থাপন করি 1

ইনপুটটির সামনে অক্ষরের এক্স এবং জেড উপাদানগুলি বাম এবং ডানে :(পৃথক হিসাবে) তৈরি করার পরিকল্পনা। wএবং sডানদিকে যোগ করা হবে। qএবং dবাম দিকে যোগ করা হবে , এবং eএবং aউভয় পক্ষের যোগ হবে। যেহেতু wএবং sইতিমধ্যে :(যা সামনে যাবে) এর সঠিক দিকে রয়েছে , তাই আমরা যথাক্রমে এগুলি -1এবং +1অঙ্ক হিসাবে ব্যবহার করব ।

কোড মাধ্যমে যেতে দিন।

R
5$*r

আমরা প্রতিটি Rপাঁচটি করে rর মধ্যে শুরু । অবশ্যই, একটি বাম ঘুরিয়ে হেক্স গ্রিডে পাঁচটি ডান মোড়ের সমান, এবং এটি করে আমরা বাকী পদক্ষেপে প্রচুর নকল করতে পারি।

T`aq\we\ds`so`r.+

এটি একটি লিখিত লিখনের স্তর যা ছয়টি আদেশের আবর্তন করে যদি সেগুলি প্রথমটির পরে পাওয়া যায় r(যার ফলে প্রথমটি প্রক্রিয়াজাত করা হয় r)। wএবং dএগুলি চরিত্রের শ্রেণিতে প্রসারিত হওয়া থেকে রক্ষা করার জন্য পালানো দরকার। oলক্ষ্য সেট যা এই ঘূর্ণন কাজের জন্য বাইট একটি গুচ্ছ সংরক্ষণ মধ্যে উৎস সেট সন্নিবিষ্ট করে। চরিত্রের ম্যাপিংটি তাই:

aqweds
saqweds

যেখানে sদ্বিতীয় সারির শেষগুলি সহজেই উপেক্ষা করা যেতে পারে।

)`r(.*)
$1

এটি rস্ট্রিং থেকে প্রথমটি সরিয়ে দেয় , কারণ এটি প্রক্রিয়া করা হয়েছে (আমি আশা করি আমি ইতিমধ্যে প্রতিস্থাপনের সীমাটি প্রয়োগ করেছি ...)। )এছাড়াও অক্ষিপট বলে সব পর্যায়ে পর্যন্ত স্ট্রিং পরিবর্তন স্টপ একটি লুপ মধ্যে এই এক আপ চালানোর জন্য। পরবর্তী পুনরাবৃত্তির উপর, প্রথম পর্যায়টি কোনও অপ-বিকল্প হয় কারণ সেখানে আরও Rগুলি নেই এবং দ্বিতীয় পর্যায়ে rস্ট্রিংয়ের মধ্যে যতক্ষণ না বাকি থাকে ততক্ষণ অন্য ঘূর্ণন প্রয়োগ করা হবে ।

আমাদের হয়ে গেলে, আমরা সমস্ত কমান্ড মেশানো করেছি যেহেতু তারা অনারেটেড গ্রিডের সাথে সম্পর্কিত direction অবশ্যই এই আন্দোলনটি সেই ডেল্টা ভেক্টরগুলির একটি যোগফল এবং সংখ্যাগুলি কমিটিকেভেটিভ, সুতরাং বাস্তবে কোনও বিষয় নেই যে আমরা এখন তাদেরকে যে ক্রমটিতে প্রক্রিয়াকরণ করি তা ঘূর্ণনগুলি হ্রাস হয়ে গেছে।

^
:

সামনের দিকে স্থানাঙ্ক ডিলিমিটার sertোকান।

এখন আমাদের আসলে প্রক্রিয়া করার দরকার নেই sএবং w। এগুলি আমাদের +1এবং -1অঙ্কগুলি এবং তারা ইতিমধ্যে ঠিক পাশের দিকে রয়েছে :তাই শেষ পর্যন্ত প্রয়োজনীয় হিসাবে তারা কেবল বাদ পড়বে। আমরা আরেকটি সরলীকরণ করতে পারি: aসহজ s + qএবং eহয় w + d। আসুন এটি করা যাক:

a
sq
e
wd

আবার, এগুলি sএবং wকেবল বাদ পড়বে। আমাদের যা করতে হবে তা হ'ল qএস এবং dএসগুলি সামনের দিকে সরানো এবং সেগুলি নিজেরাই wএস এবং sএসগুলিতে পরিণত করা । আমরা দুটি পৃথক লুপ দিয়ে এটি করি:

+`(.+)q
w$1
+`(.+)d
s$1

সুতরাং যে সম্পন্ন। অক্ষীয় থেকে অফসেট স্থানাঙ্কে রূপান্তর করার সময় for তার জন্য আমাদের অঙ্কগুলি ধসে পড়তে হবে। যাইহোক, আপাতত আমরা কেবল বাম দিকের বিষয়ে যত্নশীল। যেভাবে আমরা qগুলি এবং dগুলিগুলি প্রসেস করেছি, সে কারণে আমরা জানি যে sবাম দিকের সমস্ত এস যে কোনও wএস এর সামনে উপস্থিত হবে , সুতরাং সেগুলি ভেঙে ফেলার জন্য আমাদের কেবল একটি জোড়া পরীক্ষা করতে হবে:

+`sw

এখন আসল রূপান্তর। এখানে সিউডোকোড, উপরের লিঙ্ক থেকে নেওয়া:

# convert cube to odd-q offset
col = x
row = z + (x - (x&1)) / 2

ডান, সুতরাং বাম দিকের দিকটি ইতিমধ্যে সঠিক। যদিও ডান হাতের সংশোধন মেয়াদ প্রয়োজন (x - (x&1)) / 2। গ্রহণটি &1মডুলো ২ এর সমান This এটি মূলত x/2বিয়োগফলের দিকে গোলাকার পূর্ণসংখ্যা বিভাগ হিসাবে পার্স করে । সুতরাং ধনাত্মকতার জন্য x, আমরা সংখ্যার অর্ধেক সংখ্যার যোগ করি (বৃত্তাকার নিচে), এবং নেতিবাচক জন্য x, আমরা অঙ্কের অর্ধেক সংখ্যাকে বিয়োগ করি (বৃত্তাকার)) এটি আশ্চর্যজনকভাবে রেজিজেসে প্রকাশ করা যেতে পারে:

(.*)(\1w?):
$0$2

লোভের কারণে, এমনকি সমুদ্রের জন্য x, গ্রুপ 1 সঠিক অর্ধেক অঙ্কের সাথে মিলবে, \1অন্য অর্ধেক এবং আমরা এটিকে উপেক্ষা করতে পারি w?। আমরা অর্ধেকটি পরে প্রবেশ করান :(যা x/2)। যদি xসমান হয় তবে আমাদের ইতিবাচক এবং নেতিবাচক পার্থক্য করা দরকার। যদি xইতিবাচক হয়, তবে w?আর কখনও মিলবে না, সুতরাং দুটি গ্রুপকে এখনও একই সংখ্যার অঙ্কটি মেলাতে হবে। প্রথমটি sযদি এড়িয়ে যায় তবে এটি কোনও সমস্যা নয় , তাই আমরা গোল হয়ে যাই। যদি xনেতিবাচক এবং বিজোড় হয়, তবে সম্ভাব্য ম্যাচটি \1(অর্ধবৃত্তাকার অর্ধেক x) এর সাথে এবং এটি alচ্ছিক w। যেহেতু এই দু'টিই গ্রুপে যায় 2, তাই আমরা x/2প্রসারিত বৃত্তাকার (প্রয়োজনীয় হিসাবে) দিয়ে লিখব ।

+`sw|ws

এখন আমরা ডানদিকের দিকে অঙ্কগুলি ভেঙে ফেলি। এই সময়, আমরা ক্রম জানি না sএবং w, তাই আমরা উভয় জোড়া জন্য অ্যাকাউন্ট করতে হবে।

w+
-$0

উভয় অংশই এখন একক পুনরাবৃত্ত অঙ্ক (বা কিছুই নয়) এ হ্রাস পেয়েছে। যদি সেই অঙ্কটি হয় w, আমরা সামনে একটি বিয়োগ চিহ্ন সন্নিবেশ করব।

\w
1

এবং পরিশেষে আমরা উভয় পরিণত wএবং sএকটি একক যুক্তিসংগত ইউনারী অঙ্ক মধ্যে। (আমি মনে করি আমি ইউরি ডিজিট ব্যবহার করে wবা বাইট বাঁচাতে পারতাম s, তবে এটি কিছুটা প্রসারিত বলে মনে হয়))


10
(মূল উত্তর পৃষ্ঠায় এই উত্তরটি আমিই দেখেছি এবং খুব আশা করি এটি হেক্সাগনিতে লেখা হয়েছিল?)
অ্যাডিসন

9
@ ফ্লাগএএসস্প্যাম এই সম্প্রদায়ের দাবিগুলি গুরুতরভাবে বৃদ্ধি পাচ্ছে যখন 8 জন ব্যক্তিকে (এবং গণনা করা) হতাশ করা সম্ভব হবে এমন একটি ভাষার সাথে স্বাক্ষরিত পূর্ণসংখ্যা এবং ষড়ভুজ গ্রিডের সাথে জড়িত একটি চ্যালেঞ্জ সমাধানের মাধ্যমে যা কেবলমাত্র রেজিক্সের মাধ্যমে তার ইনপুট প্রক্রিয়া করতে পারে। ;)
মার্টিন এন্ডার

1

পাইথন (3.5) 193 185 182 বাইট

আমি অক্ষীয় স্থানাঙ্কগুলিতে ক্যালকুল করি এবং শেষে রূপান্তর করি।

আমি @ মার্টিন বাটনার সমাধান অনুসারে কিছু অপ্টিমাইজেশন যুক্ত করছি: আমি আর * 5 দ্বারা আর প্রতিস্থাপন করব, এটি বাইটস গণনা পরিবর্তন করে না। তবে এই পরিবর্তনটির সাথে আমরা দ্বিতীয় পরীক্ষার elif j=='r'দ্বারা প্রতিস্থাপন করতে পারিelse

সমাধান ধরে নেওয়া যায় যে ইনপুটটিতে আমাদের অবৈধ অক্ষর থাকতে পারে না।

def f(i):
 x=y=0;u=-1,0,-1,1,0,1,1,0,1,-1,0,-1;v='dewqas'
 for j in i.replace('R','r'*5):
  w=v.find(j)*2
  if-1<w:x+=u[w];y+=u[w+1]
  else:u=u[2:]+u[:2]
 print(-x,-x-y+(x-(x%2))/2)

Ungolfed

def f(i):
  x=y=0
  u=-1,0,-1,1,0,1,1,0,1,-1,0,-1    # operations list xd,yd,xe,ye...
  v='dewqas'                       # letters list in clockwise order 
  i.replace('R','r'*5)             # replace 'R' by 5*'r'
  for j in i:
    w=v.find(j)*2                  # extract letter index
    if-1<w:
      x+=u[w]                      # apply operations
      y+=u[w+1]
    else:
      u=u[2:]+u[:2]                # rotate clockwise the operation string
  print(-x,-x-y+(x-(x%2))/2)       # convert coordinates axial to "odd-q"

ব্যবহার

>>> f('wrwrwrwrw')
-1 0.0
>>> f('dddddddddd')
10 5.0
>>> f('edeqaaaswwdqqs')
-2 0.0

0

ব্যাচ, 708 636 586 569 বাইট

আমি দ্বিগুণ ওয়াই-কোঅর্ডিনেট ব্যবহার করেছি কারণ এটি গণিতকে সহজ করে তুলেছে। আমি নিশ্চিত নই যে আমি ঘূর্ণনটি সবচেয়ে আদর্শ উপায়ে গ্রহণ করেছি, তবে এটি rএস এর সংখ্যা গণনা করে be

সম্পাদনা করুন: এর হ্যান্ডলিংয়ের উন্নতি করে 72 বাইট সংরক্ষণ করা Rহয়েছে। আমার set/aবক্তব্যগুলি অনুকূল করে 60 বাইট সংরক্ষণ করা হয়েছে। কিছু ছোট্ট অপটিমাইজেশন সহ 17 বাইট সংরক্ষণ করা হয়েছে।

@echo off
set m=%1
set/ay=x=0
set r=r
set g=goto l
:l
set/a"z=y>>1
if "%m%"=="" echo %x% %z%&exit/b
set c=%m:~0,1%
set m=%m:~1%
goto %r:rrrrrr=%%c%
:a
:rq
:rrw
:rrre
:rrrrd
:rrrrrs
set/ax-=2
:w
:re
:rrd
:rrrs
:rrrra
:rrrrrq
set/ax+=1,y-=1
%g%
:q
:rw
:rre
:rrrd
:rrrrs
:rrrrra
set/ay-=2
%g%
:s
:ra
:rrq
:rrrw
:rrrre
:rrrrrd
set/ax-=2
:e
:rd
:rrs
:rrra
:rrrrq
:rrrrrw
set/ax+=+1,y+=1
%g%
:d
:rs
:rra
:rrrq
:rrrrw
:rrrrre
set/ay+=2
%g%
:r
:rr
:rrr
:rrrr
:rrrrr
:rrrrrr
if %c%==R set c=rrrrr
set r=%c%%r%
%g%

0

05 এ বি 1 ই , 60 বাইট

.•F?äM•U2Å0IvXy'rQiÀUëy'RQiÁUëykÐ5α‚ßsD3%_s3›·+‚<+]Ć`DÉ-2÷+‚

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা:

সাধারণ ব্যাখ্যা:

আমরা একটি স্ট্রিং "qwedsa"এবং একটি সমন্বয় দিয়ে শুরু করি [0,0]এবং ইনপুটটির অক্ষরগুলি লুপ করি।
যদি এটি "আর" বা "আর" হয় তবে আমরা এই স্ট্রিংটি যথাক্রমে বাম বা ডানদিকে ঘোরান।
যদি তা না হয় তবে আমরা এই স্ট্রিংয়ে 0-ভিত্তিক সূচক পাই এবং নীচে এটি ম্যাপ করব:

q → 0 → [-1,  0]
w → 1 → [ 0, -1]
e → 2 → [ 1, -1]
d → 3 → [ 1,  0]
s → 4 → [ 0,  1]
a → 5 → [-1,  1]

এক্সY

 x   indices     y   indices
-1 ← 0;5        -1 ← 1;2
 0 ← 1;4         0 ← 0;3
 1 ← 2;3         1 ← 4;5

এক্স=মিআমিএন(,একটিগুলি(-5))-1
Y=(0(গেলিক ভাষার3))+ +2(>3)-1

Yএক্সএক্স

Y=Y+ +এক্স-এক্স(গেলিক ভাষার2)2

কোড ব্যাখ্যা:

.•FM         # Push compressed string "qwedsa"
       U        # Pop and store it in variable `X`
2Å0             # Push list [0,0]
                # (many 3-byte alternatives for this: `00S`; `т¦S`; `0D‚`; `1¾‰`; etc.)
   Iv           # Loop over each character `y` of the input:
     X          #  Push string `X`
      y'rQi    '#  If `y` equals "r":
           À    #   Rotate string `X` once towards the left
            U   #   And pop and store it as new value for `X`
      ëy'RQi   '#  Else-if `y` equals "R":
            ÁU  #   Do the same, but rotate right instead
      ë         #  Else:
       yk       #   Get the 0-based index of `y` in the string `X`
         Ð      #   Triplicate this index
          5α    #   Take the absolute difference with 5
            ‚ß  #   Pair it with the original index, and pop and push the minimum
                #   (maps 0→[0,5]→0; 1→[1,4]→1; 2→[2,3]→2;
                #         3→[3,2]→2; 4→[4,1]→1; 5→[5,0]→0)
         sD     #   Swap to get the original index again, and duplicate it
           3%   #   Take modulo 3
             _  #   And check if it's equals to 0 (1 if truthy; 0 if falsey)
          s3   #   Swap to take the index again, and check if it's larger than 
                #   (again, 1 if truthy; 0 if falsey)
             ·  #   Double this
          +     #   And add both checks together
                #   (maps 0→1+0→1; 1→0+0→0; 2→0+0→0;
                #         3→1+0→1; 4→0+2→2; 5→0+2→2)
               #   Pair both mapped values together
          <     #   Decrease both by 1, so it becomes: 0→-1; 1→0; 2→1
           +    #   And add it to the current coordinates
    ]           # After the loop with inner if-else statements:
     Ć          # Enclose the coordinate, appending its own head: [x,y] becomes [x,y,x]
      `         # Push all three values separated to the stack
       D        # Duplicate this x
        É       # Check if its odd (1 if truthy; 0 if falsey)
         -      # Subtract it from the duplicated x
          2÷    # Integer-divide it by 2
            +   # Add it to y
               # And pair it with the original x again
                # (after which the result is output implicitly)

আমার এই 05AB1E ডগা দেখুন (অধ্যায় কম্প্রেস স্ট্রিং অভিধান অংশ নয় কিভাবে? ) কেন বুঝতে .•F?äM•হয় "qwedsa"


-1

পাইথন 3, 227 বাইট

def G(s):
 q='qwedsa'
 d=[-1,0,1,1,0,-1,-1,-2,-1,1,2,1]
 X=Y=0
 for c in s:
  if c in q:
   n = q.find(c)
   X += d[n]
   Y += d[n+6]
  if c == 'r':
   q = q[1:]+q[0]
  if c == 'R':
   q = q[5]+q[0:5]
 print(X, int((Y-X%2)/2))

আমি Python 3.5.0b3ম্যাকোজে ব্যবহার করছি , এবং আমি 5 এবং 6 তে ত্রুটি পেয়েছি, গোল করার কারণে, বাকিগুলি সঠিক ছিল। (যেহেতু সম্পাদনার মাধ্যমে স্থির)। পাইথনের কোন সংস্করণ আপনি ব্যবহার করছেন?
অস্টিন হেস্টিংস

1
@ অস্টিনহাস্টিংস আমি পাইবি অস্থির উপর পাইথন 3 এ আছি।
ডুরকনব
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.