তুলনা অপারেটর ছাড়া সি বা সি ++ এ দুটি পূর্ণসংখ্যার তুলনা করুন


13

সংক্ষিপ্ততম প্রোগ্রামটি তৈরি করুন যা দুটি স্বাক্ষরিত পূর্ণসংখ্যা ইনপুট হিসাবে (স্টিডিনের মাধ্যমে বা তর্ক হিসাবে) গ্রহণ করে এবং প্রথম সংখ্যাটি (1) এর চেয়ে বড়, (2) এর চেয়ে ছোট, বা (3) দ্বিতীয়টির সমান হবে তার উপর নির্ভর করে 3 টি আলাদা আউটপুট প্রদর্শন করে সংখ্যা।

ক্যাচ

আপনি আপনার প্রোগ্রামে নিম্নলিখিত কোনও ব্যবহার করতে পারবেন না:

  • মান তুলনা অপারেটরদের: <, >, <=, >=, ==, !=
  • বাদে কোন গ্রন্থাগার ফাইল conio, stdioঅথবা iostream
  • যে কোনও নন-এএসসিআইআই বা প্রিন্টযোগ্য এএসসিআইআই অক্ষর।

বিজয়ী

সংক্ষিপ্ত সংখ্যক চরিত্রের সাথে প্রোগ্রামটি জয়ী।


আমি ভালো জিনিস ব্যবহার অনুমান করা abs ছাড়া গ্রন্থাগার ফাইল (কারণ কম্পাইলার তবুও এটি জানে) হয় মঞ্জুরিপ্রাপ্ত নয় সহ?
মার্টিন ইন্ডার

1
@ মার্টিনব্যাটনার হ্যাঁ, এটি একটি সঠিক অনুমান হবে। :)
গ্রোভ

5
সি (++) এর সীমাবদ্ধতা কেন? যদি এটি কারণ আপনি সি এর মৌলিক ধরণের অপ্রয়োজনীয়তার পরেও উত্তরগুলি পোর্টেবল হতে চান তবে আপনার এটি উল্লেখ করা উচিত। যদি এটি একটি স্বেচ্ছাসেবী সীমাবদ্ধতা হয় তবে আপনার সচেতন হওয়া উচিত যে এই সাইটে একটি ভাষায় স্বেচ্ছাসেবক বিধিনিষেধগুলি অপ্রিয়।
পিটার টেলর

8
@ পিটারটেলর এটি চ্যালেঞ্জের অংশ। প্রশ্নটি ভাষা-অজ্ঞাতজ্ঞাত হলে এটি সম্পূর্ণরূপে খুব আলাদা বলগেম হবে। এটি C / C ++ এ সীমাবদ্ধ করে সমস্যার কাছে যাওয়ার সময় ব্যবহৃত কৌশলগুলি পরিবর্তন করে। আমি আরও বেশি লোকের অংশগ্রহণকে উত্সাহিত করতে বেশিরভাগ ভাষায় প্রশ্ন করার প্রয়োজনীয়তার বিষয়টি স্বীকার করি, তবে এই বিশেষ সমস্যাটিতে সি / সি ++ এবং তাদের নির্দিষ্ট অপারেটর এবং পদ্ধতিগুলির প্রতিবন্ধকতা চ্যালেঞ্জের একটি অবিচ্ছেদ্য অঙ্গ।
গ্রোভ

1
@ এভিলটিচ হ্যাঁ; যদি কোনও প্রশ্নে স্পষ্টভাবে নিষিদ্ধ না হয় তবে তা অনুমোদিত।
গ্রোভ

উত্তর:


2

53 বাইট

main(a,b){scanf("%d%d",&a,&b);printf("%ld",0l+a-b);}

আউটপুট শুধুমাত্র প্রথম অক্ষর প্রাসঙ্গিক। তিনটি পৃথক ফলাফল:

  1. '-' যদি বি> ক
  2. '0' যদি a == খ
  3. অন্য কোনও চরিত্র যদি a> খ

এটি সমস্ত প্ল্যাটফর্মগুলিতে পূর্ণ আকারের ইনপুট পরিসরের জন্য কাজ করে যেখানে মাপের (দীর্ঘ)> মাপের (ইনট)।

সম্পাদনা করুন: এর পরিবর্তে কেস 3 '+' মুদ্রণ করতে একটি অতিরিক্ত চরিত্রের জন্য ব্যয় করতে হবে:

main(a,b){scanf("%d%d",&a,&b);printf("%+ld",0l+a-b);}

6

আমি নিয়মে কিছু মিস করছি, তবে ...

81 বাইট

main(a,b){scanf("%d%d",&a,&b);long long l=a;l-=b;printf("%lld%d",--l>>63,l>>63);}

Ouputs 00যদি a > b, -10যদি a == b, এবং -1-1যদি a < b


এই ধরণের কোডের মতো সাধারণ, সি এটির কাজ করার গ্যারান্টি দেয় না। long longb৪ টির বেশি বিট intহতে পারে , এত বড় হতে পারে যাতে আপনি উপচে পড়তে পারেন, ডান স্থানান্তরিত নেতিবাচক মানগুলির ফলাফলটি বাস্তবায়ন সংজ্ঞায়িত হয়। বেশ কয়েকটি সি-উদ্ভূত উত্তরের একই রকম সমস্যা রয়েছে।
ইয়ান ভার্নিয়ার

1
@ ইয়ান ভার্নিয়ার: বোঝা গেছে। আমি অনুমান করছি যে 100% বুদ্ধিমান সমাধানটি একটি দৈত্য হতে পারে, যেহেতু আমরা নিরাপদে কেবলমাত্র কাজ করতে পারি (অর্থাত্ স্থানান্তরিত করা বা ওভারফ্লো ছাড়াই) কিছুটা দ্বিধায় ফেলা হয়, এবং নিরাপদে এটি করার জন্য আমাদের অপারেন্ডগুলির দৈর্ঘ্য নির্ধারণ করতে হবে using sizeof
COTO

6

90 বাইট

আমরা যদি ব্যবহার করতে পারি তবে stdioতুলনা সম্পাদনের জন্য এর বিন্যাসকরণের ক্ষমতাগুলি কেন ব্যবহার করবেন না?

main(a,b){scanf("%d%d",&a,&b);snprintf(&a,2,"%d",b-a);a&=63;putchar(51-!(a-45)-!!(a-48));}

ধরে নেয় ASCII- সামঞ্জস্যপূর্ণ এনকোডিং এবং সামান্য-শেষ।

72 বাইট

কোটারিয়েন্টগুলি শূন্যের দিকে গোল হয় তবে ডান-শিফটগুলি (অনুশীলনে) "বৃত্তাকার ডাউন" হয়। এটা একটা মরে যাওয়া।

main(a,b){scanf("%d%d",&a,&b);a-=b;putchar(a?a|=1,a/2-(a>>1)?60:62:61);}

65 79 বাইট

নেতিবাচক সংখ্যার আর একটি স্বতন্ত্র বৈশিষ্ট্য হ'ল তারা নেতিবাচক মডুলো উত্পাদন করে। এটি মোটেও পূর্ণসংখ্যার উপস্থাপনার উপর নির্ভর করে না; এটি আমার 8-বিট অতিরিক্ত 127 টোস্টারেও কাজ করে! ওহ, এবং যেহেতু আমরা ব্যবহার করতে পারি conio, কেন না দুটি বাইটের সাহায্যে সংরক্ষণ করব putch? এখন, আমি যদি কেবল আমার টার্বোসি-র অনুলিপিটি খুঁজে পেতাম ...

main(a,b){scanf("%d%d",&a,&b);long long d=a;d-=b;putch(d?d|=1,d%2-1?60:62:61);}

সম্পাদনা : বৃহত্তর পার্থক্যগুলি হ্যান্ডেল করা ধরে long longনেওয়া আরও বৃহত্তর int


আমি নিশ্চিত যে আপনার দু'টি পূর্ণসংখ্যাকে দ্ব্যর্থহীনভাবে পার্স করার জন্য %dএর মধ্যে একটি ডিলিমিটারের প্রয়োজন scanf। ভাল ধারণা যদিও!
মার্টিন এন্ডার

1
@ মার্টিন: আচ্ছা, এটি জিসিসির সাথে কাজ করে, তবে সত্যই আমি নিশ্চিত নই যে এটি অত্যন্ত সুস্পষ্ট।
Ell

আমার অর্থ হ'ল আপনি কীভাবে ইনপুট a = 1, b = 23এবং এর মধ্যে পার্থক্য করবেন a = 12, b = 3। আপনি কি 123উভয় ক্ষেত্রে STDIN লাগাতে হবে না?
মার্টিন ইন্ডার

1
যেমনটি আমি বলেছিলাম, এটি ( যেমন 1 23এবং 12 3ইনপুট হিসাবে) কাজ করছে বলে মনে হচ্ছে ।
Ell

2
ওহহ, আপনি ইনপুট ফাঁকা স্থান অন্তর্ভুক্ত করবেন না। হ্যাঁ আমি আশ্চর্য হয়েছি না যে আসলে কাজ করে।
মার্টিন এন্ডার

5

64 61 অক্ষর

main(a,b){scanf("%d%d",&a,&b);for(a-=b;a/2;a/=2);putchar(a);}

-1, 0 এবং 1 এর অক্ষরের মানগুলি যথাক্রমে এর চেয়ে কম, সমান বা তার চেয়ে বড় জন্য মুদ্রণ করে।

এই বাস্তবায়নের অনির্ধারিত আচরণের উপর নির্ভর করে bটাইপ হচ্ছে intএবং পরিসীমা বাইরে ইনপুট জন্য INT_MIN / 2করতে INT_MAX / 2। প্ল্যাটফর্মগুলিতে যেখানে স্বাক্ষরিত ওভারফ্লো চারপাশে মোড়ানো থাকে, 2 এস-পরিপূরক (মূলত এগুলি সবই) বা সাইন-প্রস্থতা, এটি বৈধের সম্ভাব্য 25% ব্যর্থ হবে int। মজার বিষয় (যাইহোক আমার কাছে), এটি প্ল্যাটফর্মগুলিতে সঠিকভাবে কাজ করবে যেখানে স্বাক্ষরিত ওভারফ্লো স্যাচুরেট করে।


a-bউপচে পড়লে এটি কাজ করবে না ।
ডেনিস

দুঃখজনকভাবে এটি সত্য, তবে আমি তুলনা অপারেটরগুলি ছাড়া এড়াতে কোনও প্ল্যাটফর্ম অজ্ঞেয়গত উপায় সম্পর্কে ভাবতে পারি না। প্রশ্নটি ইনপুটগুলির একটি ব্যাপ্তি নির্দিষ্ট করে না যার জন্য ফলাফলগুলি বৈধ হতে হবে। এই উত্তরটি মান সম্মত গ্যারান্টিযুক্ত যে সমস্ত ইনপুটগুলি -(2^14)এবং 2^14 - 1সমস্ত অনুবর্তী প্ল্যাটফর্মের মধ্যে কাজ করে এবং বেশিরভাগ প্ল্যাটফর্মগুলিতে এটি সম্ভবত যথেষ্ট বৃহত্তর পরিসরের জন্য কাজ করবে। এই মুহুর্তে অন্য সমস্ত উত্তর ধরণের আকার, আপেক্ষিক আকারের ধরণের বা উপস্থাপনা সম্পর্কে অনুমান করে।
laindir

প্রশ্নটি ইনপুট হিসাবে দুটি স্বাক্ষরিত পূর্ণসংখ্যা বলে , তাই আমি বলতে চাই এটি সব জোড়া জন্য কাজ করতে হবে। main(a,b)ইতিমধ্যে সংজ্ঞায়িত আচরণ, সুতরাং উত্তরের কোনওটিই কাজের গ্যারান্টিযুক্ত নয়। স্মরণ বহনযোগ্যতা।
ডেনিস

অপরিশোধিত আচরণ সম্পর্কে আপনি একেবারেই সঠিক, সুতরাং আমার বাস্তবায়নটি স্ট্যান্ডার্ড অনুসারে কোনও কিছুর নিশ্চয়তা দেয় না। এর সীমাবদ্ধতাগুলি কী তা নির্দেশ করে আমি একটি নোট যুক্ত করব।
laindir

4

 59    54 টি অক্ষর

জিসিসি এর মতো সংকলক সহ 54 টি চার্টার যা এখানে ঝাঁকুনি দেয় না main(x,y):

main(x,y){scanf("%d%d",&x,&y);y-=x;putchar(y>>31|!y);}

অন্যথায় 59 টি অক্ষর:

main(){int x,y;scanf("%d%d",&x,&y);y-=x;putchar(y>>31|!y);}

আউটপুট:

  • X <y হলে ASCII কোড 0x00
  • X> y হলে ASCII কোড 0xFF
  • X == y হলে ASCII কোড 0x01

1
আমি আপনাকে নিশ্চয়তা দিতে পারি, main(x,y)জিসিসিতে কাজ করি, সুতরাং আপনার চরিত্রের গণনা থেকে এই 5 বাইট নিঃসরণে নির্দ্বিধায় অনুভব করুন।
মার্টিন ইন্ডার

প্রধান (x, y) আমার জিসিসিতে কাজ করে না। হতে পারে একটি সংকলক বিকল্প প্রয়োজন। তবে আপনি প্রধান (x, y) কে x; প্রধান (y) দ্বারা প্রতিস্থাপন করতে পারেন।
ফ্লোরিয়ান এফ

3

66 102 বাইট

main(a,b,c,d,e){scanf("%d %d",&a,&b);e=1<<31;c=a&e;d=b&e;putchar(a-b?c&~d?48:d&~c?49:a-b&e?48:49:50);}

STDIN এবং প্রিন্টগুলি 0(a <b), 1(a> b) বা 2(a == খ) থেকে পূর্ণসংখ্যা পড়ুন ।

সম্পাদনা: এখন এটি এমন পার্থক্যগুলির জন্যও কাজ করা উচিত যা 32-বিট পূর্ণসংখ্যার সাথে মানিয়ে নিতে খুব বেশি বড়। আমি নিশ্চিত যে নেস্টেড টেরেনারি আরও কিছু বিট-ম্যাজিক দ্বারা সংক্ষিপ্ত করা যেতে পারে।


আমি ভুল হলে আমাকে সংশোধন করুন, তবে আমি আপনার অভ্যন্তরীণ অংশের মধ্যে একটি <0 দেখছি।
ওভাররেেক্টর

@ ওভারেক্টর স্থির
মার্টিন এন্ডার

3

52 বাইট

দুঃখের বিষয় এটি কেবলমাত্র ইতিবাচক পূর্ণসংখ্যার জন্য কাজ করে তবে আমি ভেবেছিলাম খাঁটি পাটিগণিত অপারেটরগুলি ব্যবহারের ধারণাটি আকর্ষণীয় ছিল:

main(a,b){scanf("%d%d",&a,&b);putchar(b%a/b-a%b/a);}

আউটপুট:

  • ASCII কোড 0xFF: খ এর চেয়ে কম
  • ASCII কোড 0x00: সমান খ
  • ASCII কোড 0x01: খ এর চেয়ে বড়

যদি আপনি কেবল ধনাত্মক পূর্ণসংখ্যার জন্য যাচ্ছেন তবে putchar(a/b-b/a)এটি অনেক কম।
ডেনিস

@ ডেনিস যা (50,1) এবং (51,1) উদাহরণস্বরূপ বিভিন্ন আউটপুট উত্পাদন করে। তবে আমি যদিও কিছুটা ছোট করতে পেরেছি।
ডিজিটাল ট্রমা

1
হ্যাঁ, সঠিকভাবে চিন্তা করছিল না ...
ডেনিস

2

66 বাইট

main(a,b){scanf("%d%d",&a,&b);putchar((0l+b-a>>63)-(0l+a-b>>63));}

বাইট 0x00 if a == b, 0x01 a < bএবং 0xff যদি প্রিন্ট করে a > b

যেহেতু [আমার] প্রোগ্রামে নন-এএসসিআইআই বা প্রিন্টযোগ্য এএসসিআইআই চরিত্র এবং কোনও প্রশ্নে যদি স্পষ্টভাবে নিষিদ্ধ না হয়, তবে এটি অনুমোদিত , আউটপুটটিতে অপরিশোধিত অক্ষরটি সম্পূর্ণ সূক্ষ্ম হওয়া উচিত।


আমার আগের সংস্করণটি ওভারফ্লো খুব ভালভাবে পরিচালনা করে না। এটি x64 লিনাক্সে কাজ করে, যেখানে long64-বিট রয়েছে।
ডেনিস

2

87 টি অক্ষর

main(a,b,c){scanf("%d%d",&a,&b);c=1<<31;a+=c;b+=c;puts(a^b?(unsigned)a/b?">":"<":"=");}

স্বাক্ষরবিহীন int- এ রূপান্তর করতে 2 ^ 31 টি ট্রিক ব্যবহার করা

সাইন নয়, উপরের বিটটিকে ডেটা হিসাবে হ্যান্ডেল করতে বিভাগকে কাস্ট করা

X থেকে XOR a এবং b ব্যবহার করে, যখন তারা সমান হয় এটি 0 প্রদান করে

"<", ">", বা "=" রাখার জন্য নেস্টেড শর্তাদি (?) ব্যবহার করা ()


1

71 বাইট

main(x,y,z){scanf("%d%d",&x,&y);putchar((z=x-y)?(z&(z>>31))?50:49:51);}

http://ideone.com/uvXm6c


আপনার আদর্শের চারপাশে প্রথম বন্ধনী রয়েছে z=x-yএবং আমি নিশ্চিত যে সেগুলি প্রয়োজনীয়। আপনি 49, 50` এবং 51সরাসরি যোগ করার পরিবর্তে দুটি অক্ষর সংরক্ষণ করতে পারেন 48
মার্টিন এন্ডার


উপরের আপনার কোডটিতে একটি সেমিকোলন অনুপস্থিত এবং এটি -2000000000 2000000000বিয়োগের পাশাপাশি কোনও সংখ্যার সংখ্যার সংমিশ্রণ যা বিয়োগফলকে ওভারফ্লো করতে পারে।
কোতো

1

68 টি অক্ষর

int main(a,b){scanf("%d%d",&a,&b);putchar(a-b?((unsigned)a-b)>>31:2);}

ASCII অক্ষরটিকে যথাক্রমে 1 বা 2 বা 3 এর চেয়ে কম বা সমানের চেয়ে কম রাখে।


1
a-bউপচে পড়লে এটি কাজ করবে না ।
ডেনিস

1

88 89 বাইট

main(a,b){scanf("%d%d",&a,&b);a+=1<<31;b+=1<<31;for(;a&&b;a--)b--;putchar(a?b?48:49:50);}

এটি a এবং b এ 1<<31( INT_MIN) যুক্ত করে শুরু হয় , যাতে 0 এখন মিলছে INT_MIN। তারপরে লুপ এবং হ্রাস a এবং b প্রতিটি লুপ হয় যতক্ষণ না হয় 0 হয়, তারপরে 0, 1 বা 2 মুদ্রণ করে a, b বা উভয়ই 0 হয়।

120 119 বাইট

main(a,b,c){scanf("%d%d",&a,&b);c=1<<31;a^=c;b^=c;for(c~=c;!c;c/=2)if(a&c^b&c){putchar(a?48:49);return;}putchar(50);}

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

বাম দিক থেকে শুরু করে অসমতার জন্য যাচাই করে প্রতিটি বিটকে মুখোশ দেওয়া এই ধারণাটি। বাকিদের নিজের ব্যাখ্যা করা উচিত। যেহেতু নেতিবাচক সংখ্যাগুলি 1 বিট দিয়ে শুরু হয়, তাই আমি প্রথমে প্রথম বিটটি উল্টে দিয়ে যাই a^=1<<31


আমি মুহুর্তের জন্য আমার সমাধানগুলি পরীক্ষা করতে পারছি না, তাই ভুলগুলি উল্লেখ করার জন্য নির্দ্বিধায়।
ওভাররেੈਕਟਰ

প্রথম সমাধানটিতে বেশ কয়েকটি সমস্যা রয়েছে: 1. সুখী ;)হাসিটি একটি দু: খিত );হাসি হওয়া উচিত । ২. a&bযদি পরীক্ষা করে থাকে aএবং bযদি বিটগুলি সাধারণ হয়; আপনার যা দরকার তা &&
ডেনিস

@ ডেনিস, আপনি ঠিক বলেছেন, ধন্যবাদ
ওভাররেੈਕਟਰ

1

আমি মনে করি আমি এমনকি শর্ট কোড লেখার চেষ্টা করতে যাচ্ছি না। আমি যা চেষ্টা করব তা হল এই তুলনাটি এমনভাবে সম্পাদন করা যা C99 স্পেস অনুযায়ী পোর্টেবল।

int a, b;   // Let's assume these are initialized
int sign_a = a ? ((a|7)^2)%2 + ((a|7)^3)%2 : 0;

মডুলো অপারেটরটি সাইন সংরক্ষণ করে, তবে এটি ভালভাবে একটি শূন্য উত্পাদন করতে পারে (negativeণাত্মক শূন্য সহ), সুতরাং আমরা এটি নিশ্চিত করতে পারি যে এটির পরীক্ষা করার জন্য আমাদের কাছে একটি বিজোড় এমনকি সমমানের মান উভয়ই রয়েছে (এমনকি আমরা যদি আমাদের পরিপূরক ব্যবহার করছি কিনা তা জেনেও না)। গাণিতিক ক্রিয়াকলাপগুলি উপচে পড়তে পারে, তবে বিটওয়াইসটি হবে না এবং সেট এবং ক্লিয়ার উভয় বিট রয়েছে তা নিশ্চিত করে আমরা অজান্তেই আমাদের সংখ্যাটিকে নেতিবাচক শূন্য বা একটি ফাঁদ মানের রূপান্তর করতে এড়াতে পারি। দু'টি অপারেশনটি অদ্ভুতভাবে করার জন্য প্রয়োজনীয়তাটি হওয়া উচিত নয়, কারণ সম্ভাব্য ফাঁদ উপস্থাপন কোনও মূল্যমান না হওয়া অবধি নির্ধারিত আচরণের কারণ হয় না। বিট 0 টগলড দিয়ে অপারেশন করা নিশ্চিত করে যে আমরা ঠিক একটি শূন্যের অবশিষ্টাংশ পেয়েছি। উভয় লক্ষণের জ্ঞান সজ্জিত, আমরা তুলনাটি কীভাবে এগিয়ে যেতে হবে তা স্থির করতে পারি।

char result="\0<<>=<>>\0"[4+3*sign_a+sign_b]
if (!result) {   // signs matching means subtraction won't overflow
  int diff=a-b;
  int sign_diff=diff ? (diff|7^2)%2 + (diff|7^3)%2 : 0;
  result = ">=<"[1-sign_diff];
}

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


1

সি 80 অক্ষর

a,b,c=1<<31;main(){scanf("%d%d",&a,&b);putchar(a^b?(a&c^b&c?a:a-b)&c?60:62:61);}

এটি '<', '>' বা '=' প্রিন্ট করে should

সি 63 অক্ষর

একটি নতুন পদ্ধতির:

a;main(b){scanf("%d%d",&a,&b);putchar(50+(0L+a-b>>42)+!(a-b));}

'1', '2' বা '3' প্রিন্ট করে।


1

Stdio.h ছাড়া 64 টি অক্ষরে rs

a,b;main(){scanf("%d%d",&a,&b);puts((a-b)>>31?"<":a^b?">":"=");}

প্রিন্ট '>' যদি একটি> বি, '<' যদি <বি, '=' যদি a == বিটি ইনফ্লো প্রবাহ UB হয়। শুধু উপচে পড়া না।

// declare a and b as ints
a,b;

// defaults to int
main()
{
  scanf("%d%d",&a,&b);
   /*
    * (a-b)>>31 signbit of a-b
    * a^b a xor b -> 0 if they are equal
    */
  puts(((a-b)>>31) ? "<" : (a^b) ? ">" : "=");
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.