শিরোনামে সংলগ্ন অক্ষরগুলি কী আছে? [3, 4]!


21

উদ্দেশ্য অনুসারে শিরোনাম ভুল বানান। কেন তা জানতে আরও পড়ুন।

আপনার টাস্ক: অক্ষরগুলি সহ একটি সীমানাযুক্ত স্ট্রিং বা তালিকা দেওয়া হয়েছে A,B,C,D, সমস্ত সংলগ্ন সমান অক্ষরের সূচকগুলি আউটপুট দেয়। আউটপুট একাধিক লাইনে একাধিক স্ট্রিং / পূর্ণসংখ্যা, একটি তালিকা / অ্যারে বা একটি সীমানাযুক্ত স্ট্রিং হতে পারে।

সমস্ত আউটপুট একটি তালিকা বা স্ট্রিং বা একাধিক মুদ্রিত লাইনে হওয়া উচিত। প্রতিটি মুদ্রিত লাইন, যদি একাধিক হয় তবে কেবল 1 টি স্ট্রিং বা সংখ্যা থাকা উচিত। ট্রেলিং তড়িঘড়ি ঠিক আছে।

ইনপুট / আউটপুট মানক পদ্ধতি। স্ট্যান্ডার্ড লুফোলস প্রযোজ্য।

উদাহরণস্বরূপ, ইনপুটটি 'ABCDDCBA'আউটপুট করা উচিত 3,4বা 4,50- থেকে 1- সূচিযুক্ত কিনা তার উপর নির্ভর করে, কারণ those সংখ্যাগুলি এর সূচক Dএবং তার Dপরবর্তী।

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

পরীক্ষার ক্ষেত্রে একটি একক স্ট্রিং হিসাবে ইনপুট দেওয়া হয়, এবং আউটপুটটি একটি- ,ডিলিমিটেড স্ট্রিং হিসাবে দেওয়া হয় । আউটপুটগুলি 0-সূচকযুক্ত হয়, প্রতিটি আউটপুটযুক্ত আইটেমকে 1-ইনডেক্সযুক্ত হতে 1 যুক্ত করুন।

Input: 'ABCDCABCD'
Output: ''

Input: 'AABBCCDD'
Output: '0,1,2,3,4,5,6,7'

Input: 'ABCDDDCBA'
Output: '3,4,5'

Input: 'ABBCDD'
Output: '1,2,4,5'

এটি , তাই সংক্ষিপ্ততম কোড জয়!


আমরা কি আউটপুটে একটি পেছনের সীমানা পেতে পারি?
বিড়াল বিড়াল

@ বেসিকসুনসেট শিওর
কমরেড স্পার্কলপনি

1
@ জোনাথান অ্যালান এটি ঠিক আছে কারণ এটি কেবল একটি তালিকা আউটপুট করে।
কমরেড স্পার্কলপনি

2
একটানা অক্ষরের সূচকগুলি কি একাধিকবার উপস্থিত হতে পারে? যেমন তৃতীয় পরীক্ষার ক্ষেত্রেও 3,4,4,5বৈধ?
লুক 18

1
আপনি কি এমন কোনও টেস্ট কেস যুক্ত করতে পারেন যার সাথে প্রতিসম মিল নেই? উদাহরণস্বরূপAABBCD -> 1,2,3,4
রিলে

উত্তর:


5

এমএটিএল , 8 7 বাইট

d~ftQvu

আউটপুটটি 1-ভিত্তিক।

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

উদাহরণ সহ ব্যাখ্যা

ইনপুট বিবেচনা করুন 'ABCDDDCBA'

d     % Implicitly input a string. Consecutive differences
      % STACK: [1  1  1  0  0 -1 -1 -1]
~     % Negate. Each character that equals the next gives true
      % STACK: [0 0 0 1 1 0 0 0]
f     % Find: (1-based) indices of true elements
      % STACK: [4 5]
tQ    % Duplicate, add 1 element-wise
      % STACK: [4 5], [5 6]
v     % Concatenate vertically
      % STACK: [4 5; 5 6]
u     % Unique (remove duplicates). This doesn't automatically sort, but the 
      % output will be sorted because the input, read in column-major order, is 
      % Implicitly display
      % STACK: [4; 5; 6]

8

রেটিনা , 33 29 23 বাইট

মার্টিন ইন্ডারকে 6 বাইট সংরক্ষণ করা হয়েছে

T`L`:`(.)\1+
:
$.`¶
T`L

সূচকগুলির একটি লাইনফিড-বিচ্ছিন্ন তালিকা আউটপুট করে।

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

ব্যাখ্যা

T`L`:`(.)\1+

একই অক্ষরের রোল লিখিত রূপটি কলোনগুলিতে রূপান্তর করুন, যেখানে নকল অক্ষর রয়েছে এমন অবস্থানগুলি চিহ্নিত করতে mark

:
$.`¶

তারপরে পাঠের দৈর্ঘ্যের সাথে প্রতিটি কোলন প্রতিস্থাপন করুন তারপরে একটি লাইনফিড।

T`L

অবশেষে, বাকী কোনও অক্ষর মুছুন।


7

জেলি , 7 বাইট

JṁŒgḊÐf

1 ভিত্তিক; ওপি কর্তৃক অনুমোদিত ইন্ডেক্সের রানগুলির তালিকার একটি তালিকা ফেরত দেয়

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

কিভাবে?

JṁŒgḊÐf - Main link: char-list s       e.g. 'DCCABBBACCCD' (which is a python interpreted input of ['D','C','C','A','B','B','B','A','C','C','C','D'])
J       - range(length(s))                  [1,2,3,4,5,6,7,8,9,10,11,12]
  Œg    - group-runs(s)                     [['D'],['C','C'],['A'],['B','B','B'],['A'],['C','C','C'],['D']]
 ṁ      - mould left like right             [[1],[2,3],[4],[5,6,7],[8],[9,10,11],[12]]
     Ðf - filter keep items that would be truthy (empty is not truthy) after applying:
    Ḋ   -     dequeue (x[1:])               [    [2,3],    [5,6,7],    [9,10,11]     ]        

2
- যে বিষয়গুলি আমি চাই 05AB1E 500 এর জন্য করতে পারে দয়া করে।
ম্যাজিক অক্টোপাস উরন

1
আমি আরও বেশি বেশি অনুভব করি যে এই ভাষাটি এখানে প্রতারণার মতো। : ডি
আভামান্ডার

@ কমরেডস্পার্কলপনি কেন গ্রাহক চেকটিকে পূর্বাবস্থায় ফেরান?
জোনাথন অ্যালান

7

ব্রেন-ফ্লাক , 57 46 বাইট

{({}[({})]<(([]<>)[()])>){(<{}{}{}>)}{}<>}<>

জন্য +2 অন্তর্ভুক্ত -ar

0-ভিত্তিক সূচক ব্যবহার করে।

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

# While true
{

  # Subtract the second value on the stack from the first
  ({}[({})]

  # Push the height of this stack (the main stack) on the other stack
  <(([]<>)

  # Push the height of the main stack - 1
  [()])>

  # Push the difference that we calculated a second ago
  )

  # If they weren't the same character
  {

    # Pop the difference and the two stack heights
    (<{}{}{}>)

  # End if
  }

  # Pop the difference (or the 0 to get out of the if)
  {}

# Switch back to the main stack and end while
<>}

# Switch to the stack with the indexes and implicitly print
<>

6

গণিত, 32 বাইট

Union@@StringPosition[#,x_~~x_]&

খাঁটি ফাংশন যা অভিন্ন চরিত্রের সাথে সংযুক্ত অক্ষরের 1-সূচিযুক্ত অবস্থানগুলি দেয়।

ব্যাখ্যা:

StringPosition["string","sub"]শুরুর এবং শেষের অক্ষরের অবস্থানগুলির একটি তালিকা দেয় যেখানে "sub"এটির একটি স্ট্রিং হিসাবে উপস্থিত হয় "string"x_~~x_এটি StringExpressionদুটি সংলগ্ন, অভিন্ন অক্ষরের সাথে মেলে। উদাহরণস্বরূপ, StringPosition["ABCDDDCBA",x_~~x_]দেয় {{4, 5}, {5, 6}}। আবেদন Unionতালিকাগুলি, বাছাই করে এবং সদৃশগুলি মুছে দেয়।


5

ব্রেন-ফ্লাক , 69, 59 , 56 বাইট

{({}[({})]<(())>){((<{}{}>))}{}{([{}]([]<>))(<>)}{}}<>

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

-arপতাকাগুলির জন্য +2 বাইট যা ASCII ইনপুট সক্ষম করে এবং স্ট্যাকটিকে বিপরীত করে।

0-ভিত্তিক সূচক ব্যবহার করে। আমার পুশ-পপ রিডানডেন্সি হ্রাস করে 10 বাইট সংরক্ষণ করা হয়েছে । 1 থেকে 0-ভিত্তিক সূচকগুলিতে স্যুইচ করে আরও 4 বাইট সংরক্ষণ করেছেন।

এটি প্রায় একমাত্র স্ট্রিং ভিত্তিক চ্যালেঞ্জ যা মস্তিষ্ক-ফ্লাক ভাল। কারণ সাধারণভাবে স্ট্রিং প্রসেসিংয়ে এটি ভয়ানক though কোডটি কীভাবে এটি কাজ করে তা বোঝাতে মন্তব্যগুলির পঠনযোগ্য সংস্করণ এখানে রয়েছে:

#While True
{

    #Determine if top two are equal
    ({}[({})]<(())>){((<{}{}>))}{}

    #If so
    {

        #Pop the one, and negate it's value (giving us -1)
        ([{}]

        #Push stack height over
        ([]<>)

        #Then push stack height plus the negated pop (-1)
        ) 

        #Push a zero back onto the main stack
        (<>)

    #Endwhile
    }

    #Pop the zero
    {}

#Endwhile
}

#Toggle back, implicitly display
<>


@ রিলে স্থির! (এবং এখনও একটি বাইট সংক্ষিপ্ত: পি)
ডিজেএমসিএমহেম

আমি সবসময় ভুলে -r। এটি আমাকে 46 এ নামিয়েছে
রিলি

5

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

l⟦k:?z{sĊtᵐ=∧Ċ∋h}ᶠd

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

ব্যাখ্যা

ব্র্যাচল্যাগ সাধারণত সূচকগুলির সাথে ভয়ানক, যা আবার এখানে প্রদর্শিত হয়।

যদি false.কোনও সংলগ্ন অক্ষর নেই এমন ক্ষেত্রে যদি গ্রহণযোগ্য আউটপুট হয় তবে প্রতিস্থাপন ᶠdকরে এটি 1 বাইট কম হবে

l⟦k                      The list [0, …, length(Input) - 1]
   :?z                   Zip the Input with this list
      {         }ᶠd      Find with no duplicates:
            ∧Ċ∋h           The heads of each element of Ċ = [A, B] (i.e. the indexes)…
        Ċtᵐ=               …where the tails of both A and B are equal (i.e. the letters)…
       sĊ                  …and where Ċ = [A, B] is a substring of the Input

4

অষ্টক , 35 বাইট

@(s)unique([x=find(~diff(+s)),x+1])

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

আমার এমএটিএল উত্তরের অনুরূপ । এখানে uniqueস্বয়ংক্রিয়ভাবে সাজানো হয়। ইনপুটটি diffঅবশ্যই রূপান্তর করতে হবে double, যা ইউনারির দ্বারা সম্পন্ন হয় +


4

কিউবিক্স, 37 32 31 29 28 বাইট

তিনটি বাইট সাশ্রয়ের দিকের দিকে আমাকে নির্দেশ করার জন্য ETHProductions কে ধন্যবাদ to

$uO@(;Usoi?-!w>;.....S_o\;#O

এখানে চেষ্টা করুন ! দ্রষ্টব্য যে আউটপুট সূচকগুলি 1-ভিত্তিক এবং আরোহী ক্রমে নয়।

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

      $ u O
      @ ) ;
      U s o
i ? - ! w > ; . . . . .
S _ o \ ; # O . . . . .
. . . . . . . . . . . .
      . . .
      . . .
      . . .

ব্যাখ্যা

এটি অক্ষর অনুসারে ইনপুট চরিত্রটি পড়ে কাজ করে। দুটি অক্ষরের তুলনা করার জন্য, আমরা কেবল তাদের চরিত্রের কোডগুলি বিয়োগ করি এবং ফলাফল যদি 0 হয় তবে আমরা স্ট্যাকের বর্তমান দৈর্ঘ্য, একটি স্থান, স্ট্যাকের বর্তমান দৈর্ঘ্য - 1 এবং অন্য একটি স্থান মুদ্রণ করি। তারপরে আমরা স্ট্যাকটি কিছুটা পরিষ্কার করি এবং আমরা আবার পঠনের লুপ দিয়ে শুরু করি। ইনপুট স্ট্রিংয়ের শেষে পৌঁছে গেলে প্রোগ্রামটি বন্ধ হয়ে যায়।


হুম, আপনি যদি স্ট্যাকটি মোটামুটি পরিষ্কার রাখতে পারেন তবে #আপনার প্রয়োজন হলে স্ট্যাকের দৈর্ঘ্য পেতে আপনি সক্ষম হতে পারেন । (এছাড়াও কোডটিতে এলওএলড হয়েছে ;_;;))
ইটিএইচ প্রডাকশনগুলি 15:52

একটি প্রাথমিক উদাহরণ (সম্ভবত পুরোপুরি গল্ফড নয়); ethproductions.github.io/cubix/… (দ্রষ্টব্য: এটি 1-ইনডেক্সড, 0-ইনডেক্সড নয়)
ETH উত্পাদনের

অনুস্মারকটির জন্য ধন্যবাদ। আমি আপনার সংস্করণে একটি বাইট গল্ফ করেছি এবং এটি যুক্ত করেছি। আমি anoter বাইট বা দুই নামবো করতে সক্ষম হতে পারেন ...
লুক

আইডিয়া: আপনি যদি পঞ্চম সারির যুক্তির অংশটি !$wপরিবর্তে !wএবং চতুর্থ সারিতে স্থানান্তরিত করেন তবে কী হবে ? (এই মুহুর্তে চেষ্টা করতে পারছি না কারণ আমি দরজাটি সরে যাচ্ছি)
ইটিএইচ প্রডাকশনগুলি

আমি এটিও ভেবেছিলাম, তবে আমি মনে করি না এটি অনেকগুলি বাইট সংরক্ষণ করবে। আমি চেষ্টা করব যদিও।
লুক


3

সি # , 115 বাইট


Golfed

i=>{var o="";for(int x=1,l=i.Length;x<=l;x++)o+=(x<l&&i[x]==i[x-1])||(x>1&&i[x-1]==i[x-2])?(x-1)+" ":"";return o;};

Ungolfed

i => {
   var o = "";

   for( int x = 1, l = i.Length; x <= l; x++ )
      o += ( x < l && i[ x ] == i[ x - 1 ] ) || ( x > 1 && i[ x - 1 ] == i[ x - 2 ] )
         ? ( x - 1 ) + " "
         : "";

   return o;
};

অসম্পূর্ণ পাঠযোগ্য

i => {
   // List of positions
   var o = "";

   // Cycle through the string
   for( int x = 1, l = i.Length; x <= l; x++ )
      // Check if 'x' is below the string length
      //    and if the current and previous char are the same...
      //    ... or if 'x' is beyong the string length
      //    and the 2 previous chars are the same.
      o += ( x < l && i[ x ] == i[ x - 1 ] ) || ( x > 1 && i[ x - 1 ] == i[ x - 2 ] )

         // If true, add the index to the list of positions...
         ? ( x - 1 ) + " "

         // ...otherwise add nothing
         : "";

   // Return the list of positions.
   return o;
};

সম্পূর্ণ কোড

using System;
using System.Collections.Generic;

namespace Namespace {
   class Program {
      static void Main( String[] args ) {
         Func<String, String> f = i => {
            // List of positions
            var o = "";

            // Cycle through the string
            for( int x = 1, l = i.Length; x <= l; x++ )
               // Check if 'x' is below the string length
               //    and if the current and previous char are the same...
               //    ... or if 'x' is beyong the string length
               //    and the 2 previous chars are the same.
               o += ( x < l && i[ x ] == i[ x - 1 ] ) || ( x > 1 && i[ x - 1 ] == i[ x - 2 ] )

                  // If true, add the index to the list of positions...
                  ? ( x - 1 ) + " "

                  // ...otherwise add nothing
                  : "";

            // Return the list of positions.
            return o;
         };

         List<String>
            testCases = new List<String>() {
               "ABCDCABCD",
               "AABBCCDD",
               "ABCDDDCBA",
               "",
               "A",
               "AA",
               "AAA",
         };

         foreach( String testCase in testCases ) {
            Console.WriteLine( $"{testCase}\n{f( testCase )}\n" );
         }

         Console.ReadLine();
      }
   }
}

রিলিজ

  • v1.0 - 115 bytes- প্রাথমিক সমাধান।

নোট

কিছুই যুক্ত করার নেই



2

কে, 18 বাইট

{?,/-1 0+/:&:=':x}

উদাহরণ:

k){?,/-1 0+/:&:=':x}"AABCDDDCBAA"
0 1 4 5 6 9 10
k){?,/-1 0+/:&:=':x}"ABCDCBA"
()

অনুবাদটি qবুঝতে সহজ:

{distinct raze -1 0+/:where not differ x}

এটি আমার প্রাথমিক সমাধানও ছিল! : ডি
zgrep

2

জাভাস্ক্রিপ্ট, 52 বাইট

1 নাইট বন্ধ করে গল্ফ করার জন্য @ নীলকে ধন্যবাদ

x=>x.map((a,i)=>a==x[++i-2]|a==x[i]&&i).filter(a=>a)

অক্ষরের 0-সূচিযুক্ত অ্যারে হিসাবে ইনপুট গ্রহণ করে
1-ইনডেক্সেড অ্যারে হিসাবে আউটপুট ফেরত দেয়

ব্যাখ্যা

x.map()

স্ট্রিংয়ের প্রতিটি চরিত্রের জন্য

(a,i)=>(a==x[++i-2]|a==x[i])*i

যদি এটি পূর্বের অক্ষর বা পরবর্তী অক্ষরের সমান হয় তবে সূচকটি + 1 প্রদান করুন অন্যথায় ফিরে আসবেন না (অ্যারেতে অপরিবর্তিত পাতা)

.filter(a=>a)

ফলাফলের অ্যারে থেকে সমস্ত অপরিবর্তিত উপাদানগুলি সরান

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


চান &&iউপর একটি বাইট সংরক্ষণ (...)*i?
নীল

@Neil && চেয়ে দ্রুত |, যা এটি স্থাপিত হবে সবসময় ফিরে আমি
fənɛtɪk

0|0&&60, 1|0&&66 হয়, 6 হয়, 0|1&&66 1|1&&6হয়। আপনি যা চান তা কি তাই নয়?
নীল

আমার মনে হয় আমি ভাবছিলাম আমি এখনও ছিলাম || পরিবর্তে |
fəˈnɛtɪk

হ্যাঁ, এটি ব্যাখ্যা করবে।
নীল

2

পাইথন 2, 55 54 বাইট

m=j=0
for i in input():
 if m==i:print~-j,j,
 j+=1;m=i

অনলাইনে চেষ্টা করে দেখুন!

আউটপুট সূচকগুলি স্পেস দ্বারা পৃথক করা হয়েছে (দ্রষ্টব্য যে এটি কয়েকটি সূচক ওপির অনুমতি অনুসারে দ্বিগুণ প্রদর্শন করে)


1

পার্ল 5 , 37 বাইট

কোড 35 plপতাকা বাইট ।

s/(?<=(.))\1|(.)(?=\2)/print pos/ge

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

(?<=(.))\1|(.)(?=\2)দুটি প্রত্যাশিত অক্ষরের ( (?<=(.))\1) এর মধ্যে বা পুনরাবৃত্তি হওয়া একটি অক্ষরের আগে মিলবে ( (.)(?=\2))।
তারপরে, print posম্যাচের অবস্থানটি মুদ্রণ করে। ( posযখন /gসংশোধনকারী সহ একটি রেগেক্সে ব্যবহৃত হয় তখন বর্তমান ম্যাচের সূচক থাকে )।





1

ব্যাচ, 139 বাইট

@set/ps=
@set/ai=c=0
:l
@if %s:~,1%==%s:~1,1% set c=2
@if %c% gtr 0 echo %i%
@set/ai+=1,c-=1
@if not "%s:~1%"=="" set s=%s:~1%&goto l

STDIN এ ইনপুট নেয়। চলকটিতে কত নম্বর মুদ্রণ করতে হবে তা ট্র্যাক করে কাজ করে c, যা একটি জোড় সনাক্ত করার পরে 2 এ পুনরায় সেট করা হয়। দ্রষ্টব্য: 6 বাইট ব্যয়ে, বেশিরভাগ ASCII চরিত্রের সাথে কাজ করা শক্ত করা যেতে পারে এবং কেবল নয় ABCD


1

সি #, 89 বাইট

using System.Linq;s=>string.Join("",s.Skip(1).Select((a,i)=>a==s[i]?i+" "+(i+1)+" ":""));

যদি এক সারিতে তিন বা ততোধিক অক্ষর থাকে তবে সূচিগুলি পুনরাবৃত্তি হয়। যা মন্তব্য করেছেন কমরেড স্পার্কলপনি অনুমোদিত।

অসমাপ্ত পুরো প্রোগ্রাম:

using System;
using System.Collections.Generic;
using System.Linq;

namespace Namespace
{
    class Class1
    {
        static void Main(string[] args)
        {
            Func<string, string> f2 =
                s => string.Join("" ,         //Combine the results into one string
                s.Skip(1)                     //Start with the second element
                .Select(
                    (a, i) =>                 // 'a' is the current element, 'i' is the index of the element in the result of 'Skip'
                    a == s[i] ?               // therefore 's[i]' is the previous element; compare it with the current one
                    i + " " + (i + 1) + " " : //If true, return the indexes
                    ""                        //Otherwise an empty string
                ));

            var tests = new string [] {
               "ABCDCABCD",
               "AABBCCDD",
               "ABCDDDCBA",
               "ABBCDD"
            };

            foreach (var test in tests)
            {
                Console.WriteLine(test);
                Console.WriteLine(string.Join("", f2(test)));
                Console.WriteLine();
            }

            Console.ReadLine();
        }
    }
}

1

কিউবিআইসি , 42 বাইট

;[2,_lA||~mid$(A,a-1,1)=mid$(A,a,1)|?a-1,a

নমুনা আউটপুট:

Command line: AADCDBBD
 1             2 
 6             7 

ব্যাখ্যা:

;               Get A$ from the cmd line
[2,    |        FOR a% = 2 TO
   _lA|              the length of A$
~mid$(A,a-1,1)  IF the character at index a%
=mid$(A,a,1)    equals the char at index a%-1
|               THEN
?a-1,a          PRINT both indexes, tab-separated
                Any further doubles are printed on a separate line
                The IF and FOR are closed implicitly

সম্পাদনা: কিউবিসির এখন সাবস্ট্রিং রয়েছে! এই চ্যালেঞ্জটি এখন 32 বাইটে সমাধান করা যেতে পারে:

;[2,_lA||~_sA,a-1|=_sA,a||?a-1,a

কোথায়:

_s      This is the substring function; it takes 1, 2 or 3 arguments. 
        Arguments are comma-seperated, the list is delimited with |
        In this answer we see Substring take 2 arguments:
  A,    The string to take from
    a|  Starting position (note:uppercase represents strings, lowercase is for nums)
        Any omitted argument (in this case 'length to take') is set to 1.

0

k, 14 বাইট

এটি একটি ফাংশন, এটি একটি স্ট্রিং নেয় এবং সূচকগুলির একটি তালিকা প্রদান করে।

&{x|1_x,0}@=':

ব্যাখ্যা:

           =': /compare each letter to the previous, return binary list
 {       }@    
    1_x,0      /shift left
  x|           /combine shifted and unshifted with binary or
&              /get indices of 1s

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

ব্যবহারবিধি:

&{x|1_x,0}@=':"STRINGGOESHERE"

0

পিএইচপি, 70 বাইট

for(;a&$c=$argn[$i];)$i++&&$argn[$i-2]==$c||$argn[$i]==$c?print$i._:0;

এসটিডিআইএন থেকে ইনপুট নেয়; দিয়ে চালানো -R

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