রাস্তা-দৈর্ঘ্য এনকোডিং


21

মার্কিন যুক্তরাষ্ট্রে , রাস্তায় ট্র্যাফিকের দুটি বিপরীত দিকগুলি পাস করার অনুমতি পেলে ড্যাশযুক্ত হলুদ রেখা এবং পাশের অনুমতি না দেওয়া হলে দুটি শক্ত হলুদ রেখা দ্বারা পৃথক করা হয়।

রোড লাইন গ্রাফিক নিয়ম করে

(কেবল সেই দিকটি অতিক্রম করার অনুমতি দেওয়ার জন্য একটি দিককে ছিন্ন করা যেতে পারে এবং হলুদ লাইনগুলি কেন্দ্র বা বিপরীতমুখী লেনের মতো অন্যান্য জিনিসকে বোঝাতে পারে তবে আমরা সেগুলির কোনওটির সাথেই উদ্বিগ্ন নই))

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

প্রতিটি Pএবং Nইনপুট স্ট্রিংয়ের আগে ইতিবাচক দশমিক সংখ্যা থাকবে be এই সংখ্যাটি রাস্তার বর্তমান অংশের পাসিং বা কোনও পাসিং অঞ্চল নির্ধারণ করে না।

উদাহরণ

একটি ইনপুটটি কোনও পাসিং রোডের 12N12 টি কলাম তৈরি করতে পারে (কেন্দ্রের লাইন সমস্ত ):=

____________


============

____________

একটি ইনপুট 12P12 টি কলাম পাসিং রোড (কেন্দ্র লাইন - পুনরাবৃত্তি) উত্পাদন করবে:

____________


- - - - - - 

____________

পাসিং এবং কোনও পাসিংয়ের পরে একত্রিত করা যায় না, উদাহরণস্বরূপ 4N4P9N7P1N1P2N2P:

______________________________


====- - =========- - - -=-==- 

______________________________

এগুলি 4 টি পাসিং কলাম নয়, তারপরে 4 টি পাসিং , তারপর 9 টি পাসিং নয় ,

নোট করুন যে একটি পাসিং জোন সর্বদা -বাম দিকের ড্যাশ ( ) দিয়ে শুরু হয় , কোনও স্থান ( ) নয়। এটি প্রয়োজন।

বিস্তারিত

  • ইনপুটটিতে কখনও একনাগাড়ে দুটি Nঅঞ্চল বা দুটি Pঅঞ্চল থাকবে না। যেমন 4P5Pকখনই ঘটবে না।
  • শীর্ষস্থানীয় ইতিবাচক সংখ্যা ছাড়া আপনার চিঠিগুলি সমর্থন করার দরকার নেই। সরল Pসর্বদা থাকবে 1P, সরল Nসর্বদা থাকবে 1N
  • রাস্তার চূড়ান্ত কলামের বাইরে না বাড়ানো অবধি পশ্চাদপদ স্থানগুলি থাকতে পারে। একটি বিকল্প ilingচ্ছিক নতুন লাইনে থাকতে পারে।
  • কোনও প্রোগ্রামের পরিবর্তে, আপনি এমন একটি ফাংশন লিখতে পারেন যা রান-দৈর্ঘ্যের এনকোডড স্ট্রিংয়ের মধ্যে নেয় এবং ASCII রাস্তা প্রিন্ট করে বা ফেরত দেয়।
  • কোনও মানক উপায়ে ইনপুট নেয় (স্টিডিন, কমান্ড লাইন, ফাংশন আরগ)।

বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী। টাইব্রেকার আগের পোস্ট।


রাস্তাটি কি অসামান্য হতে হবে, বা লাইনের প্রতিটি পাশে 4 টি রাস্তা ছাপানোর অনুমতি রয়েছে?
orlp

@orlp যদি আপনি জিজ্ঞাসা করছেন যে রাস্তাটি 5 টি সারিগুলির চেয়েও প্রশস্ত হতে পারে, তবে না। যদি আপনি যদি জিজ্ঞাসা করছেন যে স্থানের অক্ষরগুলি কেন্দ্রের লাইনের উপরে বা নীচে ফাঁকা রেখাগুলিতে স্থাপন করা যায়, তবে হ্যাঁ যতক্ষণ না তারা বিশদ বুলেটটি 3 ধরে রাখে
ক্যালভিনের

আমাকে উদাহরণস্বরূপ জিজ্ঞাসা করা যাক, এগুলি উভয়ই একটি বৈধ আউটপুট? gist.github.com/orlp/0e0eae16d6e1fcda5e9b
orlp

পছন্দ করুন
ক্যালভিনের শখ 14

উত্তর:


5

সিজেম, 38 বাইট

"_  - _":N3'=t:P;q~]2/e~z'
*"--"/"- "*

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

আমরা প্রথম ভেরিয়েবল সঠিক রাস্তা কলাম নির্ধারণ Nএবং Pএবং তারপর কেবল ইনপুট স্ট্রিং নির্ণয় করা। এটি দৈর্ঘ্যের একটি জোড়া এবং স্ট্যাকের কলামটিকে ছেড়ে দেয়। আমরা তাদের গ্রুপ আপ, এটা উপর একটি RLD চালানোর পূর্ণ কলাম পেতে TRANSPOSE তাদের যোগদান এবং তারপর পরিশেষে, একটানা রূপান্তর --করার -

:_  - _":N                    e# This is the no passing column. We assign it to N
          3'=t:P              e# Replace the '-' in N with '=" and assign it to P
                q~]2/         e# Read the input, evaluate it and then group it in pairs
                     e~       e# Run a run-length-decoder on the pairs
                       z'
*                             e# Transpose and join with new lines.
 "--"/                        e# Split on two continuous occurrence of -
      "- "*                   e# Join by an alternate "- "

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



5

আরএস , 252 অক্ষর

যদিও এটি গণনা হতে পারে না কারণ আমি এক ঘন্টা আগে মার্টিন বাটনার এর রেটিনার রিপফ হিসাবে কনভার্জেনশন অপারেটর যুক্ত করেছি ... যাইহোক প্রতিযোগিতা করার জন্য আমি এখানে আসলে আসছি না। এটির জন্য একটি রেজেক্স-ভিত্তিক সমাধান তৈরি করা মজাদার।

(\d+\D)/#\1
+(\d*)#(?:(((((((((9)|8)|7)|6)|5)|4)|3)|2)|1)|0)(?=\d*\D)/\1\1\1\1\1\1\1\1\1\1\2\3\4\5\6\7\8\9\10#
\d(?=\d*#N)/=
(^|(?<=\D))\d(?=\d*#P)/-
+(?<=-)\d\d(?=\d*#P)/ -
(?<=-)\d(?=\d*#P)/ 
#\D/
((?:(=|-| ))+)/A\1\n\n\n\1\n\nA\1\n
+(A_*)(.)/\1_
A/

কয়েক বছর ধরে প্রোগ্রামিং ভাষার জন্য আমি মার্টিনের রেটিনা উত্তরটি পেয়েছি ।

ব্যাখ্যা

(\d+\D)/#\1
+(\d*)#(?:(((((((((9)|8)|7)|6)|5)|4)|3)|2)|1)|0)(?=\d*\D)/\1\1\1\1\1\1\1\1\1\1\2\3\4\5\6\7\8\9\10#

এটি প্রচুর যাদু করে। আরও তথ্যের জন্য উপরে উল্লিখিত উত্তরটি দেখুন।

মূলত, ইনপুট সহ 4N4P9N7P1N1P2N2P, এটি ফলাফল হবে:

4444#N4444#P999999999#N7777777#P1#N1#P22#N22#P

পরবর্তী:

\d(?=\d*#N)/=

এটি উত্তীর্ণ প্রতীক (এন) এর পূর্ববর্তী সংখ্যাগুলিকে সমান লক্ষণগুলির সাথে প্রতিস্থাপন করে। পূর্ববর্তী ইনপুট সহ ফলাফল:

====#N4444#P=========#N7777777#P=#N1#P==#N22#P

এই:

(^|(?<=\D))\d(?=\d*#P)/-

প্রথম ড্যাশ সহ উত্তীর্ণ প্রতীক (পি) এর আগের প্রথম সংখ্যাটি প্রতিস্থাপন করে। ফলাফল:

====#N-444#P=========#N-777777#P=#N-#P==#N-2#P

পরবর্তী দুটি লাইন একই প্যাটার্ন অবিরত:

+(?<=-)\d\d(?=\d*#P)/ -
(?<=-)\d(?=\d*#P)/ 

প্রথম লাইনটি বাকী রেখাকে ড্যাশ-স্পেস প্যাটার্নের সাথে প্রতিস্থাপন করে। দ্বিতীয়টি একটি বিজোড় সংখ্যা পরিচালনা করে; এটি সর্বশেষ ড্যাশটির পরে একটি একক পূর্ণসংখ্যার (যেমন -5) ড্যাশ-স্পেস ( -) দিয়ে প্রতিস্থাপন করে । এখন, আউটপুটটি হ'ল:

====#N- - #P=========#N- - - -#P=#N-#P==#N- #P

এখন জিনিসগুলি জায়গায় পড়তে শুরু করেছে। পরবর্তী লাইন:

#\D/

শুধু অপসারণ #Nএবং #P

((?:(=|-| ))+)/A\1\n\n\n\1\n\nA\1\n
+(A_*)(.)/\1_

উপরে এবং নীচে নীচে আন্ডারস্কোরগুলি সেট আপ করুন:

A______________________________


====- - =========- - - -=-==- 

A______________________________

শেষ অবধি, আমরা এগুলি সরিয়েছি A:

A/

2

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

k 'N'="="
k _="- "
d c=c>'/'&&c<':'
p[]=[]
p s=take(read$takeWhile d s)(cycle$k a)++p r where(a:r)=dropWhile d s
f s=unlines[q,"\n",p s,"",q]where q=map(\x->'_')$p s

উদাহরণস্বরূপ রান ( fএকটি স্ট্রিং প্রদান করে, সুতরাং এটি আরও ভাল প্রিন্টের জন্য এটি মুদ্রণ করে):

*Main> putStr $ f "4N4P9N7P1N1P2N2P"
______________________________


====- - =========- - - -=-==- 

______________________________

এটি কীভাবে কাজ করে: pপুনরাবৃত্তভাবে ইনপুট স্ট্রিংকে বিশ্লেষণ করে এবং অনুসন্ধান ফাংশনটির দ্বারা প্রাপ্ত প্রতীকগুলির সংক্ষিপ্ত করে মধ্যবর্তী রেখাটি ফিরিয়ে দেয় k। মূল ফাংশনটি fনিউলাইনগুলির সাথে একটি পাঁচটি উপাদান তালিকার সাথে যুক্ত হয়, শীর্ষ রেখাকে (মধ্যবর্তী রেখার প্রতিটি চর দ্বারা প্রতিস্থাপন করা হয় _), একটি নিউলাইন, মাঝের লাইন, একটি খালি লাইন এবং নীচের লাইন (শীর্ষের মতোই) থাকে।


2

পাইথন 3, 169 168 বাইট। (পাইথন 2 সহ 167)

p,s='',str.split
for _ in s('N '.join(s('P '.join(s(input(),'P')),'N'))):
 v=int(_[:-1]);p+=['='*v,('- '*v)[:v]][_[-1]=='P']
l=len(p)
u='_'*l
print(u+'\n'*3+p+'\n\n'+u)

মোটামুটি অবারিত:

p=''
for i in'N '.join('P '.join(input().split('P')).split('N')).split():

  v=int(i[:-1])         # Get the number from the input section

  if i[-1]=='N':        # Check the letter (last char) from the input section
      p+=('='*v)        # Repeat `=` the number from input (v)
  else:
      p+=('- '*v)[:v]   #Repeat `- ` v times, then take first v chars (half)
l=len(p)                #Get the length of the final line markings
print('_'*l+'\n\n\n'+p+'\n\n'+'_'*l)

print('_'*l                          # Print _ repeated the length of p
           +'\n\n\n'                 # 3 new lines
                    +p+              # print out p (the markings)
                       '\n\n'        # 2 new lines
                             +'_'*l) # Print _ repeated the length of p

for i in
        'N '.join(
                  'P '.join(
                            input().split('P'))
                                               .split('N'))
                                                           .split():
                            # Split the input into items of list at P
                  # Join together with P and ' '
                                                # Split at N...
         # Join with N and ' '
                                                           # Split at space
# Loop through produced list

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


আপনি আপনার বাইট গণনা আপডেট করতে ভুলে গেছেন।
mbomb007

@ mbomb007 এটি গণনা পরিবর্তন করে না: / আমি এটি 169 এটিএমের নীচে পেতে পারি না
টিম

ফেলে p+=['='*v,('- '*v)[:v]][_[-1]=='P']পূর্ববর্তী সেমিকোলন আগের লাইনের শেষে এক বাইট পরিমাণ সঞ্চয় হয়।
mbomb007

এছাড়াও, পাইথন 2 ব্যবহার করে এর পরিবর্তে 1 বাইট সংরক্ষণ করে print
mbomb007

@ mbomb007 এগুলিতে যুক্ত করেছে :) আমার অজগর রয়েছে বলে মনে হচ্ছে এটি আরও খাটো হতে পারে ... তবে আমি নিশ্চিত নই।
টিম

2

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

আশ্চর্যের বিষয়, এখানে আমদানি reকরা সার্থক বলে মনে হয়।

import re
s=""
for x,y in re.findall("(\d+)(.)",input()):s+=(("- ","==")[y=="N"]*int(x))[:int(x)]
t="_"*len(s);print t+"\n"*3+s+"\n"*2+t

2

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

preg_match_all('/(\d+)(\w)/',$argv[1],$m,2);
$o='';
foreach($m as $p)
    $o.=str_replace('--','- ',str_repeat($p[2]<'P'?'=':'-',$p[1]));
$a=preg_replace('/./','_',$o);
echo("$a\n\n\n$o\n\n$a\n");

কোডটি একটি লাইনে থাকতে পারে; এটি আরও পঠনযোগ্য হওয়ার জন্য এখানে একাধিক লাইনে প্রদর্শিত হয় (ফর্ম্যাট করার জন্য ব্যবহৃত শ্বেতস্থান এবং নিউলাইনগুলি গণনা করা হয়নি)।

ট্রেলিং করা নতুন লাইনটি প্রিন্ট না করে দুটি বাইট সংরক্ষণ করা যায়। এর মধ্যে আরও নতুন পাঁচটি বাইট সংরক্ষণ করা যায় echo():

echo("$a


$o

$a");

$o( $o='';) এর সূচনা বাদ দিয়ে ছয়টি অতিরিক্ত বাইট সংরক্ষণ করা যায় তবে এটি একটি নোটিশ ট্রিগার করবে। কমান্ড লাইনটি ব্যবহার করে স্ক্রিপ্টটি চালিয়ে নোটিশটি দমন করা যায়:

$ php -d error_reporting=0 <script_name> 4N4P9N7P1N1P2N2P

এটি এটিকে 174 বাইটে নিয়ে আসে।


2

রুবি, 137 135 বাইট

আমি যে সংক্ষিপ্ততম সাথে আসতে পারি তা নয়, তবে নিকৃষ্টতমের নিকটেই। আংশিকভাবে অপ্টিমাইজারের উত্তর থেকে ধার করা।

require'scanf'
N='_  = _'
P='_  - _'
a=[]
scanf('%d%c'){|l,t|a+=[eval(t).chars]*l}
puts (a.shift.zip(*a).map(&:join)*?\n).gsub'--','- '

Ungolfed:

require 'scanf'

N = '_  = _'
P = '_  - _'
columns = [] # array of columns
# scan stdin for a number followed by a single char
scanf('%d%c') do |length, type|
  columns += [eval(type).chars] * length
done

# Convert to an array of rows, and join into a string
rows = columns.shift.zip(*columns).map(&:join)
str = rows * "\n" # join lines

# Replace '--' by '- ' and print
puts str.gsub(/--/, '- ')

আপনি (এবং পাইথন 2 উত্তর বীট) এর শেষ লাইনটি পরিবর্তন করে 2 বাইট দ্বারা এই উন্নত করতে সক্ষম হওয়া উচিত (a.shift.zip(*a).map(&:join)*?\n).gsub'--','- '
ব্লুটোরেঞ্জ

1

সি, 155 বাইট

main(l,v,k,n,x,s,c)char*s,**v,c;{for(l=6;l--;puts(s))for(s=v[1];*s;s+=k)for(x=sscanf(s,"%d%c%n",&n,&c,&k);n--;)putchar(l%5?l^2?32:c^78?++x&1?45:32:61:95);}

আরও পঠনযোগ্য:

main(l,v,k,n,x,s,c)
    char*s,**v,c;
{
    for(l=6;l--;puts(s))
        for(s=v[1];*s;s+=k)
            for(x=sscanf(s,"%d%c%n",&n,&c,&k);n--;)
                putchar(l%5?l^2?32:c^78?++x&1?45:32:61:95);
}

বাইরের লুপটি 5 থেকে 0 পর্যন্ত লাইন গণনা করে।

এনকোডযুক্ত স্ট্রিংয়ের অংশগুলির মধ্যবর্তী লুপটি পুনরাবৃত্তি করে:

4N4P9N7P1N1P2N2P
4P9N7P1N1P2N2P
9N7P1N1P2N2P
7P1N1P2N2P
1N1P2N2P
1P2N2P
2N2P
2P
string is empty - exit

অভ্যন্তরীণ লুপ একটি অংশ ডিকোড করে, যেমন, 7P , এবং প্রয়োজনীয় সংখ্যক বার পুনরাবৃত্তি করে (যেমন 7)।

প্রতিটি পুনরাবৃত্তি একটি মুদ্রণ char। এর মান charকোড দ্বারা বর্ণিত l%5?l^2?32:c^78?++x&1?45:32:61:95:

  • লাইন নম্বর যদি 5 বা 0 হয় তবে 95 ( _) মুদ্রণ করুন
  • অন্যথায়, লাইন সংখ্যা 2 এর সমান না হলে একটি স্থান মুদ্রণ করুন
  • অন্যথায়, প্রতীকটি 'এন' হলে মুদ্রণ করুন 61 ( =)
  • অন্যথায়, x1 দ্বারা বৃদ্ধি করুন (এটি শুরু করে 2 দ্বারা করা হয়েছিল sscanf)
  • যদি বিজোড় হয়, 45 ( -) মুদ্রণ করুন, অন্যথায় 32 (স্পেস) মুদ্রণ করুন

0

স্কালা, 163 বাইট

(s:String)=>{val r=(("\\d+(P|N)"r) findAllIn(s) map(r=>{val l=r.init.toInt;if(r.last=='N')"="*l else ("- "*l).take(l)})).mkString;val k="_"*r.length;s"$k\n\n\n$r\n\n$k"}

প্রথম চেষ্টা করুন, আরও কিছু গল্ফ করা হতে পারে।


0

রুবি, 94 বাইট

ধার gsub'--','- 'থেকে ধারণা 14mRh4X0r এর উত্তর । আমি মনে করি যে উত্তরটি আরও আকর্ষণীয়, যদিও এটি সংক্ষিপ্ত।

f=->x{n=?_*x.gsub!(/(\d+)(.)/){($2==?P??-:?=)*$1.to_i}.size
"#{n}


#{x.gsub'--','- '}

#{n}"}

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

f=->x{n=?_*x.gsub!(/(\d+)(.)/){($2==?P??-:?=)*$1.to_i}.size
"#{n}


#{x.gsub'--','- '}

#{n}"}

puts f['4N4P9N7P1N1P2N2P']

উত্পাদন:

______________________________


====- - =========- - - -=-==- 

______________________________

0

আমাকে আমার মতলব সংস্করণ অন্তর্ভুক্ত করুন

ম্যাটল্যাব (২77 খ)

function d=p(V,a),j=numel(V)-1;if (a==0),d=0;return; end,d=(V(a)-48+10*p(V,a-1))*(V(a)<64);fprintf('%c%.*s%c%.*s',(a>=j)*10,(a==j|a==1)*eval(strcat(regexprep(V,'[NP]','+'),48)),ones(99)*'_',(a<3)*10,(V(a+1)>64)*d,repmat((V(a+1)==78)*'=='+(V(a+1)==80)*'- ',[1 99]));end

ইনপুট

একটি স্পেস দ্বারা লেজ করা একটি আসকি-ফর্ম্যাট স্ট্রিং (যেহেতু মাতলাবে 'chain 0' শৃঙ্খলার শেষ নেই)

উদাহরণ ভি = '12 এন 13 পি'


আউটপুট

রাস্তার প্যাটার্ন উপস্থাপনা

_________________________


============- - - - - - -

_________________________

ক্রিয়া

ফাংশনটি অবশ্যই তার লেজ -১ থেকে কল করা উচিত (খালি অক্ষর মুছে ফেলা হবে)

উদাহরণ : p (V, numel (V) -1)

ব্যাজ

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


0

আর, 132 বাইট

এটির সাথে খুব বেশি খুশি নয়, তবে এটি করা কিছুটা মজাদার ছিল :) একাধিক gsubটি থেকে মুক্তি পাওয়ার চেষ্টা করেছিল , তবে আমার প্রচেষ্টা ব্যর্থ হয়েছিল। আমি সন্দেহ করি এটি করার আরও অনেক ভাল উপায় আছে।

cat(rbind(nchar(a<-scan(,'',t=gsub('PN','P N',gsub('NP','N P',chartr('- =','PPN',scan(,'',sep='|')[4]))))),substring(a,1,1)),sep='')
  • scanএসটিডিআইএন থেকে স্ট্রিংগুলি পেয়ে যায় এবং চতুর্থটি ধরে ফেলে। বিঃদ্রঃ যে খালি লাইনগুলিতে ইনপুটটি চালিয়ে যাওয়ার জন্য স্ক্যান করার জন্য তাদের মধ্যে একটি স্থান (বা কিছু) দরকার।

    "==== - - ========== - - - - = - == -"

  • তা পরিবর্ত =সঙ্গে গুলি Nএস, -এবং সঙ্গে Pগুলি।

    "NNNNPPPPNNNNNNNNNPPPPPPPNPNNPP"

  • তারপরে এটি প্রতিটি NPএবং এর মধ্যে একটি স্থান সন্নিবেশ করায়PN

    "এনএনএনএন পিপিপিপি এনএনএনএনএনএনএনএনএন পিপিপিপিপিপিপি এনপি এনএন পিপি"

  • স্ক্যানটি ফাঁকা জায়গায় স্ট্রিংকে বিভক্ত করে

    "এনএনএনএন" "পিপিপিপি" "এনএনএনএনএনএনএনএনএন" "পিপিপিপিপিপিপি" "এন" "পি" "এনএন" "পিপি"

  • স্ট্রিং দৈর্ঘ্য তারপর আবদ্ধ (rbind প্রতিটি স্ট্রিংয়ের প্রথম অক্ষরের সাথে )

    4 4 9 7 1 1 2 2
    "এন" "পি" "এন" "পি" "এন" "পি" "এন" "পি"

  • অ্যারেটি তখন আউটপুট ব্যবহার করে cat

টেস্ট রান

cat(rbind(nchar(a<-scan(,'',t=gsub('PN','P N',gsub('NP','N P',chartr('- =','PPN',scan(,'',sep='|')[4]))))),substring(a,1,1)),sep='')
1: ____________
2:  
3:  
4: ============
5:  
6: ____________
7: 
Read 6 items
Read 1 item
12N
> 
> cat(rbind(nchar(a<-scan(,'',t=gsub('PN','P N',gsub('NP','N P',chartr('- =','PPN',scan(,'',sep='|')[4]))))),substring(a,1,1)),sep='')
1: ____________
2:  
3:  
4: - - - - - - 
5:  
6: ____________
7: 
Read 6 items
Read 1 item
12P
> cat(rbind(nchar(a<-scan(,'',t=gsub('PN','P N',gsub('NP','N P',chartr('- =','PPN',scan(,'',sep='|')[4]))))),substring(a,1,1)),sep='')
1: ______________________________
2:  
3:  
4: ====- - =========- - - -=-==- 
5:  
6: ______________________________
7: 
Read 6 items
Read 8 items
4N4P9N7P1N1P2N2P
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.