মেটা গল্ফ চ্যালেঞ্জ


22

সেই চ্যালেঞ্জের উপরে আপনাকে সেই চ্যালেঞ্জটি সমাধান করতে হবে।

প্রতিযোগিতা শেষ! প্রশ্নের শেষ পরীক্ষা করুন

চশমা:

  1. সবচেয়ে ছোট কোডটি লিখুন (যে কোনও ভাষা *)।
  2. একটি উত্তরের স্কোর হ'ল:
    • সাদা জায়গা ছাড়াই কোডের দৈর্ঘ্য ।
    • স্কোয়ার একই ভাষা ব্যবহার করে উত্তরের সংখ্যা।
    • প্রতিযোগিতার সবচেয়ে বড় ভাষার নামের দৈর্ঘ্য আপনার ভাষার দৈর্ঘ্য।
    • ডাউনভোটস বিয়োগ আপভোটস (উফ বিয়োগ সর্বমোট ভোট)
  3. ব্যবহারকারীদের অবস্থান এবং স্কোর লিখুন।
  4. প্রতিটি ব্যবহারকারী কেবল একটি উত্তর লিখতে পারেন।
  5. সর্বনিম্ন স্কোর জয়।

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

সুতরাং, প্রতিযোগিতা শেষে, একটি সম্ভাব্য ইনপুট (এসটিডিআইএন) হতে পারে:

কলামগুলি হল: ব্যবহারকারীর নাম, ভাষা, কোড দৈর্ঘ্য (ডাব্লু / ও হোয়াইটস্পেস) এবং টোটালভোটস

UserA Python 100 1
UserB Perl 30 2
UserC Java 500 3
UserD Brainfuck 499 4
UserE Perl 29 5

যদি আপনার ব্যবহারকারীর নামটিতে "আমার ব্যবহারকারীর নাম" এর মতো স্পেস থাকে তবে এটি "মাইউজারনেম" হয়ে যাবে তাই ইনপুটটিতে সর্বদা ঠিক 4 টি কলাম থাকবে

আউটপুটটি হবে (STDOUT):

1 UserE 33
2 UserB 37
3 UserA 103
4 UserD 496
5 UserC 503

ব্যাখ্যা:

User  P  N^2  L   V
 A   100  1   3  -1
 B    30  4   5  -2
 C   500  1   5  -3
 D   499  1   0  -4
 E    29  4   5  -5

ব্রেনফাক 9 টি চর ( 9 - 9 = 0) সহ বৃহত্তম নাম ।

পার্ল এবং জাভাতে 4 টি চর রয়েছে ( 9 - 4 = 5)।

পাইথনের 6 টি চর ( 9 - 6 = 3) রয়েছে।

পার্লের 2 টি প্রবেশ রয়েছে যাতে করে প্রতিটি 4 টি অতিরিক্ত পয়েন্ট পান।


ভাষা সম্পর্কে:

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

প্রতিযোগিতা শেষে প্রতিটি ভাষার অবশ্যই এর প্রতিনিধিত্ব থাকতে হবে (আপনি আরও ভাল উপস্থাপনের প্রস্তাব দিতে পারেন)

উদাহরণ:

Python3      -> Python
Ruby1.9      -> Ruby
Shell Script -> Shell
C++          -> Cpp
C#           -> CSharp
><>          -> Fish

সময়সীমা: 20 আগস্ট, 2011 00:00 ইউটিসি

প্রতিযোগিতা শেষে বিজয়ীর অবশ্যই বিজয়ীর সন্ধানের জন্য তার প্রোগ্রামটি ব্যবহার করতে হবে। বিজয়ীর সন্ধানের জন্য এবং বিজয়ীকে তার প্রোগ্রামটি ব্যবহার করতে বলার জন্য অ বিজয়ীদের তাদের প্রোগ্রামগুলি ব্যবহার করার অনুমতি দেওয়া হয়েছে। :)

বিজয়ী (উপরে দেখুন) উত্তর গৃহীত হয়!

* হোয়াইটস্পেস ভাষার অক্ষর গণনা ছাড়াই সীমিত সীমাহীন জটিলতার পরিচয় দিতে সক্ষম হবার অন্যায় সুবিধা রয়েছে। হোয়াইটস্পেসে লেখা উত্তরগুলি প্রতিযোগিতায় থাকতে পারে তবে জিততে পারে না।

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


ফাইনাল ইনপুট

নামের বর্ণানুক্রমিক ক্রম (আগস্ট 20 শে 2011 ইউটিসি 00:00)

boothby Sage 41 9
Harpyon Python 203 4
JBernardo Python 184 7
JoeyAdams PostgreSQL 225 6
jpjacobs AWK 269 4
Lowjacker Ruby 146 2
PeterTaylor Golfscript 82 4
rmackenzie CommonLisp 542 2
shesek Javascript 243 3
userunknown Scala 252 1

যেহেতু আমার এবং বুথবাইয়ের উত্তর দুটিই জিততে দেওয়া হচ্ছে না, বিজয়ীর এই প্রশ্নটি সম্পাদনা করে এবং নীচে চূড়ান্ত ফলাফল পোস্ট করে নিজেকে বিজয়ী হিসাবে ঘোষণা করা উচিত should

ফাইনাল আউটপুট

1 boothby 39
2 PeterTaylor 79
3 Lowjacker 151
4 JBernardo 185
5 Harpyon 207
6 JoeyAdams 220
7 shesek 241
8 userunknown 257
9 jpjacobs 273
10 rmackenzie 541

8
তার মানে কি হোয়াইটস্পেসের কোনও সমাধান স্বয়ংক্রিয়ভাবে জিতবে?
জোয় অ্যাডামস

1
অন্যান্য উত্তর সম্পর্কিত তথ্য কোথা থেকে আসে? আমাদের প্রোগ্রামগুলি কি স্ট্যাকএক্সচেঞ্জের সাথে সংযোগ স্থাপন এবং এই প্রশ্নের উত্তরগুলি খনন করার কথা?
জাস্টিন মরগান

1
@ জাস্টিন প্রতিযোগিতা শেষে, আমি উত্তর দিয়ে আসল প্রোগ্রামটি ইনপুট করব। আমি 21:
55

1
@ হার্পিয়ন <> <ti dexif I! SknahT
জের্নার্ডো

1
আউটপুটকে স্কোর অনুসারে বাছাই করতে হবে? যদি তাই হয় তবে টাইয়ের ক্ষেত্রে আমাদের কী করা উচিত?
বুথবি

উত্তর:


11

গল্ফস্ক্রিপ্ট, ৮ 83 টি চর (৮২ টি শ্বেতক্ষেত্র গণনা করছে না)

n/{},{' ':s/}%.{1=}%\{~~\~\-\.`{=}+4$\,,.*\,-+2${,}%$)\;+[\]}%$\;.,,]zip{~)s@~s@n}%

ব্যাখ্যা:

# Split the string containing all the input on newlines
n/
# Remove empty lines
{},
# Split each line on spaces (storing the space character in variable s)
{' ':s/}%
# We now have an array of arrays of words. Duplicate it, filter the copy to contain
# only the second word of each array, and reorder with the array of second words first
.{1=}%\
# Map each line
{
    # Unpack the array ["user" "lang" "length" "votes"] and evaluate the integers
    ~~\~\
    # Subtract votes from length and bring "lang" to the top
    -\
    # Create a function to match the string "lang"
    .`{=}+
    # Stack is currently [array of langs] "user" (length-votes) "lang" {"lang"=}
    # Duplicate the array of langs and apply the match function as a filter
    4$\,
    # Get the length of the array of matches and square it
    ,.*
    # Stack is [array of langs] "user" (length-votes) "lang" (num with lang)^2
    # Bring the "lang" to the top, get its length, subtract and add
    \,-+
    # Stack is [array of langs] "user" (score-length of longest lang)
    # Get an array of length of language names and sort it
    2${,}%$
    # Drop it apart from the largest value, and add that to the score
    )\;+
    # Package the "user" score from the top of the stack as [score "user"]
    [\]
}%
# Sort. Since each element is a [score "user"] value, this will sort by score.
$
# Discard the [array of langs].
\;
# Stack is an array of [score "user"] arrays. Get its length and create an array of the
# same length which counts from 0.
.,,
# Group and zip, so we go from [[score0 "user0"] ... [scoren "usern"]] [0 ... n] to
# [[[score0 "user0"] 0] ... [[scoren "usern"] n]]
]zip
# Map each [[scorei "useri"] i]
{
    # Expand, increment i (so we count from 1 rather than 0), add a space
    ~)s
    # Bring the [scorei "useri"] to the top, unpack, add a space
    @~s
    # Bring the scorei to the top, add a newline
    @n
}%
# We now have an array [[1 " " "userA" " " scoreA "\n"] ... [n " " "userZ" " " scoreZ "\n"]
# so Golfscript's standard output formatting does the rest

এটি বেশ ঝরঝরে, আমার গল্ফস্ক্রিপ্টটি একবার দেখুন ... আমার কোনও ধারণা নেই যে কীভাবে এটি অর্থবহ কিছুতে বিভক্ত হয়েছে
শেখ

3
@ শেসেক, একটি ভারী মন্তব্যযুক্ত সংস্করণ যুক্ত করেছেন
পিটার টেলর

বাহ, খুব সুন্দর! ধন্যবাদ :-)
শেক

15

সেজ: 48 42 41 অ-সাদা স্থান (60246 বাইট মোট)

শুধু প্রিক হতে হবে:

s = '   '
for c in '<lots of whitespace>'.split(s):
    s+=chr(len(c))
exec s

মনে রাখবেন যে প্রথম লাইনটির সমতুল্য হওয়া উচিত s='\t', তবে এসই কোড ব্লকটি ট্যাবটিকে 4 স্পেসে অনুবাদ করে।

শ্বেত স্পেস এতে আনপ্যাক করে:

exec preparse("""
import sys
instances = {}
maxlen = 0
inputs = [line.split() for line in sys.stdin.readlines()]
for i in [0..len(inputs)-1]:
    user, language, length, votes = inputs[i]
    if language in instances:
        instances[language]+=1
    else:
        instances[language]=1
    if len(language) > maxlen:
        maxlen = len(language)

scoresheet = []
for i in [0..len(inputs)-1]:
    user, language, length, votes = inputs[i]
    length = int(length)
    votes = int(votes)
    score = length + (maxlen - len(language)) + instances[language]*instances[language] - votes
    scoresheet.append((score,user))

scoresheet.sort(reverse=False)
for user, score in scoresheet:
    print user, score""")

নোট করুন যে আমার ব্যবহার [0..len(inputs)-1]নিশ্চিত করে যে এটি পাইথন স্ক্রিপ্ট নয়, যেহেতু সেজ হ'ল সুপারপিথন *। দুর্ভাগ্যক্রমে, এক্সিকিউট পাইথনের পিছনে পড়ে ... তাই আমি এটি প্রস্তুত করতে চাই।

সম্পাদনা 1: নতুন লাইনে নয়, ট্যাবগুলিতে বিভাজন - আমি কী ভাবছিলাম? সম্পাদনা 2: কোডটি চোখে আরও সহজ করে তুলেছে এবং হোয়াইট স্পেসে অন্য 'নিউলাইন' চাপিয়ে বিভাজক ট্যাবটি পুনর্ব্যবহার করেছে

* ঠিক আছে, বেশ নয়: আমরা জোর ভাঙ্গি


10

পাইথন, 184

এজন্য আমি স্পেস পছন্দ করি।

import          sys
x = sys.stdin.read(
    ).split()
z = x [  1 : : 4  ]
for i , ( j , k
) in enumerate (
      sorted (
       zip (
        [
      int(i)
    - int(j) +
  z.count(k) ** 2
+ max(map(len, z)) -
      len(k)
  for i, j, k in
       zip (
    x[2 : : 4],
    x[3 : : 4],
         z
         )
         ],
     x[ : : 4]
         )
         ),
         1
         ):
   print i, k, j

এটি অনেক বেশি পাঠযোগ্য!


3
এই কি কিছু ধরণের ascii শিল্প কিছু চিত্রিত হতে অনুমিত হয়? যদি হ্যাঁ, এটি দেখতে কেমন হবে?
oenone

@ একা তুমি আমাকে বলো?
জেবার্নার্ডো

2
দেখে মনে হচ্ছে এটি হওয়া উচিত, তবে আমি কিছুই চিনতে পারি না
ওনোন

1
@ একা আমিও করি না ...
জেবার্নার্ডো

7

পোস্টগ্রিএসকিউএল - 225 অ-স্থানের অক্ষর

242 → 225: উইন্ডোটিং ক্লজগুলির সাথে সাব- কোয়েরিজ প্রতিস্থাপন করা হয়েছে ।

\set QUIET 1
\t
\a
\f ' '
CREATE TEMPORARY TABLE t (u TEXT, l TEXT, c INT, v INT);
\copy t FROM PSTDIN WITH DELIMITER ' ';
SELECT row_number() OVER (ORDER BY score), *
    FROM (SELECT u,
                 c
                 + count(*) OVER (PARTITION BY l)^2
                 + max(length(l)) OVER ()
                 - length(l)
                 - v AS score
                 FROM t) AS q

9.2devel পরীক্ষিত

ব্যবহার এবং আউটপুট:

$ psql -f meta.sql < meta.in
1 UserE 33
2 UserB 37
3 UserA 103
4 UserD 496
5 UserC 503

4

পাইথন 2 - 210 203 খালি স্থানের অক্ষর

import sys
e=enumerate
n=len
l=[x.split()for x in sys.stdin.readlines()]
for i,(x,y)in e(sorted((int(x[2])-int(x[3])+n(list(y for y in l if y[1]==x[1]))**2+max(n(x[1])for x in l)-n(x[1]),i)for i, x in e(l))):print i+1,l[y][0],x

ব্যবহার এবং আউটপুট:

$ cat meta.txt | python meta.py
1 UserE 33
2 UserB 37
3 UserA 103
4 UserD 496
5 UserC 503

আপনি কেবল ব্যবহার করতে পারেন x.split()(এটি সরিয়ে ফেলবে \n)
জার্নার্ডো

@ জার্নার্ডো চিয়ার্স! 7 টি অক্ষর সংরক্ষণ করা হয়েছে।

আপনি sys.stdin এ .readlines () খনন করতে পারেন .... ইনপুট যে কোনও যুক্তিসঙ্গত দৈর্ঘ্যের জন্য ফাংশন কল কোনও তাত্পর্যপূর্ণ করবে না এবং কিছু অক্ষর ব্যয় করতে পারে। সবেমাত্র এটি অন্য গল্ফের মধ্যে খুঁজে পেয়েছি এবং ভেবেছিলাম আমি ভাগ করব।
arrdem

4

এডাব্লুকে, 277 269-ফাঁকা অক্ষর

in8 টি চর কাটতে ব্যবহৃত হয়।

ব্যবধানযুক্ত সংস্করণ এবং মন্তব্য করা সংস্করণ:

{
        # read in user strings
        u[NR]=$0
        # count number of times language has been used
        l[$2]+=1
}

END{
        # get maximum language length
        M=0
        X=NR
        for (g in l){
                f=length(g)
                if(f>M)
                        M=f
        }
        # get score for user i
        for(i in u){
                split(u[i],c)
                s[i]=c[3]+l[c[2]]^2+M-length(c[2])-c[4]
        }
        # sort scores and users
        for(i=2;i<=X;++i){
                for(j=i;s[j-1]>s[j];--j){
                        t=s[j]
                        x=u[j]
                        s[j]=s[j-1]
                        u[j]=u[j-1]
                        s[j-1]=t
                        u[j-1]=x
                }
        }
        # output
        for(i=1;i<=X;++i){
                split(u[i],c)
                print i,c[1],s[i]
        }
}

ব্যবহার:

awk -f meta.awk data.txt

sed '/#/ d' meta.awk|sed ':a;$!N;s/\n//;ta;s/\s//g;'|wc -cঅক্ষর গণনা জন্য ব্যবহৃত ।
jpjacobs

3

রুবি, 146 টি অক্ষর + 4 স্পেস

b=$<.map &:split
puts b.map{|u,l,c,v|[b.map{|_,n|n.size}.max-l.size+b.count{|_,n|n==l}**2+eval(c+?-+v),u]}.sort.map.with_index{|(s,u),i|[i+1,u,s]*' '}

3

জাভাস্ক্রিপ্ট, 243 অক্ষর

for(g=0,H="length",i=J.split("\n"),p=[],l={};i[H]&&p.push(a=i.pop().split(" "));)
    X=a[1],X[H]>g&&(g=X[H]),l[X]=l[X]+1||1
for(i=-1;m=p[++i];)p[i]=[m[0],+m[2]+Math.pow(l[m[1]],2)+(g-m[1][H])-m[3]]
p.sort(function(a,b){return a[1]<b[1]?-1:1}).join("\n")

অন্যান্য সমাধানগুলির চেয়ে অনেক বেশি ... তবে আমি জাভাস্ক্রিপ্টে সেরাটি নিয়ে আসতে পারি।

ব্যবহার

ইনপুটটি জে ভেরিয়েবলের মধ্যে হওয়া উচিত। উদাহরণস্বরূপ, একটি কনসোল খুলুন এবং লিখুন:

J="UserA Python 100 1\nUserB Perl 30 2\nUserC Java 500 3\nUserD Brainfuck 499 4\nUserE Perl 29 5";
for(g=0,H="length",i=J.split("\n"),p=[],l={};i[H]&&p.push(a=i.pop().split(" "));)
    X=a[1],X[H]>g&&(g=X[H]),l[X]=l[X]+1||1
for(i=-1;m=p[++i];)p[i]=[m[0],+m[2]+Math.pow(l[m[1]],2)+(g-m[1][H])-m[3]]
p.sort(function(a,b){return a[1]<b[1]?-1:1}).join("\n")

কফস্ক্রিপ্ট, 177 অক্ষর

একই যুক্তি সম্পর্কে, কফস্প্রিপ্টে:

g=0;H="length";l={};([A,+C+Math.pow(l[B],2)+(g-B[H])-D] for [A,B,C,D] in for a in J.split "\n" then [_,X]=a=a.split " ";X[H]>g&&g=X[H];l[X]=l[X]+1||1;a).sort((a,b)->`a[1]<b[1]?-1:1`).join "\n"

আমি পছন্দ করি আপনি কীভাবে lengthএকটি ভেরিয়েবল এবং সাবস্ক্রিপ্ট ব্যবহার করে অ্যাট্রিবিউটটি সংক্ষেপিত করবেন ।
জোয়ে অ্যাডামস

3

কমন লিস্প - 546

(যখন গল্ফড ছেলেটি প্রথম বন্ধনকে একীভূত করছে, স্থানগুলি গণনা করছে না)

;;;; This is an answer to Code-Golf question
;;;; 3203/meta-golf-challenge
;;;; By using Common Lisp I plan to have the longest
;;;; Language-name while I cannot hope to have the
;;;; lowest character count due to Lisp's
;;;; linguistic tradition I can avoid the 16 or 25-pt
;;;; penalty atached to being the 4th or 5th PY
;;;; based answer.

(defun f (i)
 (loop for e in y do
  (if (eq i (nth 0 e))
   (return (nth 1 e))
  )
 )
)

(setf x
 (loop for l = (read-line () () () ())
  while l collect (loop for i = 0 then (1+ j)
                   as j = (position #\Space l :start i)
                   collect (subseq l i j) while j)
 )
)

(setf y
 (loop for a in x collect
  (list
   (+
    (read-from-string (nth 2 a))
    (expt (reduce #'+ (loop for b in x collect (if (string= (nth 1 a) (nth 1 b)) 1 0) ) ) 2 )
    (+ 5 (- (reduce #'min (loop for b in x collect (length (nth 1 b)))) (length (nth 1 a))))
    (* -1 (read-from-string (nth 3 a)))
   )
   (car a)
  )
 )
)

(setf g
 (sort (loop for c in y collect (nth 0 c)) #'<)
)

(loop for i = 0 then (1+ i) while (< i (length g)) do
 (setf a (nth i g))
 (format t "~A ~A ~A~%" (1+ i) (f a) a)
)

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

পিটার টেলরকে এই বুটস্ট্র্যাপার থেকে প্রতিটি শেষ চর নিচে দেওয়ার জন্য তার সহায়তার জন্য প্রধানত ধন্যবাদ ।

BASH - 35

wget -q goo.gl/R4R54
cat -|clisp l.lsp

ব্যবহার : বিড়াল। / টেস্ট 0 | bash ./btstrp.sh

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


1
একটি লুপটি কি তার চেয়ে কম হবে না?
পিটার টেলর

নিশ্চিত না ... তবে একটি সংক্ষিপ্ততর পাওয়া গেল!
18:38

1
এছাড়াও, আপনি যদি ভেরিয়েবলটি পড়তে নির্দিষ্ট করেন তবে আপনাকে ব্যবহার করতে হবে না $REPLY। ব্যবহার করে দেখুন while read x;do a=$x"\n"$a;done। এবং আপনি |শেষ লাইনে s এর পরে ফাঁকা স্থানগুলি সরাতে সক্ষম হবেন । অন্য নোটে, আমি নিশ্চিত নই যে কোনও অভ্যন্তরীণ আইপি ঠিকানা ব্যবহার করা খুব দরকারী: এটি অন্য কারও পক্ষে কাজ করবে না।
পিটার টেলর

বা এমনকিwget -q http://url/l.lsp ;cat - |clisp l.lsp
পিটার টেলর

- ঠিক আছে, বিড়াল আমাকে হারিয়ে
arrdem

2

ফাঁকা এবং নতুন লাইনের ছাড়াই স্ক্যাল 269 ​​266 252।

val b = io.Source.stdin.getLines.toList.map (_.split (" "))
b.map (a => {
  val l = b.filter (_(1) .equals ( a(1))).size
  a(0) -> (a (2).toInt + l * l + (b.map (x => x(1).length).max - a(1).length) - a(3).toInt)
}).sortBy (_._2).zipWithIndex .map (m => m._2 + " " + m._1._1 + " "+ m._1._2).mkString ("\n")

আবাহন:

cat user.lst | scala -i metagolf.scala

আপডেট:

  • সরলীকৃত (l => l.foo) -> (_.foo)
  • আবাহন
  • গার্ডেন স্ট্রিনের ইঙ্গিত

আমার সমাধান:

* 0 boothby 39
1 PeterTaylor 79
2 Lowjacker 151
* 3 JBernardo 185
4 Harpyon 207
5 JoeyAdams 220
6 shesek 241
7 userunknown 257
8 jpjacobs 273
9 rmackenzie 541

*) প্রতিযোগিতার বাইরে


আপনি stdinপরিবর্তে ব্যবহার করতে পারেন fromFile(System.in)
গ্যারেথ

1
ধন্যবাদ। এখন আমার 179 টি উর্ধ্বতন দরকার, এবং চ্যালেঞ্জটি জিততে পারতাম - সেটেরিস পারিবাস।
ব্যবহারকারী অজানা

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