মধ্যবর্তী স্ট্রিং অ্যারের প্রতিবিম্ব


16

আসুন 2-ডি অ্যারের অক্ষরের একটি চরিত্রের প্রতিবিম্ব পুনরায় সংজ্ঞায়নের মাধ্যমে শুরু করা যাক :

পৃথক ছোট বর্ণমালার বর্ণ সহ একটি বর্গক্ষেত্রে 2-ডি অ্যারে দেওয়া হয়েছে, ম্যাট্রিক্সের কোনও অক্ষরের প্রতিবিম্বটি এটি বর্গের কেন্দ্রের মধ্য দিয়ে সরাসরি চরিত্রের সাথে অদলবদল হিসাবে সংজ্ঞায়িত করে।

এইভাবে, চিঠির cমধ্যে একটি প্রতিচ্ছবি

abcde
fghij
klmno
pqrst
uvwxy

কনফিগারেশন ফলাফল হবে

abwde
fghij
klmno
pqrst
uvcxy

কারণ এবং cএবং wস্যুইচ করা হয়েছে।

আরও কয়েকটি উদাহরণ (উপরের মত একই মূল কনফিগারেশন সহ):

চরিত্রটি প্রতিবিম্বিত করতে eহবে

 abcdu
 fghij
 klmno
 pqrst
 evwxy

চরিত্রটি প্রতিবিম্বিত mকরতে হবে

 abcde
 fghij
 klmno
 pqrst
 uvwxy

চরিত্রটি প্রতিবিম্বিত করতে bহবে

 axcde
 fghij
 klmno
 pqrst
 uvwby

চ্যালেঞ্জ

স্বতন্ত্র ছোট ছোট অক্ষরের সাথে অক্ষরের 2-ডি অ্যারে দেওয়া, একটি নির্দিষ্ট স্ট্রিংয়ের প্রতিটি অক্ষর দিয়ে যান এবং ম্যাট্রিক্সে এটি "প্রতিবিম্বিত" হন।

স্পেসিফিকেশন: স্ট্রিংয়ের a-zঅক্ষরগুলি হ'ল, বর্ণগুলি অনন্য, এবং অ্যারেটি কমপক্ষে 1x1 এবং সর্বাধিক 5x5 (স্পষ্টতই, ইংরেজী বর্ণমালায় কেবল 26 টি অক্ষর রয়েছে)) স্ট্রিংয়ের অক্ষরগুলি গ্যারান্টিযুক্ত 2-ডি অ্যারেতে স্ট্রিং সর্বাধিক 100 অক্ষর দীর্ঘ।

ইনপুট

একটি স্ট্রিং s, একটি পূর্ণসংখ্যা Nএবং তারপরে NxNঅক্ষরের একটি অ্যারে।

উদাহরণ

ইনপুট:

ac
2
ab
cd

আউটপুট:

dc
ba

* কারণ: প্রথমে, এর aসাথে প্রতিফলিত করুন d। তারপর, প্রতিফলিত cসঙ্গে bকারণ cইনপুট স্ট্রিং দ্বিতীয় চিঠি।


স্কোরিং

  • আউটপুট যে কোনও সুবিধাজনক পদ্ধতিতে দেওয়া যেতে পারে ।
  • হয় একটি সম্পূর্ণ প্রোগ্রাম বা একটি ফাংশন গ্রহণযোগ্য। যদি কোনও ফাংশন হয় তবে আপনি আউটপুটটি মুদ্রণের পরিবর্তে ফিরে আসতে পারেন।
  • স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ।
  • এটি তাই সাধারণ গল্ফিংয়ের সমস্ত নিয়ম প্রয়োগ হয় এবং সংক্ষিপ্ততম কোড (বাইটে) জয়ী হয়।

বর্তমান বিজয়ী


9
স্যান্ডবক্স থেকে কোনও অর্থবহ ব্যবহার করতে আধা ঘন্টা আসলেই যথেষ্ট সময় নয়।
পোস্ট রক গার্ফ হান্টার

3
কোনও সমস্যা নেই, এটি দুর্দান্ত দেখাচ্ছে।
ব্যবহারকারী 202729

1
(এছাড়াও আমাদের স্ট্যাক স্নিপেট লিডারবোর্ড রয়েছে)
ব্যবহারকারী 202729

6
বিজয়ী গ্রহণের জন্য 50 ঘন্টা সময়সীমা থেকে খুব অল্প পরিমাণে থাকে; সাধারণত আপনি এক সপ্তাহ বা আরও অপেক্ষা করতে চান তবে, পিপিসি-তে, কোনও উত্তর গ্রহণ না করা সাধারণ বিষয় কারণ এটি ভবিষ্যতের উত্তরকে নিরুৎসাহিত করে, এবং আমরা চ্যালেঞ্জকে চিরকাল উন্মুক্ত রাখতে চাই।
হাইপারনিউট্রিনো

2
আপনার সমস্ত উদাহরণের বর্ণমালা অনুসারে অক্ষর রয়েছে। আমি ধরে নিলাম যে এটি আমরা তৈরি করতে পারি না? এছাড়াও, আমরা কি করতে আছে নিতে Nএকটি ইনপুট হিসাবে আমরা যদি এটা প্রয়োজন নেই?
স্টিভি গ্রিফিন

উত্তর:


3

অক্টাভা , 85 68 66 বাইট

এর evalভিতরে একটি লুপ ব্যবহার করে প্রচুর বাইট সংরক্ষণ করা হয়েছে! আমি থেকে অনুপ্রেরণা পেয়েছেন এই উত্তরটি দ্বারা লুইস Mendo !

@(c,N,A)eval"for C=c,A(flip(k))=A(k=[x=find(A==C),N^2+1-x]);end,A"

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

ব্যাখ্যা:

f=@(c,N,A)          % Anonymous function that takes the three input variables
eval"...          % Evaluate the string and run it:
 for C=c,          % Loop over the character list 'c'
  .. x=find(A==C)   % Find the index where the character C is in A, and store it as 'x'
  .. k=[x,N^2+1-x]  % Create a vector with the index of C, and the index of its reflection
   A(flip(k))=A(k)  % Swap the elements in these positions
  end               % End loop
  A"                % Display the new 'A'

2

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

lambda s,a:[a[[i,~i][(s.count(c)+s.count(a[~i]))%2]]for i,c in enumerate(a)]

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

ইনপুট নেয়:

  • s: স্ট্রিং
  • N: উপেক্ষা করা
  • a: অক্ষরের স্ট্রিং যোগদান

অক্ষরের সমতল তালিকা প্রদান করে


আমি আছে একটি তালিকা হিসাবে অ্যারে নেওয়া:

পাইথন 2 , 111 108 107 104 বাইট

lambda s,n,a:[[x[sum(map(s.count,x))%2]for i in range(n)for x in[[a[j][i],a[~j][~i]]]]for j in range(n)]

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

ইনপুট নেয়:

  • s: স্ট্রিং
  • n: int
  • a: চর 2D তালিকা

অক্ষরের 2D তালিকা প্রদান করে


1

জাভা 10, 126 123 116 বাইট

(s,n,m)->{for(var c:s)for(int N=n*n,i,j;N-->0;)if(m[i=N/n][j=N%n]==c){m[i][j]=m[n+~i][n+~j];m[n+~i][n+~j]=c;break;}}

বাইট সংরক্ষণে নতুন ফিরিয়ে দেওয়ার পরিবর্তে ইনপুট অক্ষর-ম্যাট্রিক্স পরিবর্তন করে।

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

ব্যাখ্যা:

(s,n,m)->{        // Method with the three parameters and no return-type
  for(var c:s)    //  Loop over the characters given
    for(int N=n*n,i,j;N-->0;)
                  //   Inner loop over the matrix
      if(m[i=N/n][j=N%n]==c){
                  //    If the current character and matrix-value are equals:
        m[i][j]=m[n+~i][n+~j];m[n+~i][n+~j]=c;
                  //     Swap the values in the matrix at indices [i, j] and [n-i-1, n-j-1]
        break;}}  //     Stop the inner loop (go to next iteration of the outer loop)

ডাং, জাভায় কোডিং! ??!?! +1 Def
NL628

1

পাইথন 3 , 122 111 বাইট

lambda l,n,A:[[[A[a][b],A[~b][~a]][sum(map(l.count,[A[a][b],A[~b][~a]]))%2]for b in range(n)]for a in range(n)]

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

অক্ষরের 2D অ্যারে প্রদান করে।


আপনার এটি আরও গল্ফ করতে সক্ষম হওয়া উচিত .. ইনপুট ম্যাট্রিক্স পরিবর্তন করার কোনও উপায় পাইথনের চেয়ে জাভাতে কম নয় ..; পি আপনাকে শুরু করতে (এবং এটি আমার জাভা উত্তরের চেয়ে 1 বাইটের পরিবর্তে 1 বাইট আরও ছোট করা): সরানো হচ্ছে aএবং bএবং ব্যবহার n+~xএবং n+~yসরাসরি 2 বাইট সংরক্ষণ: a,b=n+~x,n+~y;A[x][y],A[a][b]=A[a][b],A[x][y]থেকেA[x][y],A[n+~x][n+~y]=A[n+~x][n+~y],A[x][y]
কেভিন Cruijssen

1

আর , 74 61 বাইট

-13 বাইট জিউসেপ্পিকে ধন্যবাদ।

function(s,n,m){for(x in s)m[v]=rev(m[v<-(i=x==m)|rev(i)]);m}

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

sম্যাট্রিক্সের আকার হিসাবে nএবং ম্যাট্রিক্স হিসাবে যেমন হিসাবে অনুসন্ধান করতে অক্ষরগুলির একটি ভেক্টরকে ইনপুট করে m। যদি প্রথম যুক্তিটিকে স্ট্রিং হিসাবে গ্রহণ করা একেবারে প্রয়োজনীয় হয় তবে এটি মজাটি বেশ নষ্ট করে দেবে।


সংখ্যার সূচকগুলির চেয়ে লজিক্যাল ব্যবহার করে আমি 61১ বাইটে
জিউসেপ্পে

বাহ, এটি একটি বিশাল উন্নতি, অনেক অনেক ধন্যবাদ।
কিরিল এল।

0

জেলি , 15 14 বাইট

FW;Ṛi,C$¥¦/ṁḷY

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

পুরো প্রোগ্রাম।

ব্যাখ্যা:

এফডাব্লু; আইআই, সি ¥ ¥ ¦ / ṁḷY মূল লিঙ্ক। ইনপুট: ['আব', 'সিডি'] (বাম), 'এসি' (ডান)।
এফডাব্লু                    এফ ল্যাটেন এবং ডাব্লু এটি একটি তালিকায় রেপ করে। বর্তমান মান = ['abcd']।
  ; সঠিক যুক্তি দিয়ে এটি জড়িত করুন। [ 'ABCD', 'একটি', 'গ']
          / বাম থেকে হ্রাস করুন:
   R | প্রয়োগ R এ everse ...
    আমি ¥ সূচক (বাম যুক্তিতে ডান আর্গুমেন্টের) ...
     , সি। এবং এর পরিপূরক সূচক।

শেষ অপারেশন আরও ব্যাখ্যা প্রয়োজন। এফ = চিহ্নিত করুন Ṛi,C$¥¦, তারপরে মানটির জন্য ['abcd','a','c']এটি গণনা করে ('abcd' f 'a') f 'c', যা প্রসারিত:

,I, সি $ ¥ ction ফাংশন এফ । বাম আর্গুমেন্ট = 'abcd' এবং ডান যুক্তি = 'a' ধরে নিন
Ṛ প্রথমে বিপরীত গণনা করুন। 'ডিসিবিএ' পান।
 i apply প্রয়োগের জন্য সূচকগুলি গণনা করতে প্রথমে 'abcd' তে 'ক' এর সূচক গণনা করতে হবে
             ('abcd' i 'a') = 1 (প্রথম সূচক)
  , সি $ তারপরে (1 সেন্টিগ্রেড) = 0 দিয়ে যুক্ত করুন (শেষ সূচক)
      0 0 এবং 1 সূচকে 'abcd' তে 'ডিসিবিএ' প্রয়োগ করুন:

              a বিসি ডি
               ডি সিবি a
              ^ 1 ^ 0
              ====
              dbca

0

রেটিনা 0.8.2 , 96 বাইট

+`^(.)(.*¶(.|¶)*)((.)((.|¶)*))?\1(?(4)|(((.|¶)*)(.))?)((?<-3>.|¶)*$(?(3).))
$2$11$9$1$6$5$12
1A`

এটি অনলাইন চেষ্টা করুন! sপূর্ণসংখ্যা ব্যতীত স্ট্রিং এবং অ্যারের বর্ণগুলিকে একটি নতুন লাইন-বিস্মৃত স্ট্রিং হিসাবে নেয় N। ব্যাখ্যা: প্রতিটি চরিত্র cএর sপালাক্রমে প্রক্রিয়াভুক্ত করা। রেজেক্স দুটি অ্যারে এর প্রান্ত থেকে সমতুল্য অবস্থানের সাথে মেলে, যার মধ্যে একটি cএবং অন্যটি এর আয়না m। এই অক্ষরগুলি অদলবদল করা হয় এবং cএ থেকে সরানো হয় s

+`

পরিবর্তে প্রতিটি চরিত্র প্রক্রিয়া s

^(.)

$1ক্যাপচার c

(.*¶(.|¶)*)

$3অ্যারের মধ্যে একটি cবা একটির পূর্বে উপস্থাপিত করে অক্ষরের স্ট্যাক ক্যাপচার করে m। এই সমস্ত অক্ষরের $2বাকি sপ্লাস ক্যাপচার করে ।

((.)((.|¶)*))?

তাহলে mতার আগে বসেছে c, $4একটি মান আছে, $5যেমনটি mএবং $6যেমনটি অক্ষরের মধ্যে mএবং c। স্ট্যাক হিসাবে $7ক্যাপচার করে $6তবে এর মান ব্যবহার করা হয় না।

\1

c অ্যারে নিজেই এখন মেলে।

(?(4)|(((.|¶)*)(.))?)

যদি mইতিমধ্যে মিলেছে নি, তারপর $8ঐচ্ছিকভাবে একটি মান, যা কেস ধারন $9থেকে অক্ষর ধারন cকরতে m, $10যেমনটি $9একটি স্ট্যাক যা অব্যবহৃত এবং হিসাবে $11যেমনটি m। মান ক্ষেত্রে ঐচ্ছিক cএবং mএকই চরিত্র আছে।

((?<-3>.|¶)*$(?(3).))

$12অক্ষরের অন্যান্য suffixing ধারন করে cএবং m। ভারসাম্যহীন গোষ্ঠীটি $12যতক্ষণ $3গভীর ছিল ততটাই নিশ্চিত করার জন্য ব্যবহৃত হয় , যেমন উপসর্গ এবং প্রত্যয় একই দৈর্ঘ্য।

$2$11$9$1$6$5$12

প্রথম বাকি - টুকরা তারপর ফিরে একত্র করা হয় sএবং অ্যারে উপসর্গ, তারপর যদি cpreceeded mতারপর mতারপর মধ্যম, তারপর c, তারপর যদি mpreceeded cতারপর মধ্যম তারপর mপ্রত্যয়, তারপর।

1A`

এখন যে sখালি এটি মুছে ফেলা হয়।


0

জাভাস্ক্রিপ্ট, 85 বাইট

যুক্ত স্ট্রিং হিসাবে স্ট্রিং Sএবং একটি অ্যারে নেয় A

([...S],[...A])=>S.map(c=>[A[j],A[i]]=[A[i=A.indexOf(c)],A[j=A.length+~i]])&&A.join``


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