টুর্নামেন্ট বিন্যাস প্রতিশব্দ


17

আমি আজকের সমস্তটি একটি সুপার স্ম্যাশ ব্রোস টুর্নামেন্টে কাটিয়েছি এবং সেটগুলি বর্ণনা করার সময় আমরা কয়েকটি পরিভাষা ব্যবহার করেছি। এই তিন ধরণের সেট যা আমি টুর্নামেন্টে খেলতে দেখি:

  • সেরা 3 (Bo3)
    • তিনটি গেম খেলেছে। সেটের বিজয়ী হলেন সেই খেলোয়াড় যিনি বেশিরভাগ গেম জিতেছেন।
    • যদি কোনও খেলোয়াড় সেটের দুটি গেম জিততে পারে তবে তাৎক্ষণিকভাবে তাদের বিজয়ী হিসাবে ঘোষণা করা হবে, কারণ প্রতিপক্ষের পক্ষে ধরা অসম্ভব হবে।
  • সেরা 5 (Bo5)
    • পাঁচটি খেলা খেলেছে। সেটের বিজয়ী হলেন সেই খেলোয়াড় যিনি বেশিরভাগ গেম জিতেছেন।
    • যদি কোনও খেলোয়াড় সেটের তিনটি গেম জিততে পারে তবে তাৎক্ষণিকভাবে তাদের বিজয়ী হিসাবে ঘোষণা করা হবে, কারণ প্রতিপক্ষের পক্ষে এটি ধরা অসম্ভব হবে।
  • প্রথম থেকে 5 (ফিট 5)
    • ঠিক আছে, আমি আমার কথার আগে কিছুটা প্রতারণা করেছি। এই ধরণের সেট অংশ নয় কোনও টুর্নামেন্টের , তবে আপনি প্রায়শই এগুলি ঘটনাস্থলে ঘটতে দেখবেন। আপনি যদি অন্য খেলোয়াড়কে চ্যালেঞ্জ জানাতে থাকেন এবং টাকা যদি লাইনে থাকে তবে এটি traditionতিহ্যগতভাবে আপনি সেট খেলেন।
    • এটি যতটা শোনাচ্ছে ততই সহজ: খেলোয়াড়রা বারবার গেম খেলেন যতক্ষণ না তাদের একজন পাঁচটি জিতেছে এবং সেই খেলোয়াড়কে বিজয়ী হিসাবে ঘোষণা করা হয়।

স্পষ্টতই, Bo3 এবং Bo5 খুব একই রকম, কেবল খেলে যাওয়া খেলাগুলির সংখ্যায় ভিন্ন। তবে ফিট 5 স্পষ্টভাবে আলাদা ... তাই না? আসলে তা না! কোনও Bo3 সেট কীভাবে নিচে নেমে আসুক না কেন, বিজয়ী ঠিক দুটি গেম জিতবে won একটি Bo5 সেট বিজয়ী ঠিক 3 গেম জিততে হবে। তাদেরকে কেন Ft2, বা Ft3 কল করবেন না? বিপরীতে প্রয়োগ করা একই যুক্তিটি দেখায় যে ফিট 5 বো 9 এর মতোই।

এই চ্যালেঞ্জের উদ্দেশ্য একটি সেট বিন্যাসের প্রতিশব্দ নির্ধারণ করা।

সবিস্তার বিবরণী

আপনার প্রোগ্রাম বা ফাংশন ইনপুট থেকে একক স্ট্রিং নেবে । প্রথম দুটি অক্ষর হবে Boবা Ft, এবং তারা একটি সংখ্যা দ্বারা অনুসরণ করা হবে। প্রোগ্রাম / ফাংশনটি একটি স্ট্রিংকে বিপরীত উপসর্গ এবং এমন একটি সংখ্যার সাথে আউটপুট দেবে যে ইনপুট এবং আউটপুট স্ট্রিং একই জিনিসকে বোঝায়।

যে কোনও স্ট্রিং দিয়ে শুরু করে Boবিজোড় সংখ্যায় শেষ হবে।

আপনি ধরে নিতে পারেন যে ইনপুট স্ট্রিংয়ের সংখ্যাটি কখনই 200 এর বেশি হবে না You আপনি এটিও ধরে নিতে পারেন যে আপনি কখনই ইনপুট পাবেন না যার জন্য সঠিক আউটপুট 200 এর চেয়ে বেশি সংখ্যক অন্তর্ভুক্ত করবে Like একইভাবে, ইনপুট এবং সঠিক আউটপুট সংখ্যা সর্বদা থাকবে 0 এর চেয়ে বড় হতে হবে।

উদাহরণ

Bo3 -> Ft2
Ft2 -> Bo3

Bo5 -> Ft3
Ft3 -> Bo5

Bo9 -> Ft5
Ft5 -> Bo9

Bo51 -> Ft26
Ft26 -> Bo51

Bo199 -> Ft100
Ft100 -> Bo199

2
কোড গল্ফ এবং melee? আমরা বন্ধু হতে পারে! আপনি যদি নিকৃষ্ট এসএসবি
আকস


frikin meleetists ...
মনিকা

1
@aks। প্রকল্প এম এর সাথে কোনও ভুল নেই ((
সিলান

1
আইনীভাবে কথা বলা বাদে আরআইপি
আন্ডারগ্রাউন্ডোমোরিয়েল

উত্তর:


10

পাইথ, 23 বাইট

@,/hKsttz2tyKCp-"BoFt"z

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

কিভাবে এটা কাজ করে:

প্রথমত, এটি Boবা Ft, প্রোগ্রাম আউট থেকে ইনপুট অক্ষর ফিল্টার BoFtসঙ্গে,-"BoFt"z

এটি সঙ্গে সঙ্গে মুদ্রিত হয় ppএছাড়াও তার ইনপুট ফেরত। এই স্ট্রিংটি বাইটগুলি 256 বেস হিসাবে ব্যাখ্যা করে এমন একটি সংখ্যায় রূপান্তরিত হয় the স্ট্রিংটি থাকলে ফলাফল 17007 হয় এবং স্ট্রিংটি Bo18036 হয় stringFt

এর পরে, এটি উভয় সম্ভাব্য ফলাফল গণনা করে num * 2 - 1এবং এটি (num + 1)/22 এন্ট্রি তালিকায় রাখে। তারপরে, উপরের সংখ্যাটি সহ 17007 বা 18036 তে প্রোগ্রাম সূচকগুলি Py পাইথের মডুলার সূচকের কারণে এটি যথাযথ সংখ্যাটি নির্বাচন করে। ফলাফলটি স্বয়ংক্রিয়ভাবে মুদ্রিত হয়।

যেহেতু pকোনও প্রচ্ছন্ন নিউলাইন সহ প্রিন্টস নেই, তবে অন্তর্নিহিত মুদ্রণের পিছনে নতুন লাইনের উপস্থিতি রয়েছে, তাই পর পর দুটি প্রিন্ট ঠিক সঠিক বিন্যাসে প্রকাশিত হয়।


13

পাইথন 2, 59

lambda s:'FBto'[s>'C'::2]+`eval(s[2:]+'/*22+-11'[s>'C'::2])`

সংক্ষিপ্ত চ্যালেঞ্জগুলিতে যেখানে ফাংশনগুলির অনুমতি দেওয়া হয়, lambdaসাধারণত ভেরিয়েবলগুলি বরাদ্দ করতে অক্ষমতার কারণে কোডটি নিজেকে পুনরাবৃত্তি করতে হয় এমন সময় সাধারণত তার সংক্ষিপ্ততা জিতে যায়।

স্ট্রিং তুলনা করে আমরা কোন ক্ষেত্রে রয়েছি তা পরীক্ষা করে দেখি s>'C'। তারপরে, তালিকা স্লাইসিং ট্রিকের সাথে সঠিক উপসর্গ পান 'FBto'[s>'C'::2]

নম্বর পেতে, আমাদের অবশ্যই দ্বিতীয়টির বাইরে বর্ণগুলি মূল্যায়ন করতে হবে এবং হয় *2+1বা /2-1এটি করতে হবে। আমরা স্ট্রিং হিসাবে two দুটি এক্সপ্রেশনগুলির মধ্যে দুটিতে ট্যাকিং করে এটি আবার তালিকাটি কাটা, ফলাফলকে মূল্যায়ন করে এবং সেই সংখ্যাটিকে একটি স্ট্রিংয়ে পরিণত করে বেছে নিয়েছি।

সম্পাদনা করুন: সংরক্ষণ করা একটি চর (59):

lambda s:eval("''FBto''++``%%ss/*22+-11``"[s>'C'::2]%s[2:])

এমনকি জিজ্ঞাসা করবেন না ...


2
আপনি ল্যাম্বডাসের ভিতরে ভেরিয়েবল বরাদ্দ করতে পারেন । উদাহরণ: lambda a:(lambda b:b*b)(a+3)। এটি বিশেষত সংক্ষিপ্ত নয়।
orlp

8

সি ++ 11 টেম্পলেট মেটাপ্রোগ্রামিং, 305 বাইট

সম্পাদনা করুন: আরও 100 বাইট বন্ধ রয়েছে

আমার ভাষা পছন্দ করার জন্য কি আমি কোনও ধরণের প্রতিবন্ধকতা পাই? : P

#define C wchar_t
#define T };template<C p
#define L C...l>struct
#define X l...>
C a{T,L I{T,C c,L I<p,c,X:I<10*p+c-'0',X{T>struct I<p>{enum E{v=p};T,L S{T,C c,C d,L G:G<p/10,c,d,p%10+'0',X{T,L G<0,p,X{typedef S<p,X t;T,L F{T,L F<p,'o',X:G<(I<0,X::v+1)/2,'F','t'>{T,L F<p,'t',X:G<I<0,X::v*2-1,'B','o'>{};

উদাহরণ:

#include <type_traits>
static_assert(I<0,'5'>::v == 5, "fail");
static_assert(I<0,'1','0','5'>::v == 105, "fail");
static_assert(I<0,'5','1'>::v == 51, "fail");
static_assert(std::is_same<typename G<5,'B','o'>::t, S<'B','o','5'>>::value, "fail");
static_assert(std::is_same<typename G<51,'F','t'>::t, S<'F','t','5','1'>>::value, "fail");
static_assert(std::is_same<typename F<'B','o','3'>::t, S<'F','t','2'>>::value, "fail");
static_assert(std::is_same<typename F<'F','t','2'>::t, S<'B','o','3'>>::value, "fail");
static_assert(std::is_same<typename F<'B','o','5'>::t, S<'F','t','3'>>::value, "fail");
static_assert(std::is_same<typename F<'F','t','3'>::t, S<'B','o','5'>>::value, "fail");
static_assert(std::is_same<typename F<'B','o','7'>::t, S<'F','t','4'>>::value, "fail");
static_assert(std::is_same<typename F<'F','t','4'>::t, S<'B','o','7'>>::value, "fail");
static_assert(std::is_same<typename F<'B','o','1','1'>::t, S<'F','t','6'>>::value, "fail");
static_assert(std::is_same<typename F<'F','t','6'>::t, S<'B','o','1','1'>>::value, "fail");
static_assert(std::is_same<typename F<'B','o','1','0','5'>::t, S<'F','t','5','3'>>::value, "fail");
static_assert(std::is_same<typename F<'F','t','5','3'>::t, S<'B','o','1','0','5'>>::value, "fail");
static_assert(std::is_same<typename F<'B','o','1','9','5'>::t, S<'F','t','9','8'>>::value, "fail");
static_assert(std::is_same<typename F<'F','t','9','8'>::t, S<'B','o','1','9','5'>>::value, "fail");
int main() {}

6

সিজেম, 29 বাইট

l('B=\1>i"Ft"1$)2/+"Bo"@2*(+?

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

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

ব্যাখ্যা:

l     Get input.
(     Pop off first character.
'B=   Compare with 'B.
\1>   Get rest of input to top of stack, and slice off first character.
i     Convert to integer.
"Ft"  String part of first possible output.
1$    Copy input value to top.
)2/   Increment, and divide by 2.
+     Concatenate with string part.
"Bo"  String part of second possible output.
@     Move input value to top.
2*(   Multiply by 2, and decrement.
+     Concatenate with string part.
?     Ternary to pick one of the two constructed outputs, based on comparison
      of first input character with 'B.


5

জাভাস্ক্রিপ্ট (ES6), 50 47 অক্ষর

খুব সহজ সমাধান: (এক বাইট অপসারণ করার জন্য আন্ডারগ্রাউন্ডমোনোরেলকে ধন্যবাদ!)

x=>(y=x.slice(2),x<'C'?'Ft'+-~y/2:'Bo'+(y*2-1))

Ungolfed:

function(x){
  y = x.slice(2); // everything after the 'Ft' or 'Bo'
  return x<'C' ? 'Ft'+Math.ceil(y/2) : 'Bo'+(y*2-1)
}

একবারের জন্য আমার উত্তরটি ছিল সেরা পাইথ উত্তরের দৈর্ঘ্য মাত্র 2x ডলার!


আমি চ্যাটে এই উল্লিখিত কিন্তু আপনি প্রতিস্থাপন করতে সক্ষম হওয়া উচিত y/2+.5সঙ্গে -~y/2একটি বাইট সংরক্ষণ করুন।
আন্ডারগ্রাউন্ডোমোনাইল

টিপটির জন্য ধন্যবাদ বিটিডাব্লু, আমি এই চ্যালেঞ্জটি পছন্দ করি কারণ বেশিরভাগ চ্যালেঞ্জের তুলনায় এটি সহজ, সুতরাং আমার উত্তরটি স্বাভাবিকের চেয়ে অনেক ছোট।
ইটিএইচ প্রডাকশনগুলি 16:58 এ 12 ই

4

হাস্কেল, 69 বাইট

f('B':_:x)="Ft"++show(div(read x)2+1)
f(_:_:x)="Bo"++show(2*read x-1)

যুক্তিসঙ্গতভাবে সরাসরি-এগিয়ে।


3

পাইথ - 31 বাইট

খুব সহজ, স্যুইচটি পেতে জিপ এবং মডিউলার সূচক ব্যবহার করে। আসল গণনা সত্যিই সহজ।

s@C,Jc"FtBo"2,h/Ksttz2tyKhxJ<z2

টেস্ট স্যুট


3

জুলিয়া, 63 বাইট

x->(y=int(x[3:end]);join([x<"C"?"Ft":"Bo",x<"C"?(y+12:2y-1]))

Ungolfed:

function f(x::String)
    # Extract the number at the end
    y = int(x[3:end])

    # If x is lexographically less than "C", we have
    # "best of," so we need "first to." Otherwise we
    # need "best of."
    if x < "C"
        join(["Ft", (y+12])
    else
        join(["Bo", 2y-1])
    end
end

3

মতলব, 95 বাইট

function f(s)
t='Bo';a=2;b=-1;if s(1)<70
t='Ft';a=.5;b=a;end
[t num2str(str2num(s(3:end))*a+b)]

উদাহরণ:

>> f('Ft5')
ans =
Bo9
>> f('Bo51')
ans =
Ft26

3

পাওয়ারশেল, 111

পাওয়ারশেল এবং প্রয়োজনীয় বন্ধনীগুলির শব্দগঠন আবার এর পতন। এমনকি .Substring(0,2)টু গল্ফিংয়ে [0..1]-join''কেবল 2 টি বাইট সাশ্রয় হয় এবং অন্য একটি দম্পতি বাইট কমান্ডের Elseজন্য অন্তর্নিহিত ধন্যবাদ দিয়ে সংরক্ষণ করে exit। আচ্ছা ভালো. পৃথক স্ট্রিং উপর ভাল রিফ্রেশার।

কোড:

$b=($a=$args[0])[0..1]-join'';$c=+($a[2..($a.Length-1)]-join'');if($b-eq"Bo"){"Ft"+($c+1)/2;exit};"Bo"+(2*$c-1)

ব্যবহার:

PS C:\Scripts\Golfing> .\ssb_tourney.ps1 Bo199
Ft100

ব্যাখ্যা

$b=($a=$args[0])[0..1]-join''      # Take in the command-line argument as $a, recast as
                                   # array, suck out the first two characters, save as $b
$c=+($a[2..($a.Length-1)]-join'')  # Do a similar trick with the right-hand side of $a,
                                   # re-cast it as an integer with the +
if($b-eq"Bo"){                     # If the first letters are "Bo"
    "Ft"+($c+1)/2                  # Implied write of the answer
    exit
}
"Bo"+(2*$c-1)                      # Implied write of the other answer, only reached if
                                   # the input is "Ft", else we would have hit the exit

3

পার্ল 5, 38 বাইট (37 + 1 এর জন্য -p)

$_=/Bo/?Ft.(.5+$'/2):Bo.(2*s/Ft//r-1)

ব্যবহার : 54768.pl হিসাবে সংরক্ষণ করুন এবং এটি চালান:

perl -p 54768.pl <<< 'Bo3'
# Ft2

বা ইন্টারেক্টিভভাবে:

perl -p 54768.pl
Bo199
# Ft100

-pবোঝা -n। আপনার দুজনের দরকার নেই।
ডেনিস

@ ডেনিস, সত্যিই আমি না! ধন্যবাদ!
ডম হেস্টিংস

3

এফশার্প - 153 143 বাইট

let t(s:string)=
 let c=s.[2..]|>Seq.map string|>Seq.reduce(+)|>float
 if s.[0]='B'then sprintf"Ft%.0f"(ceil(c/2.)) else sprintf"Bo%.0f"(c*2.-1.)

আপডেট

  1. প্যাটার্ন মিল থেকে সরলটিতে স্যুইচ করে কয়েক বাইট ছিটকে গেল if ... then ...

3

রুবি, 82 বাইট

x=$*[0]
y=x.match(/..(\d*)/)[1].to_i
x=~/Bo/?(puts"Ft#{y/2+1}"):(puts"Bo#{y*2-1}")

কয়েকটা বাইট ছুঁড়ে মারতে যুক্তি দিয়ে ডাকা।
প্রথম পোস্ট, পরামর্শ স্বাগত। :)

সম্পাদনা: আমার গণিত পরিবর্তন করে 12 বাইট ছাড়ানো হয়েছে। যেহেতু বো সংখ্যাগুলি বিজোড় তাই এগুলি সর্বদা 2 দ্বারা বিভক্ত হওয়ার পরে দশমিক থাকবে, যার অর্থ আমি কেবল কাটাতে পারি এবং 1 টি যোগ করার পরিবর্তে যোগ ceilকরতে পারি।


পরে স্থানটি সরিয়ে আপনি দুটি বাইট সংরক্ষণ করতে পারেন puts
ProgramFOX

@ প্রোগ্রামআফক্স জানেন না আমি কীভাবে এগুলি মিস করেছি, ধন্যবাদ। এছাড়াও, আমি কোনওভাবে সম্পাদনাগুলিতে গোলমাল করতে পেরেছি তবে আমি মনে করি এটি এখন ঠিক হয়ে গেছে, হাহা।
HuggableSquare

আমরা একই সময়ে পোস্টটি সম্পাদনা করছি, যা সম্পাদনার দ্বন্দ্ব সৃষ্টি করেছিল। আপনি পরে জমা দেওয়ার কারণে, আপনার সম্পাদনাটি আমার উপরে ওভাররোট করে। আমি জানি, সম্পাদনা বিবাদগুলি কিছুটা জটিল: পি
প্রোগ্রামএফক্স 2

3

পিএইচপি, 85 79 75 বাইট

<?php
$f=$argv[1];$s=substr($f,2);echo strpos($f,Bo)===0?Ft.($s+1)/2:Bo.($s*2-1);


ব্যবহার:
স্ক্রিপ্টটিকে একটি যুক্তি সহ কল ​​করুন:php -d error_reporting=0 script.php Bo5


3

অন্যের মতো হাস্যকরভাবে সংক্ষিপ্ত নয়, তবে এটি আমার প্রথম পোস্ট:

জেএস, 143 বাইট

f=prompt("","");n=parseInt(f.match(/\d{1,}/));s=0;r=0;if(f.match(/B/)){r=(n+1)/2;s="Ft"+r;}if(f.match(/F/)){r=n*2-1;s="Bo"+r;}alert(f+" : "+s);

অবরুদ্ধ সংস্করণ:

var f = prompt("", "");
var n = parseInt(f.match(/\d{1,}/));
var s = 0;
var r = 0;

if (f.match(/B/)) {
  r = (n + 1)/ 2;
  s = "Ft"+r;
 }
if (f.match(/F/)) {
  r = n * 2 - 1;
  s = "Bo"+r;
 }
alert(f+" : "+s);

7
প্রোগ্রামিং ধাঁধা এবং কোড গল্ফ স্বাগতম! আপনার কোডটি যথেষ্ট সংক্ষিপ্ত করার কয়েকটি উপায় রয়েছে, সুতরাং এখানে কয়েকটি দেওয়া হল। 1) জাভাস্ক্রিপ্টের প্রায় সমস্ত শ্বেতস্পেস অপ্রয়োজনীয়, 2) আপনার varকীওয়ার্ডের প্রয়োজন নেই , এবং 3) বিবৃতিগুলি একটি সেমিকোলন বা একটি নতুন লাইন দিয়ে আলাদা করা যেতে পারে, সুতরাং আপনার উভয়ের প্রয়োজন নেই। আরও সাধারণ টিপসের জন্য জাভাস্ক্রিপ্টে গল্ফ করার টিপসটি দেখুন ।
নিনজাবিয়ারমোনকি

2

আর, 144 বাইট

কোড-গল্ফিং, আর এবং এই সাইটে নতুন। সুতরাং এখানে যায়:

a=function(){n=readline();z="Bo";p=(as.numeric(gsub("[^0-9]","",n)));if(grepl(z,n)==TRUE){x="Ft";b=(p+1)/2}else{x="Bo";b=p*2-1};cat(x);cat(b)}

আমি আর জানি না তবে আমি শর্ত করি আপনি সাদা স্থান থেকে মুক্তি পেতে পারেন।
আন্ডারগ্রাউন্ডোমোনাইল

আপনি সত্যই ঠিক করেছেন, আর সত্যিই হোয়াইটস্পেস ব্যবহার করে না। আমি স্রেফ এটি লিখেছিলাম যে এটি সাদা = = সাদা বাক্স ছাড়াই ফাইলের আকারটি দেখতে 142 বাইটের চেয়ে ভাল লাগবে, আমি নিশ্চিত নই যে কোন নম্বরটি রাখব যাতে আমি এই কোডটি ফিট করতে পারি তার মধ্যে আমি সর্বনিম্ন একটি রাখি।
একটি নরম বালিশ

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

1

সি #, 110 বাইট

string f(string s){var b=s[0]=='B';var o=s.Remove(0,2);int i=int.Parse(o)/2;return b?"Ft"+(i+1):"Bo"+(4*i-1);}

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