বিপরীত তারিখ বৈধকরণ


18

ইনপুট:

একটি তারিখ (সমন্বিত dd, MMএবং yyyy)। একটি তারিখ-অবজেক্ট বা তিনটি পৃথক পূর্ণসংখ্যাও ইনপুট হিসাবে বৈধ।

আউটপুট:

প্রতিটি অংশ ( dd, MMএবং yyyy) পৃথকভাবে উল্টানো হয়েছে এবং নিকটতম বৈধ তারিখের চেয়ে আরও বেশি গোলাকার।

উদাহরণস্বরূপ (বিন্যাসে dd-MM-yyyy):
21-10-2016হয়ে যায়12-01-6102

চ্যালেঞ্জ বিধি:

  • শুধু dd, MM, yyyyবৈধ, কিন্তু অর্ডার ও যা আলাদা-চিহ্ন আপনি ব্যবহার আপনার নিজের পছন্দ।
    এই তাই কিছু বৈধ বিন্যাস উদাহরণ দেওয়া হল: dd-MM-yyyy; MM/dd/yyyy; yyyy MM dd; ddMMyyyyইত্যাদি
    এবং এই কিছু অবৈধ বিন্যাস উদাহরণ দেওয়া হল: dd MMM yyyy; dd-MM-'yy; প্রভৃতি
  • আপনি যদি তারিখের প্রতিনিধিত্ব করে স্ট্রিংয়ের পরিবর্তে আপনার ভাষা যদি এটি সমর্থন করে তবে তিনটি পৃথক পূর্ণসংখ্যার পরামিতি সমর্থন করে তবে আপনি কেবল একটি ডেট-অবজেক্ট ইনপুট বেছে নিতে পারেন।
  • আপনি কোন তারিখ-ফর্ম্যাটটি ব্যবহার করেছেন দয়া করে তা জানান! (এবং ইনপুট এবং আউটপুট অবশ্যই একই ফর্ম্যাটে থাকতে হবে)) এটি কোনও ডেট-অবজেক্ট আউটপুট করারও অনুমতি দেয়, যতক্ষণ না এটি সমস্ত পরীক্ষার কেস এবং নীচে চ্যালেঞ্জের নিয়ম পরিচালনা করতে পারে।
  • জুলিয়ান থেকে গ্রেগরিয়ান ক্যালেন্ডার রূপান্তর এই চ্যালেঞ্জের জন্য উপেক্ষা করা হয়। তাই 1582মাত্র একটি বৈধ বিপরীত বছর 2851
    সমস্ত বৈধ বছর, মাস এবং দিনগুলির জন্য চ্যালেঞ্জের তথ্য / টিপস দেখুন।
  • যেহেতু আপনি অন্য কোনও মাসের বিপরীতে ফেব্রুয়ারি থাকতে পারবেন না, তাই আপনাকে লিপ বছর সম্পর্কে চিন্তা করতে হবে না।

সমস্ত বিপরীত বছর, মাস এবং দিন:

  • 0001 (বিপরীত 1000) থেকে 9999 (অবশেষ 9999) পর্যন্ত পৌঁছানো, কোনও সমস্যা ছাড়াই বছরটি সর্বদা বিপরীত হতে পারে । (সুতরাং 0000কোনও বৈধ ইনপুট নয়, এবং এর জন্য কোনও পরীক্ষার কেসও নেই))
  • আপনি কেবলমাত্র মাসগুলি উল্টো করেছেন: জানুয়ারী (অক্টোবর থেকে বিপরীত / 10); অক্টোবর (জানুয়ারী থেকে বিপরীত / 01); নভেম্বর ( নভেম্বর অবশেষে / 11); এবং ডিসেম্বর (প্রতি অন্যান্য মাস থেকে বিপরীত / 02- 09, 12)।
  • কেবলমাত্র যে দিনগুলিতে আপনি বিপরীত হবেন তা হ'ল 01 (বিপরীত 10), 02 (বিপরীত 20), 03 (বিপরীত 30), 10 (বিপরীত 01), 11 (অবশেষ 11), 12 (বিপরীত 21), 13 (বিপরীত 31) , 20 (থেকে বিপরীত 02), 21 (থেকে বিপরীত 12), 22 (দেহাবশেষ 22), 30 (থেকে বিপরীত 03বা হিসাবে একই 31 নভেম্বর জন্য!), 31 (থেকে বিপরীত 04- 09/ 13-19/ 23- 29)।

সাধারণ নিয়ম:

  • এটি , তাই বাইট জেতে সংক্ষিপ্ত উত্তর।
    কোড-গল্ফ ভাষাগুলি আপনাকে নন-কোডগলফিং ভাষার সাথে উত্তর পোস্ট করতে নিরুৎসাহিত করবেন না। 'যে কোনও' প্রোগ্রামিং ভাষার পক্ষে যতটা সম্ভব সংক্ষিপ্ত উত্তর নিয়ে আসার চেষ্টা করুন।
  • স্ট্যান্ডার্ড নিয়মগুলি আপনার উত্তরের জন্য প্রযোজ্য , সুতরাং আপনাকে যথাযথ প্যারামিটার সহ স্টার্টিন / এসটিডিআউট, ফাংশন / পদ্ধতি এবং রিটার্ন স্টেটমেন্ট / আউটপুট, সম্পূর্ণ প্রোগ্রামগুলি ব্যবহার করার অনুমতি দেওয়া হবে। আপনার কল
  • ডিফল্ট লুফোলগুলি নিষিদ্ধ।
  • যদি সম্ভব হয় তবে আপনার কোডের জন্য একটি পরীক্ষার সাথে একটি লিঙ্ক যুক্ত করুন।
  • এছাড়াও, প্রয়োজনে একটি ব্যাখ্যা যোগ করুন।

পরীক্ষার কেস ( dd-MM-yyyyবিন্যাস হিসাবে):

21-07-2016   ->   12-12-6102
12-11-1991   ->   21-11-1991
01-01-2000   ->   10-10-0002
27-08-1875   ->   31-12-5781
18-12-2010   ->   31-12-0102
13-01-1981   ->   31-10-1891
04-11-1671   ->   30-11-1761  // Semi-tricky case, since November has 30 days
28-11-2036   ->   30-11-6302  // Semi-tricky case, since November has 30 days
14-06-1855   ->   31-12-5581
30-10-9999   ->   03-01-9999
01-01-2851   ->   10-10-1582

@ LegionMammal978 না, 21-07-2016প্রত্যাবর্তন করা হয় 12-70-6102যা বৃত্তাকার হয় 12-12-6102। আপনি কীভাবে ফলাফল পাবেন তা নিশ্চিত নন ##-10-6107..
কেভিন ক্রুইজসেন

@ কেভিন ক্রুজসেন ঠিক আছে, আমি ভেবেছিলাম বছরটি বাড়ার সাথে সাথেই মাসটি গুটিয়ে যায় 70
LegionMammal978

কি 10-10-2তৃতীয় ক্ষেত্রে বৈধ আউটপুট?
লুইস মেন্ডো

@ লুইস মেন্ডো হ্যাঁ নিশ্চিত। আমি অন্য লোকদেরও এটি করতে দেখেছি। চ্যালেঞ্জটি ইন-বা আউটপুট বিন্যাসের চেয়ে তারিখগুলিকে সঠিকভাবে বিপরীত করা এবং গোল করা সম্পর্কে আরও বেশি।
কেভিন ক্রুইজসেন

তিনটি স্ট্রিং নেওয়া এবং নেতৃস্থানীয় শূন্যগুলি আশা করা কি গ্রহণযোগ্য হবে?
জাস্টিনএম - মনিকা 22

উত্তর:


3

উত্তল , 23 বাইট

বাইট গণনাটি সিপি -1222 এনকোডিং অনুমান করে।

qS/Wf%_1=:=31^sCs¶.e<S*

আই / ও ফর্ম্যাটটি dd mm yyyy

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

এটি আমার সিজেএম উত্তরের প্রত্যক্ষ বন্দর । উত্তলটি সিজেএম-এর উপর ভিত্তি করে প্রচুর পরিমাণে ভিত্তি করে এবং সুতরাং একমাত্র পার্থক্য হল উত্তল অপারেটরের ব্যবহার যা তালিকার শীর্ষে থাকা দুটি স্ট্যাক উপাদানকে একটি তালিকাতে গুটিয়ে রাখে এবং একটি বাইট ওভার সাশ্রয় করে [...]


8

সিজেম, 24 বাইট

qS/Wf%[_1=:=31^sCs].e<S*

আই / ও ফর্ম্যাটটি dd mm yyyy

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

একই বাইট গণনা, I / O ফর্ম্যাট mm dd yyyy:

qS/Wf%_0=:=1231^s2/.e<S*

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

ব্যাখ্যা

qS/     e# Read input, split around spaces.
Wf%     e# Reverse each component.
[       e# Set marker for new list.
  _1=   e#   Duplicate reversed strings, extract reversed month.
  :=    e#   Check for equality of the characters. This gives 1 for
        e#   November (11) and 0 for everything else.
  31^   e#   XOR the result with 31, giving 30 for November and 31
        e#   for everything else.
  s     e#   Convert the result to a string, "30"/"31".
  Cs    e#   Push 12, convert to string, "12".
]       e# Wrap "30"/"31" and "12" in a list.
.e<     e# Element-wise minimum. This clamps the day and month to their
        e# respective maxima.
S*      e# Join the result with spaces.

অন্যান্য সংস্করণ একভাবে কাজ করে, ছাড়া আমরা পূর্ণসংখ্যা থেকে শুরু করে 1230অথবা 1231এটি রূপান্তরিত করার আগে ["12" "30"] বা ["12" "31"]


2
অন্তর্নির্মিত তারিখ সহ ভাষা ...
লিকি নুন

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

তাহলে আপনি কীভাবে জানবেন যে নভেম্বর মাসে 30 দিন রয়েছে?
লিকি নুন

2
@ ল্যাকইনুন আমি পরে একটি ব্যাখ্যা যুক্ত করব, তবে 1=বিপরীত মাসটি পেয়ে যাবে, :=এটির সংখ্যাগুলি সমান কিনা এবং ^ফলাফলটি 31 এর সাথে xors হয়ে যায়, মাসের জন্য 30 11এবং সমস্ত কিছুর জন্য 31 প্রদান করে।
মার্টিন ইন্ডার

ওহ, আমি চশমা পড়িনি ...
লিকি নুন

5

পাইথ, 55 53 46 43 41 বাইট

এপিজে_এমসিজেডি = এইচএইচএস, 12 এসএইচ = জিএস, এসজিসি @। "❤❤ó» î "এইচ%"% 02 ডি% 02 ডি% "" জিএইচজেজে 
এপিজে_এমসিজেডি = এইচএস, 12 এসএইচ = এইচএস, এসজিসি @। "%» î "এইচ% "% 02d% 02d% s" [জিএইচজে 
এপিজে_এমসিজেড% -% "% 02d% 02d% s" [এইচএস, এসজিএক্স 31 
এস 11 এসএইচএস , 12 এসইজেজে এপিজে_এমসিজেডিজেডি [> 2+ h 0 এইচএস, এসজিএক্স 31 এসকিএস> 2+ \ 0 এইচএস, 12 এসএইচজেজ
APJ_Mczdjd। [এল \ 02 [ `HS, sGx31q11sH`hS, 12sHeJ

যেখানে ❤❤যথাক্রমে দুটি U + 001C এবং U + 001F ছিল দু'টি ছাপ ছাপানো ছিল না।

পরীক্ষা স্যুট.


3

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

lambda x:[min(x[0][::-1],['31','30'][x[1]=='11']),min(x[1][::-1],'12'),x[2][::-1]]

একটি বেনাম ফাংশন যা ফর্মের স্ট্রিংয়ের তালিকার হিসাবে তারিখের যুক্তির মাধ্যমে ইনপুট নেয় ['dd', 'mm', 'yyyy']এবং একই ফর্ম্যাটে বৈধতাযুক্ত বিপরীত তারিখটি প্রদান করে।

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

পাইথন অক্ষর এবং স্ট্রিংগুলি তাদের ইউনিকোড কোড-পয়েন্টগুলির সাথে তুলনা করে। এর অর্থ হ'ল দুটি বা ততোধিক পূর্ণসংখ্যার সাথে যে কোনও তুলনা স্ট্রিং হিসাবে সেই পূর্ণসংখ্যার সাথে তুলনা করার মতোই ফিরে আসে। সুতরাং, minদুটি সংখ্যাকে স্ট্রিং হিসাবে কল করা স্ট্রিং হিসাবে ক্ষুদ্রতম পূর্ণসংখ্যাকে প্রদান করে; বিপরীত তারিখ-অংশটিকে একটি যুক্তি হিসাবে এবং অন্য হিসাবে সর্বোচ্চ মান হিসাবে গ্রহণ করে, দিন এবং মাসকে পছন্দসই পরিসরে আটকে দেওয়া হয়। তারিখ-অংশ পদক্ষেপ সঙ্গে ইন্ডেক্স দ্বারা বিপরীত হয় -1( [::-1]), এবং মাসের জন্য সর্বোচ্চ মান থেকে পরিবর্তিত হয় '31'থেকে '30'যদি মাসে একটি শর্তাধীন এর বুলিয়ান ফলাফল নিয়ে একটি তালিকা মধ্যে ইন্ডেক্স দ্বারা নভেম্বর হয়।

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


2

ডায়ালগ এপিএল , 32 33 বাইট

⍕¨{⍵-3↑31 11≡2↑⍵}31 12 1E4⌊⍎∊⍕⌽¨⎕

আই / ও হ'ল তিনটি স্ট্রিংয়ের তালিকা ( 'dd' 'mm' 'yyyy')।

ট্রাইএপিএল , তবে নোট করুন যে (ইনপুটের জন্য প্রম্পট) এর সাথে প্রতিস্থাপন করা হয়েছে এবং সম্পূর্ণ অনলাইন লাইনটি বন্ধ করা হয়েছে {... }অনলাইন টেস্টিং সক্ষম করার জন্য, এবং (এক্সিকিউট এক্সিকিউট) এর সাথে প্রতিস্থাপন করা হয়েছে 2⊃⎕VFI(ইনপুট যাচাই এবং ঠিক করা) কারণ স্বেচ্ছাচারিত কোড কার্যকর করা অবরুদ্ধ ।


2

সি # 314 305 299 249 232 223 বাইট

using System.Linq;string f(int d,int m,int y){Func<int,string>r=i=>string.Concat((""+i).PadLeft(2,'0').Reverse());Func<string,int,string>x=(j,k)=>int.Parse(j)>k?""+k:j;return x(r(d),m==11?30:31)+"-"+x(r(m),12)+"-"+r(y);}

@ কেভিন ক্রুজসেনকে ধন্যবাদ জানাতে যে আমি আমার পরিবর্তনশীল ঘোষণাটি সংক্ষিপ্ত করতে পারি, যার ফলে অ্যালিয়জিং স্ট্রিংটি কিছু বাইট সংরক্ষণ করতে সক্ষম হয়েছিল।

পুনরায় ব্যবহারের জন্য বিপরীত ফাংশন সংরক্ষণ করে 50 বাইট সংরক্ষণ করা হয়েছে এবং আরও 13 টি বৃত্তাকার জন্য একই কাজ করে এবং ভেরিয়েবলের ঘোষণাগুলি অপসারণ করে।

শেষ আপডেটটি আলিয়াসিং স্ট্রিংটিকে আর কোনও বাইট সেভার করে না।

অবরুদ্ধ সংস্করণ:

using System.Linq;
    string dateReverse(int day, int month, int year)
{
    //setup a resuable function to reverse
    Func<int, string> reverse = intToReverse => string.Concat((""+intToReverse).PadLeft(2, '0').Reverse());

    //another function for rounding
    Func<string, int, string> round = (strToRound, maxVal) => int.Parse(strToRound) > maxVal ? "" + maxVal : strToRound;

    //Join the strings into the "dd-mm-yyyy" date format
    return 
        //Round down the day value, if november cap to 30 otherwise cap to 31
        round(reverse(day), month == 11 ? 30 : 31) + "-" +

        //Round the month down
        round(reverse(month), 12) + "-" +

        //we can use the reverse function here too and pad left just won't do anything
        reverse(year);
}

এটি এখানে পরীক্ষা করুন


আপনি using System.Linq;এবং ফাংশনটির মধ্যে স্থানটিকে উপেক্ষা করতে পারেন , তাই -1 বাইট। এছাড়াও, var n=...;var e=...;পরিবর্তে string n=...,e=...;এটি ব্যবহার করে 1 বাইট দ্বারা গল্ফ করা যায়: এটি বেশি নয়, তবে এখনও -2 বাইট। ;)
কেভিন ক্রুইজসেন

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

2

জাভাস্ক্রিপ্ট, 106 105 94 বাইট

d=>d.split`,`.map((a,b,r)=>(e=[...a].reverse().join``,f=!b?r[1]==11^31:b<2&&12,f&&f<e?f:e))+''

পরীক্ষার স্যুট (পুনরায় 3)


ব্যাখ্যা

d=>d.split`,`                 // split into sections by `,`

.map((a,b,r)=>(               // map each section

e=[...a].reverse().join``,    // spread a date section into array and reverse and 
                              // join with `` to get string result

f=!b?r[1]==11^31              // if section being mapped is day (section 0), 
                              // then max (f) is 30 for November(month 11) or else 31

:b<2&&12,                     // if part being mapped is month (section 1), then max (f) is 12

f&&f<e?f:e))                  // if there is a max (f)
                              // and the max (f) is less than the reversed string (e),
                              // then return the max (f), 
                              // else return the reversed string (e)

+''                           // join all the sections back together with `,` 
                              // (concatenating [] with a string will do this)

ধন্যবাদ 1 বাইট সংরক্ষণের জন্য @KevinCruijssen b==1করতে b<2। ES6 টেম্পলেটটি আক্ষরিক এবং ,বিভাজক প্রস্তাব দিয়ে 11 বাইট সংরক্ষণ করার জন্য @ নীলকে ধন্যবাদ


আমি b==1জেএসে বেশ খারাপ, তাই যদি আমি কিছু ভুল বলি তবে আমাকে সংশোধন করুন, তবে b<2বাইটটি বাঁচাতে গল্ফ করা যাবে না ? এটি আর 0 হতে পারে না, যেহেতু আপনি ইতিমধ্যে !b?কোডের অংশটিতে এটি পরীক্ষা করেছেন। আমি যখন এটি পরিবর্তন করি তখন এটি আপনার টেস্ট স্যুটে কাজ করে বলে মনে হয়।
কেভিন ক্রুইজসেন

@ কেভিন ক্রুজসেন হ্যাঁ, আপনি ঠিক বলেছেন, ধন্যবাদ! আমি কেবল এটি উপেক্ষা করেছি। আমি খুব চেহারার জন্য জাভাস্ক্রিপ্টে গল্ফিং করিনি তাই আমি কখনও কখনও এরকম জিনিস মিস করি
CShark

* আমি 'খুব
দীর্ঘের

2
আপনি যেমন ES6 টার্গেট করছেন, আপনি উদাহরণ join``হিসাবে পরিবর্তে - আপনার কোডটি সংক্ষিপ্ত করতে টেমপ্লেট স্ট্রিং ব্যবহার করতে পারেন join('')- তবে আপনি ,নিজের বিভাজক হিসাবে আরও কিছুটা সঞ্চয় করতে পারবেন যা আপনাকে +''তিনটি মানকে এক সাথে যুক্ত করতে দেয়।
নীল

@ নিল আপনি কি ইনপুটটিতে ,বিভাজক হিসাবে বোঝাতে চান ?
সিশার্ক

1

রুবি, 92 84 + 1 ( -pপতাকা) = 93 85 বাইট

পৃথককারী -হিসাবে ব্যবহার করে।

d,m,y=chomp.split(?-).map &:reverse
$_=[[d,m=="11"?"30":"31"].min,[m,"12"].min,y]*?-


0

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

z=input().split("-");r=[x[::-1]for x in z];z[1]=r[1]if r[1]<'12'else '12';z[0]=r[0]if r[0]<'31'else '30'if z[1]=='11'else '31';z[2]=r[2];print "-".join(z)

ইনপুটটিকে স্ট্রিং হিসাবে নেয়, সুতরাং ইনপুটগুলিতে উদ্ধৃতি নির্দিষ্ট করা দরকার, যেমন "11-04-2016"।


শুধু একটি মৌলিক উন্নতি যেহেতু আমি একটি পাইথন গল্ফ খেলোয়াড় নই: z=[x[::-1]for x in z];z[1]=min(z[1],'12');z[0]=min(z[0],['31','30'][z[1]=='11']);print"-".join(z)। মূলত, আপনার মোটেও ব্যবহার rকরার দরকার নেই এবং minআপনি করতে চান এমন অনেকগুলি কাজ সম্পাদন করে।
মূল্য

0

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

#íÐÅsË31^12‚øεßт+¦}sθªðý

@ মার্টিনএেন্ডারের সিজেএম উত্তরটির পোর্ট , সুতরাং বিন্যাসে একটি স্ট্রিং হিসাবে ইনপুট এবং আউটপুট dd MM yyyy

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

ব্যাখ্যা:

#                         # Split the (implicit) input by spaces
                          #  i.e. "04 11 1671" → ["04","11","1671"]
                          #  i.e. "20 01 2000" → ["20","01","2000"]
 í                        # Reverse each string
                          #  i.e. ["04","11","1671"] → ["40","11","1761"]
                          #  i.e. ["20","01","2000"] → ["02","10","0002"]
  Ð                       # Triplicate this list
   Ås                     # Pop one of them, and push it's middle element (the months)
                          #  i.e. ["40","11","1761"] → "11"
                          #  i.e. ["02","10","0002"] → "10"
     Ë                    # Check if the digits are the same (1 for 11; 0 otherwise)
                          #  i.e. "11" → 1 (truthy)
                          #  i.e. "10" → 0 (falsey)
      31^                 # Bitwise-XOR with 31 (30 for November, 31 for other months)
                          #  i.e. 1 → 30
                          #  i.e. 0 → 31
         12              # Pair it with 12
                          #  i.e. 30 → [30,12]
                          #  i.e. 31 → [31,12]
            ø             # Zip/transpose; swapping rows and columns
                          # (implicitly removes year)
                          #  i.e. ["40","11","1761"] and [30,12] → [["40",30],["11",12]]
                          #  i.e. ["02","10","0002"] and [31,12] → [["02",31],["10",12]]
             ε    }       # Map each pair to:
              ß           # Get the minimum (implicitly converts to integer unfortunately)
                          #  i.e. [["40",30],["11",12]] → [30,11]
                          #  i.e. [["02",31],["10",12]] → [2,10]
               т+         # Add 100
                          #  i.e. [30,11] → [130,111]
                          #  i.e. [2,10] → [102,110]
                 ¦        # Remove the first character
                          #  i.e. [130,111] → ["30","11"]
                          #  i.e. [102,110] → ["02","10"]
                   s      # Swap so the triplicated list is at the top of the stack again
                    θ     # Pop and only leave it's last element (the year)
                          #  i.e. ["40","11","1761"] → "1761"
                          #  i.e. ["02","10","0002"] → "0002"
                     ª    # Append it to the list
                          #  i.e. ["30","11"] and "1761" → ["30","11","1761"]
                          #  i.e. ["02","10"] and "0002" → ["02","10","0002"]
                      ðý  # Join the list by spaces (and output implicitly)
                          #  i.e. ["30","11","1761"] → "30 11 1761"
                          #  i.e. ["02","10","0002"] → "02 10 0002"
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.