ভাঁজযুক্ত ম্যাট্রিক্স বিয়োগ করুন


21

চ্যালেঞ্জ:

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

আট ভাঁজ বিকল্পগুলি: বাম থেকে ডান; ডান থেকে বাম; উপর থেকে নিচে; নীচে-টু-টপ; topleft টু bottomright; topright টু bottomleft; bottomleft টু topright; bottomright টু topleft।

ধাপে ধাপে উদাহরণগুলি:

ইনপুট ম্যাট্রিক্স:

[[ 1, 3, 5, 7],
 [ 0, 8, 6, 4],
 [ 1, 1, 1, 1],  (a'th row in the explanation below)
 [ 1,25, 0,75]]

শীর্ষে থেকে নীচে ভাঁজ বিকল্পের সাথে আমরা নিম্নলিখিত ফলাফলগুলি আউটপুট করি:

[[ 1,-7,-5,-3],
 [ 0,22,-5,68]]

কেন? আমরা উপরে থেকে নীচে ভাঁজ করি। যেহেতু ম্যাট্রিক্সের মাত্রা সমান, তাই আমাদের সংরক্ষণের জন্য মাঝারি স্তর নেই। একটি 'ম সারি [1, 1, 1, 1]দ্বারা বিয়োগ করা হবে (একটি-1) ' ম সারি (হতো (একটি-2) 'অদ্ভুত মাত্রা ম্যাট্রিক্স জন্য তম সারি); তাই [1-0, 1-8, 1-6, 1-4]হয়ে যায় [1, -7, -5, -3](একটি+ +1) 'ম সারি [1, 25, 0, 75]তারপর বিয়োগ করা হবে (একটি-2) ' ম সারি (হতো (একটি-3) 'অদ্ভুত মাত্রা ম্যাট্রিক্স জন্য তম সারি); সুতরাং[1-1, 25-3, 0-5, 75-7]হয়ে [0, 22, -5, 68]

পরিবর্তে ভাঁজ বিকল্পটি নীচে থেকে টপলেফ্ট (উপরে একই ইনপুট-ম্যাট্রিক্স সহ) ফলাফল হিসাবে আমরা নিম্নলিখিত আউটপুট:

[[-74,  2,  1,  7],
 [  0,  7,  6],
 [-24,  1],
 [  1]]

নিম্নলিখিত ভাঁজ বিয়োগ সহ:

[[1-75,  3-1,  5-4,    7],
 [ 0-0,  8-1,    6],
 [1-25,    1],
 [   1]]

চ্যালেঞ্জ বিধি:

  • ভাঁজ বিকল্পগুলির জন্য আপনি যে কোনও আটটি স্বতন্ত্র বর্ণ [A-Za-z]বা স্বতন্ত্র সংখ্যা ব্যবহার করতে পারেন [-99,99] ভাঁজ বিকল্পগুলির জন্য। সংখ্যা [1..8] বা [0..7] সম্ভবত সর্বাধিক সাধারণ বিকল্প, তবে আপনি যদি কিছু স্মার্ট গণনার জন্য সীমার মধ্যে বিভিন্ন সংখ্যা ব্যবহার করতে চান তবে তা নির্দ্বিধায় অনুভব করুন। আপনি আপনার উত্তরে কোন ভাঁজ বিকল্পগুলি ব্যবহার করেছেন দয়া করে তা বলুন।
  • ইনপুট-ম্যাট্রিক্স সর্বদা একটি বর্গ NxN ম্যাট্রিক্স হবে, সুতরাং আপনাকে কোনও আয়তক্ষেত্রাকার এনএক্সএম ম্যাট্রিক্স পরিচালনা করতে হবে না। এন সর্বদা কমপক্ষে 2 হবে, যেহেতু একটি খালি বা 1x1 ম্যাট্রিক্স ভাঁজ করা যায় না।
  • ম্যাট্রিক্সের ইনপুটটিতে সর্বদা [0,999] এর ব্যাপ্তিতে অ-নেতিবাচক সংখ্যা থাকবে (আউটপুটটিতে নম্বরগুলি সুতরাং পরিসরের মধ্যে থাকবে [-999,999] )।
  • (অ্যান্টি) ডায়াগোনাল ভাঁজ বা বিজোড়-মাত্রা উল্লম্ব / অনুভূমিক ভাঁজ সহ, মধ্যবর্তী 'স্তর' অপরিবর্তিত থাকবে।
  • I / O নমনীয়। 2D অ্যারে / পূর্ণসংখ্যার তালিকা হতে পারে; স্পেস-ও-নিউলাইন সীমিত স্ট্রিং হিসাবে ফিরে বা মুদ্রণ করা যেতে পারে; আপনি ইনপুট-ম্যাট্রিক্সটি সংশোধন করতে পারেন এবং যে নম্বরগুলি দিয়ে যাওয়া উচিত তা nullবা [-999, 999]ব্যাপ্তির বাইরে থাকা একটি নম্বর প্রতিস্থাপন করতে পারেন যাতে তারা চলে গেছে তা বোঝাতে; ইত্যাদি ইত্যাদি

সাধারাইওন রুল:

  • এটি , তাই বাইট জেতে সংক্ষিপ্ত উত্তর।
    কোড-গল্ফ ভাষাগুলি আপনাকে নন-কোডগলফিং ভাষার সাথে উত্তর পোস্ট করতে নিরুৎসাহিত করবেন না। 'যে কোনও' প্রোগ্রামিং ভাষার জন্য যতটা সম্ভব সংক্ষিপ্ত উত্তর নিয়ে আসার চেষ্টা করুন।
  • আপনার উত্তরটির জন্য ডিফল্ট আই / ও বিধিগুলি সহ মানক বিধিগুলি প্রযোজ্য , সুতরাং আপনাকে সঠিক পরামিতি এবং ফিরতি-টাইপ, সম্পূর্ণ প্রোগ্রাম সহ STDIN / STDOUT, ফাংশন / পদ্ধতি ব্যবহারের অনুমতি দেওয়া হবে। আপনার কল
  • ডিফল্ট লুফোলগুলি নিষিদ্ধ।
  • যদি সম্ভব হয় তবে আপনার কোডের (যেমন টিআইও ) একটি পরীক্ষার সাথে একটি লিঙ্ক যুক্ত করুন ।
  • এছাড়াও, আপনার উত্তরের জন্য একটি ব্যাখ্যা যুক্ত করা অত্যন্ত প্রস্তাবিত।

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

ইনপুট-ম্যাট্রিক্স 1:

Input-matrix (for the following eight test cases):
[[ 1, 3, 5, 7],
 [ 0, 8, 6, 4],
 [ 1, 1, 1, 1],
 [ 1,25, 0,75]]

Input-folding option: left-to-right
Output: [[2,6],[-2,4],[0,0],[-25,74]]

Input-folding option: right-to-left
Output: [[-6,-2],[-4,2],[0,0],[-74,25]]

Input-folding option: top-to-bottom
Output: [[1,-7,-5,-3],[0,22,-5,68]]

Input-folding option: bottom-to-top
Output: [[0,-22,5,-68],[-1,7,5,3]]

Input-folding option: topleft-to-bottomright
Output: [[7],[6,-1],[1,-7,-2],[1,24,0,74]]

Input-folding option: topright-to-bottomleft
Output: [[1],[-3,8],[-4,-5,1],[-6,21,-1,75]]

Input-folding option: bottomleft-to-topright
Output: [[1,3,4,6],[8,5,-21],[1,1],[75]]

Input-folding option: bottomright-to-topleft
Output: [[-74,2,1,7],[0,7,6],[-24,1],[1]]

ইনপুট-ম্যাট্রিক্স 2:

Input-matrix (for the following eight test cases):
[[17, 4, 3],
 [ 8, 1,11],
 [11, 9, 7]]

Input-folding option: left-to-right
Output: [[4,-14],[1,3],[9,-4]]

Input-folding option: right-to-left
Output: [[14,4],[-3,1],[4,9]]

Input-folding option: top-to-bottom
Output: [[8,1,11],[-6,5,4]]

Input-folding option: bottom-to-top
Output: [[6,-5,-4],[8,1,11]]

Input-folding option: topleft-to-bottomright
Output: [[3],[1,7],[11,1,-10]]

Input-folding option: topright-to-bottomleft
Output: [[17],[4,1],[8,-2,7]]

Input-folding option: bottomleft-to-topright
Output: [[17,-4,-8],[1,2],[7]]

Input-folding option: bottomright-to-topleft
Output: [[10,-7,3],[-1,1],[11]]

ভাঁজ বিকল্পগুলির ক্রমটি কি বিবেচনা করে?
মেয়াদউত্তীর্ণ ডেটা

এছাড়াও, আমরা কি সমস্ত সম্ভাব্য ভাঁজের 8xNxN ম্যাট্রিক্স আউটপুট করতে পারি?
মেয়াদউত্তীর্ণ ডেটা

এই পরীক্ষার নমুনাটি কী ইনপুট-ভাঁজ বিকল্পটি করা উচিত নয়: নীচে থেকে শীর্ষে আউটপুট: [[-1,7,5,3], [0, -22,5, -68]] উল্টানো উচিত?
অরেঞ্জচেরিজ

এছাড়াও ম্যাট্রিক্স 2, 17-11 এর জন্য 6 নয়, 4?
অরেঞ্জচেরি

@ এক্সপায়ার্ডডেটা বিধি অনুসারে বর্ণিত হিসাবে আপনি যে কোনও অক্ষর A-Za-zবা কোনও পূর্ণসংখ্যার ব্যাপ্তি ব্যবহার করতে পারেন [-999,999], সুতরাং আদেশের কোনও ব্যাপার নেই। এবং দুঃখিত, তবে আপনাকে অবশ্যই ইনপুটটির ভিত্তিতে সঠিক ভাঁজটি আউটপুট করতে হবে, সুতরাং আটটি আউটপুট দেওয়ার অনুমতি নেই isn't
কেভিন ক্রুইজসেন

উত্তর:


5

অক্টাভা , 256 248 244 248 বাইট

m=d=x=@(a,b=1)rot90(a,b)
y=@(a,b=2)flip(a,b)
z=@(a,b=1)tril(a+1e3,-1)+a-x(y(tril(a)))+b*diag(diag(a))
f=@(a,b){m=((a-y(a))(:,1:(d=size(a,2)/2))),-y(m),m=y(x((a=x(a))-y(a)))(d+1:end,:),y(m,1),-y(z(a,-1)),x(z(x(a,2)),2),z(a=x(a,3)),x(z(x(a,2)),2)}{b}

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

-২ বাইট (এবং পরিশ্রমের এক মুহূর্ত) লুই মেন্ডোকে ধন্যবাদ

টিবি-র সংশোধনের কারণে +2 বাইট

1-8 থেকে খ এর মানগুলির জন্য 1-সূচীকরণ ক্রিয়াকলাপ:

R-L
L-R
B-T
T-B
BR-TL
TR-BL
BL-TR
TL-BR

এটি আমাকে মাথা ব্যাথা দিয়েছে, আমি পরে এটি সঠিকভাবে গল্ফ করব


সুপারিশ rows(a)পরিবর্তেsize(a,2)
ceilingcat

5

জেলি ,  39  34 বাইট

দুটি "ফাংশন" এর কয়েকটি সমন্বিত করে আরও গল্ফ করা সম্ভব।
... হ্যাঁ: -5 নিক কেনেডিকে ধন্যবাদ!

ṃ“Z“Ṛ“U“ “ŒDṙL ZZṚ”ŒḄFḲj“ŒH_Ṛ}¥/”v

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

একটি পূর্ণসংখ্যা (নির্দেশ) এবং সংখ্যার তালিকার একটি তালিকা (ম্যাট্রিক্স) গ্রহণ করে একটি ডায়াডিক লিঙ্ক।

[-99,99]

           Instruction  |  integer
------------------------+---------
         left-to-right  |     4
         right-to-left  |    14
         top-to-bottom  |     9
         bottom-to-top  |    39
topleft-to-bottomright  |    65
topright-to-bottomleft  |    15
bottomleft-to-topright  |    10
bottomright-to-topleft  |     0

কিভাবে?

লিঙ্কটি জেলি কোড তৈরি করে যা এমকে ইনপুট হিসাবে ব্যবহার করে মূল্যায়ন করা হয় ...

ṃ“Z“Ṛ“U“ “ŒDṙL ZZṚ”ŒḄFḲj“ŒH_Ṛ}¥/”v - Link: integer, I; matrix, M
 “Z“Ṛ“U“ “ŒDṙL ZZṚ”                - list of lists of characters = ["Z", "Ṛ", "U", " ", "ŒDṙL ZZṚ"]
ṃ                                  - base decompress (I) using those lists as the digits
                                   -  ...i.e. convert to base 5 and then convert the digits:
                                   -          [1,2,3,4,0] -> ["Z", "Ṛ", "U", " ", "ŒDṙL ZZṚ"]
                   ŒḄ              - bounce
                                   -  ...e.g. [a, b, c] -> [a, b, c, b, a]
                     F             - flatten to a list of characters
                      Ḳ            - split at spaces
                       j           - join with:
                        “ŒH_Ṛ}¥/”  -   list of characters = "ŒH_Ṛ}¥/"
                                 v - evaluate as Jelly code with an input of M

আটটি অপশনের প্রত্যেকটি তখন:

left-to-right           (4): ŒH_Ṛ}¥/
right-to-left          (14): ṚŒH_Ṛ}¥/Ṛ
top-to-bottom           (9): ZŒH_Ṛ}¥/Z
bottom-to-top          (39): ZṚŒH_Ṛ}¥/ṚZ
topleft-to-bottomright (65): ṚUŒDṙLŒH_Ṛ}¥/ZZṚUṚ
topright-to-bottomleft (15): UŒDṙLŒH_Ṛ}¥/ZZṚU
bottomleft-to-topright (10): ṚŒDṙLŒH_Ṛ}¥/ZZṚṚ
bottomright-to-topleft  (0): ŒDṙLŒH_Ṛ}¥/ZZṚ

এগুলির প্রতিটি (বাদে 0এবং 4) Mকিছু Z(ট্রান্সপোজ), (বিপরীত) এবং U(প্রত্যেকে বিপরীত) ব্যবহার করে রূপান্তর প্রয়োগ করে ; তারপরে দুটি ফাংশনগুলির মধ্যে একটি (নীচে দেখুন), তারপরে কোডের বিপরীতে সেটআপ রূপান্তরটির বিপরীত (যদি সেখানে একটি ছিল) প্রয়োগ করা হয়েছিল।

দুটি অভ্যন্তরীণ ফাংশন হ'ল:

ŒH_Ṛ}¥/ - Function A: Fold bottom-to-top: matrix, M
ŒH       - split M into two equal lists of rows (first half bigger by 1 if need be)
      / - reduce by:
     ¥  - last two links as a dyad:
    }   -  using the right argument (i.e. second half):
   Ṛ    -    reverse
  _     -  subtract

ŒDṙLŒH_Ṛ}¥/ZZṚ - Function B: Fold topright-to-bottomleft: matrix, M
ŒD             - diagonals of M
  ṙ            - rotate left by:
   L           -   length of M (puts them in order from bottom left most)
    ŒH_Ṛ}¥/    - same action as calling Function A on the diagonals
           Z   - transpose
            Z  - transpose
             Ṛ - reverse

1
আহা সুন্দর, আমি ভাবছিলাম যে কেউ কিছুটা নমনীয় ইনপুট-বিকল্পগুলি ব্যবহার করবে কিনা! পছন্দসই ভাঁজটিকে মূল্যায়নের জন্য আপনি জেলি কোডে সুবিধাজনক বেস-রূপান্তরকরণের জন্য কীভাবে মানগুলি ব্যবহার করেছেন তা দেখতে শীতল। :)
কেভিন ক্রুইজসেন

আমার উত্তর থেকে কিছু কোড ব্যবহার করা, এবং কোড উভয়ের পক্ষে পুনরায় ব্যবহার করা, এখানে 34-বাইটার রয়েছে: tio.run/##y0rNyan8///…
নিক কেনেডি

যদি আমাদের 16 বিট পূর্ণসংখ্যার অনুমতি দেওয়া হয় তবে এটি আরও খাটো হতে পারে
নিক কেনেডি

কোন ভাঁজটি নির্বাচন করার জন্য প্যারামিটার হিসাবে 16-বিট ইন্টিজার ব্যবহার করে অ-প্রতিযোগিতামূলক 23 বাইট উত্তর: tio.run/##y0rNyan8///…
নিক কেনেডি

@ নিক কেনেডি - ধন্যবাদ আমি বিচ্ছেদ পছন্দ এবং যোগদান! বিবরণ পুরোপুরি পরিবর্তন করতে আমাকে পরে ফিরে আসতে হবে।
জোনাথন অ্যালান

3

জাভাস্ক্রিপ্ট (ES6),  149 ... 133  128 বাইট

যেমন ইনপুট লাগে (matrix)(d)সঙ্গে07। সরানো মানগুলি প্রতিস্থাপন করা হয় NaN

ভাঁজ দিকনির্দেশ: 0=, 1=, 2=, 3=, 4=, 5=, 6=, 7=

m=>d=>m.map((r,y)=>r.map((v,x)=>v-=(w=m.length+~y)-(p=[x+x-y,y,x,q=w+y-x][d&3])&&[r[q],m[w][x],m[q][w],m[x][y]][d>3^p>w?d&3:m]))

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

মন্তব্য

m => d =>                   // m[] = matrix; d = direction
  m.map((r, y) =>           // for each row r[] at position y in m[]:
    r.map((v, x) =>         //   for each value v at position x in r[]:
      v -=                  //     subtract from v:
        (                   //       define w as:
          w = m.length + ~y //         the width of input matrix - y - 1
        ) - (               //       and compare it with
          p = [             //       p defined as:
            x + x - y,      //         2 * x - y for vertical folding
            y,              //         y for horizontal folding
            x,              //         x for diagonal folding
            q = w + y - x   //         q = w + y - x for anti-diagonal folding
          ][d & 3]          //       using d MOD 4
        ) &&                //       if p is equal to w, leave v unchanged
        [                   //       otherwise, subtract:
          r[q],             //         r[q] for vertical folding
          m[w][x],          //         m[w][x] for horizontal folding
          m[q][w],          //         m[q][w] for diagonal folding
          m[x][y]           //         m[x][y] for anti-diagonal folding
        ][                  //       provided that we're located in the target area:
          d > 3 ^           //         test p < w if d > 3 
          p > w ? d & 3     //         or p > w if d <= 3
                : m         //         and yield either d MOD 4 or m[]
        ]                   //       (when using m[], we subtract 'undefined' from v,
                            //       which sets it to NaN instead)
    )                       //   end of inner map()
  )                         // end of outer map()

3

জেলি , 71 34 বাইট

ḃ2ŒḄ,UZṚŒDṙLƊŒH_Ṛ}¥/$ZZṚƊṚZ8ƭ$ị@¥ƒ

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

পরীক্ষা স্যুট

একটি সম্পূর্ণ প্রোগ্রাম। ডান যুক্তি হ'ল ম্যাট্রিক্স। বাম যুক্তি হ'ল ভাঁজের ধরণ:

44 = L-R
40 = R-L
36 = T-B
32 = B-T
50 = TL-BR
34 = TR-BR
54 = BL-TR
38 = BR-TL

ইনপুট হিসাবে 5-বিট বাইজিক বাইনারি ব্যবহার করতে পুনরায় লিখিত। নোট করুন উপরে দেওয়া প্রোগ্রামটি একাধিক ভাগে বারবার কাজ করবে না।


1

অক্টাভা , 482 বাইট , 459 বাইট

ভাঁজ দিকনির্দেশ স্থির করার জন্য ইনপুটগুলি হ'ল:
1) বাম থেকে ডান
2) নীচে থেকে শীর্ষ
3) ডান থেকে বাম
4) শীর্ষ থেকে নীচে
5) টিআর থেকে ব্লু
6) বিআর থেকে টিএল
7) ব্লু থেকে ট্র
8) টিএল থেকে বিআর
প্রতিটি কল তাদের সমস্তের চেয়ে কেবলমাত্র নির্দিষ্ট ভাঁজ তৈরি করে (যা সম্ভবত কম বাইট লাগবে)। সবচেয়ে বড় সমস্যা হ'ল এই ক্ষেত্রে আমি কীভাবে একই লুপে 1-4 এবং 5-8 ফোল্ডগুলি রাখব তা বুঝতে পারি না। তবে কমপক্ষে অষ্টকটিতে দেখতে সুন্দর ম্যাট্রিক রয়েছে।

    function[m]=f(n,o)
    k=length(n);m=NaN(k);if(o<5)
    if(mod(o,2)>0)n=n'end
    q=[0,0,k+1,k+1](o)
    for x=1:ceil(k/2)if(x*2>k)m(x,:)=n(x,:)else
    for a=1:k
    m(abs(q-x),a)=n(abs(q-x),a)-n(abs(q-(k+1-x)),a)end
    end
    end
    if(mod(o,2)>0)m=flipud(m')end
    else
    if(mod(o,2)>0)n=flip(n)end
    q=[0,0,k+1,k+1](o-4)
    for x=1:k
    for a=1:k+1-x
    if(a==k+1-x)m(x,a)=n(x,a)else
    m(abs(q-x),abs(q-a))=n(abs(q-x),abs(q-a))-n(abs(q-(k+1-a)),abs(q-(k+1-x)))end
    end
    end
    end
    if(mod(o,2)>0)m=flip(m)end
    end

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

আউটপুট দমন ব্যয় ব্যয় হয়, সুতরাং রিটার্ন স্টেটমেন্ট (উত্তর =) নয় এমন সবকিছু উপেক্ষা করুন।


"শেষ" লেখার জন্য আপনি কতটি বাইট হারিয়েছেন?
মেয়াদ শেষ হয়েছে

আপনার কি শেষ লেখা নেই?
অরেঞ্জচেরিজ

আপনি যদি এটির পুনর্গঠন না করেন তবে তা করুন / এটির বিবরণী না থাকলে
মেয়াদোত্তীর্ণ ডেটা

বাহ টিবিএইচ আপনার কোডটির দিকে তাকিয়ে আছে এমন অনেকগুলি জিনিস রয়েছে যা আমি জানতাম না আপনি মাতলাব করতে পারবেন।
অরেঞ্জচেরিজ

অষ্টভর টিবিএইচ সম্পর্কে আমি খুব বেশি কিছু জানি না এটি সম্ভবত 50-100 বাইটগুলি খুব সহজেই সাশ্রয় করতে পারে
মেয়াদোত্তীর্ণ ডেটা

1

কাঠকয়লা , 78 77 বাইট

F⁴«UMηE⮌η§μλ¿⁼ιθUMηEκ⎇‹⊕⊗νLη⁻μ§⮌κν⎇›⊕⊗νLηωμ¿⁼ι﹪θ⁴UMηEκ⎇‹λν⁻짧ηνλ⎇›λνωμ»Eη⪫ι,

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। নিম্নলিখিত ভাঁজ বিকল্পগুলি ব্যবহার করে:

0   top-to-bottom
1   left-to-right
2   bottom-to-top
3   right-to-left
4   bottomright-to-topleft
5   topright-to-bottomleft
6   topleft-to-bottomright
7   bottomleft-to-topright

ভাঁজ করা মানগুলি খালি স্ট্রিং দ্বারা প্রতিস্থাপিত হয়। ব্যাখ্যা:

F⁴«≔UMηE⮌η§μλ

অ্যারেটি চারবার ঘোরান।

¿⁼ιθUMηEκ⎇‹⊕⊗νLη⁻μ§⮌κν⎇›⊕⊗νLηωμ

উপযুক্ত হলে অনুভূমিকভাবে ভাঁজ করুন।

¿⁼ι﹪θ⁴UMηEκ⎇‹λν⁻짧ηνλ⎇›λνωμ

উপযুক্ত হলে অ্যারেটি তির্যকভাবে ভাঁজ করুন।

»Eη⪫ι,

অ্যারেটিকে একবার তার আসল অভিমুখে ফিরিয়ে আউটপুট করুন।

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