দাবা বোর্ড গোলকধাঁধা


14

দাবা টুকরা (রাজা, রানী, ছল, বিশপ এবং নাইট) এবং পদ্মাগুলি একটি বোর্ডে রয়েছে তবে এ 1 বা এইচ 8 স্কোয়ারে নয়। আপনার কাজটি খালি এ 1 থেকে খালি এইচ 8 স্কোয়ারে ভ্রমণ করা, কেবল খালি স্কোয়ারের মধ্য দিয়ে যেতে হবে। আন্দোলনের নিয়মগুলি নিম্নরূপ:

  1. আপনি যে কোনও ফাঁকা স্কোয়ার থেকে পাশের যে কোনও ফাঁকা স্কোয়ারে এগিয়ে যেতে পারেন (একই র‌্যাঙ্ক, পরবর্তী বা পূর্ববর্তী ফাইল; বা একই ফাইল, পরবর্তী বা পূর্ববর্তী র‌্যাঙ্ক)।
  2. আপনি যে কোনও ফাঁকা বর্গক্ষেত্রের পাশের খালি বর্গক্ষেত্রের পাশের তির্যকভাবে এগিয়ে যেতে পারেন (পরবর্তী বা পূর্ববর্তী র‌্যাঙ্ক, পরবর্তী বা পূর্ববর্তী ফাইল), প্রদত্ত যে ক্যাটটি-কোণার স্কোয়ারগুলিতে (ক) দুটি পাউন্ড বা (খ) পাউন্ড / বিপরীত অংশ রয়েছে রঙ। (একই রঙের দুটি নন-প্যাড টুকরোগুলি, বা একটি প্যাডহীন টুকরা এবং একটি প্যাডগুলি আপনার প্রগতিটি কোণে জুড়ে দেওয়ার পক্ষে যথেষ্ট শক্তিশালী, তবে দুটি পদ্ম নয়; এবং বিপরীত রঙের টুকরো / প্যাঁচগুলি কাজ করে না কনসার্টের আপনার উপায় বার।) উদাহরণস্বরূপ, যদি আপনি আছেন C4 এবং D5 খালি থাকে, তা সরবরাহ করা আপনি এগিয়ে যেতে পারেন C5 এবং D4 দাবার গুটির ধারণ বা টুকরা / বিপরীত রং এর দাবার গুটির ধারণ করে। ছবিগুলির জন্য নীচে "উদাহরণটি কর্ণগুলি" বিভাগটি দেখুন।

ইনপুট

FEN এর বোর্ড বিবরণ। এটি হ'ল: ইনপুটটি এমন একটি স্ট্রিং থাকবে যাতে র‌্যাঙ্ক 8 , একটি স্ল্যাশ ( /), র‌্যাঙ্ক 7 এর বিবরণ , একটি স্ল্যাশ,… এবং 1 পদমর্যাদার বিবরণ অন্তর্ভুক্ত থাকবে । প্রতিটি র‌্যাঙ্কের বিবরণে ফাইল থেকে ফাইল এইচ পর্যন্ত চলমান সংখ্যা এবং অক্ষর অন্তর্ভুক্ত রয়েছে , যেখানে বর্ণগুলি টুকরা এবং পশমাকে নির্দেশ করে (কালোগুলি হল p= প্যাড, n= নাইট, b= বিশপ, r= রোক, q= রানী, k= রাজা এবং সাদা এগুলি একই আকারের মূলধনের সংস্করণ হয়) এবং সংখ্যাগুলি খালি স্কোয়ারের ধারাবাহিক সংখ্যা নির্দেশ করে। উদাহরণস্বরূপ, rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNএক প্লাই মুভের পরে বোর্ডটি কি (রাজার গিরিটি ই 4 তে যায়)?) একটি দাবা খেলা।

এ 1 এবং এইচ 8 ইনপুটটিতে খালি থাকবে; অর্থাত্, প্রথম স্ল্যাশটির আগে একটি অঙ্ক থাকে এবং শেষ স্ল্যাশের পরে একটি অঙ্ক থাকে।

আউটপুট

সত্য বা মিথ্যা, h8 এ সফল উত্তরণ সম্ভব কিনা তা নির্দেশ করে ।

যদি ইনপুটটি বৈধ FEN বোর্ডের বিবরণ না হয় (অর্থাত্ আমার উপরের ব্যাখ্যাটির সাথে এটি মেলে), বা যদি এ 1 বা এইচ 8 দখল করা থাকে, তবে আউটপুটটি কিছুই বা কিছুই হতে পারে। (অন্য কথায়: আপনি ধরে নিতে পারেন ইনপুট উপরের প্রয়োজনীয়তাগুলি পূরণ করে))

স্কোরিং

এটি কোড গল্ফ: সবচেয়ে কম বাইট জেতা।

উদাহরণ ইনপুট এবং আউটপুট

মনে রাখবেন যে আপনার কোডটি অবশ্যই সমস্ত বৈধ ইনপুটগুলির জন্য কাজ করবে, কেবল উদাহরণগুলি নয়।

wএটি দেখার জন্য প্রতিটি FEN এর পরে একটি স্থান এবং একটি যুক্ত করুন http://www.dhtmlgoodies.com/scripts/chess-fen/chess-fen-3.html। (দ্রষ্টব্য যে অন্য কিছু অনলাইন এফএন ভিজ্যুয়ালাইজার দাবাতে অবৈধ যে বোর্ডকে মঞ্জুরি দেবে না, যেমন 1 বা 8 র‌্যাঙ্কের উপর একটি প্যাঁচ দিয়ে , তাই আমাদের উদ্দেশ্যে ব্যবহার করা যাবে না))

সত্যবাদী উদাহরণ

  • 8/8/8/8/8/8/8/8 - খালি বোর্ড
  • 1p1Q4/2p1Q3/2p1Q3/2p1Q3/2p1Q3/2p1Q3/Q1p1Q3/1q3q2- সেখানে একটি পাথ এর A1 , B2 , B3 , B4 , B5 , B6 , B7 , C8 , D7 , ( না E8 , যে অফ অবরোধ কিন্তু) d6 , D5 , D4 , D3 , D2 , D1 , E1 , F2 , F3 , f4 , f5 , f6 , f7 , f8 , g8 , h8
  • 8/8/KKKKK3/K3K3/K1K1p3/Kp1K4/K1KK4/2KK4 - এমন একটি উদাহরণ যেখানে একবিন্দুতে অবরুদ্ধ একটি বর্গক্ষেত্রটি পরে যেতে হবে (আপনি স্কোয়ারকে দুর্গম হিসাবে সেট করবেন না তা নিশ্চিত করার জন্য)
  • K1k1K1K1/1K1k1K1k/K1K1k1K1/1k1K1K1k/K1k1K1k1/1K1k1k1K/K1K1k1K1/1k1k1K1k- এর মধ্যে একটি একক পথ রয়েছে (কেবল আপনার নাক অনুসরণ করুন: প্রতিটি পদক্ষেপে যাওয়ার জন্য কেবল একটি বর্গক্ষেত্র রয়েছে, যদি না একটি পদক্ষেপ পিছনে নেয়); এটি একটি উদাহরণ যেখানে একটি বর্গক্ষেত্রকে এক পর্যায়ে অবরুদ্ধ করা হয়েছে তবে পরে প্রয়োজনীয় necessary

মিথ্যা উদাহরণ

  • 6Q1/5N2/4Q3/3N4/2Q5/1N6/2Q5/1N6 - কোনও পথে কোনও চেষ্টা করতে দুটি তির্যকভাবে একই রঙের টুকরো টুকরো পেরোতে হবে
  • N1q1K1P1/1R1b1p1n/r1B1B1Q1/1p1Q1p1b/B1P1R1N1/1B1P1Q1R/k1k1K1q1/1K1R1P1r- a8-h1 তির্যক মাধ্যমে একমাত্র উপায় f2-g3 এ রয়েছে , তবে এর জন্য e1-d2 বা f2-e3 এর মাধ্যমে উত্তরণ প্রয়োজন , যা উভয়ই অসম্ভব।
  • 4Q3/4q3/4Q3/5Q2/6Q1/3QqP2/2Q5/1Q6
  • 4q3/4Q3/4q3/5q2/6q1/3qQp2/2q5/1q6

তির্যক উদাহরণ

যদি উপরের গদ্যটি অস্পষ্ট ছিল, তবে এখানে কয়েকটি ছবি দেওয়া হয়েছে।

প্রবেশযোগ্য তির্যক

একই রঙের প্যাঁচা বিপরীত রঙের প্যাঁচ বিপরীত রং এর rosks

দুর্গম তির্যক

একটি রোক এবং একই রঙের একটি গিরি একই রঙের rosks


আমি দুঃখিত, স্ট্যান্ডার্ডার্ড গল্ফের নিয়ম সম্পর্কে আমি নিশ্চিত নই: আপনি যদি কোনও অবৈধ স্ট্রিং ?োকান তবে কী হবে? কোন আচরণ হতে পারে?
অ্যালেক্স বার্ন

@ অ্যালেক্সবার্ন আমি বিশ্বাস করি এটি এটি কভার করে: "আপনার কোড অবশ্যই সমস্ত বৈধ ইনপুটগুলির জন্য কাজ করবে "।
রেইনবোল্ট

@ আলেক্সবার্ন, আমি সম্পাদনা করেছি। এটা কি এখন পরিষ্কার?
msh210

হ্যা ধন্যবাদ. আমি এখানে নতুন, সুতরাং এটি গল্ফারের জন্য ব্যবহারযোগ্য জিনিস হতে পারে তবে আমার কাছে এটি অস্পষ্ট ছিল :)
অ্যালেক্স বার্ন

@ Msh210 একটি দুর্দান্ত ধাঁধার জন্য কেবল ধন্যবাদ বলতে চেয়েছিলেন। কেন আরও উত্তর নেই তা আমি বুঝতে পারছি না।
জোফান

উত্তর:


6

ভিবিএ 668 666 633 622 548 510 489 435 331 322 319 315 বাইট

Function Z(F):Dim X(7,7):While Q<64:R=R+1:V=Asc(Mid(F,R))-48:If V>9 Then X(Q\8,Q Mod 8)=(3+(V\8=V/8))*Sgn(48-V):V=1
Q=Q-V*(V>0):Wend:X(7,0)=1:For W=0 To 2E3:Q=W Mod 8:P=W\8 Mod 8:For T=Q+(Q>0) To Q-(Q<7):For S=P+(P>0) To P-(P<7):If X(S,T)=0 Then X(S,T)=(1=X(P,Q))*(6>X(P,T)*X(S,Q))
Next S,T,W:Z=X(0,7):End Function

ইনপুট স্ট্রিং পড়া 'উইন্ড' অবধি দখল করে। চমৎকার পার্শ্ব প্রতিক্রিয়া - বোর্ড [এক্স] সম্পূর্ণরূপে কোডেড হয়ে যাওয়ার পরে এটি ইনপুট স্ট্রিংটি ত্যাগ করে so

বোর্ড কোডিংয়ে, প্যাডগুলি 2, অন্যান্য টুকরা 3, কালো negativeণাত্মক। পাওনগুলি 'পি' এবং 'পি' দ্বারা স্বীকৃত হয় যাতে 8 দ্বারা বিভাজ্য অক্ষর কোড থাকে।

'এক্স (7,0) = 1', সেটিং A1 প্রবেশযোগ্য, যেখানে পথ চেক শুরু। এটিকে এখনও পর্যন্ত অ্যাক্সেসযোগ্য (1) হিসাবে চিহ্নিত স্কোয়ারগুলি থেকে অ্যাক্সেসযোগ্য স্কোয়ারগুলি যুক্ত করার চেষ্টা করার বোর্ডটি বার বার স্ক্যান করে। ডায়াগোনাল অ্যাক্সেস এবং দখলটি আইএফ + লজিক-ক্যাল্কে যাচাই করা হয় যা একসময় কোনও ফাংশনে থাকত তবে এখন নেস্টেড প্রতিবেশী লুপগুলিতে বসে। তির্যক অ্যাক্সেস চেক দুটি কিটি-কর্নার স্কোয়ারের পণ্যের উপর নির্ভর করে, যা কেবলমাত্র 6 বা ততোধিক টুকরো যদি টুকরোগুলি একই বর্ণের হয় এবং কমপক্ষে এক টুকরোগুলি না হয়।

স্প্রেডশিটে কল করুন; এক্স এর মান (0,7) প্রদান করে - 1 যদি h8 অ্যাক্সেসযোগ্য এবং 0 না - তবে এক্সেল সত্যবাদী / মিথ্যা হিসাবে স্বীকৃত = আইএফ (জেড (সি 2), "হ্যাঁ", "না")

এখানে চিত্র বর্ণনা লিখুন

আমি উপরের কোডটি নীচে স্ক্র্যাচ করে নিয়ে যেতে পেরেছি, সুতরাং এখানে একটি আধা-অবহেলিত মন্তব্য সংস্করণ রয়েছে:

Function MazeAssess(F)  'input string F (FEN)
Dim X(7, 7)             'size/clear the board; also, implicitly, Q = 0: R = 0
'Interpret string for 8 rows of chessboard
While Q < 64
    R = R + 1           ' next char
    V = Asc(Mid(F, R)) - 48  ' adjust so numerals are correct
    If V > 9 Then X(Q \ 8, Q Mod 8) = (3 + (V \ 8 = V / 8)) * Sgn(48 - V): V = 1 ' get piece type (2/3) and colour (+/-); set for single column step
    Q = Q - V * (V > 0) ' increment column (unless slash)
Wend
'Evaluate maze
X(7, 0) = 1             ' a1 is accessible
For W = 0 To 2000       ' 1920 = 30 passes x 8 rows x 8 columns, golfed to 2E3
    Q = W Mod 8         ' extracting column
    P = W \ 8 Mod 8     ' extracting row
    For T = Q + (Q > 0) To Q - (Q < 7)     ' loop on nearby columns Q-1 to Q+1 with edge awareness
        For S = P + (P > 0) To P - (P < 7) ' loop on nearby rows (as above)
            If X(S, T) = 0 Then X(S, T) = (1 = X(P, Q)) * (6 > X(P, T) * X(S, Q)) ' approve nearby empty squares if current square approved and access is possible
        Next 'S
    Next 'T
Next 'W
MazeAssess = X(0, 7)    ' report result for h8
End Function

অগ্রগতি নোট

সম্পাদনা 1: কোডটি এখন 666-শয়তান :-D হিসাবে নয় এবং এর কার্যকারিতা হারিয়েছে; ওভারহেড এড়াতে এগুলি লেখার জন্য আমি একটি স্বল্প-পর্যায়ে উপায় খুঁজে পেয়েছি।

সম্পাদনা 2: আরও একটি বড় কৌতুক এগিয়ে এগিয়ে আসে, কার্যকরভাবে ইনক / ডিসের ফাংশনগুলি সরিয়ে, দীর্ঘশ্বাস ফেলে এবং বেশ কয়েকটি গ্লোবাল ব্যবহারের কাজ শেষ করে। আমি অবশেষে এর হ্যাং পেয়ে যাব ...

টুকরা এবং স্কোয়ারের কোডিং পরিবর্তিত হয়েছে। কোড দৈর্ঘ্যের উপর কোনও প্রভাব নেই।

3 সম্পাদনা করুন : (জাল) ফাংশনগুলির রিটার্ন, সেই সমস্ত বিরক্তিকর Callবাইটগুলি এবং অন্যান্য কিছু টুইট মুছে ফেলে ।

4 সম্পাদনা করুন : বড় 500 টি ভেঙে, ওহু - 3 টি লুপের জন্য 1 তে পরিণত করলেন।

5 সম্পাদনা করুন : জিমিনি ক্রিকেট, যখন আমি দুটি ফাংশন একসাথে স্মুশ করেছিলাম তখন আরও একটি বড় ড্রপ - আমার তির্যক অ্যাক্সেস চেক সবসময় সংলগ্ন স্কোয়ারগুলির জন্য যায়, তাই ...

6 সম্পাদনা করুন : পবিত্র নিবলিক্স, আরও একটি বিশাল ড্রপ। বুহ বাই বাইরের ফাংশন এবং এইভাবে বিশ্বব্যাপী ... আমি মূল পোস্টের দৈর্ঘ্যের অর্ধেকের নিচে চলে গিয়েছি ...

7 সম্পাদনা করুন : অবারিত সংস্করণ যুক্ত করুন

8 সম্পাদনা করুন : আরও কয়েক ডলারের জন্য পঠন প্রক্রিয়াটি সংশোধিত হয়েছে

সম্পাদনা 9: রক্তের কয়েক ফোঁটা ফোঁটার জন্য কয়েকটি অভিব্যক্তি মিশ্রিত করুন

সম্পাদনা 10: কমন্ডের Nextস্টেটমেন্টটি কয়েক বাইট শেড করে


আগ্রহের জন্য, অ্যাক্সেসযোগ্যতার বিশ্লেষণের পরে বোর্ডগুলির গ্রাফিকগুলি (কোড সংখ্যাগুলি পুরানো but

3 সফল বোর্ড 3 টি অবরুদ্ধ বোর্ড

দু'টি চ্যালেঞ্জ বোর্ড: এইচ 8 উভয়টিতেই অ্যাক্সেসযোগ্য:

  • P1Pq2p1 / 1P1R1R1p / 1K2R1R1 / 1p1p1p2 / p1b1b1np / 1B1B1N1k / Q1P1P1N1 / 1r1r1n2 - সমাধান করতে 10 টি পাস
  • P1P3r1 / 1P1R2r1 / 1N1R1N2 / 1P1P1P2 / 1n1p1ppp / 1B1B4 / 1b1pppp1 / 1P6 - একটি ঘোরানো পথ

1
খুব সুন্দর এবং +1, তবে: (1) আপনি কি 960 টি পদক্ষেপের বিষয়ে নিশ্চিত? (২) আপনি বোর্ডটিকে উল্টো দিকে দেখে কিছু বাইট বাঁচাতে পারবেন? If V>9 Then X(7-P,C)=আমি কি ভাবব (আমি ভিবিএ জানি না) হয়ে যায় If V>9 Then X(P,C)=?
msh210

আসলে সেই কৌশলটি পি শুরু করার সংরক্ষণ করে, তাই জিজ্ঞাসা করার জন্য ধন্যবাদ :-)। এবং হ্যাঁ, আমি নিশ্চিত বোর্ডের 15 টি পাস যথেষ্ট; আমি বেশ চেকিং করেছি। আমি বাস্তবে এটি 10 ​​পাসের আগে ধাক্কা দিতে সক্ষম হইনি, তবে 640 এবং 960 এর একই সংখ্যক অক্ষর রয়েছে তাই আমি এটি নিরাপদে খেলব। তবে যদি আমি বোর্ডটিকে উল্টে টুকরো টুকরো করে বলি তবে এটি 10 ​​টিরও বেশি পাসে নিতে পারে এবং 15 এরও বেশি হতে পারে - যদি না আমি বোর্ডটি উল্টেও উল্টে না করি, যার ওভারহেড থাকবে।
জোফান

@ msh210 1 টি অতিরিক্ত পর্যবেক্ষণ - 15 লুপ হয় মাত্র পুরো বোর্ড, সবচেয়ে খারাপ ক্ষেত্রে বিশ্লেষণ করতে যথেষ্ট, কিন্তু 10 লুপ H8 মর্যাদা পেতে যথেষ্ট, তাই আমি একটি বৃহৎ মার্জিন সত্যিই আছে। কারণটি হল যে পথগুলি সন্ধানের জন্য মূল্যায়নের দিকে আরও দ্রুত কাজ করে, সারি # এবং কলাম # বাড়ছে - যতক্ষণ পথ উপরে বা ডান দিকে যাচ্ছে ততক্ষণ এটি একক পাসে সম্পন্ন হবে। বাম বা নীচে যেতে কেবল পাসের জন্য আরও একধাপ এগিয়ে যায়।
জোফান

@ এমশ ২১০ পঠন প্রক্রিয়া পুনর্নবীকরণের অংশ হিসাবে - যা ফেন স্ট্রিংয়ের শেষে কোনও মন্তব্য দেওয়ার সুবিধার্থে সংক্ষিপ্তভাবে রেখেছিল - আমি যে বোর্ডটি আপনার প্রস্তাবিত হয়েছিল তার বিপরীতে যুক্ত করেছি - কিছু বোর্ড এখন ১৫ টি পাস (17 অবধি) নেয় কার্যটি বোর্ডের 30 টি পাসে বেড়েছে।
জোফান

আপনি সমস্ত উদাহরণ ঘনীভূত দ্বারা 3 বাইট ড্রপ করতে পারেন @Joffan [some non-letter character] Toকরতে[some non-letter character]To
টেলর স্কট

3

মতলব, সংরক্ষণিত হিসাবে 636 887 বাইট (অন্তর্ভুক্ত সহ)

এই সমাধানটি খুব গল্ফ হয় না, তবে আমি এগিয়ে যেতে এবং এটি এগিয়ে রাখতে চেয়েছিলাম।

function[n] = h(x)
o=[];
for i=x
 b={blanks(str2num(i)),'K','k',i};o=[o b{~cellfun(@isempty,regexp(i,{'\d','[NBRQK]','[nbrqk]','p|P'}))}];
end
o=fliplr(reshape(o,8,8))
for i=1:64
 b=i-[-8,8,7,-1,-9,1,9,-7];
 if mod(i,8)==1
  b=b(1:5);
 elseif mod(i,8)==0
  b=b([1,2,6:8]);
 end
 b=b(b<65&b>0);c=o(b);dn=b(isspace(c)&ismember(b,i-[9,7,-9,-7]));
 for j=dn
  g=o(b(ismember(b,j-[-8,8,7,-1,-9,1,9,-7])));
  if ~isempty(regexp(g,'pk|kp|PK|KP|kk|KK'));c(b==j)='X';end;
 end
 Bc{i}=b(c==32);
end
n=Bc{1};
on=[];
while length(n)>length(on)
 on=n;
 for i=1:length(n)
  n=unique([n Bc{n(i)}]);
 end
end
any(n==64)
end

xউপরে উল্লিখিত একটি বোর্ড স্ট্রিং পড়ুন এবং এটিকে আরও সম্পূর্ণ উপস্থাপিত করে তোলে o, তারপরে স্পেসগুলির মধ্যে সমস্ত চলনগুলি (গ্রাফ প্রান্তগুলি) সন্ধান করে, তারপর কোন পদক্ষেপগুলি সম্ভব (ভরাট জায়গাগুলিতে নয়) তা নির্ধারণ করে, তারপর কোন সম্ভাব্য পদক্ষেপের চিত্র রয়েছে তা নির্ধারণ করে " "দুটি টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরোটি তারপরে, এটি নীচের বাম স্কোয়ার থেকে পাথের মাধ্যমে অ্যাক্সেসযোগ্য লোকেশনগুলি সন্ধান করতে এবং যদি কোনও পাথ স্পেস 64৪ এ পৌঁছতে পারে তবে এটি হ্যাঁ বোর্ড board


1
কুল। আপনি কি এটি পরীক্ষার জন্য আমার উদাহরণে FENs এর বিপরীতে পরীক্ষা করেছিলেন তা নিশ্চিত করার জন্য এটি প্রতিটিটির জন্য সঠিক ফলাফল দেয়? এছাড়াও, যেহেতু এটি একটি কোড-গল্ফ প্রশ্ন, তাই আপনার এটি সত্যই গল্ফ করা উচিত। যদি আর কিছু না হয়, আপনি কি ইন্ডেন্টেশন থেকে মুক্তি পেতে পারেন (বা চারটি জায়গার পরিবর্তে এটি একটি একক স্থান বা ট্যাব তৈরি করতে পারেন)? এবং / অথবা =এস এর আশেপাশের ফাঁকা জায়গা ছেড়ে দিন ? (আমি ম্যাটল্যাব জানি না: সম্ভবত সেগুলি অসম্ভব))
এমএস 210

হ্যাঁ, এবং আমি আমার পরবর্তী বিরতির সময় কিছু করতে পারি। আমি এটি আপনার সমস্ত উদাহরণ এবং তারপরে কয়েকটিটির বিরুদ্ধে পরীক্ষা করেছি। আমি কি কোনও উপায়ে ইঙ্গিত করব?
সিনট্যাক্স

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