হ্যাঁর জন্য দোভাষী করুন!


10

হ্যাঁ একটি স্ট্যাক-ভিত্তিক ভাষা যাতে কয়েকটি স্থান-বিভাজনিত নির্দেশাবলী রয়েছে:

yes: Push 1 to the stack
no: Push 0 to the stack
what: Push the input to the stack (input is taken at the start of program execution and is the same for the whole execution)
sure: Increment the last item in the stack
nah: Decrement the last item in the stack
really: If the last stack item is a number, replace it with its Unicode character. If it is a letter, replace it with its Unicode char code.
oh: convert the stack to strings and concatenate it, and push that to the stack.
nope: remove the first stack item
yep: remove the last stack item

স্ট্যাকের শেষ উপাদানটি সর্বদা প্রোগ্রামের শেষে প্রদর্শিত হয়। সমস্ত অ-অক্ষরীয় এবং অ-স্থানের অক্ষর উপেক্ষা করা হয়। সমস্ত কোড ছোট হাতের অক্ষর। প্রোগ্রামসমূহ উদাহরণ:

yes sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure really 
yes sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure really 
yes sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure really 
yes sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure really 
yes sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure really 
yes sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure really 
yes sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure really 
yes sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure really 
yes sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure really 
yes sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure really 
yes sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure really 
yes sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure really 
yes sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure really 
oh

কপি করে প্রিন্ট Hello, World!

what

ইনপুট মুদ্রণ ( catপ্রোগ্রাম।)

no nah

কপি করে প্রিন্ট -1

no really

NULঅক্ষর মুদ্রণ ( U+0000)

what 
yes sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure sure really 
oh

ইনপুট এবং একটি আন্ডারস্কোর মুদ্রণ করে।

yes no nope

কপি করে প্রিন্ট 0

yes no yep

কপি করে প্রিন্ট 1

আপনার অবশ্যই দু'দ্বিককে যথাসম্ভব কয়েকটি বাইটে লিখতে হবে। এখানে একটি জেএস বাস্তবায়ন (ভাল গল্ফড নয়!):

function yes(code, input){
	var stack = [];
	var functions = {
		"yes": "stack.push(1)",
		"no": "stack.push(0)",
		"what": "stack.push(input)",
		"sure": "stack[stack.length - 1] ++",
		"nah": "stack[stack.length - 1] --",
		"really": "stack[stack.length - 1] = (typeof lastItem === 'number' ? String.fromCharCode(lastItem) : lastItem.charCodeAt())",
		"oh": "stack.push(stack.reduce((x, y)=>''+x+y))",
		"nope": "stack.shift()",
		"yep": "stack.pop()"
	};
	code.replace(/[^a-z ]/g, "").split(" ").map(x=>(lastItem = stack[stack.length - 1],eval(functions[x])));
	return stack[stack.length - 1];
}
textarea{
  display: block;
}
Code: <textarea id = "code"></textarea>
Input: <textarea id = "input"></textarea>
<button onclick = "output.value = yes(code.value, input.value)">Run</button>
<textarea id = "output"></textarea>

আরও দেখুন আমার জাতীয় উত্তর নিচে।

আপনি ধরে নিতে পারেন যে জড়িত সমস্ত পূর্ণসংখ্যা 126 এর চেয়ে কম বা তার সমান reallyহবে, এটি স্ট্যাকের শীর্ষে মাল্টি-চার স্ট্রিং দিয়ে কখনই চালানো হবে না এবং স্ট্যাকটি কখনই 100 টি উপাদানের বেশি হবে না।

এজ মামলা

  • yes yes ohকপি করে প্রিন্ট 11
  • ইনপুট কোনও স্ট্রিং বা সংখ্যা হতে পারে।
  • কোডটিতে যে কোনও অক্ষর থাকতে পারে। মিলছে না এমন লোকদের [a-z ]উপেক্ষা করা উচিত।

1
আপনার টেস্টকেসগুলিতে সমস্ত কমান্ড অন্তর্ভুক্ত রয়েছে তা নিশ্চিত করুন।
লিকি নুন

2
কোন ধরণের পূর্ণসংখ্যা ব্যবহার করা উচিত? ওভারফ্লো আছে? কী reallyযদি স্ট্যাকের উপর একটি মাল্টি-অক্ষর স্ট্রিং কি?
মার্টিন ইন্ডার

1
@ programmer5000 yes yes ohপ্রিন্ট করা উচিত নয় 11?
ব্যবহারকারী 41805

1
এটি কি ঠিক আছে যদি আমরা ধরে নিই যে কেবল ইনপুটটিতে কেবল অক্ষর থাকতে পারে [a-zA-Z ]?
ব্যবহারকারী 41805

1
ইনপুট পুশ করুন ইনপুট সংখ্যা হতে পারে? অ্যারেগুলির? চর? স্ট্রিংস? যদি তা হয় তবে ইনপুট স্ট্রিংগুলি কি বহু-লাইন হতে পারে? স্ট্যাকের শেষ আইটেমটি বৃদ্ধি করুন যখন শেষ আইটেমটি একটি নম্বর নয় তখন এটি কী করে?
লুইস মেন্ডো

উত্তর:


4

05AB1E , 77 67 63 61 বাইট

Að«Ã#vyÇO§}ðý•9ǝ×н}ÀÀÙ™Íð•650в"X ¾ I > < DdiçëÇ} J r\r \"#:.V

ধরে নিই প্রোগ্রামটি স্ট্যাকের শীর্ষে রয়েছে।

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


আপনি কি সত্যই ধরে নিতে পারেন যে সমস্ত ইনপুট বৈধ? উদাহরণস্বরূপ যে আপনি প্রোগ্রামটি পেতে পারেন নাyes no sey yep
এমিগানা

@ এমিগনা এ সম্পর্কে কোনও পরীক্ষার মামলা নেই, কোনও স্পেসিফিকেশন নেই, এবং কেউ কোনও মন্তব্য করার পরেও ওপি এই বিষয়ে স্পষ্ট করেনি।
Okx

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

9

জাভাস্ক্রিপ্ট (ES6), 218 215 204 203 বাইট

সিনক্রাক্সের কারিঙে প্রোগ্রামের স্ট্রিং sএবং ইনপুট নেয় ।i(s)(i)

s=>i=>s.replace(/\w+/g,S=>(c=eval("[P()];P()+1;[s.shift()];1;0;s=[s.join``];P()-1;i;P()[0]?k.charCodeAt():String.fromCharCode(k)".split`;`[parseInt(S,35)%156%9])).map||s.push(c),s=[],P=_=>k=s.pop())&&P()

কিভাবে?

parseInt(S, 35) % 156 % 9নির্দেশকে এসকে সূচকে 0… 8 তে রূপান্তর করতে আমরা নিখুঁত হ্যাশ ফাংশন ব্যবহার করি এবং কার্যকর করতে জেএস কোড নির্বাচন করতে এই সূচিটি ব্যবহার করি:

instruction | base 35 -> dec. | % 156 | % 9 | JS code
------------+-----------------+-------+-----+---------------------------------------------
"yes"       |           42168 |    48 |   3 | 1
"no"        |             829 |    49 |   4 | 0
"what"      |         1393204 |   124 |   7 | i
"sure"      |         1238209 |    37 |   1 | P()+1
"nah"       |           28542 |   150 |   6 | P()-1
"really"    |      1439554619 |    35 |   8 | P()[0]?k.charCodeAt():String.fromCharCode(k)
"oh"        |             857 |    77 |   5 | s=[s.join``]
"nope"      |         1016414 |    74 |   2 | [s.shift()]
"yep"       |           42165 |    45 |   0 | [P()]

পি ফাংশন বন্ধ স্ট্যাক শেষ আইটেম পপ গুলি মধ্যে এবং এটি লোড

.Map () পদ্ধতিটি সংজ্ঞায়িত করা হয়, যদি ফলাফলটি অ্যারে হয় তবে পরীক্ষার মাধ্যমে আমরা কিছু নির্দেশাবলীর ফলকে স্ট্যাকের পিছনে ধাক্কা দেওয়া থেকে বিরত করি । ওহ এর কোডটি ডিজাইনের সাহায্যে একটি অ্যারে ফিরিয়ে দিচ্ছে এবং আমরা ন্যাপ এবং ইয়েপকেও অ্যারে ফিরিয়ে আনতে বাধ্য করি । তাই বাক্য গঠন:

(c = eval("[code0];code1;...".split`;`[index])).map || s.push(c)

পরীক্ষার মামলা


5

রাদা , 256 বাইট

f c,n{s=[];(c/`\W|_`)()|{|m|s+=#m-2 if[m=~"yes|no"];s[-1]+=#m*2-7 if[m=~"sure|nah"];s+=n if[m="what"];s=s[#m%3:#s-#m%2]if[m=~"nope|yep"];{s+=""s()|s[-1].=_}if[m="oh"];{t=s[-1]y=t..""a=t+0;a=a..""{s[-1]=ord(s)}if[#a>#y]else{s[-1]=chr(t)}}if[#m=6]}_;[s[-1]]}

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

ব্যাখ্যা

#variableদৈর্ঘ্য প্রদান করে variable(এটি যদি স্ট্রিং বা অ্যারে হয়)।

f c,n{                         /*declare a function f with arguments c and n*/
s=[];                          /*initialise the stack*/
(c/`\W|_`)                     /*split the code on anything not [a-zA-Z0-9]*/
          ()|                  /*and push each of its values to the stream*/
{|m|...}_                      /*for each element m in the stream, do:*/
s+=#m-2 if[m=~"yes|no"];       /* add 1 or 0 to the stack if m is "yes" or "no"*/
s[-1]+=#m*2-7if[m=~"sure|nah"];/* increment or decrement the top element if m is "sure" or "nah"*/
s+=n if[m="what"];             /* push input if m is "what"*/
s=s[#m%3:#s-#m%2]              /* remove the first or last element of the stack
  if[m=~"nope|yep"];           /* if m is "nope" or "yep" */
{                 }if[m="oh"]; /* if m is "oh" do:*/
 s+=""                         /*  add an element to the stack*/
      s()|s[-1].=_             /*  for each element in s, concatenate that amount to the last element of the stack*/
{                   }if[#m=6]  /* if m is "really" (it's length is 6) do:*/
 t=s[-1]y=t..""                /*  get the last element of the stack*/
 a=t+0;a=a..""                 /*  add 0 to it, if a is a number, this does nothing, otherwise this makes a longer by 1 character*/
 {s[-1]=ord(s)}if[#a>#y]       /*  if a is longer than t (the last element is a char/string) replace it with its code point*/
 else{s[-1]=chr(t)}            /*  otherwise, replace the last element with the char it represents*/
 [s[-1]]                       /*finally output the top of the stack*/

3

পাইথ , 69 বাইট

Vczd=Y.v@c"+YsY X_1Y1 +Yw  +Y0 X_1Y_1    PY   +Y1 tY +PYCeY"d%CN23;eY

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


"হ্যালো, ওয়ার্ল্ড" প্রোগ্রামটিতে কাজ করছে বলে মনে হচ্ছে না।
Okx

@ ওকএক্স এটি কাজ করে; আমি আমার লিঙ্কে প্রোগ্রামটি পরিবর্তন করেছি; মূল প্রোগ্রামটি অনেক দীর্ঘ।
ফাঁস নুন

বা অন্যান্য প্রোগ্রামের একগুচ্ছ, এই বিষয়ে। 013456789yes 012345678no ohমুদ্রণ 0, প্রত্যাশিত আউটপুট 10
Okx

প্রান্তের ক্ষেত্রে yes yes oh(প্রশ্নে নির্দিষ্ট) কাজ করে না , প্রত্যাশিত আউটপুট 11
Okx

@ ওক্স মন্তব্য দেখুন। ওপি বিশেষত একে অপরিবর্তিত আচরণ হিসাবে উল্লেখ করেছে।
ফাঁস নুন

1

জেএস (ইএস 6), 361 340 বাইট

c=>i=>(s=[],r="s[s.length-1]",c.replace(/[^a-z ]/g,"").split` `.map(x=>(eval({"yes":"s.push(1)","no":"s.push(0)","what":"s.push(i)","sure":"~++","nah":"~--","really":"~=((typeof ~)[0]<'o'?String.fromCharCode(~):lastItem.charCodeAt())","oh":"s.push(s.reduce((x,y)=>''+x+y))","nope":"s.shift()","yep":"s.pop()"}[x].replace(/~/g,r)))),eval(r))

কারি করার মাধ্যমে কোড এবং ইনপুট নেয়।

var yes = 
c=>i=>(s=[],r="s[s.length-1]",c.replace(/[^a-z ]/g,"").split` `.map(x=>(eval({"yes":"s.push(1)","no":"s.push(0)","what":"s.push(i)","sure":"~++","nah":"~--","really":"~=((typeof ~)[0]<'o'?String.fromCharCode(~):lastItem.charCodeAt())","oh":"s.push(s.reduce((x,y)=>''+x+y))","nope":"s.shift()","yep":"s.pop()"}[x].replace(/~/g,r)))),eval(r))
textarea{
  display: block;
}
Code: <textarea id = "code"></textarea>
Input: <textarea id = "input"></textarea>
<button onclick = "output.value = yes(code.value)(input.value)">Run</button>
<textarea id = "output"></textarea>


1

জাভাস্ক্রিপ্ট (ES6), 220 216 বাইট

c=>i=>c.replace(/\w+/g,x=>a=a.concat(eval("Q,[]  (b=Q)[0]?b.charCodeAt():String.fromCharCode(b) 1    [a.join``,a=[]][0] Q+1 a.shift(),[]  i  Q-1".split`Q`.join`a.pop()`.split` `[parseInt(x,36)%19]||0)),a=[])&&a.pop()

একটি ফাংশন যা কারিরিং সিনট্যাক্সের সাথে ইনপুট নেয়, যেমন f(code)(input)


1

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

s=[]
m=-1
i,p=input()
for c in p.split(' '):
 k=c<"o"
 if c in"yesnowhat":s+=[i if"w"==c[0]else-k+1]
 if c in"surenah":s[m]+=[1,m][k]
 if"p"in c:s.pop(k-1)
 if"oh"==c:s+=[''.join(map(str,s))]
 if"y"==c[m]:s[m]="'"in`s[m]`and ord(s[m])or chr(s[m])
print(s[m])

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


-৩ বাইটস @ ওয়ানড্রক্রিটকে ধন্যবাদ


1
আপনি -1ভেরিয়েবল হিসাবে সংরক্ষণ করে 4 বাইট সংরক্ষণ করতে পারেন
ওন্ডারক্রিট

1

পার্ল 6 ,  233  225 বাইট

{my @s;{yes=>{@s.push(1)},no=>{@s.push(0)},what=>{@s.push: once slurp},sure=>{++@s.tail},nah=>{--@s.tail},really=>{($/:=@s.tail)~~Int??$/.=chr!!$/.=ord},oh=>{@s.=join},nope=>{@s.shift},yep=>{@s.pop},}{.words}.map:{.()};@s.tail.print}

এটি ব্যবহার করে দেখুন
হ্যালো ওয়ার্ল্ড
বিড়াল
-1
nul
cat_
0
1

{my @s;{es=>{@s.push(1)},no=>{@s.push(0)},at=>{@s.push: once slurp},re=>{++@s.tail},ah=>{--@s.tail},ly=>->{($_:=@s.tail)~~Int??.=chr!!.=ord},oh=>{@s.=join},pe=>{@s.shift},ep=>{@s.pop},}{.comb(/..»/)}.map:{.()};@s.tail.print}

প্রতিটি কমান্ড থেকে কেবলমাত্র শেষ দুটি অক্ষর গ্রাস করে তা বাদ দিয়ে একই কাজ করে এবং এর $_পরিবর্তে $/ব্যবহার করে really

এটি ব্যবহার করে দেখুন (হ্যালো ওয়ার্ল্ড)

সম্প্রসারিত:

{
  my @s; # stack

  {  # Associative array
    yes    => {@s.push(1)},
    no     => {@s.push(0)},
    what   => {@s.push: once slurp}, # read everything from $*IN
    sure   => {++@s.tail},
    nah    => {--@s.tail},
    really => {
          ( $/ := @s.tail ) # bind $/ to the last value in the stack
          ~~ Int            # if that is an Int
      ??  $/.=chr           # replace it with that character
      !!  $/.=ord           # otherwise replace it with its ordinal
    },
    oh     => {@s.=join},
    nope   => {@s.shift},
    yep    => {@s.pop},
  }\
  { .words }                # index by the words in the program
  .map: {.()};              # call each of the lambdas in order

  @s.tail.print             # print the last value on the stack
}

1

পিএইচপি, 315 305 বাইট

দ্বিতীয় খসড়া, এখনও পরীক্ষা করা হয়নি

foreach($argv as$k=>$v)if($k>1)eval((strstr($c=preg_replace('#[^a-z ]#','',$v),p)?'':'$s[]=').[yes=>1,no=>0,what=>'$argv[1]',sure=>'array_pop($s)+1',nah:'array_pop($s)-1',really=>'is_int($x=array_pop($s))?chr($x):ord($x)',oh=>'join($s)',nope=>'array_shift($s)',yep=>'array_pop($s)'][$c].';');echo end($s);

সাথে চালাও php -nr '<php-code>' <input> <yes-code>

ভাঙ্গন

foreach($argv as$k=>$v)if($k>1)         # loop through commands
    eval(                                   # 3. interprete
        (strstr(                            # 2. if no 'p' in command, prepend '$s[]='
                                            # 1. ignore all non-code characters
            $c=preg_replace('#[^a-z ]#','',$v),p)?'':'$s[]=').
        [yes=>1,                                # yes: append 1
        no=>0,                                  # no: append 0
        what=>'$argv[1]',                       # what: append input
        sure=>'array_pop($s)+1',                # sure: remove end, increment, append
        nah:'array_pop($s)-1',                  # nah: remove end, decrement, append
                                                # really: convert between ascii and ordinal
        really=>'is_int($x=array_pop($s))?chr($x):ord($x)',
        oh=>'join($s)',                         # oh: concatenate elements, append
        nope=>'array_shift($s)',                # nope: remove first element
        yep=>'array_pop($s)']                   # yep: remove last element
        [$c]
    .';');
echo end($s);                           # print last element (if exists)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.