একটি কারকাসোন টাইল রাখুন


23

বোর্ড গেম

বোর্ড গেমটিতে " কারকাসন " খেলোয়াড়রা তাদের প্রান্তগুলি মিলে টাইলস রাখে এবং ভূখণ্ডের বৃহত সংলগ্ন অঞ্চল তৈরির মাধ্যমে সর্বোচ্চ স্কোর অর্জন করে। নিম্নলিখিত (মোটামুটিভাবে) খেলায় অন্তর্ভুক্ত টাইলগুলির প্রকার এবং পরিমাণ:

#01 x4 এখানে চিত্র বর্ণনা লিখুন #02 x5 এখানে চিত্র বর্ণনা লিখুন #03 x8 এখানে চিত্র বর্ণনা লিখুন #04 x2 এখানে চিত্র বর্ণনা লিখুন

#05 x9 এখানে চিত্র বর্ণনা লিখুন #06 x4 এখানে চিত্র বর্ণনা লিখুন #07 x1 এখানে চিত্র বর্ণনা লিখুন #08 x3 এখানে চিত্র বর্ণনা লিখুন

#09 x3 এখানে চিত্র বর্ণনা লিখুন #10 x3 এখানে চিত্র বর্ণনা লিখুন #11 x4 এখানে চিত্র বর্ণনা লিখুন #12 x5 এখানে চিত্র বর্ণনা লিখুন

#13 x3 এখানে চিত্র বর্ণনা লিখুন #14 x3 এখানে চিত্র বর্ণনা লিখুন #15 x2 এখানে চিত্র বর্ণনা লিখুন #16 x5 এখানে চিত্র বর্ণনা লিখুন

#17 x5 এখানে চিত্র বর্ণনা লিখুন #18 x2 এখানে চিত্র বর্ণনা লিখুন #19 x3 এখানে চিত্র বর্ণনা লিখুন #20 x1 এখানে চিত্র বর্ণনা লিখুন

#21 x5 এখানে চিত্র বর্ণনা লিখুন #22 x2 এখানে চিত্র বর্ণনা লিখুন #23 x1 এখানে চিত্র বর্ণনা লিখুন #24 x1 এখানে চিত্র বর্ণনা লিখুন

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

কাজটি

ভূখণ্ডের বৃহত্তম সম্ভাব্য আকর্ষণীয় অঞ্চল বজায় রাখার চেষ্টা করার সময় আপনাকে অবশ্যই একটি টাইল স্থাপন করতে হবে।

স্থাননির্ণয়

  • টাইলগুলি কেবল খেলার ক্ষেত্রের যে কোনও বিদ্যমান টাইল (বা টাইলস) সংলগ্ন ফাঁকা জায়গাগুলির একটিতে (4 অবধি) ফাঁকা স্থান রাখা যেতে পারে।
  • টাইলগুলি 90, 180 বা 270 ডিগ্রি ঘোরানো যায়।

এজ-ম্যাচিং

  • একটি স্থাপন টাইলের প্রান্তগুলি অবশ্যই প্রতিবেশী টাইলগুলির (4 অবধি) স্পর্শকারী প্রান্তগুলির সাথে মেলে, যেমন স্পর্শকারী পিক্সেল একই রঙের।

সংলগ্ন ভূখণ্ড

  • "ভূখণ্ডের একটি অঞ্চল বন্ধ করে দেওয়া" এমন একটি টাইল স্থাপন বোঝায় যাতে রঙের কোনও সংমিশ্রিত অঞ্চলটি আরও টাইল স্থাপনের সাথে চালিয়ে যাওয়া যায় না।
  • যদি বিকল্প স্থান নির্ধারণ সম্ভব হয় তবে এটি অবশ্যই কোনও টাইল স্থাপনের চেয়ে বেছে নিতে হবে যা ভূখণ্ডের একটি অঞ্চলকে বন্ধ করে দেবে।
  • যদি আপনাকে অনেকগুলি ক্লোজিং প্লেসমেন্টের মধ্যে চয়ন করতে হয় তবে যে কোনও একটি বেছে নিন। যদি আপনাকে বেশিরভাগ নন-ক্লোজিং প্লেসমেন্টগুলির মধ্যে চয়ন করতে হয় তবে যে কোনও একটি বেছে নিন।
  • সংক্ষিপ্ত অঞ্চলগুলি গণনা করার সময় # ff00ff (কোণার পিক্সেল) উপেক্ষা করুন। বিল্ডিংগুলিকেও উপেক্ষা করুন, রঙের অঞ্চলগুলি ইতিমধ্যে সম্পূর্ণ টাইলের মধ্যে আবদ্ধ lo

ইনপুট

  • ইনপুট দুটি চিত্র:

    1. খেলার অঞ্চল।

      • প্রাথমিক খেলার ক্ষেত্রটি টাইল #11(একক টাইল) নিয়ে গঠিত ।
      • আউটপুট হিসাবে তৈরি অগমেন্টেড প্লে এরিও ইনপুট হিসাবে সমর্থন করা আবশ্যক।
    2. টাইল স্থাপন করা হবে।

      • উদাহরণস্বরূপ সমস্ত টাইলস অবশ্যই ইনপুট হিসাবে সমর্থন করবে।
  • একা এই চিত্রের ডেটা ব্যবহার করে মিলে যাওয়া প্রান্তগুলি / স্থল অঞ্চল নির্ধারণ করুন। কোনও হার্ডকোডিং নেই।

আউটপুট

  • আউটপুটটি এমন একটি চিত্র যা টাইল স্থাপনের পরে ফলাফল খেলার ক্ষেত্রটি দেখায় showing
  • চিত্রটি অবশ্যই আপনার নিজের প্রোগ্রামের সাথে সামঞ্জস্যপূর্ণ হতে হবে, অর্থাত এটি প্লে এরিয়া ইনপুট হিসাবে ব্যবহার করা যেতে পারে।
  • যদি টাইল স্থাপন করা অসম্ভব হয় তবে একটি ত্রুটি ফিরে করুন।

আপনি ধরে নিতে পারেন

  • টাইলস সর্বদা 55 পিক্স বাই 55 পিক্সে থাকে
  • টাইলস কেবল উদাহরণস্বরূপ টাইলগুলিতে ব্যবহৃত রঙগুলি কেবল প্রদর্শন করবে।

নোট

  • আপনার উত্তরে অবশ্যই কমপক্ষে 2 পাসের পরে উদাহরণস্বরূপ আউটপুট বৈশিষ্ট্যযুক্ত করা হবে (আরও উত্সাহিত করা হবে)।
  • এটি আসল বোর্ড গেমের একটি আংশিক এবং ভুল রেন্ডারিং, এখানে আপনাকে উল্লিখিত না হওয়া কোনও নিয়ম বা কৌশল প্রয়োগ করার দরকার নেই।

স্কোর

  • আপনার স্কোরটি আপনার জমা দেওয়ার বাইট গণনা।
  • চিত্রের ডেটা আপনার স্কোরের অন্তর্ভুক্ত নয়।
  • সর্বনিম্ন স্কোর জয়।


একটি পূর্ণ গেম খেলছে

আপনি একটি স্ক্রিপ্ট লিখতে ইচ্ছুক হতে পারেন যা একটি সম্পূর্ণ গেম খেলতে আপনার সাবমিসন ব্যবহার করে, যা এতে থাকতে পারে:

  • 85 এর পূর্ণ সেট থেকে সিডোরডমোমলি পছন্দ করে একটি টাইল স্থাপন করা।
  • টাইলটি স্থাপন না করা হলে সেটটিতে ফিরছেন।
  • প্রতিটি টাইল স্থাপন করা না হওয়া পর্যন্ত - বা এক সারি দুটি টাইল স্থাপন করা যাবে না ততক্ষণ পুনরাবৃত্তি করা।

এটি আপনার বাইট গণনায় অন্তর্ভুক্ত করা হবে না বা আপনার স্কোরটি উন্নত হবে না তবে আমি সম্ভবত এই জাতীয় উত্তরের জন্য একটি অনুদানের প্রস্তাব করব।


1
12, 15 এবং 17 এর মধ্যে পার্থক্য কী?
কেইন

এটি ধরার জন্য ধন্যবাদ, 17 একটি নকল ছিল। তবে 15 এর পার্থক্য রয়েছে কারণ এটি ভূখণ্ডের কোনও অঞ্চলকে সম্ভাব্যভাবে বন্ধ করতে পারে। (বিটিডব্লু, শুধুমাত্র পিক্সেলের কোণগুলি স্পর্শ করলে রঙের অঞ্চলগুলি
সুসংগত নয়

সুতরাং একটি 15 এবং দুটি 2s 2 টি আকারের আলাদা আলাদা কালো বিভাগ তৈরি করতে পারে যখন এক 12 এবং 2 2 টি একটি কালো বিভাগ তৈরি করতে পারে যা পরিবর্তে 3 বড়। ঠিক আছে.
কেইন

2
১. যদি আপনি কোনও অঞ্চলের রঙ পরিবর্তন করতে এমএস পেইন্ট ভরাট বালতি সরঞ্জামটি ব্যবহার করতে পারেন তবে এটি একটি স্বচ্ছল অঞ্চল। আপনার উদাহরণে 7 টি স্বচ্ছল অঞ্চল থাকবে। 2. যে যুক্তিসঙ্গত মনে হয়। যতক্ষণ আপনি নির্দিষ্ট হিসাবে দুটি চিত্র ব্যবহার করেন আপনি এটি করতে পারেন তবে আপনি চান। ৩. আপনি যেভাবে চান ফাঁকা স্থান চিত্রিত করতে পারেন। স্বচ্ছতা একটি ভাল বিকল্প। উদাহরণস্বরূপ টাইলসগুলিতে বৈশিষ্ট্যযুক্ত না এমন কোনও রঙ আপনি ব্যবহার করতে পারেন।
জেএস

1
@ होस्চ 250 খেলার ক্ষেত্রটি অসীম (প্রয়োজনীয় হিসাবে প্রসারিত)। খেলার উপর শুধুমাত্র প্রথম টালি দিয়ে, প্রথম টালি হয় পুরো খেলার এলাকা।
jlahd

উত্তর:


8

পার্লম্যাগিকের সাথে পার্ল 5: 875 789 763

আমি শুরু হওয়া লাইনটি গণনা করি নি sub w, যা কমপ্যাক্ট সমাধানগুলি (এখন সঠিকভাবে কাজ করছে) পছন্দ করার জন্য কেন্দ্রের দূরত্বে অবস্থানগুলি সাজানোর জন্য ব্যবহৃত হয়। এই সংস্করণে অনুরোধের মতো সমাপ্তি এড়ানো যায় তবে আমি তার বিপরীতে আরও আকর্ষণীয় এবং খেলাটির সাথে সত্য পাই। লাইনটি পরিবর্তন করতে এটি অর্জন $s=$t if!grep...করতে $s=$t if grep...

use Image::Magick;
sub p{/x/;@o=$r->GetPixel(y=>$'+pop,x,$`+pop);"@o"}
sub o{$w=&p;"0 0 0"eq$w?3:&p eq$w}
sub f{$r->FloodfillPaint(y=>$J+$',x,$I+$&,channel,All,fill,@_)}
($i=Image::Magick->new)->Read(@ARGV);$r=$b=$i->[0];
$h=$b->Get(rows)+112;$:=$b->Get(width)+112;
$b->Extent(geometry,"$:x$h-56-56",background,none);
@v=grep p()eq"0 0 0",map{map-54+55*$_.x.($'*55-54),//..$:/55}1..$h/55;
sub w{$_=pop;/x/;abs($:-2*$`)+abs($h-2*$')}@v=sort{w($b)<=>w($a)}@v;
map{map{/x/;$I=$`;$J=$';$r=$b->Clone();
($t=$r)->Composite(image,$i->[1],x,$I,y=>$J);
if((o(27,0,27,-1)&o(0,27,-1,27)&o(27,54,27,55)&o(54,27,55,27))==1){
$s=$t if!grep{/../;$r=$t->Clone();f(none);f(red);
!grep{p()eq"1 0 0"}@v}
map{/..$/;($_,$&.$`)}map{($_.-1,$_.55)}10,27,45;
$o=$r=$t;}$i->[1]->Rotate(degrees,90)}($_)x4}@v;
$s||=$o or exit 1;$s->Trim();$s->Write("car.png")

ব্যবহার: perl car.pl board.png tile.png। ফলাফল সংরক্ষণ করা হয়েছে car.png। টাইল স্থাপন করা না গেলে প্রস্থান স্থিতি 1 is

সম্পূর্ণ গেমটি চালানোর স্ক্রিপ্ট। এটি ধরে নিয়েছে যে উপরের কোডটি ফাইলে রয়েছে car.plএবং টাইলগুলি tilesডিরেক্টরিতে ডিরেক্টরিতে সংরক্ষণ করা 01.pngহয়েছে 25.png

use List::Util shuffle;$x='00';
@t=shuffle map{($x++)x$_}split'',a4582941333353325523152111;
`cp tiles/11.png car.png`;
$i++,`perl car.pl car.png tiles/$_.png`,print"placed $i\n"for@t

এটি এখন বেশ ধীরে ধীরে চলে। আমার মেশিনে 8-12 মিনিট। ক্লোজিং পছন্দ সহ: সমাপ্তির উদাহরণ পছন্দ করুন ক্লোজিং এড়ানো সহ (নোট কোনও কিছুই বন্ধ নয়)।


অঞ্চলটি কাছাকাছি পরীক্ষাটি সঠিকভাবে কাজ করছে না বলে মনে হচ্ছে । (0,1) এ শহর-সহ-রাস্তা-কোণার টাইলটি ছিল সর্বশেষ স্থানটি।
jlahd

@ জ্লাহাদ আপনি ঠিক বলেছেন পরীক্ষার জন্য আমি শর্তটি বিপরীত করেছিলাম কারণ কোনও অঞ্চলকে বন্ধ না করা খুব সহজ (এগুলি বন্ধ করার জন্য এটি আসল খেলায় আরও ভাল কৌশল)। তবে এখন আমি নিশ্চিত নই যে এই বিপরীত অবস্থা এমনকি সঠিকভাবে কাজ করে কিনা। আমি আজ এটি ঠিক করব।
নটকি

@ জ্লাহাদ স্থির, লক্ষ্য করার জন্য ধন্যবাদ। বিটিডব্লিউর পরে বিপরীত অবস্থা ঠিক ছিল।
নটকি

15

কমন লিস্প, 2650 2221 1992 1186 1111 বাইট

আপডেট: "ইজি" গল্ফিং এখন সম্পন্ন হয়েছে, আরও লাভের জন্য বড় পরিবর্তনগুলির প্রয়োজন হবে।

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

আপডেট 3: বড় বাইট গণনা লাভের জন্য গৌণ ইন্টারফেস পরিবর্তন।

আমি পাশাপাশি একটি সাধারণ ওয়েব ইউআই তৈরি করেছি। সম্পূর্ণ প্যাকেজ (একক LISP ফাইল এবং টাইল চিত্র) এখানে ডাউনলোড করা যায় । এটা চেষ্টা করতে, ইনস্টল hunchentoot, zpngএবং png-readquiclisp মধ্যে চাহিদার সঙ্গে carcassonne.lisp, এবং সাথে সংযোগ localhost:8080। কোডটি সিসিএল / উইন্ডোজ এবং এসবিসিএল / লিনাক্সে পরীক্ষা করা হয়েছে। উল্লিখিত গ্রন্থাগারগুলি কেবলমাত্র ইউআই / সিমুলেটর অংশের জন্য প্রয়োজন; সমাধানটি নিজেই সরল এএনএসআই কমন লিস্প।

(defun c(f p &aux b a s z(c 55))
  (macrolet((d(v l &body b)`(dotimes(,v,l),@b))
            (b(b c)`(d i c(d j c(setf,b,c))))
            (r(&rest p)`(aref,@p))
            (n(u v i j)`(and(setf l(*(f,u,v)l))
                            (find(r f(+,u,i)(+,v,j))`(0,(r f,u,v))))))
    (labels((p(p w)(d y(ceiling w 2)(d x(- w y y)(rotatef(r p y #6=(+ x y))(r p #6##7=(- w y))(r p #7##8=(- w x y))(r p #8#y)))))
            (a(y x)(or(if(= 0(r f y x))1 #4=(and(= 1(incf(r s y x)))(=(r f y x)z)(push`(,y,x)a)0))0))
            (f(y x)(setf z(r f y x))(if #4#(loop for((y x))= a while(pop a)maximize(+(a(1- y)x)(a y(1- x))(a(1+ y)x)(a y(1+ x))))1)))
      (d i 8(when(d x #1=(array-dimension f 0)(or(= 0(r f(- #1#52 i)x))(return t)))(setf f(adjust-array f`(#2=,(+ #1#c)#2#))))(p f(1- #1#)))
      (d i 4(d u #9=(/ #1#c)(d v #9#
        (let((y(* u c))(x(* v c))(l 9e9))
          (when(= 0(r f y x))
            (b #10=(r f(+ y i)(+ x j))(r p i j))
            (setf s(make-array`(,#1#,#1#))a())
            (ignore-errors(if(> #11=(*(loop for d from 1 to 53
                                            sum(+(n y #3=(+ x d)-1 0)(n #5=(+ y d)(+ 54 x)0 1)(n(+ 54 y)#3#1 0)(n #5#x 0 -1)))
                                      (1+ l))
                                (or(car b)0))
                             (setf b`(,#11#,i,y,x))))
            (b #10#0)))))
         (p p 54))
      (when b(d j(cadr b)(p p 54))(b(r f(+(third b)i)(+(nth 3 b)j))(r p i j)))
      `(,f,b))))

সমস্ত লাইন ফিড এবং লাইন-আরম্ভের ব্যবধান কেবল প্রসাধনীগুলির জন্য, সুগম্যতা নিশ্চিত করতে এবং মোট যোগফলকে গণনা করা হয় না।

আপনি ফাংশন কল করা উচিত c দুটি দিয়ে : বর্তমান খেলার ক্ষেত্র এবং স্থানটি টাইল। উভয়ই 2 ডি অ্যারে হওয়া উচিত; টাইল 55x55 এবং ক্ষেত্রটি এর একাধিক। অতিরিক্তভাবে, ক্ষেত্রের অ্যারেটি নিয়মিত হতে হবে be ফাংশনটি প্রথম যুক্তি হিসাবে নতুন ক্ষেত্রের সাথে একটি দ্বি-উপাদান তালিকা প্রদান করে। দ্বিতীয় উপাদানটি হ'ল NILযদি টাইলটি স্থাপন করা না যায়, বা অন্যথায় শীর্ষ বাম স্থানাঙ্ক এবং সেই অ্যারেতে সর্বশেষ টাইলের ঘোরানো এবং সেই টাইলের জন্য স্কোর যুক্ত একটি তালিকা। এই তথ্যটি ভিজ্যুয়ালাইজেশন উদ্দেশ্যে ব্যবহার করা যেতে পারে।

নোট করুন যে পরবর্তী কলগুলিতে, আপনাকে অবশ্যই নতুন ক্ষেত্রটি ব্যবহার করতে হবে cযদি দ্বিতীয় তালিকার উপাদানটি হয় NIL(মূল অ্যারেটি হতে পারেadjust-array সম্পাদিত এবং অবৈধভাবে বাতিল হয়ে )।

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

সমস্ত 85 টাইলের জন্য দৌড় উদাহরণ:

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

ওয়েব ইউআই স্ক্রিনশট:

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


বর্তমানের আয়তক্ষেত্রের মধ্যে স্থান নির্ধারণকে পছন্দ করা ভাল ধারণা। আমি লক্ষ্য করছিলাম যে আপনি যদি সহজ রুটটি নেন তবে এটি সর্পযুক্ত হয়ে থাকে।
BMac

বিজয়ী স্কোর নয়, তবে আপনি কয়েকটি দুর্দান্ত উদ্ভাবনের জন্য অনুগ্রহ পাবেন।
jsh

9

ডার্কবাসিক প্রো: 2078 1932 1744 বাইট

আপডেট: আরও বেশি গল্ফ করার প্রচেষ্টা

আপডেট: এখন বন্ধ-না-করা পছন্দগুলি পছন্দ করা সহ, পুরোপুরি খ্যাতি পূরণ করে।

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

আমি ডার্কবাসিক সংকলক ( উইন্ডোজ ) নেই এমন ব্যক্তির জন্য একটি EXE আপলোড করেছি ।

নমুনা আউটপুট

#constant m memblock
#constant f function
#constant k endfunction
#constant z exitfunction
#constant i image
#constant e endif
#constant t then
#constant o or
#constant s paste image
#constant n next
#constant r for
set i colorkey 0,20,0:load i "map.png",1:f$="next.png"
if file exist(f$)=0 t f$=str$(rnd(24)+1)+".png"
load i f$,2:make m from i 1,1:make m from i 2,2
global ts,h,j,u,v,td
ts=i width(2):h=i width(1):j=i height(1):u=h/ts:v=j/ts:td=ts*2
create bitmap 2,h+td+1,j+td+1:r b=1 to 4:r xx=0 to u+1:r yy=0 to v+1:x=xx*ts-1:y=yy*ts-1
cls 5120:s 1,ts,ts,1:if (a(x+1,y) o a(x,y+1) o a(x-ts,y) o a(x,y-ts)) and a(x,y)=0
x1=ts*xx:y1=ts*yy:make i from m 2,2:s 2,x1,y1,1
cl=0:r fd=0 to 1:r x2=1 to ts-2:r yt=0 to 1:y2=yt*ts-yt:y3=yt*ts+yt-1
aa=x2:ab=x2:ba=y2:bb=y3:t2=y1:r t3=0 to 1:p=point(x1+aa,y1+ba):q=point(x1+ab,y1+bb)
if p<>q and rgbg(q)<>20 and t2+b>0 t goto fa
if fd and p<>0xFF0000
if l(x1+aa,y1+ba,p)=0 t cl=1
e
aa=y2:ba=x2:bb=x2:ab=y3:t2=x1:n t3:n yt:n x2:n fd:dn=1:c=xx-1:g=yy-1:make i from m 3,2:if cl=0 t goto dm
e
fa:
n y:n x
d=ts/2:r x=0 to d:r y=0 to d-1:vx=ts-1-x:vy=ts-1-y:t1=rd(x,y):t2=rd(vy,x):wr(vy,x,t1):t1=rd(vx,vy):wr(vx,vy,t2):t2=rd(y,vx):wr(y,vx,t1):wr(x,y,t2):n x:n y:n b
dm:
if dn=0 t report error "Not placed"
p=c<0:q=g<0:t1=h+ts*(p o c>=u):t2=j+ts*(q o g>=v):cls 5120:p=ts*p:q=ts*q:s 1,p,q,1:s 3,c*ts+p,g*ts+q,1:get i 1,0,0,t1,t2,1:save i "map.png",1
end
f l(x,y,w)
if x<0 o y<0 o x>=h+td o y>=j+td t z 1
p=point(x,y)
if rgbg(p)=20 t z 1
if p<>w t z 0
dot x,y,0xFF0000:rt=l(x+1,y,p) o l(x-1,y,p) o l(x,y+1,p) o l(x,y-1,p)
k rt
f rd(x,y)
w=m dword(2,0):b=m dword(2,12+(y*w+x)*4)
k b
f wr(x,y,d)
w=m dword(2,0):write m dword 2,12+(y*w+x)*4,d
k
f a(x,y)
if x<0 o y<0 o x>=h o y>=j t z 0
b=m byte(1,15+(y*h+x)*4)
k b
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.