2048 ধাঁধা মত পাঠ্য মাধ্যাকর্ষণ পরিবর্তন করুন


14

2048 গেমটিতে আপনার একটি গ্রিড রয়েছে এবং আপনি উপাদানগুলিকে চার দিকে চালিত করতে পারেন। তারা সবাই যতদূর পারে সেদিকেই এগিয়ে যায়। এই চ্যালেঞ্জের জন্য, আপনাকে প্যাডযুক্ত, স্কোয়ার 2 ডি স্ট্রিং দেওয়া হবে (হয় নিউলাইনগুলি বা স্ট্রিংগুলির একটি তালিকা সহ), যেমন:

ab cd e 
 f ghij 
      kl
mno p   
 q r st 
u      v
 w x  y 
z       

অথবা

['ab cd e ', ' f ghij ', '      kl', 'mno p   ', ' q r st ', 'u      v', ' w x  y ', 'z       ']

চার অপারেশন হয় left, right, up, এবং down। উপরের ইনপুটটিতে প্রত্যেকের ফলাফল:

বাম:

abcde   
fghij   
kl      
mnop    
qrst    
uv      
wxy     
z       

অথবা

['abcde   ', 'fghij   ', 'kl      ', 'mnop    ', 'qrst    ', 'uv      ', 'wxy     ', 'z       ']

রাইট:

   abcde
   fghij
      kl
    mnop
    qrst
      uv
     wxy
       z

অথবা

['   abcde', '   fghij', '      kl', '    mnop', '    qrst', '      uv', '     wxy', '       z']

আপ:

abocdiel
mf ghsjv
un rp k 
zq x  t 
 w    y 


        

অথবা

['abocdiel', 'mf ghsjv', 'un rp k ', 'zq x  t ', ' w    y ', '        ', '        ', '        ']

ডাউন:

        


 b    e 
af c  j 
mn gd k 
uq rhitl
zwoxpsyv

অথবা

['        ', '        ', '        ', ' b    e ', 'af c  j ', 'mn gd k ', 'uq rhitl', 'zwoxpsyv']

আপনার লক্ষ্যটি প্রতিটি পুনরাবৃত্তির ইনপুট nসময়গুলি সম্পাদন করে কোন অপারেশন সঞ্চালিত হয় তা ঘোরানো । সুতরাং যদি আপনার অর্ডার হয় URDLএবং ইনপুটটি D( 2, 0-সূচিযুক্ত) দিয়ে শুরু করতে বলে এবং আপনার 5ক্রিয়াকলাপ প্রয়োজন , আপনি সম্পাদন করুন D-L-U-R-D, তারপরে মুদ্রণ করুন।

ইনপুট:

  • উপরের মতো বিন্যাসে একটি স্ট্রিং
    • চলার জায়গাগুলি প্রয়োজন হয় না (তবে তারা সম্ভবত সহায়ক)
    • এটি কমপক্ষে 2x2 হবে
    • কেবল প্রিন্টযোগ্য এএসসিআইআই এবং স্পেসগুলি (এবং আপনার ইনপুট ফর্ম্যাট অনুসারে নিউলাইনগুলি) থাকবে
    • আপনার তাত্ত্বিকভাবে কোনও দৈর্ঘ্য সমর্থন করা উচিত, তবে মেমরির সীমাবদ্ধতাগুলি ঠিক আছে
  • nসঞ্চালিত হবে এমন সংখ্যার জন্য একটি অ-নেতিবাচক পূর্ণসংখ্যা
  • একটি পূর্ণসংখ্যা 0-3বা 1-4, বা একটি চিঠি UDLR, দিয়ে শুরু করার জন্য ক্রিয়াকলাপটি বর্ণনা করে।
    • সুতরাং আপনার প্রোগ্রামটি অবশ্যই কোনও অপারেশন দিয়ে শুরু করতে বা শেষ করতে সক্ষম হতে হবে
    • শুরু করার উদ্দেশ্যে আপনি যে কোনও ক্রমে এগুলি সংজ্ঞায়িত করতে পারেন, তবে এটি অবশ্যই একটি ধারাবাহিক ক্রম হতে হবে, তাই Uকখনও কখনও অনুসরণ করতে পারে না Rএবং কখনও কখনও অনুসরণও করতে পারে না L
  • অপারেশনগুলি অবশ্যই তুচ্ছ-তুচ্ছভাবে সম্পাদন করা উচিত
    • আপনি অনুক্রমে অপারেশন করতে পারে LDRU(, বাম নিচে, ঠিক আছে, পর্যন্ত) বারবার, কিন্তু না DLRUবা UDLR(কারণ UDহিসাবে একই D, এবং LRমাত্র করছেন হিসাবে একই R।)

আউটপুট:

  • চারটি অপারেশন nবার করার পরে স্ট্রিং
  • আউটপুট ফর্ম্যাটটি অবশ্যই আপনার ইনপুট বিন্যাসের সমান হতে হবে
  • চলার জায়গাগুলি প্রয়োজন হয় না (তবে তারা সম্ভবত সহায়ক)

উদাহরণ:

এই উদাহরণটি অর্ডারটি ব্যবহার করে URDL

ইনপুট:

10  (number of times operations are applied)
0   (starts with Up)
ab cd e 
 f ghij 
      kl
mno p   
 q r st 
u      v
 w x  y 
z       

এন = 0-5 এর ফলাফল: (কেবলমাত্র শেষ ফলাফলটি মুদ্রণ করুন)

ab cd e 
 f ghij 
      kl
mno p   
 q r st 
u      v
 w x  y 
z       
---------------
abocdiel
mf ghsjv
un rp k 
zq x  t 
 w    y 



---------------
abocdiel
 mfghsjv
   unrpk
    zqxt
      wy



---------------



      el
    dijv
   chspk
 bognrxt
amfuzqwy
---------------



el      
dijv    
chspk   
bognrxt 
amfuzqwy
---------------
eljvkxty
disprqw 
chgnz   
bofu    
am      


        

আমার সুন্দর, অসম্পূর্ণ বাস্তবায়ন


সম্পর্কিত , তবে পৃথক, কারণ এর একটিতে "মানচিত্রের পতন" চিঠি থাকতে পারে।
mbomb007


1
শুধুমাত্র চূড়ান্ত ফলাফল মুদ্রণ করা উচিত, বা খুব মধ্যবর্তী পদক্ষেপ? এছাড়াও, চারটি ক্রিয়াকলাপ একবারে সঞ্চালনের পরে ফলাফলটি কেবল চক্রাকার নয়? (নিশ্চিত নয়, কেবল অনুমান করা)
লুইস মেন্ডো

ঠিক শেষ ফলাফল। এবং আমি নিশ্চিত করেছিলাম যে এটি চক্র নয়
mbomb007

কেবল চারটি অপারেশনের পরে চক্র নয়, এটি। পিরিয়ড অনেক বেশি দীর্ঘ হবে।
mbomb007

উত্তর:


2

জেলি , 23 বাইট

UZ
Ç¡=⁶$Þ€Ç$⁴¡ZU$⁵+⁴¤¡Y

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

আমি কিছুটা অসন্তুষ্ট, তবে এমএটিএল এর কিছুটা প্রতিযোগিতা দরকার। : P: P

অর্ডার ব্যবহার করে URDL। ইনপুট:

  • প্যাডড লাইনের অ্যারে হিসাবে ইনপুট অ্যারে
  • পুনরাবৃত্তি সংখ্যা
  • (1 = U, 2 = R, 3 = D, 4 = L) থেকে শুরু করার পদক্ষেপ

ব্যাখ্যা

UZ       Helper link. Argument: A (the 2D array)
U        Reverse each line and...
 Z       ...transpose. Rotates 90° CCW.

Ç¡=⁶$Þ€Ç$⁴¡ZU$⁵+⁴¤¡Y    Main link. Arguments: A, n (2D array, repetitions)
Ç                       Rotate 90° CCW...
 ¡                      ...m times. (m = which move to start on)

     Þ                  Sort...
      €                 ...each line of the array...
  =⁶                    ...based on the characters' equality to " ".
       Ç                Rotate 90° CCW.
        $               Combine the sort and rotate to one action.
         ⁴¡             Do that n times. (n = repetition count)

           Z            Transpose and...
            U           ...reverse each line. Rotates 90° CW.
             $          Combine the transpose and reverse to one action.
                  ¡     Do that...
              ⁵+⁴¤      ...m + n times.

                   Y    Join the array by newlines.

2

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

(n,d,s,t=s.replace([RegExp(`( )([^]{${l=s.search`
`}})(\\w)`),/(.)(\b)( )/,RegExp(`(\\w)([^]{${l}})( )`),/( )(\b)(.)/][d%4],`$3$2$1`))=>n?t!=s?f(n,d,t):f(n-1,d+1,s):s

Ungolfed:

function gravity(count, direction, string) {
    let width = string.indexOf('\n');
    let up = new RegExp('( )([^]{' + width + '})(\\w)');
    let down = new RegExp('(\\w)([^]{' + width + '})( )');
    while (count--) {
        let regexp = [up, /(.)(\b)( )/, down, /( )(\b)(.)/][direction++ % 4];
        while (regexp.test(string)) string = string.replace(regexp, '$3$2$1');
    }
    return string;
}

dযে দিকগুলির মধ্যে প্রাথমিক সূচক তা URDL


1

পাইথন 2 , 226 224 204 193 বাইট

-1 বাইট ধন্যবাদ ট্রেলজিরকে

x,s,n=input()
j=''.join
g=lambda x,i:[eval("j(_.split(' ')).%sjust(len(_))"%'lr'[i%2])for _ in x]
for i in([0,3,1,2]*n)[s:s+n]:x=[map(j,zip(*g(map(j,zip(*x)),i))),g(x,i)][i>1];print'\n'.join(x)

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

ফাংশন যা তালিকার প্রতিটি উপাদানগুলির সমস্ত স্পেস সরিয়ে ফেলে এবং বাম বা ডানদিকে ফাঁকা স্থানগুলি দিয়ে সম্পূর্ণ করে।

g=lambda x,i:[eval("''.join(_.split(' ')).%sjust(len(_))"%'lr'[i%2])for _ in x]

এই (ঘোরান 90º) স্থানান্তর করা হয় যখন ইনপুট 0বা 1( Uবা D) এবং আবেদনg

x=[map(''.join,zip(*g(map(''.join,zip(*x)),i))),g(x,i)][i>1]

1
অতিরিক্ত স্থান for i in (...)
ট্রেলজেভির

এটি মূলত আমার বাস্তবায়নের একটি গল্ফড সংস্করণ (আমি কখনই এটির বেশি গল্ফ নিয়ে মাথা ঘামাইনি )।
mbomb007

1

এমএটিএল , 24 23 বাইট

:+"@X!XJ_JXzJ32>S(c@_X!

অর্ডার URDL, 1-ভিত্তিক। সুতরাং 1Ù ,2 isR` ইত্যাদি

ইনপুটগুলি হ'ল: সংখ্যার সংখ্যা, প্রাথমিক দিকনির্দেশ, চর ম্যাট্রিক্স ( ;সারি বিভাজক হিসাবে ব্যবহার করে )।

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


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