গণনা রুক মুভ 1 ডি


31

একটি সারিতে এবং / অথবা খালি জায়গাগুলির সাথে একটি অবস্থান দেওয়া, আউটপুট প্রদান করা কতগুলি পৃথক ছাঁটাই সম্ভব। একটি রুক একটি ফাঁকা জায়গায় বাম বা ডান স্থানান্তরিত করতে পারে, তবে এমন একটিতে নয় যেটির জন্য অন্য ঝাঁকুনির উপর দিয়ে যেতে হবে। যখন কোন নরক সরানো হয়, তখন অন্যান্য ছলরা জায়গায় থাকে।

উদাহরণস্বরূপ, এই অবস্থান থেকে, 6 টি চালনা সম্ভব:

.R..RRR.
  • প্রথম (বামতম) রূকটি 1 টি স্থান বামে বা 1 বা 2 স্পেস ডানদিকে (3 পদক্ষেপ) সরাতে পারে
  • পরবর্তী রুকটি কেবল 1 বা 2 টি স্পেস রেখে যেতে পারে (2 চাল)
  • তৃতীয় রোকটি মোটেও চলতে পারে না কারণ এটি দুটি অন্য মুরগীর মধ্যে সঙ্কুচিত (0 টি চাল)
  • শেষ রুকটি কেবল 1 টি স্থান ডানে সরতে পারে (1 পদক্ষেপ)

মনে রাখবেন যে কোনও পজিশনে কোনও ছদ্মবেশ নেই, বা কোনও খালি জায়গা নেই।

ইনপুট: রুকস এবং খালি জায়গাগুলির একটি খালি খালি তালিকা (স্ট্রিং, অ্যারে, ইত্যাদি।)। আপনি এগুলিকে True/ False, 1/ 0, 'R'/ '.', বা যে কোনও দুটি ধারাবাহিক স্বতন্ত্র একক-বাইট অক্ষর বা আপনার পছন্দের এক-অঙ্ক সংখ্যা হিসাবে উপস্থাপন করতে পারেন। এটি আপনার উপর নির্ভর করে কোনটির অর্থ হ'ল অর্থ এবং যার অর্থ ফাঁকা স্থান।

আউটপুট: একটি অ-নেতিবাচক পূর্ণসংখ্যা। পুরো নম্বর ফ্লোটও ভাল।

পরীক্ষার মামলা

আউটপুটটি বামে সংখ্যা।

6 .R..RRR.
0 .
0 R
4 R..RR
3 ...R
8 ..R..R..
0 ......

আরও পরীক্ষার ক্ষেত্রে, এখানে দৈর্ঘ্য 5 পর্যন্ত সমস্ত ইনপুট রয়েছে।

0 .
0 R
0 ..
1 .R
1 R.
0 RR
0 ...
2 ..R
2 .R.
1 .RR
2 R..
2 R.R
1 RR.
0 RRR
0 ....
3 ...R
3 ..R.
2 ..RR
3 .R..
3 .R.R
2 .RR.
1 .RRR
3 R...
4 R..R
3 R.R.
2 R.RR
2 RR..
2 RR.R
1 RRR.
0 RRRR
0 .....
4 ....R
4 ...R.
3 ...RR
4 ..R..
4 ..R.R
3 ..RR.
2 ..RRR
4 .R...
5 .R..R
4 .R.R.
3 .R.RR
3 .RR..
3 .RR.R
2 .RRR.
1 .RRRR
4 R....
6 R...R
5 R..R.
4 R..RR
4 R.R..
4 R.R.R
3 R.RR.
2 R.RRR
3 RR...
4 RR..R
3 RR.R.
2 RR.RR
2 RRR..
2 RRR.R
1 RRRR.
0 RRRRR

উত্তর:


9

রেটিনা , 14 9 বাইট

w`_+R|R_+

এটি অনলাইন চেষ্টা করুন! লিঙ্কে পরীক্ষার কেস অন্তর্ভুক্ত রয়েছে। ব্যবহার _খালি জায়গা হিসেবে এটা সবচেয়ে মনোরম অ Regex চরিত্র আছে। একটি বৈধ রুক পদক্ষেপের সাথে সম্পর্কিত সাবস্ট্রিংয়ের সংখ্যা গণনা করে কাজ করে। কোনও স্ট্রিংিং হ'ল বৈধ রুক মুভ হয় যদি এতে শুরু বা শেষের দুটি অংশে কমপক্ষে একটি _প্লাস থাকে R


ওহ, আপনি মূলত আমার উত্তরে আমি যা উল্লেখ করেছি তা কীভাবে করতে হবে তা নির্ধারণ করেছেন। আইডিক কেন আমি তা ভেবে দেখিনি।
mbomb007

9

পাইথন 3 , 30 29 বাইট

lambda s:sum((s+s).strip())/9

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

-1 বাইট @ জোকিংকে ধন্যবাদ

ফাংশনটি ইনপুট হিসাবে পাইথন বাইট স্ট্রিং নেয়। প্রতিটি খালি স্থানটি একটি ট্যাব হিসাবে এনকোড করা হয় এবং প্রতিটি রুক একটি b'\x00'মান বাইট হিসাবে এনকোড করা হয় 0

lambda s:(s+s).strip().count(b'\t')কম বাইট গণনা করার সময় গণনা সমান ।


6

জাভাস্ক্রিপ্ট (ES6),  38  33 বাইট

@ জোকিংকে 5 টি বাইট সংরক্ষণ করা হয়েছে

স্ট্রিং হিসাবে ইনপুট নেয়। একটি ফাঁকা বর্গক্ষেত্রের জন্য একটি স্থান এবং একটি রোকর জন্য অন্য কোনও অক্ষর আশা করে।

s=>(s+s).trim().split` `.length-1

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

মন্তব্য

s =>          // s = input, e.g. " R  RRR "
  (s + s)     // double -> " R  RRR  R  RRR "
  .trim()     // remove leading and trailing spaces -> "R  RRR  R  RRR"
  .split` `   // split on spaces -> [ 'R', '', 'RRR', '', 'R', '', 'RRR' ]
  .length - 1 // return the length - 1 -> 6

পাইথন 2 ,  40  33 বাইট

@ গ্রিমিকে ধন্যবাদ 7 বাইট সংরক্ষণ করা

lambda s:(s+s).strip().count(' ')

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


1
পাইথন সংস্করণটি ( টিআইও )countsplit
গ্রিমি

@ গ্রিমি আপনাকে ধন্যবাদ :)
আর্নল্ড


4

পার্ল 6 , 16 বাইট

{+m:ex/s+R|Rs+/}

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

একটি রেজেক্স যা স্থানগুলির পরে বা স্থানগুলির পরে দুরত্বগুলির সমস্ত ক্লান্তিকর উদাহরণগুলির সাথে মেলে এবং মিলগুলির সংখ্যা প্রদান করে।



3

রেটিনা , 23 15 বাইট

কমপক্ষে একটি রুকের সাথে মূখী, গ্রেপ লাইনগুলির মধ্যে ফাঁকের সংখ্যা দ্বিগুণ করুন, তারপরে ফাঁকের সংখ্যা গণনা করুন।

R.+R
$0$0
G`R
 

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

যদিও প্রোগ্রামটি পিরিয়ডের পরিবর্তে স্পেস ব্যবহার করে, আমি উপসর্গ কোড যুক্ত করেছি যাতে প্রদত্ত পরীক্ষার কেসগুলি সহজেই আটকানো যায় এবং ব্যবহার করা যায়।

আমি আশা করছিলাম যে আমি এর সাথে ওভারল্যাপিং ম্যাচগুলি ব্যবহার করতে পারি (?<=R.*) | (?=.*R)তবে ওভারল্যাপগুলি তেমন আক্রমণাত্মক নয়। এই পদ্ধতির সাথে সঠিক ফলাফলটি ফেরত দেওয়ার জন্য কোনও ম্যাচ পেতে পারে এমন সমস্ত সম্ভাব্য উপায়গুলি গণনা করা দরকার।


1
.R.R.R.যদিও প্রথম লাইনে পরিবর্তন R.+Rহতে পারে তবে এটির জন্য ভুল ফলাফল দেওয়া উচিত ?
নিল

নিল ফিক্সড ধন্যবাদ।
mbomb007

2

জেলি , 6 বাইট

t1;ḟẠS

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

একটি মোনাডিক লিঙ্কটি 0রোক এবং 1স্থানের জন্য একটি তালিকা গ্রহণ করে এবং চলার সংখ্যার সাথে একটি পূর্ণসংখ্যা ফেরত দেয়। টিআইও লিঙ্কটি প্রশ্নে প্রদত্ত সম্ভাব্য বোর্ডগুলির আটকানো তালিকাটি গ্রহণ করে, সঠিক বিন্যাসে রূপান্তরিত করে এবং পরে গণনা করা এবং সঠিক উত্তরগুলি আউটপুট করে।

ব্যাখ্যা

t1     | Trim 1s from end
  ;    | Concatenate to input
   ḟẠ  | Filter out 1s if all input were 1s, otherwise filter out 0s
     S | Sum



2

জেলি , 5 বাইট

ḲẈ+ƝS

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

-1 জনাথন অ্যালানকে ধন্যবাদ ।

0একটি কান্ড 1উপস্থাপন, একটি খালি স্থান প্রতিনিধিত্ব করে।


1
আপনি যদি কোনও রকের জন্য একটি স্পেস অক্ষর এবং একটি স্থানের জন্য অন্য একটি অক্ষর ব্যবহার করেন তবে আপনি পাঁচটি পেতে ব্যবহার করতে পারেন :ḲẈ+ƝS
জোনাথন অ্যালান

@ জোনাথান অ্যালান এটির কথা ভাবেনি। এবং তার আগে আমি তার সাথে পরীক্ষার চেষ্টা ṣ0
করছিলাম


2

সি (ঝনঝন) , 57 বাইট

i,r,o;g(*n,z){for(o=r=i=0;z--;i=-~i*!*n++)o+=*n?r=1,i:r;}

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

  • @ সেলিংক্যাটকে 1 টি ধন্যবাদ সংরক্ষণ করা হয়েছে

আমি বুঝতে পারি যে এটি খালি তালিকার জন্য কাজ করে নি .. এখন এটি কাজ করে! প্লাস কিছু বাইট সংরক্ষণ!

1 = দিয়ে পানি পড়া। 0 = স্থান।

(.. i + = n ++? - i: 1) // স্পেস গণনা করে বা অতিরিক্ত চালগুলি পুনরায় সেট করে => i = - ~ i ! * n ++ (@ সাইলিংক্যাট)

O + = * এন দ = 1, আমি: R; // আউটপুট যোগ করে- i- (অতিরিক্ত চলন) যখন একটি রুক দেখা হয় প্লাস সেট -r- (রোক মিট), -i- বর্ধিত সাজার জন্য সাফ হয়ে যাবে।

প্রতিটি স্থানের জন্য -r- যোগ করে


শিলা? তোমার পাথর কি চলাচল করে?
মাস্তে

1
@ অনেক বেশি দুঃখিত! সম্পাদিত
আজ্টটেকো

2

হাস্কেল , 36 বাইট

f s=sum$snd.span(>0)=<<[s,reverse s]

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

খালি জায়গার জন্য 1 টি, রোকের জন্য 0 ব্যবহার করে। প্রাথমিক সংখ্যাতে 1 এর সংখ্যা নেই এবং এটি বিপরীত স্ট্রিংয়ের ফলাফলের সাথে যোগ করে adds


2

হাস্কেল , 33 বাইট

sum.(t.reverse<>t)
t=snd.span(>0)

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

বেনামে ফাংশন যা 1 এস (স্পেসস) এবং 0 টি (রুকস) এর তালিকা হিসাবে ইনপুট নেয়। এটি তালিকার শুরু এবং শেষের স্থান থেকে ফাঁকা স্থান ছাঁটাই করে, তারপরে তালিকার দুটি সংস্করণকে সম্মতি জানায় এবং তাদের যোগফল দেয়।

<>এটি আমদানি না করে অপারেটরের অ্যাক্সেস পেতে GHC 8.4.1 বা তার পরে ব্যবহার করে।







1

জাভা 11, 35 32 বাইট

s->(s+s).strip().chars().sum()/9

@ জোয়েলের পাইথন 3 উত্তরটির বন্দর ।
-৩ বাইটও @ জোয়েলকে ধন্যবাদ জানায় ।

\0রুকস এবং ট্যাবগুলিতে \tশূন্যস্থানের জন্য ( ) নুল-বাইট ( ) ব্যবহার করে ।

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

আমি ব্যবহার করার চেষ্টা s->(s+s).trim().chars().sum()/9যেমন 31 byter প্রথমে, কিন্তু এই কাজ করতে হয় কারন না String#trimbuiltin না শুধুমাত্র সামনের এবং পিছনের স্পেস / ট্যাব / নতুন লাইন সরিয়ে ফেলা হবে, কিন্তু সব অন্যান্য বাইট চেয়ে ছোট বা সমান U+0020(ইউনিকোড 32; একটি স্থান) , তাই সরিয়ে ফেলবো শূন্য-বাইট হিসাবে ভাল ..
ধন্যবাদ জোএল আমাকে সুপারিশ নতুন জাভা 11+ জন্য String#stripbuiltin (যা আমি ভুলে গেছি তারা যোগ করা হয়েছে) বিকল্প হিসেবে। এটি একটি অনুসরণ / শীর্ষস্থানীয় অংশগুলিও সরিয়ে দেয়, তবে এই ক্ষেত্রে কেবল শ্বেত স্পেস থাকে , তাই নুল-বাইটগুলি বজায় রাখা হয়।

ব্যাখ্যা:

s->                              // Method with String as parameter & integer return-type
  (s+s)                          //  Concatenate the input to itself
       .strip()                  //  Then trim all leading and trailing tabs
               .chars().sum()    //  Sum the unicode values of the remaining characters
                             /9  //  And divide it by 9 to get the amount of remaining tabs

1
জাভা ১১++ String.strip()কেবল শ্বেতস্থানগুলি অপসারণ করতে দেয় : 32 বাইট
জোয়েল

@ জোয়েল আহ, সেই সম্পর্কে পুরোপুরি ভুলে গেছেন! ধন্যবাদ। :)
কেভিন ক্রুইজসেন


1

সি # (ভিজ্যুয়াল সি # ইন্টারেক্টিভ সংকলক) , 27 বাইট

x=>(x+x).Trim().Sum(d=>d)/9

@ সোমোনকে একটি বাইট ধন্যবাদ সংরক্ষণ করা হয়েছে

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


1
আফাইক আপনি একটি বাইট (সংক্ষিপ্ত চারকোড) সংরক্ষণ করতে ট্যাবগুলি ব্যবহার করতে পারেন তবে আমি একটি ফোনে আছি।
আমার সর্বনাম

1

স্ট্যাক্স , 7 6 বাইট

-1 বাইট ধন্যবাদ পুনরাবৃত্তি

╣ë|óêπ

এটি চালান এবং এটি ডিবাগ করুন


1
চমৎকার কাজ. যাইহোক, 1 টি দিয়ে সাবট্রেটিং করা যেতে পারে vযা আপনার বাইট সংরক্ষণ করবে।
পুনরাবৃত্তি


1

সি , 183 156 151 137 96 91 বাইট

91 বাইটের জন্য সিলিংক্যাটকে ধন্যবাদ।

c,e;char*z,b[9];main(d){for(gets(z=b);e=*z>81?c-=e*~!d,d=0:e+1,*++z;);printf("%i",d?:c+e);}

আর হ'ল একটি ছত্রাক, অন্য সব কিছুই একটি স্থান।

Tio


কয়েকটি জিনিস - একটি ফাংশন (সম্পূর্ণ প্রোগ্রামের পরিবর্তে) অনুমোদিত, আপনি যতক্ষণ না কোনও প্রোগ্রামের কমপক্ষে একটি সংকলকটিতে সঠিকভাবে কাজ করেন ততক্ষণ আপনি অপরিজ্ঞাত আচরণের উপর নির্ভর করতে পারেন (এটি স্বয়ংক্রিয়ভাবে শূন্য করা), তার 82পরিবর্তে 'R'এটি ব্যবহার করা আরও কম বা এটি আরও ছোট , ই = -1, ডি = 1; ই ++ এর e+e*dচেয়ে বেশি ব্যবহার করুন ; খ [এক] `এবং সঙ্গে প্রতিস্থাপিত হতে পারে এবংe*(1+d)e=0,d=1;else e++; can be changed to , and b[++a]*b*++b
হওয়া ASCII শুধুমাত্র


0

x86-64 - 26 বাইট

ইনপুটটি 32 বিট অবধি এবং একটি পূর্ণসংখ্যার স্কোয়ার প্রতিনিধিত্ব করে, 1 টি উপস্থাপন করে, 0 টি খালি প্রতিনিধিত্ব করে।

C4 E2 69 F7 C1       shlx        eax,ecx,edx
0B C1                or          eax,ecx  
F3 0F BC C8          tzcnt       ecx,eax  
D3 E8                shr         eax,cl  
F3 0F BD C8          lzcnt       ecx,eax  
F7 D0                not         eax  
F3 0F B8 C0          popcnt      eax,eax  
2B C1                sub         eax,ecx  
C3                   ret  

বিটগুলি অনুলিপি করে যাতে এটি এর বামে যুক্ত হয় এবং পিছনের শূন্য বিটগুলি সরিয়ে দেয়। তারপরে শীর্ষস্থানীয় শূন্য বিটের সংখ্যা পায় এবং এটি শূন্য বিটের মোট সংখ্যা থেকে বিয়োগ করে।

x86-64 মেশিন কোড - 22 বাইট - নিয়মিত দৈর্ঘ্যের দাবা র‌্যাঙ্ক কেবল।

ইনপুট হ'ল 32-বিট সংখ্যার পূর্ণসংখ্যার 8 টি বিট দ্বারা মুরগীর প্রতিনিধিত্ব করে এমন কমপক্ষে উল্লেখযোগ্য বাইট। 1 টি একটি রোক, 0 টি খালি।

8A E9                mov         ch,cl  
91                   xchg        eax,ecx
F3 0F BC C8          tzcnt       ecx,eax
D3 E8                shr         eax,cl 
F3 0F BD C8          lzcnt       ecx,eax
F7 D0                not         eax  
F3 0F B8 C0          popcnt      eax,eax
2B C1                sub         eax,ecx
C3                   ret  

বিটগুলি পরবর্তী উল্লেখযোগ্য বাইটে অনুলিপি করে এবং পিছনের শূন্য বিটগুলি সরিয়ে দেয়। তারপরে শীর্ষস্থানীয় শূন্য বিটের সংখ্যা পায় এবং এটি শূন্য বিটের মোট সংখ্যা থেকে বিয়োগ করে।


সুতরাং এটি কেবল 8 দৈর্ঘ্যের সারিগুলির জন্য কাজ করে? যদি হ্যাঁ, চ্যালেঞ্জের জন্য এটি কিছুটা সুনির্দিষ্ট মনে হয়।
ar4093

দুর্ঘটনাক্রমে ধরে নেওয়া হয়েছে যে তারা নিয়মিত রোক র‌্যাঙ্কস, এখনই স্থির।
আমি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.