"A" গুলি এবং "খ" এর গণনা সমান হতে হবে। আপনি এটি কম্পিউটার পেয়েছেন?


75

জনপ্রিয় (এবং অপরিহার্য) কম্পিউটার বিজ্ঞান বইয়ে পিটার লিনজের রচনার আনুষ্ঠানিক ভাষা এবং অটোমেটা-তে নিয়মিত ভাষাটি প্রায়শই বলা হয়েছে:

সংজ্ঞা

মূলত এই ভাষাটি সসীম-রাষ্ট্রীয় অটোমেটা দিয়ে প্রক্রিয়া করা যায় না। এই অভিব্যক্তিটির অর্থ "ল্যাঙ্গুয়েজ এল এর 'বি'র পরে' এ'র সমস্ত স্ট্রিং থাকে, যেখানে 'ক এবং' বি এর সংখ্যা সমান এবং শূন্য নয়"।

চ্যালেঞ্জ

একটি ওয়ার্কিং প্রোগ্রাম / ফাংশন লিখুন যা একটি স্ট্রিং পায়, কেবল "a" গুলি এবং "b" গুলি থাকে , ইনপুট হিসাবে এবং প্রত্যাবর্তন / সত্য মান দেয় , এই স্ট্রিংটি যদি আনুষ্ঠানিক ভাষাতে বৈধ হয় তবে তা লিখবে।

  • আপনার প্রোগ্রামটি নেটওয়ার্ক, বাহ্যিক প্রোগ্রাম ইত্যাদিসহ কোনও বাহ্যিক গণনার সরঞ্জাম ব্যবহার করতে পারে না শাঁস এই নিয়মের ব্যতিক্রম; বাশ, উদাহরণস্বরূপ, কমান্ড লাইন ইউটিলিটিগুলি ব্যবহার করতে পারে।

  • আপনার প্রোগ্রাম অবশ্যই ফলাফলটিকে "যৌক্তিক" উপায়ে ফেরত / আউটপুট দিতে হবে, উদাহরণস্বরূপ: 0 এর পরিবর্তে 10, "বীপ" শব্দ, স্টাডআউটে আউটপুট আউট করা ইত্যাদি আরও তথ্য এখানে।

  • স্ট্যান্ডার্ড কোড গল্ফ বিধি প্রযোজ্য।

এটি একটি । বাইটস মধ্যে সংক্ষিপ্ত কোড। শুভকামনা!

সত্যবাদী পরীক্ষার কেস

"ab"
"aabb"
"aaabbb"
"aaaabbbb"
"aaaaabbbbb"
"aaaaaabbbbbb"

মিথ্যা পরীক্ষার মামলা

""
"a"
"b"
"aa"
"ba"
"bb"
"aaa"
"aab"
"aba"
"abb"
"baa"
"bab"
"bba"
"bbb"
"aaaa"
"aaab"
"aaba"
"abaa"
"abab"
"abba"
"abbb"
"baaa"
"baab"
"baba"
"babb"
"bbaa"
"bbab"
"bbba"
"bbbb"

24
পারি ইনপুট খালি হবে? (আপনি বলছেন যে এটি ভাষার অংশ নয়, তবে এটি আমাদের বিবেচনা করা উচিত এমন কোনও ইনপুট কিনা তা নয়))
মার্টিন এন্ডার

1
আমাদের ভাষার সত্যবাদী বা মিথ্যা না থাকলে কী হবে? চান empty string == truthyএবং non-empty string == falsyগ্রহণযোগ্য হতে পারে?
ডিজেএমসিএমহেম

5
চমৎকার চ্যালেঞ্জ, তবে আমি মনে করি শিরোনামটি কিছুটা কম অস্পষ্ট হতে পারে (অর্থাত্ স এর সংখ্যার সমান a^n b^nসংখ্যার চেয়ে একটি উল্লেখ বা অনুরূপ )ab
Sp3000

1
@ Sp3000 আমি এই শিরোনামটি পছন্দ করেছি কারণ এটি মজাদার দেখাচ্ছে। আমি পরে এটিকে অন্য

1
আমি কিছুটা অবাক হয়েছি যে 50+ জবাবগুলিতে আমি কেবল একমাত্র প্যাসার জেনারেটর ব্যবহার করি। নিশ্চিত হয়ে নিন যে এটি দৈর্ঘ্যে কঠোরভাবে প্রতিযোগিতামূলক নয়, তবে উত্থিত সমস্যাটি হ'ল একটি সরল কিন্তু অ-তুচ্ছ ভাষা পার্স করার একটি। আমি অন্যান্য সংকলক-সংকলক বাক্য গঠনে উত্তরগুলি দেখতে খুব পছন্দ করি কারণ আমি পছন্দগুলির সাথে ব্যাপকভাবে পরিচিত নই।
dmke

উত্তর:


34

এমএটিএল , 5 4 বাইট

tSP-

যদি স্ট্রিংটি L এর অন্তর্ভুক্ত থাকে তবে 1 টির একটি অ-খালি অ্যারে এবং অন্যথায় শূন্য অ্যারে বা 0 টি (উভয় মিথ্যা) দিয়ে অ্যারে মুদ্রণ করে।

1 লাইট বন্ধ করে গল্ফ করার জন্য @ লুইস মেন্ডোকে ধন্যবাদ!

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

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

t      Push a copy of the implicitly read input.
 S     Sort the copy.
  P    Reverse the sorted copy.
   -   Take the difference of the code point of the corresponding characters
       of the sorted string and the original.

6
আমার দ্বিতীয় (কাজ) MATL উত্তর। :)
ডেনিস

2
সত্যবাদী এবং জালিয়াতির অদ্ভুত সংজ্ঞা: 'আবাব' দেয় -1 -1 1 1 সত্যবাদী। 'আবাব' দেয় -1 -1 0 1 1 দেয় এবং মিথ্যা হয়
ইটোপ্লে

3
@ ইটপ্লে এর সমস্ত মান সহ নন-খালি অ্যারে সত্যবাদী। এটি মাতলাব এবং অক্টাভাতে ব্যবহৃত সংজ্ঞা
লুইস মেন্ডো

145

পাইথন 3, 32 বাইট

eval(input().translate(")("*50))

প্রস্থান কোডের মাধ্যমে আউটপুট : মিথ্যা জন্য ত্রুটি, সত্যের জন্য কোনও ত্রুটি।

স্ট্রিং পাইথন কোড হিসেবে মূল্যায়ন করা হয়, বাম বন্ধনী প্রতিস্থাপন (জন্য aএবং )জন্য b। কেবলমাত্র ফর্মের a^n b^nএক্সপ্রেশনগুলি ((()))টিউপলকে মূল্যায়ন করার মতো প্রথম বন্ধনীর মতো সুগঠিত এক্সপ্রেশন হয় ()

কোনও বিভেদযুক্ত প্যারেনগুলি কোনও ত্রুটি দেয়, যেমন একাধিক গোষ্ঠী পছন্দ করে (()()), যেহেতু কোনও বিভাজনকারী নেই। খালি স্ট্রিংটিও ব্যর্থ হয় (এটি এতে সফল হবে exec)।

রূপান্তর ( -> a, ) -> bব্যবহার করা যাবে str.translate, যেমন একটি স্ট্রিং, যাতে একটি রূপান্তর টেবিল হিসেবে কাজ করে দ্বারা নির্দেশিত যা অক্ষর প্রতিস্থাপন করে। 100-দৈর্ঘ্যের স্ট্রিং "" ("* 50) দেওয়া সারণীগুলি প্রথম 100 ASCII মান হিসাবে মানচিত্র করে

... Z[\]^_`abc
... )()()()()(

যা লাগে ( -> a, ) -> b। পাইথন 2 এ, সমস্ত 256 ASCII মানগুলির জন্য রূপান্তরগুলি সরবরাহ করতে হবে, প্রয়োজনীয় "ab"*128, এক বাইট আরও দীর্ঘ; এটি নির্দেশ করার জন্য আইসএএসিজি ধন্যবাদ।


58
ঠিক আছে, এটি চালাক।
TLW


5
128বাইট সংরক্ষণ করতে 50(বা 99সেই বিষয়ে) দ্বারা প্রতিস্থাপন করা যেতে পারে ।
isaacg

@ Eʀɪᴋ ᴛʜᴇ Gᴏʟғᴇʀ: আমি মনে করি এটি কোয়ান্টিফায়ার। তবে আমি পাইথন সত্যিই জানি না এবং এখনও এটির কোনও নথিপত্র পাইনি।
তিতাস

4
@ আইস্যাক ধন্যবাদ, আমি জানিনা যে পাইথন 3

28

রেটিনা , 12 বাইট

FryAmTheEggman কে ক্রেডিট যারা স্বাধীনভাবে এই সমাধানটি পেয়েছে।

+`a;?b
;
^;$

1বৈধ ইনপুট এবং 0অন্যথায় জন্য মুদ্রণ ।

এটি অনলাইন চেষ্টা করুন! (প্রথম লাইন একটি লাইনফিড-বিচ্ছিন্ন পরীক্ষা স্যুট সক্ষম করে))

ব্যাখ্যা

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

ধাপ 1

+`a;?b
;

দ্য +অক্ষিপট বলে যতক্ষণ না আউটপুট পরিবর্তন স্টপ একটি লুপ এই পর্যায়ে পুনরাবৃত্তি। এটি মেলে abবা এর a;bসাথে এটি প্রতিস্থাপন করে ;। আসুন কয়েকটি বিষয় বিবেচনা করুন:

  • তাহলে as এবং bস্ট্রিং গুলি একই ভাবে যে সুষম নেই (এবং )স্বাভাবিকভাবে হতে হবে, কিছু aবা bস্ট্রিং যেহেতু থাকবে, baঅথবা b;aসমাধান করা যাবে না এবং একটি একক aবা bতার নিজের উপর না করতে পারেন পারেন। সমস্ত aগুলি এবং গুলি থেকে পরিত্রাণ পেতে প্রত্যেকটির ডানের bসাথে এক bহতে হবে a
  • যদি aএবং bসমস্তগুলি নেস্টেড না হয় (যেমন আমাদের মতো কিছু থাকে ababবা থাকে aabaabbb) তবে আমরা একাধিক ;(এবং সম্ভাব্য কিছু aগুলি এবং bগুলি) সমাপ্ত করব কারণ প্রথম পুনরাবৃত্তিতে abএগুলি সন্নিবেশ করানোর জন্য একাধিক গুলি পাওয়া যাবে এবং আরও পুনরাবৃত্তি সংরক্ষণ করা হবে ;স্ট্রিংয়ের সংখ্যা ।

সুতরাং, যদি এবং কেবল যদি ইনপুটটি ফর্মের হয় তবে আমরা স্ট্রিংয়ের সাথে এককটি দিয়ে শেষ করব ।anbn;

ধাপ ২:

^;$

ফলস্বরূপ স্ট্রিংটিতে একটি একক সেমিকোলন ছাড়া কিছুই নেই কিনা তা পরীক্ষা করুন। (আমি যখন "চেক" বলি তখন আমি আসলে বোঝাতে চাইছি, "প্রদত্ত রেজেক্সের মিলগুলির সংখ্যা গণনা করুন, তবে যেহেতু এই রেজেক্সটি অ্যাঙ্করগুলির কারণে একবারে মিলতে পারে তাই এটি দেয় 0বা দেয় 1))


25

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

f s=s==[c|c<-"ab",'a'<-s]&&s>""

তালিকা ধী [c|c<-"ab",'a'<-s]এক একটি স্ট্রিং তোলে 'a'প্রত্যেকের জন্য 'a'sএক দ্বারা অনুসরণ 'b'প্রত্যেকের জন্য 'a's। এটি একটি ধ্রুবকের সাথে মিল রেখে এবং প্রতিটি ম্যাচের জন্য আউটপুট উত্পাদন করে গণনা এড়ানো যায় ।

এই স্ট্রিংটি মূল স্ট্রিংয়ের সমান হয়ে গেছে এবং মূল স্ট্রিংটি খালি নয় কিনা তা পরীক্ষা করা হয়েছে।


এটি খুবই সুন্দর. আমি প্রায়শই ভুলে যাই যে এটি কতটা দরকারী যে হাসকল একটি তালিকা বোধের উপাদানগুলিকে একটি সামঞ্জস্যপূর্ণ এবং খুব নির্দিষ্ট উপায়ে অর্ডার করে।
ভেক্টরনট

আমার সেরা চেষ্টা ( f=g.span id.map(=='a');g(a,b)=or a&&b==(not<$>a)) এর চেয়ে অনেক সুন্দর । সাবাশ.
জুলে

বাহ, আমি জানতাম না যে তালিকার কোনও বোঝার ক্ষেত্রে ধ্রুবকটির সাথে মিল থাকতে পারে!
রুবিক

16

গ্রিম , 12 বাইট

A=\aA?\b
e`A

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

ব্যাখ্যা

প্রথম লাইনটি একটি অযৌক্তিককে সংজ্ঞায়িত করে A, যা একটি অক্ষরের সাথে মেলে a, সম্ভবত ননটার্মিনাল Aএবং তারপরে একটি অক্ষর b। দ্বিতীয় লাইনটি eঅযৌক্তিকের বিপরীতে সম্পূর্ণ ইনপুট ( ) এর সাথে মেলে A

8-বাইট ননকম্পিটিং সংস্করণ

e`\a_?\b

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


আপনি জেতে করেননি কেন?
ফাঁস নুন

@ ল্যাকিয়ুন আমি কেবল গ্রিমকে দেখাতে চাইছিলাম। : পি
জাগারব

আপনি এই ভাষা তৈরি?
ফাঁস নুন

পছন্দ করুন উন্নয়ন ধীর, তবে চলমান।
Zgarb

11

ব্র্যাচল্যাগ , 23 19 বাইট

@2L,?lye:"ab"rz:jaL

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

ব্যাখ্যা

@2L,                  Split the input in two, the list containing the two halves is L
    ?lye              Take a number I between 0 and the length of the input              
        :"ab"rz       Zip the string "ab" with that number, resulting in [["a":I]:["b":I]]
               :jaL   Apply juxtapose with that zip as input and L as output
                        i.e. "a" concatenated I times to itself makes the first string of L
                        and "b" concatenated I times to itself makes the second string of L

8
ট্রাইটিনলাইন.নেট পেয়ে অভিনন্দন!
ফাঁস নুন

10

05 এ বি 1 ই , 9 বাইট

কোড:

.M{J¹ÔQ0r

ব্যাখ্যা:

.M         # Get the most frequent element from the input. If the count is equal, this
           results into ['a', 'b'] or ['b', 'a'].
  {        # Sort this list, which should result into ['a', 'b'].
   J       # Join this list.
    Ô      # Connected uniquified. E.g. "aaabbb" -> "ab" and "aabbaa" -> "aba".
     Q     # Check if both strings are equal.
      0r   # (Print 0 if the input is empty).

ইনপুটটি খালি না থাকার গ্যারান্টিযুক্ত হলে শেষ দুটি বাইটগুলি বাতিল করা যায়।

সিপি -1222 এনকোডিং ব্যবহার করে । এটি অনলাইন চেষ্টা করুন!


খালি ইনপুট দিয়ে কী হয়?
অ্যাডমবর্কবার্ক

2
দেখুন নন-জিরো পোস্টে; এটি সেখানে আছে :)
লিন

@ লিন কি অনুমানগুলি বৈধ ভাষার জন্য কেবল শূন্য নয়? ইনপুট সম্পর্কে নয়।
এমিগানা

সত্য। ভেবেছিলাম সেখানে ভুল। তবে আপনি .M{J¹ÔQ0rনিজের জন্য এখনও করতে পারেন ।
এমিগিনা

@ এমিগনা ধন্যবাদ, আমি পোস্টটি সম্পাদনা করেছি।
আদনান

9

জেলি , 6 বাইট

Ṣ=Ṛ¬Pȧ

স্ট্রিংটি নিজেই প্রিন্ট করে যদি এটি এল এর সাথে খালি হয় বা অন্যথায় 0 হয়।

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন

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

Ṣ=Ṛ¬Pȧ  Main link. Argument: s (string)

Ṣ       Yield s, sorted.
  Ṛ     Yield s, reversed.
 =      Compare each character of sorted s with each character of reversed s.
   ¬    Take the logical NOT of each resulting Boolean.
    P   Take the product of the resulting Booleans.
        This will yield 1 if s ∊ L or s == "", and 0 otherwise.
     ȧ  Take the logical AND with s.
       This will replace 1 with s. Since an empty string is falsy in Jelly,
       the result is still correct if s == "".

বিকল্প সংস্করণ, 4 বাইট (প্রতিযোগী নয়)

ṢnṚȦ

প্রিন্ট 1 বা 0এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন

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

ṢnṚȦ  Main link. Argument: s (string)

Ṣ     Yield s, sorted.
  Ṛ   Yield s, reversed.
 n    Compare each character of the results, returning 1 iff they're not equal.
   Ȧ  All (Octave-style truthy); return 1 if the list is non-empty and all numbers
      are non-zero, 0 in all other cases.

9

জে, 17 বাইট

#<.(-:'ab'#~-:@#)

এটি খালি স্ট্রিংয়ের জন্য মিথ্যা দেওয়ার জন্য সঠিকভাবে কাজ করে। ত্রুটি মিথ্যা।

পুরানো সংস্করণ:

-:'ab'#~-:@#
2&#-:'ab'#~#   NB. thanks to miles

প্রুফ এবং ব্যাখ্যা

প্রধান ক্রিয়াটি এই তিনটি ক্রিয়া সমন্বিত একটি কাঁটাচামচ:

# <. (-:'ab'#~-:@#)

এর অর্থ, " <.দৈর্ঘ্যের ( #) এর কম ( ) এবং ডান টাইন ( (-:'ab'#~-:@#)) এর ফলাফল"।

ডান টাইনটি 4 টি ট্রেনের সমন্বয়ে গঠিত:

(-:) ('ab') (#~) (-:@#)

যাক kআমাদের ইনপুট প্রতিনিধিত্ব করে। তারপরে, এটি সমান:

k -: ('ab' #~ -:@#) k

-:ম্যাচ অপারেটর, সুতরাং -:মোনাডিক কাঁটাচামচ অধীনে চালান জন্য নেতৃস্থানীয় পরীক্ষা 'ab' #~ -:@#

যেহেতু কাঁটাচামার বাম দিকটি একটি ক্রিয়া, তাই এটি একটি ধ্রুবক ক্রিয়ায় পরিণত হয়। সুতরাং, কাঁটাচামচ সমান:

'ab' #~ (-:@# k)

কাঁটা ভাগের ডান টাইন ( -:) দৈর্ঘ্য ( #) k। পর্যবেক্ষণ #:

   1 # 'ab'
'ab'
   2 # 'ab'
'aabb'
   3 # 'ab'
'aaabbb'
   'ab' #~ 3
'aaabbb'

এখন, এটি kকেবল বৈধ ইনপুটগুলিতেই রয়েছে, সুতরাং আমরা এখানে সম্পন্ন করেছি। #বিজোড় দৈর্ঘ্যের স্ট্রিংগুলির জন্য ত্রুটি, যা কখনই ভাষা সন্তুষ্ট করে না , তাই আমরা এখানেও হয়েছি।

দৈর্ঘ্যের কম এবং এটির সাথে একত্রিত হয়ে খালি স্ট্রিংটি, যা আমাদের ভাষার অংশ নয়, এর দৈর্ঘ্য দেয় 0, এবং আমরা এগুলি দিয়ে শেষ হয়েছি।


আমি এটিকে সংশোধন করেছি যাতে 12 টি বাইট ব্যবহার করার সময় 2&#-:'ab'#~#আপনাকে ত্রুটিটি এড়াতে এবং কেবল আউটপুট দেওয়া উচিত 0
মাইল

মাইল আমি কখনই এর মতো ভাবিনি।
কনর ও'ব্রায়েন

এটি কি খালি স্ট্রিং পরিচালনা করে?
Zgarb

@ জগারব ঠিক করে দিয়েছে!
কনর ও'ব্রায়ান

9

বাইসন / ওয়াইএসিসি 60 (বা 29) বাইট

(আচ্ছা, ওয়াইএসিসি প্রোগ্রামের সংকলনটি কয়েকটি পদক্ষেপ যা এর জন্য কিছু অন্তর্ভুক্ত করতে চাইতে পারে details বিশদগুলির জন্য নীচে দেখুন))

%%
l:c'\n';
c:'a''b'|'a'c'b';
%%
yylex(){return getchar();}

আপনি যদি কোনও আনুষ্ঠানিক ব্যাকরণের পরিপ্রেক্ষিতে এটি ব্যাখ্যা করতে জানেন তবে ফাংশনটি মোটামুটি স্পষ্ট হওয়া উচিত। পার্সার abএকটি বা aতারপরে যেকোন গ্রহণযোগ্য ক্রম অনুসরণ করে বা তার পরে গ্রহণ করে b

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

এটি সংজ্ঞায়িত করার জন্য yylexএবং কল করার প্রয়োজনের চেয়ে আমি আরও কড়া getchar

সঙ্গে সংকলন

$ yacc equal.yacc
$ gcc -m64 --std=c89 y.tab.c -o equal -L/usr/local/opt/bison/lib/ -ly

(জিসিসি-র বেশিরভাগ বিকল্পগুলি আমার সিস্টেমে সুনির্দিষ্ট এবং বাইট গণনার বিপরীতে গণনা করা উচিত নয়; আপনি গণনা করতে চান -std=c89যা তালিকাভুক্ত মানটিতে 8 যোগ করে)।

সাথে চালাও

$ echo "aabb" | ./equal

বা সমমানের.

সত্য মানটি ওএসে ফিরে আসে এবং ত্রুটিগুলি syntax errorকমান্ড লাইনেও প্রতিবেদন করে। আমি যদি পার্সিং ফাংশনটি সংজ্ঞায়িত কোডের কেবল সেই অংশটিই গণনা করতে পারি (এটি দ্বিতীয়টি %%এবং এটির পরে অবহেলা করা হয়) আমি 29 বাইটের একটি গণনা পাই।


7

পার্ল 5.10, 35 17 বাইট ( -ন পতাকা সহ)

say/^(a(?1)?b)$/

স্ট্রিংটি aএস দিয়ে শুরু হয় এবং তারপরে এস-এ পুনরাবৃত্তি করে তা নিশ্চিত করে b। উভয় দৈর্ঘ্য সমান হলে এটি মেলে।

ধন্যবাদ মার্টিন Ender বাইট গণনা halving এবং আমার regexes মধ্যে recursion সম্পর্কে একটু শেখানোর জন্য: ডি

এটি মেলে থাকলে পুরো স্ট্রিংটি ফেরত দেয় এবং না মিললে কিছু না।

এখানে চেষ্টা করুন!


নিকটতম আমি খালি খালি পরীক্ষার কেস সহ 18 টি বাইটগুলি পরিচালনা করতে পারি: $_&&=y/a//==y/b//(প্রয়োজনীয় -p), খালি ছাড়াই আপনি &&16 এর জন্য ড্রপ করতে পারেন ! এত কাছে ...
ডম হেস্টিংস

1
সুতরাং আমি আরও 17 বাইট করতে পারি: echo -n 'aaabbb'|perl -pe '$_+=y/a//==y/b//'তবে আমি অন্য বাইটটি স্থানান্তর করতে পারি না ... এটিকে ছেড়ে দিতে হতে পারে!
ডম হেস্টিংস

7

জাভাস্ক্রিপ্ট, 54 55 44

s=>s&&s.match(`^a{${l=s.length/2}}b{${l}}$`)

স্ট্রিংয়ের দৈর্ঘ্যের উপর ভিত্তি করে একটি সাধারণ রেজেক্স তৈরি করে এবং এটি পরীক্ষা করে। দৈর্ঘ্যের 4 স্ট্রিংয়ের জন্য ( aabb) রেজেক্স দেখতে দেখতে:^a{2}b{2}$

সত্যবাদী বা মিথ্যা মান প্রদান করে।

11 বাইট সংরক্ষিত নীলকে ধন্যবাদ

f=s=>s&&s.match(`^a{${l=s.length/2}}b{${l}}$`)
// true
console.log(f('ab'), !!f('ab'))
console.log(f('aabb'), !!f('aabb'))
console.log(f('aaaaabbbbb'), !!f('aaaaabbbbb'))
// false
console.log(f('a'), !!f('a'))
console.log(f('b'), !!f('b'))
console.log(f('ba'), !!f('ba'))
console.log(f('aaab'), !!f('aaab'))
console.log(f('ababab'), !!f('ababab'))
console.log(f('c'), !!f('c'))
console.log(f('abc'), !!f('abc'))
console.log(f(''), !!f(''))


f=বাদ দেওয়া যেতে পারে।
ফাঁস নুন

একটি ফাংশন এক্সপ্রেশন একটি বৈধ জমা, বা এটি আসলে, অহেম, কার্যকরী হতে হবে?
স্কিমোনস্টার

একটি ফাংশন একটি বৈধ জমা।
ফাঁস নুন

@ টিমমিডি এটি সত্য ফিরে আসত তবে এখন এটি মিথ্যা প্রত্যাবর্তন করে।
স্কিমনস্টার

1
s=>s.match(`^a{${s.length/2}}b+$`)?
l4m2

5

সি, 57 53 বাইট

t;x(char*s){t+=*s%2*2;return--t?*s&&x(s+1):*s*!1[s];}

ওল্ড 57 বাইট দীর্ঘ সমাধান:

t;x(char*s){*s&1&&(t+=2);return--t?*s&&x(s+1):*s&&!1[s];}

জিসিসি বনাম 4.8.2 @ উবুন্টু দিয়ে সংকলিত

টিপস জন্য ধন্যবাদ ugoren!

আইডিয়নে চেষ্টা করে দেখুন!


যেহেতু আমি এখানে নতুন এবং অন্যান্য উত্তরের বিষয়ে এখনও মন্তব্য করতে পারি না, আমি কেবল এটিই উল্লেখ করতে চাই যে @ জোশের 62b সমাধান "আবাব" এর মতো স্ট্রিংগুলিতে মিথ্যা ইতিবাচক বিষয় দেয়।
জেসমিস

পরিবর্তন (t+=2)করার জন্য t++++-1 বাইট জন্য।
ওয়াওকডার 13

@owacoder t++++একটি বৈধ সি কোড নয়।
জেসমিস

সঙ্গে কিছু সংরক্ষণ t+=*s%2*2এবং:*s*!1[s]
ugoren

খুব চতুর উত্তর! এটি দুর্ভাগ্যক্রমে "বা" ইনপুটটিতে
জোশ

4

অক্ষিপট , 22 বাইট

একই ভাষায় আর একটি সংক্ষিপ্ত উত্তর এসেছিল ...

^(a)+(?<-1>b)+(?(1)c)$

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

এটি রিজেক্সে ভারসাম্যপূর্ণ গোষ্ঠীর একটি শোকেস, যা মার্টিন এেন্ডার দ্বারা পুরোপুরি ব্যাখ্যা হয়েছে

যেহেতু আমার ব্যাখ্যা এটির অর্ধেকের কাছাকাছি না আসবে, আমি কেবল এটির সাথে লিঙ্ক করব এবং ব্যাখ্যা করার চেষ্টা করব না, কারণ এটি তার ব্যাখ্যাটির গৌরব জন্য ক্ষতিকারক হবে।


4

বেফুঞ্জ -৩৩, by 67 বাইট

0v@.<  0<@.!-$<  >0\v
+>~:0`!#^_:"a" -#^_$ 1
~+1_^#!-"b" _ ^#`0: <

এখানে চেষ্টা করুন! এটি কীভাবে পরে কাজ করে তা ব্যাখ্যা করুন। এটিকে আরও খানিকটা বেশি মাত্র কিক্সের জন্য গল্ফ দেওয়ার চেষ্টা করতে পারে।


3

এমএটিএল , 9 বাইট

vHI$e!d1=

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

আউটপুট অ্যারেটি সত্যবাদী যদি এটি খালি নয় এবং এর সমস্ত এন্ট্রি ননজারো হয়। অন্যথায় এটি মিথ্যা বলে। এখানে কিছু উদাহরণ

v     % concatenate the stack. Since it's empty, pushes the empty array, []
H     % push 2
I$    % specify three inputs for next function
e     % reshape(input, [], 2): this takes the input implicitly and reshapes it in 2
      % columns in column major order. If the input has odd length a zero is padded at
      % the end. For input 'aaabbb' this gives the 2D char array ['ab;'ab';'ab']
!     % transpose. This gives ['aaa;'bbb']
d     % difference along each column
1=    % test if all elements are 1. If so, that means the first tow contains 'a' and
      % the second 'b'. Implicitly display

2
এটি সত্যের কিছু সুবিধাজনক সংজ্ঞা। (আমি নন-শূন্যের প্রয়োজনীয়তা সম্পর্কে জানতাম, তবে শূন্য নয়
ডেনিস

3

x86 মেশিন কোড, 29 27 বাইট

Hexdump:

33 c0 40 41 80 79 ff 61 74 f8 48 41 80 79 fe 62
74 f8 0a 41 fe f7 d8 1b c0 40 c3

সমাবেশ কোড:

    xor eax, eax;
loop1:
    inc eax;
    inc ecx;
    cmp byte ptr [ecx-1], 'a';
    je loop1;

loop2:
    dec eax;
    inc ecx;
    cmp byte ptr [ecx-2], 'b';
    je loop2;

    or al, [ecx-2];
    neg eax;
    sbb eax, eax;
    inc eax;
done:
    ret;

aশুরুতে বাইটগুলি দিয়ে ইটারেটস করে তারপরে নীচের 'বি' বাইটগুলি দিয়ে। প্রথম লুপটি একটি কাউন্টার বাড়িয়ে তোলে এবং দ্বিতীয় লুপটি এটি হ্রাস করে। এরপরে, নিম্নোক্ত শর্তগুলির মধ্যে কিছুটা দিক বা OR করেন:

  1. যদি কাউন্টার শেষে 0 না হয় তবে স্ট্রিংটি মেলে না
  2. bS এর ক্রম অনুসরণ করে বাইট 0 না হলে স্ট্রিংটিও মেলে না

তারপরে, এটিতে সত্যের মানটিকে "উল্টে" করতে eaxহবে - এটি 0 না হলে 0 এ সেট করতে হবে এবং বিপরীতে। দেখা যাচ্ছে যে এর মধ্যে সংক্ষিপ্ততম কোডটি হ'ল নিম্নলিখিত 5-বাইট কোড, যা আমি আমার সি ++ সংকলকের আউটপুট থেকে চুরি করেছি result = (result == 0):

    neg eax;      // negate eax; set C flag to 1 if it was nonzero
    sbb eax, eax; // subtract eax and the C flag from eax
    inc eax;      // increase eax

1
আমি মনে করি আপনি আপনার অবজ্ঞা উন্নতি করতে পারেন। চেষ্টা করুন: neg eax, আগের মত পতাকা বহন সেট করতে cmcপতাকা বহন invert প্রয়োজন এবং salcবহন ফ্ল্যাগ বা সেট না করা হয় কিনা তার উপর নির্ভর করে FFh বা 0 আওয়ামী লীগ সেট করতে। 2 বাইট সংরক্ষণ করে, যদিও 32-বিটের পরিবর্তে 8-বিটের ফলাফল দিয়ে শেষ হয়।
জুলে

একই জিনিস স্ট্রিং অপস ব্যবহার করে, ESI ইনপুট স্ট্রিং প্রতি নির্দেশ, এবং (, SETcc ব্যবহার প্রয়োজন 386+) আওয়ামী লীগ ফলাফলের ফেরার সঙ্গেxor eax,eax | xor ecx,ecx | l1: inc ecx | lodsb | cmp al, 'a' | jz l1 | dec esi | l2: lodsb | cmp al,'b' | loopz l2 | or eax,ecx | setz al | ret
ninjalj

@ নিনজালজ আপনার একটি উত্তর পোস্ট করা উচিত - এটি আমার থেকে যথেষ্ট পৃথক, এবং আমার সন্দেহ হয় যে উল্লেখযোগ্যভাবে খাটো!
এনাটোলিগ

3

রুবি, 24 বাইট

eval(gets.tr'ab','[]')*1

(এটি রুবি আকারে কেবল এক্সনরের উজ্জ্বল ধারণা My আমার অন্য উত্তরটি এমন একটি সমাধান যা আমি নিজেই নিজের সাথে এসেছি))

প্রোগ্রাম ইনপুট নেয় রূপান্তরিত করে, aএবং bথেকে [এবং ]যথাক্রমে এবং এটি মূল্যায়ন করে।

বৈধ ইনপুট একটি নেস্টেড অ্যারে গঠন করবে এবং কিছুই ঘটে না। ভারসাম্যহীন অভিব্যক্তি প্রোগ্রামটিকে ক্রাশ করে দেবে। রুবিতে খালি ইনপুট হিসাবে মূল্যায়ন করা হয় nil, যা ক্রাশ হবে কারণ nilকোনও *পদ্ধতির সংজ্ঞা দেয়নি।


3

সেড, 38 + 2 = 40 বাইট

s/.*/c&d/;:x;s/ca(.*)bd/c\1d/;tx;/cd/p

একটি খালি স্ট্রিং আউটপুট সত্য

সীমাবদ্ধ অবস্থায় অটোমাতা এই কাজটি করতে পারে না, আপনি বলছেন? লুপগুলির সাথে সসীম স্টেট অটোমেটার সম্পর্কে কী । : P: P

সাথে পতাকা rএবং nপতাকা চালান ।

ব্যাখ্যা

s/.*/c&d/        #Wrap the input in 'c' and 'd' (used as markers)
:x               #Define a label named 'x'
s/ca(.*)bd/c\1d/ #Deletes 'a's preceded by 'c's and equivalently for 'b's and 'd's. This shifts the markers to the center
tx               #If the previous substitution was made, jump to label x
/cd/p            #If the markers are next to one another, print the string

চমৎকার পন্থা। ভাঙ্গনের জন্য ধন্যবাদ।
জোয়েটউইল

3

জাভাস্ক্রিপ্ট, 44 42

ক্রস করা হয়েছে 44 এখনও নিয়মিত 44; (

f=s=>(z=s.match`^a(.+)b$`)?f(z[1]):s=="ab"

যাও recursively বাইরের stripping বন্ধ করে কাজ করে aএবং bএবং যাও recursively নির্বাচিত ভেতরের মান ব্যবহার কিন্তু .+। যখন ^a.+b$বামে কোনও মিল নেই , তখন চূড়ান্ত ফলাফলটি হচ্ছে বাকী স্ট্রিংয়ের সঠিক মান কিনা ab

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

console.log(["ab","aabb","aaabbb","aaaabbbb","aaaaabbbbb","aaaaaabbbbbb"].every(f) == true)
console.log(["","a","b","aa","ba","bb","aaa","aab","aba","abb","baa","bab","bba","bbb","aaaa","aaab","aaba","abaa","abab","abba","abbb","baaa","baab","baba","babb","bbaa","bbab","bbba","bbbb"].some(f) == false)

3

এএনটিএলআর, 31 বাইট

grammar A;r:'ab'|'a'r'b'|r'\n';

@ ডিসমেকির ওয়াইএসিসির উত্তর হিসাবে একই ধারণাটি ব্যবহার করুন , কিছুটা আরও গল্ফড।

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

$ antlr A.g4
$ javac A*.java

তারপরে STDIN এ ইনপুট দিয়ে পরীক্ষা করুন grun A r :

$ echo "aaabbb" | grun A r

যদি ইনপুটটি বৈধ হয় তবে কিছুই আউটপুট হবে না; যদি এটি অবৈধ grunহয় তবে একটি ত্রুটি দেবে (হয় হয়)token recognition error , extraneous input, mismatched input, অথবা no viable alternative)।

ব্যবহারের উদাহরণ:

$ echo "aabb" | grun A r
$ echo "abbb" | grun A r
line 1:2 mismatched input 'b' expecting {<EOF>, '
'}

একক নিয়মে বিকল্প হিসাবে নিউলাইনটিকে যুক্ত করা চালাক কৌশল। আমার ধারণা আমিও বেশ কয়েকটা পথ ইয়্যাক-এ সঞ্চয় করতে পারতাম। grammerশব্দ antlr সঙ্গে golfing জন্য প্রচণ্ড আপত্তি, যদিও। Kind قلান ব্যবহার করার মত ।
dmckee

3

সি, 69 বাইট

69 বাইট:

#define f(s)strlen(s)==2*strcspn(s,"b")&strrchr(s,97)+1==strchr(s,98)

অপরিচিতদের জন্য:

  • strlen স্ট্রিংয়ের দৈর্ঘ্য নির্ধারণ করে
  • strcspn স্ট্রিংয়ে প্রথম সূচকটি প্রদান করে যেখানে অন্যান্য স্ট্রিং পাওয়া যায়
  • strchr একটি অক্ষরের প্রথম উপস্থিতিতে একটি পয়েন্টার প্রদান করে
  • strrchr একটি চরিত্রের শেষ ঘটনাটিতে একটি পয়েন্টার প্রদান করে

তিতাসকে অনেক ধন্যবাদ!


1
এর >97পরিবর্তে একটি বাইট সংরক্ষণ করুন==98
টাইটাস

2
61 বাইট সমাধান "আবাব" এর মতো স্ট্রিংগুলিতে মিথ্যা ধনাত্মক দেয়। Ideone.com/nmT8rm
জেস্মিস

আহ আপনি সঠিক জেসমিস, ধন্যবাদ। আমি এই সম্পর্কে আবার চিন্তা করতে হবে।
জোশ

69 বাইট সমাধানে ফিরে আসা, এই পদ্ধতির সাহায্যে আমি আরও সংক্ষিপ্ত পেতে পারি কিনা তা নিশ্চিত নয়।
জোশ

3

আর, 64 61 55 বাইট, 73 67 বাইট (শক্ত) বা 46 বাইট (যদি খালি স্ট্রিং অনুমোদিত হয়)

  1. আবার, xnor এর উত্তর পুনরায় কাজ। যদি এটি বিধি দ্বারা বোঝানো হয় যে ইনপুটটি aগুলি এবং bএর একটি স্ট্রিং নিয়ে থাকবে তবে এটি কাজ করা উচিত: অভিব্যক্তিটি বৈধ, নিক্ষেপ এবং ত্রুটি বা অন্য কিছু না হলে NULL প্রদান করে।

    if((y<-scan(,''))>'')eval(parse(t=chartr('ab','{}',y)))
    
  2. যদি ইনপুটটি শক্ত না হয় এবং এতে কিছু আবর্জনা থাকতে পারে, উদাহরণস্বরূপ aa3bb, তবে নিম্নলিখিত সংস্করণটি বিবেচনা করা উচিত (অবশ্যই TRUEসত্য পরীক্ষার ক্ষেত্রে ফিরে আসতে হবে , নাল নয়):

    if(length(y<-scan(,'')))is.null(eval(parse(t=chartr("ab","{}",y))))
    
  3. অবশেষে, যদি খালি স্ট্রিংগুলির অনুমতি দেওয়া হয়, আমরা খালি খালি ইনপুটটির শর্তটিকে উপেক্ষা করতে পারি:

    eval(parse(text=chartr("ab","{}",scan(,''))))
    

    আবার, যদি সাফল্য হয় তবে অন্য কিছু নয়।


আমি আর জানি না, খালি ইনপুট দেওয়ার জন্য আপনার ফলাফল কী? (মিথ্যা হওয়া উচিত)
তিতাস

খালি ইনপুট পরীক্ষা করার জন্য আসলেই কোনও ছোট্ট উপায় নেই?
টাইটাস

সংস্করণ 1: শুধু কিছুই (সঠিক ইনপুট শুধুমাত্র ফেরৎ NULL), সংস্করণ 2: শুধু কিছুই (সঠিক ইনপুট শুধুমাত্র ফেরৎ TRUE), সংস্করণ 3 (অভিমানী খালি স্ট্রিং, ঠিক আছ রাষ্ট্র হিসেবে): NULL। আর একটি স্ট্যাটিস্টিকাল অবজেক্ট-ভিত্তিক ভাষা যা কোনও হুঁশিয়ারি ছাড়াই সবকিছু ঠিকঠাক করে দেয়।
আন্দ্রে কোস্টায়ারকা

এই (উত্তর 1) আরও 55 বাইট উন্নত করা যায়if((y<-scan(,''))>'')eval(parse(t=chartr('ab','{}',y)))
: Giuseppe

3

জাপট , 11 বাইট

©¬n eȦUg~Y

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

জেএস-এ অসম্পূর্ণ যা দেয় তা বাদ দেয় trueবা দেয় ।false""""

আনপ্যাকড এবং কীভাবে এটি কাজ করে

U&&Uq n eXYZ{X!=Ug~Y

U&&     The input string is not empty, and...
Uq n    Convert to array of chars and sort
eXYZ{   Does every element satisfy...?
X!=       The sorted char does not equal...
Ug~Y      the char at the same position on the original string reversed

ডেনিসের এমএটিএল সমাধান থেকে গৃহীত ।


2

সি (আনসি), 65 75 বাইট

Golfed:

l(b,i,j,k)char*b;{for(i=j=0;(k=b[i++])>0&k<=b[i];)j+=2*(k>97)-1;return !j;}

ব্যাখ্যা:

প্রতিটি বিতে একটি মান j এবং ইনক্রিমেন্ট জে সেট করে এবং অন্য যে কোনও কিছুতে j হ্রাস করে। আগের চিঠিটি পরের চিঠির চেয়ে কম বা সমান কিনা তা পরীক্ষা করা হয়েছে যাতে আবাবকে কাজ করতে বাধা দেয়

সম্পাদনাগুলি

আবাব মামলার জন্য চেক যুক্ত করা হয়েছে।


ভালো স্ট্রিং উপর মিথ্যা positives দেবে না baবা abab?
Zgarb

আহ্ হ্যাঁ, আমি পোস্টটি ভুলভাবে লিখছি যেহেতু আমার জন্য ছবিটি ব্লক করার পরে আমি দেখতে পেলাম না। ফিক্সিং!
dj0wns

2

ব্যাচ, 133 বাইট

@if ""=="%1" exit/b1        Fail if the input is empty
@set a=%1                   Grab the input into a variable for processing
@set b=%a:ab=%              Remove all `ab` substrings
@if "%a%"=="%b%" exit/b1    Fail if we didn't remove anything
@if not %a%==a%b%b exit/b1  Fail if we removed more than one `ab`
@if ""=="%b%" exit/b0       Success if there's nothing left to check
@%0 %b%                     Rinse and repeat

একটি ফেরত পাঠায় ERRORLEVELব্যর্থতা সাফল্যের 0, 1। ব্যাচ খালি স্ট্রিংগুলিতে সাবস্ট্রিং প্রতিস্থাপন করতে পছন্দ করে না, সুতরাং আমাদের এটির সামনে পরীক্ষা করতে হবে; যদি খালি প্যারামিটারটি বৈধ হয়, তবে 6 লাইনটি প্রয়োজনীয় হবে না।


2

পাওয়ারশেল ভি 2 +, 61 52 বাইট

param($n)$x=$n.length/2;$n-and$n-match"^a{$x}b{$x}$"

$nস্ট্রিং হিসাবে ইনপুট নেয় , $xহিসাবে তৈরি করে half the length। নির্মাণ একটি -andমধ্যবর্তী বুলিয়ান তুলনা $nএবং -matchএকটি সমান সংখ্যা Regex বিরুদ্ধে Regex অপারেটর a's এবং bএর। আউটপুটস বুলিয়ান $TRUEবা $FALSE$n-andহিসাব নেই ""= $FALSE

বিকল্প, 35 বাইট

$args-match'^(a)+(?<-1>b)+(?(1)c)$'

এটি NET ব্যালেন্সিং গোষ্ঠীগুলির উপর ভিত্তি করে, পাওয়ারশেল অপারেটরে কেবল এনপ্যাপুলেটেড লিকির উত্তর থেকে রেজেক্স ব্যবহার করে -match। সত্যের জন্য স্ট্রিং, বা মিথ্যার জন্য খালি স্ট্রিংটি প্রদান করে।


বিকল্প সংস্করণে আপনার -matchবিরুদ্ধে মূল্যায়ন করা উচিত $args[0], অন্যথায় -matchফিল্টার হিসাবে কাজ করবে
ম্যাথিয়াস আর জেসেন

@ ম্যাথিয়াসআর জেসেন প্রোডাকশন কোডে হ্যাঁ, তবে আমরা [0]এখানে গল্ফ করতে পারি কারণ আমাদের কেবল একটি ইনপুট দেওয়া হয়েছে এবং আউটপুট হিসাবে আমাদের কেবল একটি সত্য / মিথ্যা মান দরকার need যেহেতু একটি খালি স্ট্রিংটি মিথ্যা এবং একটি খালি খালি স্ট্রিং সত্যবাদী তাই আমরা অ্যারের বিপরীতে ফিল্টার করতে পারি এবং হয় ইনপুট স্ট্রিং ফিরে পেতে পারি বা কিছুই ফিরিয়ে আনতে পারি না, যা চ্যালেঞ্জের প্রয়োজনীয়তা পূরণ করে।
অ্যাডমবর্কবার্ক

2

পাইথ - 13 বাইট

&zqzS*/lz2"ab

ব্যাখ্যা:

  qz          #is input equal to
          "ab #the string "ab"
     *        #multiplied by
      /lz2    #length of input / 2
    S         #and sorted?
&z            #(implicitly) print if the above is true and z is not empty

আপনি ইনপুট হিসাবে একটি স্ট্রিং ব্যবহার করতে পারেন এবং তারপরে এটি তৈরি করতে পারেন&qS*/lQ2"ab
লিক নুন

টিপটির জন্য ধন্যবাদ! আপনি কীভাবে / কেন কাজ করে তা ব্যাখ্যা করতে পারেন? এটি আমার প্রথমবারের মতো পাইথ ব্যবহার করছে
কাউয়াবাংহোল

উদাহরণস্বরূপ, +4প্রসারিত হবে +4Q(আর্গুমেন্টের অন্তর্নিহিত ফিলিং)
লিক নুন

2

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

p x=elem x$scanl(\s _->'a':s++"b")"ab"x

ব্যবহারের উদাহরণ: p "aabb"-> True

scanl(\s _->'a':s++"b")"ab"x["ab", "aabb", "aaabbb", ...]মোট (length x)উপাদানগুলির সাথে একটি তালিকা তৈরি করুন । এই তালিকায় আছে elemকিনা xতা পরীক্ষা করে দেখুন ।


2

পাইথন, 43 40 বাইট

lambda s:''<s==len(s)/2*"a"+len(s)/2*"b"

Leaky নুন ধন্যবাদ সুস্পষ্ট সমাধান একত্রিত

অন্যান্য ধারণা, 45 বাইট:

lambda s:s and list(s)==sorted(len(s)/2*"ab")

লেন / ২ ব্যবহার করে -4 বাইট (অর্ধেক শেষ হলে আমি ত্রুটি পাই)

এখন খালি স্ট্রিংয়ের জন্য মিথ্যা দেয়

-3 বাইট xnor ধন্যবাদ


হ্যাঁ, ল্যাম্বডাসের নাম রাখতে হবে না।
ফাঁস নুন

lambda s:list(s)==sorted("ab"*len(s)//2)(পাইথন 3)
লিকি নুন

lambda s:s=="a"*len(s)//2+"b"*len(s)//2(পাইথন 3)
লিকি নুন

হ্যাঁ, আমি এটি পোস্ট করার সময় বুঝতে পেরেছি। হ্যাঁ, সুস্পষ্ট সমাধানটি পাইথন 2-এ সংক্ষিপ্ত:
কার্লকাস্টার

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