কিউবিক কিউব প্রয়োগ করুন


10

কিউবিকালি হ'ল একটি মোটামুটি নতুন রহস্যময় ভাষা যা সমস্যার খুব নির্দিষ্ট উপসর্গের জন্য সংক্ষিপ্ত, গল্ফ জাতীয় উত্তর তৈরি করতে সক্ষম। এটি অনন্য যে এটি 3x3 রুবিকের কিউব আকারে মেমরি সঞ্চয় করে, বেশিরভাগ ভাষার তুলনায় গণনাগুলি অনেক কম তুচ্ছ করে তোলে। কিউবিকভাবে, প্রোগ্রামারে মুখের উপরে সঞ্চিত মানগুলি পরিচালনা করতে অবশ্যই অভ্যন্তরীণ ঘনকটি ঘোরানো উচিত, তারপরে সেই গণনাগুলিকে তাদের গণনায় ব্যবহার করতে হবে। "নোটপ্যাড" হিসাবে পরিচিত একটি কাল্পনিক মুখগুলিতে সঞ্চিত একক 32-বিট পূর্ণসংখ্যায় গণনা করা হয়। অতিরিক্তভাবে, কিউবিকালি ব্যবহারকারীর ইনপুটটির জন্য অনুরোধ করতে পারে এবং কেবলমাত্র একটি একক পূর্ণসংখ্যার মান সমন্বিত একটি ইনপুট বাফারে সংরক্ষণ করতে পারে।

ঘনক্ষেত্র

কিউবের মুখগুলি হ'ল ইউ পি, ডি নিজস্ব, এল ইফ্ট, আর ight , এফ রন্ট এবং বি এস্ক:

   UUU
   UUU
   UUU
LLLFFFRRRBBB
LLLFFFRRRBBB
LLLFFFRRRBBB
   DDD
   DDD
   DDD

যখন প্রোগ্রাম শুরু হয়, ঘনকটি এমনভাবে শুরু করা হয় যে সেই মুখের প্রতিটি বর্গটি সেই মুখের 0-ভিত্তিক সূচকের সমান হয়:

   000
   000
   000
111222333444
111222333444
111222333444
   555
   555
   555

যখনই কোনও মুখ ঘোরানো হয়, এটি সর্বদা ঘড়ির কাঁটার দিকে ঘোরানো হয়:

Cubically> F1

   000
   000
   111
115222033444
115222033444
115222033444
   333
   555
   555

কোনও মুখের মানটিকে সেই মুখের প্রতিটি বর্গের যোগফল হিসাবে সংজ্ঞায়িত করা হয়। উদাহরণস্বরূপ, উপরের কিউবে মুখের মান 03 হয়।

বাক্য গঠন

কমান্ডগুলি প্রথমে কমান্ডটি মেমোরিতে লোড করে কার্যকর করা হয়, তারপরে কমান্ডটি কার্যকর করার জন্য এটিতে আর্গুমেন্ট প্রদান করা হয়। উদাহরণস্বরূপ, কমান্ডটি F1কমান্ডটি Fমেমোরিতে লোড করবে , তারপরে এটি যুক্তি দিয়ে কল করবে 1। উপরন্তু, F13কমান্ড লোড করা হবে Fমেমরিতে, তারপর যুক্তি দিয়ে একে ডাকতে 1, তারপর যুক্তি দিয়ে একে ডাকতে 3। কোনও অ-অঙ্কের অক্ষরকে একটি আদেশ হিসাবে বিবেচনা করা হয়, এবং কোনও অঙ্ককে আর্গুমেন্ট হিসাবে বিবেচনা করা হয়।

তোমার কাজ

আপনার কাজটি আপনার পছন্দসই ভাষায় কিউবিকের অভ্যন্তরীণ মেমরি ঘনককে বাস্তবায়ন করা। আপনার কোডটি ভাষার একটি খুব ছোট উপসেট কার্যকর করতে সক্ষম হওয়া উচিত।

কমান্ড

  • R - নির্দিষ্ট সময়ের সংখ্যায় ঘনক্ষেত্রের ডান মুখ ঘোরান।
  • L - ঘনক্ষেত্রের বাম মুখটি নির্দিষ্ট সময়ের সংখ্যায় ঘোরান।
  • U - নির্দিষ্ট সময়ের সংখ্যার ঘড়ির কাঁটার উপরের মুখটি ঘোরান।
  • D - ঘনক ঘনক্ষেত্রের নীচের মুখটি নির্দিষ্ট সময়ের সংখ্যায় ঘোরান।
  • F - ঘনক্ষেত্রের সামনের মুখটি ঘড়ির কাঁটার দিক দিয়ে নির্দিষ্ট সময়ের জন্য নির্দিষ্ট সংখ্যাটি ঘোরান।
  • B - নির্দিষ্ট সময়ের সংখ্যার ঘনক্ষেত্রের পিছনের মুখটি ঘোরান।
  • %- প্রদত্ত মুখে মান আউটপুট করে। কোনও মুখের মান সেই মুখের সমস্ত স্কোয়ারের যোগফল হিসাবে সংজ্ঞায়িত করা হয়।

বিধি

  • এই চ্যালেঞ্জটি কোনও প্রোগ্রাম লিখতে বা এই চ্যালেঞ্জটি সমাধানে সক্ষম ফাংশন লেখার জন্য পোস্ট করার তারিখের আগে বা তার পরে তৈরি কোনও ভাষা ব্যবহার করতে পারেন।
  • ইনপুটটি STDIN এর মাধ্যমে স্ট্রিং হিসাবে বা একটি চরিত্রের অ্যারে হিসাবে (আপনার চয়ন করুন, দয়া করে নির্দিষ্ট করুন) মাধ্যমে পাস হবে।
  • আউটপুটটি অবশ্যই STDOUT বা ফাংশনের আউটপুট হিসাবে পাস করতে হবে এবং এটি অবশ্যই একটি পূর্ণসংখ্যা, কেবল একটি সংখ্যাযুক্ত একটি স্ট্রিং বা অঙ্কের অ্যারে হতে হবে। যদি আপনার ভাষাটির জন্য আপনাকে একটি ট্রেলিং করা নতুন লাইন আউটপুট করতে হয় তবে আপনি এটি করতে পারেন।
  • ইনপুট সবসময় নিম্নলিখিত বিন্যাসে হবে: ([UDLRFB]\d*)*%[0-5]। ইনপুটটিতে কোনও সাদা জায়গা থাকবে না characters
  • এর ইনপুটটি %সর্বদা 0-ভিত্তিক সূচক ব্যবহার করবে।

এটি , তাই বাইট জেতে সংক্ষিপ্ত উত্তর।

পরীক্ষার কেস

%0 -> 0
%1 -> 9
%2 -> 18
%3 -> 27
%4 -> 36
%5 -> 45
R1%2 -> 27
RD3F2%5 -> 32
L1R23F1B5U9D2%3 -> 17

আরও পরীক্ষার ক্ষেত্রে টিআইও ইন্টারপ্রেটার পরীক্ষা করে দেখুন । যদি টিআইও কাজ না করে, আপনি পরিবর্তে লুয়া দোভাষী ব্যবহার করতে পারেন ।


3
এই প্রশ্নের অনুরূপ এই ?
টহপর্স


@ টিহ্পার্স আমি মনে করি এটি খুব একই রকম। ভবিষ্যতের চ্যালেঞ্জগুলির জন্য, আমি কমপক্ষে 24 ঘন্টা তাদের স্যান্ডবক্সে রেখে দেওয়ার পরামর্শ দিচ্ছি যদি আপনার এখনও এ নিয়ে প্রশ্ন থাকে। (আমাকে এই কঠিন উপায়ে শিখতে হয়েছিল; আমার প্রথম চ্যালেঞ্জগুলি মোটেও ভালভাবে গ্রহণ করা যায় নি This এটি এখনও বন্ধ বা নিচু করা হয়নি তাই এটি খারাপ নয় , তবে এটি যদি বেশি দিন স্যান্ডবক্সে রেখে দেওয়া হত তবে অন্যান্য ব্যবহারকারীরা থাকতে পারে) ত্রুটিগুলি যা আমি পাইনি))
এমডি এক্সএফ

@ এমডিএক্সএফ আমি পরের বারের জন্য এটি মনে রাখব। ধন্যবাদ!
তেহপায়ার্স

আপনি উদাহরণের 4মধ্যে Rএবং এর মধ্যে একাধিকটি মিস করেছেন ? DRD3F2%5 -> 30
জোনাথন অ্যালান

উত্তর:


8

পাইথন 2 , 476 বাইট

import re
c=[[i]*9for i in range(6)]
r=lambda f:[f[a+b]for a in(0,1,2)for b in(6,3,0)]
U=lambda c:[r(c[0])]+[c[j+1][:3]+c[j or 4][3:]for j in(1,2,3,0)]+[c[5]]
y=lambda c:[r(c[0])]+c[2:5]+[c[1],r(r(r(c[5])))]
z=lambda c:[c[2],r(r(r(c[1]))),c[5],r(c[3]),c[0][::-1],c[4][::-1]]
s=input()
exec("c="+"(c);c=".join("".join("zzzUz U zzUzz yyyzUzzzy zUzzz yzUzzzyyy".split()[ord(t)%11%7]*sum(map(int,n))for t,n in re.findall("([BUDLFR])(\d*)",s[:-2])))+"(c)")
print sum(c[int(s[-1])])

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

আমার সিমুলেট করা একটি রুবিকের কিউব উত্তর থেকে একটি বন্দর । পুনর্বিবেচনাটি আমাকে গল্ফে প্ররোচিত করেছিল যা 47 বাইট দ্বারা।


0

কিউবিকভাবে , 1 বাইট

প্রতিদ্বন্দ্বিতা করা 'কারণ এটি পঙ্গু। এটি গ্রহণ করবেন না।

¶  Read a line from stdin and evaluate

আমি যোগ করেছি যে এই বিকেলে: পি


2
ভাল, আমি মনে করি আপনার কাছে সবচেয়ে সংক্ষিপ্ত কোড রয়েছে।
তেহপায়ার্স

2
@ টিহ্পার্স আমি করি, তবে আমি যেমন বলেছিলাম, এটি খোঁড়া। কিউবিকভাবে এই বিল্টিনের সাথে অন্য রুবিক্স-কিউব চ্যালেঞ্জগুলি জিততে পারে, এটির জন্য এটি জিততে হবে না।
MD XF
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.