ModTen के एक अच्छे ol 'गेम जैसा कुछ नहीं


27

अस्वीकरण: ModTen एक काल्पनिक कार्ड गेम है जो इस चुनौती के एकमात्र उद्देश्य के लिए बनाया गया था।

मॉडेन के नियम

मोडटेन को 52-कार्ड डेक के साथ खेला जाता है। क्योंकि अभी तक पूर्ण नियमों का आविष्कार नहीं हुआ है, हम विशेष रूप से हैंड रैंकिंग पर ध्यान केंद्रित करने जा रहे हैं।

जैक एंड थ्री, अनुकूल

ModTen में एक विजयी हाथ। विकिपीडिया के ग्राफिक्स ।

कार्ड का मान

कार्ड में निम्नलिखित मूल्य हैं:

  • 2 से 9 : उनके अंकित मूल्य के लायक
  • दस : 0 बिंदु
  • जैक : 3 अंक
  • रानी या राजा : 8 अंक
  • ऐस : 9 अंक

हाथ मान

  • एक ModTen हाथ दो कार्ड से बना है । एक हाथ का आधार मूल्य दोनों कार्डों के मूल्य को एक साथ गुणा करके और केवल अंतिम अंक रखते हुए प्राप्त किया जाता है (यानी एक modulo 10 को लागू करना)।

    उदाहरण के लिए, 7 ♥ - Q of का मान " 6 " है, क्योंकि (7×8)आधुनिक10=6

  • ModTen में एकमात्र अन्य नियम यह है कि अनुकूल कार्ड बेकार की तुलना में अधिक मूल्य के हैं। यदि दोनों कार्ड एक ही सूट के हैं, तो कन्वेंशन द्वारा, हम वैल्यू को "s" अपेंड करने जा रहे हैं।

    उदाहरण के लिए, 9 5 - 5 of का मान " 5रों " के रूप में जाना जाएगा , क्योंकि (9×5)आधुनिक10=5 और कार्ड अनुकूल हैं।

हाथ रैंकिंग और विजेता

उपरोक्त नियमों में 18 अलग-अलग हाथ रैंक हैं, जिन्हें निम्न तालिका में संक्षेप में प्रस्तुत किया गया है, सबसे मजबूत से निम्नतम (या सबसे सामान्य)। केवल जानकारी के लिए संभावनाएँ दी गई हैं।

दो हाथों को देखते हुए, सबसे निचले रैंक वाला हाथ जीत जाता है। यदि दोनों हाथ एक ही रैंक के हैं, तो यह एक ड्रॉ है (कोई टाई ब्रेकर नहीं है)।

 hand rank | hand value(s) | deal probability
-----------+---------------+------------------
     1     | 9s            | 0.30%
     2     | 3s            | 0.60%
     3     | 1s            | 0.90%
     4     | 7s            | 1.21%
     5     | 5s            | 1.51%
     6     | 3             | 1.81%
     7     | 9             | 2.26%
     8     | 8s            | 2.71%
     9     | 6s            | 3.02%
    10     | 1 or 7        | 3.62% each
    11     | 2s or 4s      | 3.92% each
    12     | 5             | 4.98%
    13     | 0s            | 5.43%
    14     | 8             | 8.14%
    15     | 6             | 9.95%
    16     | 2             | 11.76%
    17     | 4             | 13.57%
    18     | 0             | 16.74%

चुनौती

दो मॉडेन हाथों को देखते हुए , अपनी पसंद के तीन सुसंगत मूल्यों में से एक का उत्पादन यह बताने के लिए करें कि:

  • पहला खिलाड़ी जीतता है
  • दूसरा खिलाड़ी जीतता है
  • यह ड्रॉ है

निम्नलिखित नियम लागू होते हैं:

  • एक कार्ड ऊपरी मामले में अपनी रैंक के आधार पर वर्णित किया जाना चाहिए ( 2, 3, ..., 9, T, J, Q, Kया A) ने अपने सूट द्वारा लोअर केस में पीछा किया ( c, d, hयाs , क्लब, हीरे, दिल और हुकुम के लिए)।
  • आप "10"इसके बजाय उपयोग कर सकते हैं "T"लेकिन किसी भी अन्य प्रतिस्थापन निषिद्ध है।
  • जब तक उपरोक्त नियमों का पालन किया जाता है, आप किसी भी उचित और स्पष्ट प्रारूप में हाथ ले सकते हैं। आपको एक ही स्ट्रिंग के बजाय दो अलग-अलग पात्रों के रूप में रैंक और सूट लेने की अनुमति है।

    कुछ मान्य इनपुट प्रारूप हैं:

    • "7c Qh 8s Ks"
    • [["7c","Qh"], ["8s","Ks"]]
    • [[['7','c'], ['Q','h']], [['8','s'], ['K','s']]]
    • आदि।
  • 3 लगातार अलग-अलग मूल्यों का उपयोग करने के बजाय, आपका आउटपुट नकारात्मक , सकारात्मक या शून्य भी हो सकता है । कृपया अपने उत्तर में प्रयुक्त आउटपुट प्रारूप को निर्दिष्ट करें।

  • यह

परीक्षण के मामलों

खिलाड़ी 1 जीतता है

["Js","3s"], ["Ks","Kh"]
["7h","9h"], ["9s","7c"]
["Ah","5s"], ["Ts","8s"]
["Ts","8s"], ["Jh","2s"]
["4h","8s"], ["Qh","Ks"]

खिलाड़ी 2 जीत

["Th","8d"], ["6s","Kd"]
["Jc","5c"], ["3s","9s"]
["Jc","Jd"], ["9h","Ah"]
["2d","4d"], ["3h","3s"]
["5c","4c"], ["3c","2c"]

खींचना

["Js","3s"], ["3d","Jd"]
["Ah","Ac"], ["3d","9s"]
["Qc","Kc"], ["6d","4d"]
["2d","3d"], ["3s","2s"]
["Ts","9c"], ["4h","5d"]

इनपुट के रूप में एनम लेने के बारे में क्या? हास्केल में एक बहुत शक्तिशाली प्रकार की प्रणाली है ; मुझे पूरा यकीन है कि ऐसा कुछ सीधे इसमें किया जा सकता है।
wizzwizz4

यह हास्केल नहीं है, लेकिन {{J, s}, {3, s}}ठीक होगा ?
13 अक्टूबर को wizzwizz4

1
@ wizzwizz4 हाँ, यह ठीक है।
अरनौलड

2
यह "अनुकूल कार्ड" के बजाय "मैचिंग सूट वाले कार्ड्स" के साथ स्पष्ट हो सकता है।
क्राइसिस -ऑन स्ट्राइक-

जवाबों:


13

पायथन 3 , 114 110 बाइट्स

lambda m,n:p(*n)-p(*m)
R=b"T 2J45UNK9RL<3SLM;QAK:O>=/678"
v=R.find
p=lambda i,s,j,t:R[s==t::2][v(j)*v(i)%10+3]

इसे ऑनलाइन आज़माएं!

@Arnauld ने कार्ड वैल्यू और रैंक टेबल स्ट्रिंग्स के विलय के विचार का प्रस्ताव दिया। कुछ प्रयासों के बाद मैं एक मर्ज किए गए स्ट्रिंग को शिल्प करने में कामयाब रहा R="T 2J45UNK9RL<3SLM;QAK:O>=/678", जिसकी मूल कार्ड मूल्य स्ट्रिंग के समान लंबाई है। सबस्ट्रिंग R[6:25]="UNK9RL<3SLM;QAK:O>=/"रैंक तालिका के साथ ही के लिए एक कार्ड मूल्य लुकअप तालिका के रूप में कार्य करता है 3, 9, A, K, और Q। नई रैंक तालिका के एएससीआईआई-मूल्य डिकोडिंग में पिछले रैंक तालिका के समान रैंकिंग प्रभाव होता है।

इनपुट के रूप में बाइट स्ट्रिंग्स का उपयोग 4 बाइट्स बचाता है।

cmpपायथन 2 का उपयोग करके समाधान को 102 बाइट्स तक कम किया जा सकता है, जैसा कि @ xnor के समाधान द्वारा दिखाया गया है ।


पायथन 3 , 165 142 130 129 बाइट्स

lambda m,n:p(*n)-p(*m)
v="T 23456789   J    QA        K".find
p=lambda i,s,j,t:ord("HC92FA51GAB4E893D760"[s==t::2][v(j)*v(i)%10])

इसे ऑनलाइन आज़माएं!

-23 बाइट्स थैंक्स टू @ जोनाथन एलन

-2 बाइट्स थैंक्स टू @ovs

-1 बाइट थैंक्स टू @mypetlion

Ungolfed:

f = lambda hand1, hand2: get_rank(*hand2) - get_rank(*hand1)
def get_rank(v1, suit1, v2, suit2):
    get_card_value = "T 23456789   J    QA        K".find
    # rank_table = [[17,9,15,5,16,11,14,9,13,6],[12,2,10,1,10,4,8,3,7,0]]
    # rank_table = ("H9F5GBE9D6","C2A1A48370") # Base-18 encoding of ranks
    rank_table = "HC92FA51GAB4E893D760" # Interleaved base-18 encoding

    # ASCII-value decoding has the same ranking effect as base-18 decoding
    return ord(rank_table[suit1 == suit2::2][get_card_value(v2) * get_card_value(v1) % 10])

फ़ंक्शन fखिलाड़ी 1 और खिलाड़ी के हाथ का प्रतिनिधित्व करने वाले दो तर्क देता है। यह खिलाड़ी 1 जीत, खिलाड़ी 2 जीत, या ड्रॉ, इसी मामले में एक सकारात्मक, नकारात्मक या शून्य मान देता है। प्रत्येक हाथ को एक स्ट्रिंग के रूप में एन्कोड किया गया है, जैसे "7cQh"।


3
हाय योएल, CGCC में आपका स्वागत है! दो में हाथ रैंक सरणी विभाजित बहुत चतुर विचार! रखो और आओ!
640KB

1
@ जोनाथन एलन धन्यवाद। मैंने आपके विचार को थोड़ा अलग तरीकों का उपयोग करके शामिल किया है।
जोएल

1
आप एक ही स्ट्रिंग में रैंक टेबल को स्टोर करके 2 बाइट्स बचा सकते हैं:"HC92FA51GAB4E893D760"[s==t::2]
ovs

1
और अगर आप अजगर 2 पर स्विच करने के लिए तैयार हैं तो एक और 4 बाइट्स छोटी है ( cmpपायथन 3 में उपलब्ध नहीं है)
ovs

1
आप एक बाइट को बचाने के str.findबजाय उपयोग कर सकते हैं str.index। दो तरीकों के बीच एकमात्र व्यवहार अंतर यह है कि indexजब findरिटर्न नहीं मिलता है, तो एक त्रुटि मिलती है -1। तो यह आपके कोड के लिए कोई समस्या नहीं होगी।
mypetlion

11

x86-16 विधानसभा, 87 83 बाइट्स

बाइनरी:

00000000: e807 0050 e803 005a 3ac2 ad2c 3092 ad2c  ...P...Z:..,0..,
00000010: 30bb 3501 3af4 7503 bb3f 01e8 0a00 92e8  0.5.:.u..?......
00000020: 0600 f6e2 d40a d7c3 b106 bf49 01f2 aee3  ...........I....
00000030: 038a 4504 c312 0a10 0611 0c0f 0a0e 070d  ..E.............
00000040: 030b 020b 0509 0408 0124 1a21 1b11 0003  .........$.!....
00000050: 0808 09                                  ...

unassembled:

E8 010A         CALL GET_HAND           ; score first hand, ranked score into AL 
50              PUSH AX                 ; save score
E8 010A         CALL GET_HAND           ; score second hand 
5A              POP  DX                 ; restore first hand into DL 
3A C2           CMP  AL, DL             ; compare scores - result in CF, OF and ZF

            GET_HAND PROC               ; 4 char string to ranked score ("9s7c" -> 6)
AD              LODSW                   ; load first card string 
2C 30           SUB  AL, '0'            ; ASCII convert 
92              XCHG DX, AX             ; store in DX 
AD              LODSW                   ; load second card string 
2C 30           SUB  AL, '0'            ; ASCII convert 
BB 0139         MOV  BX, OFFSET R       ; first, point to non-suited table 
3A F4           CMP  DH, AH             ; is it suited?
75 03           JNZ  NO_SUIT 
BB 0143         MOV  BX, OFFSET RS      ; point to suited table 
            NO_SUIT: 
E8 012C         CALL GET_VALUE          ; get face card value in AL 
92              XCHG DX, AX             ; swap first and second cards 
E8 012C         CALL GET_VALUE          ; get face card value in AL 
F6 E2           MUL  DL                 ; multiply values of two cards 
D4 A0           AAM                     ; AL = AL mod 10
D7              XLAT                    ; lookup value in rank score table 
C3              RET 
            GET_HAND ENDP

            GET_VALUE PROC              ; get value of a card (2 -> 2, J -> 3, A -> 9)
B1 06           MOV  CL, 6              ; loop counter for scan
BF 014D         MOV  DI, OFFSET V       ; load lookup table 
F2/ AE          REPNZ SCASB             ; scan until match is found 
E3 03           JCXZ NOT_FOUND          ; if not found, keep original numeric value
8A 45 04        MOV  AL, BYTE PTR[DI+4] ; if found, get corresponding value 
            NOT_FOUND:
C3              RET                     ; return to program 
            GET_VALUE ENDP

R   DB 18, 10, 16, 6, 17, 12, 15, 10, 14, 7     ; unsuited score table
RS  DB 13, 3, 11, 2, 11, 5, 9, 4, 8, 1          ; suited score table
V   DB 'J'-'0','Q'-'0','K'-'0','A'-'0','T'-'0'  ; face card score table
    DB 3, 8, 8, 9, 0

इनपुट एक स्ट्रिंग के रूप में है Js3sKsKh, जैसे कि सूचक में SI। आउटपुट है ZF = 0 and SF = OF(टेस्ट के साथ JG) अगर खिलाड़ी 1 जीतता है, SF ≠ OF(टेस्ट साथ JL) अगर खिलाड़ी 2 जीतता है या ZFटेस्ट ( JEड्रा के साथ )।

डॉस परीक्षण कार्यक्रम का उपयोग कर आउटपुट:

यहाँ छवि विवरण दर्ज करें

डाउनलोड करें और डॉस के लिए MODTEN.COM का परीक्षण करें ।


7

05AB1E , 41 37 बाइट्स

•V›{₆Ÿ&∊WÍj¸•19вyεø`Ës‘ߌQ‘ŽćS‡Pθ«}èÆ

-4 बाइट्स @Grimy के लिए धन्यवाद ।

चुनौती वर्णन में तीसरे उदाहरण इनपुट प्रारूप की तरह, पात्रों की सूची की सूची के रूप में इनपुट। Ie P1 7c Qhऔर P2 के 8s Ksरूप में इनपुट होगा [[["7","c"],["Q","h"]],[["8","s"],["K","s"]]]। (और उपयोग करता "10"है 10।)

यदि खिलाड़ी 1 जीतता है तो एक नकारात्मक पूर्णांक आउटपुट करता है; एक सकारात्मक पूर्णांक अगर खिलाड़ी 2 जीतता है; या अगर यह एक ड्रॉ है।

इसे ऑनलाइन आज़माएं या सभी परीक्षण मामलों को सत्यापित करें

स्पष्टीकरण:

V›{₆Ÿ&∊WÍj¸•  # Push compressed integer 36742512464916394906012008
 19в           # Convert it to base-19 as list:
               #   [18,10,16,6,17,12,15,10,14,7,13,3,11,2,11,5,9,4,8,1]
Iε             # Push the input, and map each of its hands to:
  ø            #  Zip/transpose the hand; swapping rows/columns
               #   i.e. [["8","s"],["K","s"]] → [[["8","K"],["s","s"]]
   `           #  Push them separated to the stack
    Ë          #  Check if the two suits in the top list are equal (1/0 for truthy/falsey)
    s          #  Swap to get the list with the two values
     ‘ߌQ     #  Push dictionary string "JAKEQ"
     ŽćS       #  Push compressed integer 39808
              #  Transliterate these characters to these digits
      P        #  Now take the product of the two values in the list
       θ       #  Only leave the last digit (basically modulo-10)
    «          #  And merge it to the 1/0
               #  (now we have the hand values of both players,
               #   where instead of a trailing "s" we have a leading 1)
             # After the map: index each value into the earlier created integer-list
               # (now we have the hand rank of both players)
   Æ           # And then reduce the resulting integers by subtracting
               # (after which the result is output implicitly)

मेरा 05AB1E टिप देखें (वर्गों का उपयोग कैसे करें ? शब्दकोश का उपयोग कैसे करें ? बड़े पूर्णांक कैसे संपीड़ित करें ? और पूर्णांक सूचियों को कैसे संपीड़ित करें? ) क्यों समझें?•V›{₆Ÿ&∊WÍj¸• है 36742512464916394906012008, •V›{₆Ÿ&∊WÍj¸•19вहै [18,10,16,6,17,12,15,10,14,7,13,3,11,2,11,5,9,4,8,1], ‘ߌQ‘है "JAKEQ", और ŽćSहै 39808


प्रश्न स्पष्ट रूप से इनपुट लेने की अनुमति देता है Tके रूप में 10है, तो आप सिर्फ ड्रॉप कर सकते हैं Tसे JTQKA(और 3889 के बजाय 30889 पूर्णांक संकुचित उपयोग करें)। भी T* ... +हो सकता है ... «
ग्रिमि

1
10T10nआधुनिक10=0T*...+...«

1
37 (अब वास्तव में काम करता है!)
ग्रिम्मी

@Grimy आह, जैसे शब्दकोश का अच्छा उपयोग!
केविन क्रूज़सेन

3

PHP ,212 185 178 149 बाइट्स

while($p=$argv[++$x])$$x=ord(rjpfqlojngmckbkeidha[(($v=[J=>3,Q=>8,K=>8,A=>9])[$p[0]]?:$p[0])*($v[$p[2]]?:$p[2])%10+($p[1]==$p[3])*10]);echo${1}-${2};

इसे ऑनलाइन आज़माएं!

  • @ रात 2 को -7 बाइट्स धन्यवाद!
  • ASCII द्वारा -29 बाइट्स सरणी के बजाय तालिका एन्कोडिंग

इनपुट कमांड लाइन के माध्यम से होता है। आउटपुट STDOUTहै नकारात्मक अगर खिलाड़ी 1 जीत, सकारात्मक है, तो खिलाड़ी 2 जीत, 0यदि टाई। उदाहरण:

$ php modten.php Js3s KsKh
-1

1
@ Night2 मैं अगर मैं हमें अंतरिक्ष यान ऑपरेटर देने के लिए तैयार था लगता है (मेरा मतलब है, कितनी बार आप कि? उपयोग करने के लिए मिलता है), मैं कर सकता -2 बाइट्स और बस लौट नकारात्मक, सकारात्मक या शून्य के बजाय -1, 1या 0
640KB

मैं पिछले उत्तर में अंतरिक्ष यान ऑपरेटर को देखकर (अच्छे तरीके से) चकित था।
रात 2

2

जेली , 46 बाइट्स

“T0J3Q8K8A9”yⱮZV€P$Eƭ€)%⁵UḌị“©N¿!Æßvṅ?żṀ’b18¤I

इसे ऑनलाइन आज़माएं!

एक पूर्ण कार्यक्रम उदाहरण के लिए अपने तर्क के रूप में ले रहा है ["7h","Ks"],["4s","Ts"]और दोनों खिलाड़ियों को ड्रॉ करने पर शून्य और पॉजिटिव अगर खिलाड़ी 1 जीतता है और नकारात्मक अगर खिलाड़ी 2 जीतता है।


2

सी (जीसीसी) , 172 167 165 164 बाइट्स

p(l,v)char*l,*v;{v="T 23456789   J    QA        K";return"A<92?:51@:;4>893=760"[(l[1]==l[3])+(index(v,l[2])-v)*(index(v,*l)-v)%10*2];}f(char*s){return p(s+5)-p(s);}

इसे ऑनलाइन आज़माएं!

2 बाइट्स @ceilingcat की बदौलत मुंडा!

मूल रूप से @ जोएल के पायथन 3 समाधान का एक बंदरगाह है, लेकिन बिना बेस 18 एन्कोडिंग के। दो खिलाड़ियों के हाथों को अलग करने वाले स्थान के साथ एक स्ट्रिंग के रूप में इनपुट की अपेक्षा करता है, और एक पूर्णांक को आउटपुट करता है जो खिलाड़ी 1 जीत, खिलाड़ी 2 जीत या अगर यह ड्रॉ है, तो इंगित करने के लिए सकारात्मक, नकारात्मक या शून्य है।


2

पर्ल 6 , 101 100 94 88 बाइट्स

-1 किंग जोए को धन्यवाद

{[-] .map:{'HC92FA51GAB4E893D76'.ords[[*](.[*;0]>>.&{TR/JQKA/3889/})%10*2+[eq] .[*;1]]}}

इसे ऑनलाइन आज़माएं!

दस के लिए f(((<J ♠>, <3 ♠>), (<10 ♠>, <K ♥>)))उपयोग 10के रूप में इनपुट लेता है । एक मान लौटाता है <0 यदि खिलाड़ी 1 जीतता है, तो 0 यदि खिलाड़ी 2 जीतता है, तो 0 यदि यह ड्रा है।

व्याख्या

{
  [-]  # subtract values
  .map:{  # map both hands
    'HC92FA51GAB4E893D76'.ords[  # lookup rank in code point array
      [*](  # multiply
        .[*;0]  # card ranks
        >>.&{TR/JQKA/3889/}  # translate J,Q,K,A to 3,8,8,9
      )
      %10*2  # mod 10 times 2
      +[eq] .[*;1]  # plus 1 if suited
    ]
  }
}

1

चारकोल , 97 बाइट्स

≔”)¶&sNψU↓”ζF¹³F¹³F⁻⁴⁼ικ⊞υ⁺÷λ³⊗﹪Π⁺§ζι§ζκχ≔”A↘τ[⁵PkxτG”ε≔⁰δF⟦θη⟧≦⁻№υ⁺⁼§ι¹§ι³⊗﹪Π⁺§ζ⌕ε§ι⁰§ζ⌕ε§ι²χδIδ

इसे ऑनलाइन आज़माएं! लिंक कोड के वर्बोज़ संस्करण के लिए है। 4 वर्णों के दो तारों के रूप में इनपुट लेता है QcKc 6d4dऔर एक हस्ताक्षरित पूर्णांक आउटपुट करता है। स्पष्टीकरण:

≔”)¶&sNψU↓”ζ

संकुचित स्ट्रिंग 2345678903889कार्ड मूल्यों का प्रतिनिधित्व करता है।

F¹³F¹³

मूल्यों की प्रत्येक संभावित जोड़ी पर लूप करें।

F⁻⁴⁼ικ

प्रत्येक संभव दूसरे कार्ड सूट पर लूप। व्यापकता के नुकसान के बिना हम मान सकते हैं कि पहले कार्ड में सूट 3 है, इसलिए दूसरा कार्ड सूट 0 से 3 तक हो सकता है जब तक कि मान समान नहीं होते हैं, इस स्थिति में यह केवल 0 से 2 तक हो सकता है।

⊞υ⁺÷λ³⊗﹪Π⁺§ζι§ζκχ

हाथ के संशोधित स्कोर की गणना करें, जो कि हाथ का मूल्य दोगुना है, प्लस 1 यदि सूट समान हैं (यानी दूसरे कार्ड में सूट 3 है)।

≔”A↘τ[⁵PkxτG”ε

संपीड़ित स्ट्रिंग 23456789TJQKAकार्ड वर्णों का प्रतिनिधित्व करता है। इस तार में इनपुट कार्ड देखे जाते हैं और फिर कार्ड के मूल्य को प्राप्त करने के लिए पहली स्ट्रिंग में अनुक्रमित करने के लिए स्थिति का उपयोग किया जाता है।

≔⁰δ

परिणाम को शुरू में 0।

F⟦θη⟧

दो हाथों पर लूप।

≦⁻№υ⁺⁼§ι¹§ι³⊗﹪Π⁺§ζ⌕ε§ι⁰§ζ⌕ε§ι²χδ

हाथ के संशोधित स्कोर की गणना करें, और इस प्रकार इसकी आवृत्ति, और इस से परिणाम घटाएं।

Iδ

आवृत्ति अंतर आउटपुट।



0

पर्ल 5 -p , 107 बाइट्स

$a=A;y/ATJQK/90388/;${$a++}=substr"IAG6HCFAE7D3B2B59481",($1eq$3).$&*$2%10,1while/.(.) (.)(.)/g;$_=$A cmp$B

इसे ऑनलाइन आज़माएं!

इनपुट:

As 4d,Th 8c

(वास्तव में, अल्पविराम किसी भी चरित्र का हो सकता है।)

आउटपुट:

-1  Player one wins
 0  Draw
 1  Player two wins
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.