স্কোয়ার সাইড পিনপয়েন্টিং


13

আমার প্রথম কোড-গল্ফ চ্যালেঞ্জে স্বাগতম! :) আসুন ঠিক এর মধ্যে হ্যাপ করি।

চ্যালেঞ্জ:

দুটি ভাসমান পয়েন্ট ভেক্টর, (উত্স) এবং টি (লক্ষ্য) দেওয়া, আপনাকে L এবং R মানগুলি STDOUT মুদ্রণের জন্য একটি প্রোগ্রাম তৈরি করতে হবে।

  1. বর্গাকার এক কোণে
  2. টি বর্গ যে বিপরীত অবস্থিত এক কোণে হয় হে
  3. এল 2D পয়েন্ট (কোণ) যা অপূর্ণাঙ্গ বর্গক্ষেত্রের অন্য বিন্দু চিহ্নিত করে
  4. আর এল এর বিপরীতে 2D পয়েন্ট (কোণ)

বিধি

  1. O এবং T এর মানগুলি STDIN থেকে পড়তে হবে (উদাহরণস্বরূপ ইনপুটগুলি দেখুন)।
  2. আবার, এল এবং আর এর মানগুলি STDOUT এ মুদ্রণ করতে হবে।

স্কোরিং এবং বোনাস

  1. আপনার প্রোগ্রামের বাইটগুলি গণনা করুন।
  2. যদি আপনার প্রোগ্রামটি O থেকে L থেকে T থেকে R এর মধ্যে সংযুক্ত রেখাগুলি আঁকে , বাইট গণনা থেকে 15 বাইট বিয়োগ করুন।

উদাহরণ

প্রথম লাইন কভার কেনে (প্রথম বর্গাকার বন্ধনী হে এবং জন্য পরবর্তী বন্ধনী টি ) এবং অন্যান্য লাইন আউটপুট প্রত্যাশিত প্রতিনিধিত্ব করে।

  • [0, 0] [3, 3] প্রত্যাশিত: [0, 3] [3, 0]
  • [0, 0] [-2, -2] প্রত্যাশিত: [-2, 0] [0, -2]
  • [1, -1] [4, 2] প্রত্যাশিত: [1, 2] [4, -1]
  • [0, -1] [0, 1] প্রত্যাশিত: [-1, 0] [1, 0]

বিজ্ঞপ্তি : ইনপুট এবং আউটপুটগুলি ভাসমান পয়েন্ট হতে পারে!

গুরুত্বপূর্ণ তথ্য!

  • মান টি যে কোনও বিন্যাসে নেওয়া যেতে পারে, যতক্ষণ না তারা এসটিডিইএন থেকে আসে (প্রাক্তন। অভ্যন্তরীণ [] বা () ...), আপনি যা চান বিন্যাসটি ব্যবহার করুন।
  • এল এবং আর যে কোনও ক্রমে মুদ্রণ করা যায়।
  • মনে রাখবেন: যখন (O-> L-> T-> R-> O) সংযুক্ত থাকে, প্রতিটি পক্ষের অবশ্যই একই দৈর্ঘ্য থাকতে হবে!

জয়লাভ

  • এটি কোড-গল্ফ এত কম বাইট উত্তর জয়!
  • বিজয়ীর উত্তর রবিবার 15.11.2015 20: 00-22: 00 (ফিনল্যান্ড সময়) এ গৃহীত হবে (যদি আমি ভুল না হয়ে থাকি তবে সে তারিখটি মার্কিন যুক্তরাষ্ট্রে 11.15.2015 এর মতো লেখা হয়েছে, বিভ্রান্ত হবেন না)।

শুভ গল্ফিং!


3
আপনি যদি এটি সম্পর্কে অবহিত না হন তবে আমাকে ভবিষ্যতের চ্যালেঞ্জগুলির জন্য স্যান্ডবক্সের প্রস্তাব দিন , যেখানে আপনি প্রতিক্রিয়া পেতে এবং আপনার চ্যালেঞ্জটি লাইভ হওয়ার আগে পলিশ করতে পারেন (এবং পরিবর্তনের আগে বিদ্যমান উত্তরগুলি বাতিল করে দেবে)।
মার্টিন ইন্ডার

দুটি জটিল সংখ্যার তালিকা হিসাবে আমরা কি ইনপুট নিতে পারি?
lirtosiast

@ থমাসকওয়া নিশ্চিত যে আপনি এটি তালিকা হিসাবে নিতে পারেন। যখন কোনও ইনপুট দেওয়া হয় তখন জটিল সংখ্যা হয় না ...? আমি বলতে চাইছি কম্পিউটারের গণনা করার জন্য আপনাকে নিজের মূল্য কীভাবে ব্যক্তিগতভাবে জানতে হবে না, তাই না?
ইয়াতসি

আপনি যখন "স্কয়ারের বিন্দু" বলবেন, মনে হচ্ছে আপনি কোণার বোঝাচ্ছেন? একটি স্কোয়ারে আরও অনেকগুলি পয়েন্ট রয়েছে।
রেটো কোরাাদি

পুনঃটুইট করুন আমি এর সাথে একটি কোণার বোঝাতে চাইছি।
ইয়াতসি

উত্তর:


8

গুরুতরভাবে , 11 বাইট

আমার টিআই-বেসিক উত্তরের একটি বন্দর। গণনা করে mean(X)+i*(X-mean(X))

,;Σ½;)±+ï*+

ব্যাখ্যা:

,           Read input
;           Duplicate
Σ½          Half the sum (the mean) of the top copy
;           Copy the mean
)           Rotate stack to the left
            Now there's a copy of the mean on the bottom
±+          Negate mean and add to input list
ï*          Multiply by i
+           Add to mean

: দুই জটিল সংখ্যার একটি তালিকা হিসাবে ইনপুট [1-1j,4+2j]একই বিন্যাসে, এবং আউটপুট: [(4-1j), (1+2j)]


3
আমি খুব গর্বিত ...
মেগো

এই উত্তরটি পোস্ট হওয়ার পরে, মেগো æতালিকা গড়ের জন্য যুক্ত হয়েছিল , এবং î(বহুগুণ দ্বারা i) ভেক্টরাইজ করে, একটি প্রতিযোগিতামূলক 9-বাইট সমাধান সমাধানের অনুমতি দেয়। গুরুতরভাবে একটি গুরুতর ভাল ভাষা হয়ে শুরু হয়।
lirtosiast

একটি "সিরিয়াসলি" ভাল ভাষা। @ থমাসকওয়া
অ্যাডিসন


@ অ্যাশবার্লাকজেনকো সিরিয়াসলি সিপি 437 এনকোডিং ব্যবহার করছে বলে মনে হচ্ছে , যেখানে Σকোড পয়েন্ট 0xF4 রয়েছে।
ডেনিস

6

গুরুতরভাবে , 25 বাইট

,i││-++½)+-+½)++-½)±+++½)

একটি তালিকা হিসাবে ইনপুট নেয়: [x1,y1,x2,y2]

আমার পাইথন উত্তর হিসাবে একই কৌশল, কিন্তু সিরিয়াসলি!

ব্যাখ্যা:

,      get input
i      flatten list
││     duplicate stack twice, so that we have 4 copies of the input total
-++½)  calculate the first x-value using the formula (x1-y1+x2+y2)/2, and shove it to the end of the stack
+-+½)  calculate the first y-value using (x1+y1-x2+y2)/2, and shove it to the end of the stack
++-½)  calculate the second x-value using (x1+y2+x2-y2)/2, and shove it to the end of the stack
±+++½) calculate the second y-value using (-x1+y1+x2+y2)/2, and shove it to the end of the stack

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


3
এটি মারাত্মকভাবে দুর্দান্ত! (শ্লেষ উদ্দেশ্যে।)
kirbyfan64sos

5

টিআই-বেসিক, 16 বাইট

একটি টিআই -83 + বা 84+ সিরিজের ক্যালকুলেটরের জন্য।

Input X
i∟X+.5sum(∟X-i∟X

আমি ভুল বুঝে না নিলে ওপি বলেছিল যে তারা জটিল সংখ্যা হিসাবে ইনপুট এবং আউটপুট নেওয়ার ক্ষেত্রে ঠিক আছে। iএখানে কাল্পনিক একক, না পরিসংখ্যান পরিবর্তনশীল।

টিআই-বেসিকের একটি mean(ফাংশন রয়েছে তবে বিরক্তিকরভাবে এটি জটিল তালিকার সাথে কাজ করে না, একটি নিক্ষেপ করে ERR:DATA TYPE

{1-i,4+2i}জন্য ফর্ম ইনপুট [[1,-1],[4,2]]। আউটপুট জন্য ফর্ম {4-i 1+2i}হয় [[1,2][4,-1]]


এটি আমাকে মনে করিয়ে দেয় যে টিআই-বেসিক কীভাবে স্ট্রিংয়ের তালিকা সমর্থন করে না। এটিই আমি সম্ভবত টিআই-বেসিকটিতে যুক্ত করব: পি
কনর ও'ব্রায়ান

4

মতলব, 51 45 46 45 42 বাইট

এখন একটি কলাম ভেক্টর ইনপুট আশা করা হচ্ছে: [x0;y0;x1;y1](একই বিন্যাসে আউটপুট) আমি এটিকে একটি সম্পূর্ণ প্রোগ্রাম হিসাবে পরিবর্তিত করেছি।

z=eye(4);disp((.5-z([2:4,1],:))*input(''))

বা বিকল্পভাবে

z=[1,1;-1,1];disp([z',z;z,z']*input('')/2)

পুরানো সমাধান:

ইনপুটটি কলামের ভেক্টরগুলির যেমন প্রত্যাশা করে f([0;0],[3;3])

@(a,b)[0,1;-1,0]*(b-a)*[.5,-.5]+(b+a)*[.5,.5]

এটি দুটি কলাম ভেক্টরও (2x2 ম্যাট্রিক্স হিসাবে) প্রদান করে।


3

জাপট, 29 28 বাইট

Japt একটি সংক্ষিপ্ত সংস্করণ জা vaScri পর্তুগীজ ভাষায়অনুবাদক

1o5 mZ=>$eval$(Uq'+)/2-UgZ%4

নোট করুন যে তীর ফাংশনগুলির জন্য একটি ES6- কমপ্লায়েন্ট ব্রাউজারের প্রয়োজন যেমন ফায়ারফক্সের নতুন সংস্করণ। ইনপুট একটি 4 আইটেমটি অ্যারে, যেমন যেমন যায় [1,-1,4,2]

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

         // Implicit: U = input array
1o5      // Create a range of integers from 1 to 5. Returns [1,2,3,4]
mZ=>     // Map each item Z in this range to:
$eval$(  //  evaluate:
 Uq'+    //   U joined with "+" (equivalent to summing U)
)/2      //  divided by 2,
-UgZ%4   //  minus the item at Z%4 in the input. This translates to [y₁,x₂,y₂,x₁],
         //  which in turn tranlsates to:
         //   [(x₁-y₁+x₂+y₂)/2, (x₁+y₁-x₂+y₂)/2, (x₁+y₁+x₂-y₂)/2, (-x₁+y₁+x₂+y₂)/2]
         //  which is [Lx,Ly,Rx,Ry], or [Rx,Ry,Lx,Ly], depending on the situation.
         // Implicit: Output last expression

এটি কিভাবে গল্ফ ছিল

আমি প্রথমে @ মেগোর পাইথন পদ্ধতির অনুলিপিটি অনুলিপি করার চেষ্টা করেছি। এটি আমাকে এই 48-বাইট দৈত্যের সাথে ছেড়ে দিয়েছে:
(দ্রষ্টব্য: ইনপুটটি বর্তমানে অ্যারেতে আবৃত করা উচিত নয়))

[U-V+W+X /2,(U+V-W+X /2,(U+V+W-X /2,(V+W+X-U /2]

যেহেতু এই আইটেমগুলির প্রতিটি 2 দিয়ে বিভাজন করা দরকার, তাই এটির সাথে পুরো অ্যারেটি ম্যাপ করা খাটো mY=>Y/2:

[U-V+W+X,U+V-W+X,U+V+W-X,V+W+X-U]mY=>Y/2

এখন কি? ঠিক আছে, অ্যারে এখন কেবল ইনপুটগুলির মধ্যে তিনটি যুক্ত করছে এবং প্যাটার্নটি অনুসরণ করে চতুর্থটি বিয়োগ করছে 1,2,3,0। সুতরাং, আমরা ইনপুটগুলিকে একটি অ্যারেতে প্যাক করতে পারি, তারপরে সেগুলি একসাথে যুক্ত করতে পারি, ২ দিয়ে ভাগ করতে পারি এবং প্রয়োজনীয় আইটেমটি বিয়োগ করতে পারি:

[1,2,3,0]mZ=>(Ug0 +Ug1 +Ug2 +Ug3)/2-UgZ

ভাল, একটি বাইট সংরক্ষণ! তবে শুরুতে অ্যারে সঙ্কুচিত করা কি সম্ভব? আসুন এটি স্ট্রিংয়ে প্যাক করার চেষ্টা করুন, তারপরে এটিকে আবার অ্যারেতে বিভক্ত করুন a:

"1230"a mZ=>(Ug0 +Ug1 +Ug2 +Ug3)/2-UgZ

সেদিকে তাকাও, অন্য একটি বাইট রক্ষা পেয়েছে। তবে এর থেকেও আরও ভাল উপায় কি আছে? ঠিক আছে, আমরা এই সত্যটি ব্যবহার করতে পারি [1,2,3,0] ≡ [1,2,3,4] mod 4:

1o5 mZ=>(Ug0 +Ug1 +Ug2 +Ug3)/2-UgZ%4

আরও দুটি বাইট! এখন আমরা কোথাও যাচ্ছি। তবে তা Ug0 +Ug1 +Ug2 +Ug3অনেক জায়গাতেই হোগিং করছে। আমরা যদি যোগের সাথে অ্যারে হ্রাস করি?

1o5 mZ=>Ur(X,Y =>X+Y /2-UgZ%4

বাহ, এটা সত্যিই সাহায্য করেছে! এখন আমরা 29 বাইটে নেমে এসেছি। এবং @ ɟ nɟuɐɯɹɐ ן oɯ এর জন্য ধন্যবাদ, আমি এমনকি হ্রাসটি বন্ধ করে অন্য একটি বাইট গল্ফ করতে সক্ষম হয়েছি। তবে যদি আমরা অ্যারের যোগফলের জন্য কোনও অন্তর্নির্মিত ব্যবহার করতে পারি, তবে এটি আরও ছোট হবে:

1o5 mZ=>Uu /2-UgZ%4

19 বাইট! অ্যামেজিং! দুর্ভাগ্যক্রমে, জাপটে এখনও এ জাতীয় কোনও বিল্ট-ইন নেই। সুযোগ পেলেই আমি এটিকে যুক্ত করব। প্রোগ্রামগুলি বা ভাষা উভয়ের জন্যই পরামর্শগুলি স্বাগত!


ঠিক আছে, ভি 1.4.4 হিসাবে, আমি মূলত যতটা পরিকল্পনা করেছি তার চেয়ে বেশি কয়েকটি বৈশিষ্ট্য জাপটে প্রয়োগ করেছি। সংক্ষিপ্ত সংস্করণের জন্য মূল পরিকল্পনাটি শুরু করে:

1o5 mZ=>Uu /2-UgZ%4

প্রথমে আমাদের কয়েকটি জিনিস পরিবর্তন করতে হবে: ফাংশনগুলি সংজ্ঞায়িত করা হয় {, এবং যোগফলটি হয় x। এই সংস্করণটি যেমন রয়েছে তেমন কাজ করে:

1o5 mZ{Ux /2-UgZ%4

এখন, এর @জন্য একটি সংক্ষিপ্তকরণ XYZ{, আমাদের থেকে স্যুইচ করে একটি বাইট সংরক্ষণ Zকরতে দেয় X। এছাড়াও, অন্য একটি বাইট সংরক্ষণের £জন্য একটি শর্টকাট m@:

1o5 £Ux /2-UgX%4

সম্প্রতি আমি এমন একটি বৈশিষ্ট্য প্রয়োগ করেছি যেখানে Uপ্রোগ্রামের শুরুতে একটি সাধারণত বাদ দেওয়া যায়। বাস্তবায়নের ভুলের কারণে, তবে এটি ফাংশনগুলির সাথেও কাজ করে:

1o5 £x /2-UgX%4

পরিশেষে, gসূচকটি স্ট্রিংয়ের শেষের পরে থাকলে এখন ফাংশনটি মোড়ানো হয়, আমাদের %4মোট 13 বাইটের জন্য সরিয়ে ফেলতে দেয় :

1o5 £x /2-UgX

এবং আমি ভেবেছিলাম 19 টি আশ্চর্যজনক ছিল ;-) এটি অনলাইনে পরীক্ষা করুন!


আপনি সম্ভবত জাপট সমতুল্য ব্যবহার করে কিছু বাইট সংরক্ষণ করতে পারেন eval(U.join`+`)
মামা ফান রোল

আমি এই ভাষাটি পছন্দ করি: ডি
পর্যায়

@ ɟ nɟuɐɯɹɐ ן oɯ ধন্যবাদ, যদিও আমি evalএখনও একটি সমতুল্য যোগ করি নি, এটি আসলে একটি বাইট সংরক্ষণ করে!
ETH প্রোডাকশনগুলি

2

জাভাস্ক্রিপ্ট (নোড.জেএস / ইএস 6), 154 বাইট

process.stdin.on('data',s=>(s=s.toString().split(','),a=s[0]-0,b=s[1]-0,x=s[2]-0,y=s[3]-0,console.log([a+(c=(a+x)/2-a)+(d=(b+y)/2-b),b+d-c,a+c-d,b+d+c])))

স্টিডিন পাওয়া কোডের দীর্ঘ অংশ। ইনপুটটি পয়েন্ট কমা দ্বারা পৃথক হওয়া উচিত:

echo "0,0,3,3" | node square.js

এটি কি পুরো প্রোগ্রাম ...? কোনটি পয়েন্টগুলি STDOUT এ আউটপুট করে ...? মনে হয় না।
ইয়াতসি

তুমি ঠিক বলছো. অভিশাপ, এটি প্রচুর বাইট যোগ করবে,
নওয়াক

ভয়েল, স্থির এখন প্রায় 3 গুণ বেশি সময় :(
নওয়াক

হুঁ: / আমি এখনও মনে করি যে বিন্দুটি সুন্দর কোড আর্ট তৈরি করে যা ভালভাবে কাজ করে। এবং আপনার প্রদত্ত কোডটি অত্যন্ত জটিল চেহারা এবং সুদর্শন শিল্প। :) অংশগ্রহণের জন্য ধন্যবাদ!
Yytsi

2

ngn এপিএল, 21 বাইট

⎕←F.5 0J.5×(F←+/,-/)⎕

এটি জটিল সংখ্যার (যেমন, 1J¯1 4J2) জোড়া হিসাবে ইনপুট নেয় এবং একইভাবে আউটপুট মুদ্রণ করে (যেমন, 4J¯1 1J2)। এটি এনজিএন / এপিএল ডেমোতে অনলাইনে চেষ্টা করে দেখুন ।


সমস্ত ধনাত্মক ইনপুটগুলির জন্য কাজ করে, যাইহোক, আমি নেতিবাচক সংখ্যাগুলি প্রবেশ করার পরে এটি কোনও ফলাফল করে না। আমি কি তাদের ভুল ফর্ম্যাটে প্রবেশ করছি? 1J1 3J3 কাজ করে। 0 জে -1 0 জ 1 করে না। সংখ্যাটি নেতিবাচকতা ঘোষণার জন্য আমি উপরের বিয়োগ চিহ্নটি ব্যবহার করার চেষ্টাও করেছি।
ইয়াতসি

@ টুকুএক্সএক্স যাওয়ার পথে উচ্চ বিয়োগফল। আমি 1 ¯1ইনপুট জন্য আউটপুট পেতে 0J¯1 0J1, যা সঠিক উত্তর। কি পাচ্ছেন?
ডেনিস

1
ওহ, এখন আমি এটি কাজ করে। উচ্চ বিয়োগ চিহ্নের আগে আমাকে ক্ষুদ্র সাদা স্থানটি সরিয়ে ফেলতে হবে। এটি কাজ করে এবং যোগ্যতা অর্জন করে।
ইয়াতসি



1

সিজেম, 30 বাইট

q~_:.+\:.-(W*+_2$.+@@.-].5ff*`

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

এটি তালিকার তালিকার হিসাবে ইনপুট নেয়, যেমন শেষ উদাহরণের জন্য:

[[0 -1] [0 1]]

ব্যাখ্যা:

q~      Get and interpret input.
_       Make a copy.
:.+     Reduce the list of two points with vector sum operator.
\       Swap copy of input to top.
:.-     Reduce the list of two points with vector difference operator.
(W*+    Turn (x, y) into orthogonal (y, -x) by popping off first element, inverting
        its sign, and concatenating again. We now have center and offset vector.
_2$     Create a copy of both...
.+      ... and add them.
@@      Rotate original values to top...
.-      ... and subtract them.
]       Wrap the two results...
.5ff*   ... and multiply all values by 0.5.
`       Convert list to string.

1

প্রোলোগ, 118 বাইট

p([A,B],[C,D]):-read([E,F,G,H]),I is(E+G)/2,J is(F+H)/2,K is(G-E)/2,L is(H-F)/2,A is I-L,B is J+K, C is I+L, D is J-K.

সামান্য আরও পঠনযোগ্য:

p([A,B],[C,D]):-read([E,F,G,H]),
                        I is(E+G)/2,
                        J is(F+H)/2,
                        K is(G-E)/2,
                        L is(H-F)/2,
                        A is I-L,
                        B is J+K, 
                        C is I+L, 
                        D is J-K.

প্রোগ্রামটি শুরু করতে:

p(X,Y).

পরিচিত কোণগুলি
হ'ল [1, -1] [4, 2]: [1, -1,4,2]

উদাহরণ আউটপুট, যেখানে এক্স এবং ওয়াই অজানা কোণগুলি রাখবে:
এক্স = [1.0, 2.0],
Y = [4.0, -1.0]

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

সম্পাদনা: এসটিডিআইএন থেকে ইনপুট পড়তে পরিবর্তন হয়েছে


এটি STDIN থেকে পড়ে এবং STDOUT এ মুদ্রিত হয় ...?
ইয়াতসি

@ টুক্কাএক্স: সম্ভবত না। এটি কোনও প্রশ্নের আকারে ইনপুট নেয়। আমি সেই অংশটি পড়েছি যা বলেছিল যে ইনপুটটি আমরা যা চাই ফর্ম্যাট হতে পারে। আমি STDIN সম্পর্কে অংশটি মিস করেছি। প্রোলগের এসটিডিএন কী তাও নিশ্চিত নয়। ব্যবহারকারীর কাছ থেকে ইনপুট পড়া ঠিক হবে?
এমিগানা

STDIN মানে স্ট্যান্ডার্ড ইনপুট। সুতরাং ব্যবহারকারীর কাছ থেকে পঠন হ'ল যাওয়ার উপায় :) এবং ফর্ম্যাট অনুসারে আমি বোঝাতে চাইছি যেভাবে ব্যবহারকারী মানগুলি ইনপুট করে। প্রাক্তন [x, y] [x, y] বা {x, y} ...
Yytsi

0

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

g=lambda a,b,c,d:((a-b+c+d)/2,(a+b-c+d)/2,(a+b+c-d)/2,(d+b-a+c)/2)
print(g(*map(float,input().split())))

ইনপুটটি x1 y1 x2 y2একক লাইনে ফর্মটিতে নেওয়া হয় ।

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


আপনি কিছু ভুল করেছেন, আপনার বাইট গণনা প্রতিটি সম্পাদনার সাথে চলেছে, তবে আমি প্রতিটি সম্পাদনা = পি
flawr

8
@ ফ্ল্যাওয়ার আমি ডেনিস বিরোধী
মেগো

আমি বিশ্বাস করি যে এসটিডিআইএন (বা নিকটতম বিকল্প) থেকে ইনপুট নিয়ে সমস্ত উত্তরগুলি সম্পূর্ণ প্রোগ্রাম হওয়া দরকার। এটি কি যোগ্যতা অর্জন করে?
ইটিএইচ প্রডাকশন

0

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

i=input()
s=sum(i)/2.0
print s-i[1],s-i[2],s-i[3],s-i[0]

ইনপুট হতে পারে x1,y1,x2,y2বা(x1,y1,x2,y2)

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