तापमान परिवर्तक


38

यह एक बाइट आकार की चुनौती है, जहां आपको तीन इकाइयों (सेल्सियस, केल्विन और फ़ारेनहाइट) में से एक में इनपुट तापमान को अन्य दो में बदलना होगा।

इनपुट

आपको एक तापमान के साथ एक इकाई (अंतरिक्ष द्वारा अलग) के बाद एक नंबर प्रदान किया जाएगा। तापमान एक पूर्णांक या एक अस्थायी बिंदु संख्या (23 बनाम 23.0 या 23.678) हो सकता है।

आप एक फ़ंक्शन या एक पूर्ण प्रोग्राम सबमिट कर सकते हैं, जो STDIN / ARGV / फ़ंक्शन तर्क से अलग स्ट्रिंग को पढ़ता है या निकटतम समतुल्य है और आउटपुट को STDOUT या निकटतम समकक्ष में प्रिंट करता है।

उत्पादन

आपके आउटपुट को तापमान को अन्य दो प्रारूपों में परिवर्तित किया जाना चाहिए, एक नई रेखा द्वारा और उसके बाद प्रत्येक पंक्ति पर संबंधित इकाई वर्ण द्वारा (वैकल्पिक रूप से एक स्थान द्वारा अलग किया गया)। दोनों इकाइयों का क्रम मायने नहीं रखता।

उत्पादन की शुद्धता

  • परिवर्तित संख्या गोलाई के बिना कम से कम 4 दशमलव स्थानों पर सटीक होनी चाहिए।
  • अनुगामी शून्य या दशमलव स्थान तब तक वैकल्पिक होते हैं जब तक कि पहले 4 दशमलव स्थान (बिना गोलाई के) सटीक हों। दशमलव बिंदु के बाद वास्तविक उत्तर में 4 शून्य होने पर आप 4 शून्य और / या दशमलव बिंदु को छोड़ सकते हैं।
  • कोई भी अग्रणी शून्य नहीं होना चाहिए
  • कोई भी संख्या प्रारूप स्वीकार्य है जब तक कि वह उपरोक्त तीन आवश्यकताओं को पूरा नहीं करता है।

इकाई प्रतिनिधित्व

तापमान की इकाई केवल निम्न में से एक हो सकती है:

  • C सेल्सियस के लिए
  • K केल्विन के लिए
  • F फ़ारेनहाइट के लिए

उदाहरण

इनपुट:

23 C

आउटपुट:

73.4 F
296.15 K

इनपुट:

86.987 F

आउटपुट:

303.6983 K
30.5483 C

इनपुट:

56.99999999 K

आउटपुट:

-216.1500 C
-357.0700 F

यह है जो बाइट्स जीत में सबसे कम प्रविष्टि करता है! हैप्पी गोल्फिंग!

लीडरबोर्ड

<script>site = 'meta.codegolf',postID = 5314,isAnswer = true,QUESTION_ID = 50740</script><script src='https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js'></script><script>jQuery(function(){var u='https://api.stackexchange.com/2.2/';if(isAnswer)u+='answers/'+postID+'?order=asc&sort=creation&site='+site+'&filter=!GeEyUcJFJeRCD';else u+='questions/'+postID+'?order=asc&sort=creation&site='+site+'&filter=!GeEyUcJFJO6t)';jQuery.get(u,function(b){function d(s){return jQuery('<textarea>').html(s).text()};function r(l){return new RegExp('<pre class="snippet-code-'+l+'\\b[^>]*><code>([\\s\\S]*?)<\\/code><\/pre>')};b=b.items[0].body;var j=r('js').exec(b),c=r('css').exec(b),h=r('html').exec(b);if(c!==null)jQuery('head').append(jQuery('<style>').text(d(c[1])));if (h!==null)jQuery('body').append(d(h[1]));if(j!==null)jQuery('body').append(jQuery('<script>').text(d(j[1])))})})</script>


मुझे लगता है कि आउटपुट किसी भी क्रम में हो सकता है। क्या यह उदाहरण के लिए सभी तीन स्वरूपों के लिए स्वीकार्य है 23C\n73.4F\n296.15K ? या इनपुट प्रारूप को दबा दिया जाना चाहिए?
लेवल रिवर सेंट

@ ostveverrill ऑर्डर बिट आउटपुट अनुभाग में उल्लिखित है। आपको केवल अन्य दो प्रारूपों का उत्पादन करना होगा।
ऑप्टिमाइज़र

आउटपुट परिशुद्धता के बारे में: 2/3=> 0.6666666666664 अंकों के लिए सटीक है? (मैं हाँ कहूँगा)। या होना चाहिए 0.6667?
edc65

@ edc65 0.666666666666सही है। मैं नो-राउंडिंग आधारित सटीक लागू कर रहा हूं। ऐसा 0.6666ही विकल्प है।
ऑप्टिमाइज़र

1
@ आउटपुट में डेनिस, स्पेस प्रिंट करने या नहीं करने का कोई नियम नहीं है। लेकिन यह इनपुट में मौजूद होगा।
ऑप्टिमाइज़र

जवाबों:


13

CJam, 77 65 60 59 55 54 52 बाइट्स

l~2|"459.67+1.8/'K 273.15-'C 1.8*32+'F"S/m<{~N2$}%6<

CJam दुभाषिया में इसे ऑनलाइन आज़माएं ।

यह काम किस प्रकार करता है

l~    e# Read and evaluate the input: F, K, C -> 15, 20, 12
2|    e# Bitwise OR with 2: F, K, C -> 15, 22, 14 = 0, 1, 2 (mod 3)

"459.67+1.8/'K 273.15-'C 1.8*32+'F"S/

      e# Push ["459.67+1.8/K" "273.15-C" "1.8*32+F"].
      e# These commands convert from F to K, K to C and C to F.

m<    e# Rotate the array of commands by 15, 22 or 14 units to the left.
{     e# For each command:
  ~   e#     Execute it.
  N   e#     Push a linefeed.
  2$  e#     Copy the temperature for the next iteration.
}%    e# Collect all results in an array.
6<    e# Keep only the first 8 elements.

32

पायथन 3, 118 116 बाइट्स

I=input()
t=eval(I[:-1])
u=ord(I[-1])%7
exec("u=-~u%3;t=[t*1.8-459.67,(t-32)/1.8,t+273.15][u];print(t,'FCK'[u]);"*2)

K -> F -> C -> Kदो बार रोटरी क्रम में रूपांतरण करता है ।


43
प्यार करना होगा 'FCK'[u]
एलेक्स ए

11
हाहा क्या बिल्ली, दोस्तों। सवाल और जवाब को बढ़ाएं, न कि मेरी गूंगी टिप्पणी को। : पी
एलेक्स ए

10

जावास्क्रिप्ट ( ईएस 6 ), 127 130 132 बाइट्स

कुछ अद्भुत एसोलंगेज के जवाब की प्रतीक्षा में, मुझे यहां गोल्फ के लिए ज्यादा कुछ नहीं मिला।

टेम्पलेट स्ट्रिंग का उपयोग करते हुए, 3 नईलाइन्स महत्वपूर्ण और गिनी जाती हैं।

परीक्षण करने के लिए फ़ायरफ़ॉक्स में स्निपेट चलाएँ।

F=x=>([t,u]=x.split(' '),z=273.15,y=9/5,u<'F'?`${t*y+32} F
${+t+z} K`:u<'K'?`${t=(t-32)/y} C
${t+z} K`:`${t-=z} C
${t*y+32} F`)

// Predefined tests

;['23 C','86.987 F','56.99999999 K']
.forEach(v=>O.innerHTML += v+' ->\n'+F(v)+'\n\n')
<input id=I><button onclick='O.innerHTML=F(I.value)'>-></button><br>
<pre id=O></pre>


7

पिप, 58 57 बाइट्स

Ft"CFK"RMbP(a-(o:[32i273.15]Ab%7))*$/95@A[tb]+(oAt%7).s.t

कमांड-लाइन तर्कों से इनपुट लेता है।

स्वरूपित और थोड़ा असंयमित:

o:[32 0 273.15]
F t ("CFK" RM b)
  P (a - o@(Ab % 7))
    * "95"@At / "95"@Ab
    + o@(At%7)
    . s . t

स्पष्टीकरण:

यूनिट 1 और यूनिट 2 के बीच सामान्य रूपांतरण सूत्र है temp2 = (temp1 - offset1) * mult2 / mult1 + offset2। ऑफ़सेट पूर्ण शून्य या किसी अन्य सुविधाजनक तापमान पर हो सकता है; चलो 0 ° C का उपयोग करते हैं।

यूनिट मल्टी ऑफसेट
C 5 0     
के ५ २ K३.१५
एफ ९ ३२    

हम इन मानों और सूचियों की सूची बनाएंगे, जिनमें हम उस इकाई के आधार पर काम कर रहे हैं, जिसके आधार पर हम काम कर रहे हैं। पिप के पास सहयोगी सरणियाँ / हैश / शब्दकोश नहीं हैं, इसलिए हमें वर्णों को पूर्णांक सूचकांकों में बदलने की आवश्यकता है। शायद ASCII मूल्यों के साथ सहायक पैटर्न होंगे।

यूनिट Asc A% 2 बहु A% 7 A% 7% 3 ऑफसेट
सी 67 1 5 4 1 0
के 75 1 5 5 2 273.15
एफ 70 0 9 0 0 32

यह आशाजनक लग रहा है। एक और उपयोगी तथ्य: पिप में इंडेक्स चारों ओर लपेटते हैं। इसलिए हमें वास्तव %3में तब तक ज़रूरत नहीं है जब तक कि हम लंबाई में से कुछ में अनुक्रमित कर रहे हैं 3. परिभाषित करना o:[32 0 273.15]और उपयोग करना (o (Ab)%7)होगा। ( Aएक वर्ण का ASCII मान प्राप्त करता है। (l i)वाक्यविन्यास का उपयोग पुनरावृत्तियों में अनुक्रमित करने के लिए किया जाता है, साथ ही साथ फ़ंक्शन कॉल के लिए भी।)

मल्टीप्लायरों के लिए, हमें केवल दो नंबरों 9 और 5 की आवश्यकता होती है, क्योंकि पिप में स्ट्रिंग्स के समान संख्याएं होती हैं, और इस प्रकार इंडेक्सेबल होते हैं, मल्टीप्लायर प्राप्त करना उतना ही सरल होता है जितना 95@Ab(इंडेक्सिंग के अन्य तरीके का उपयोग करके, @ऑपरेटर)।

पिप की सरणी-प्रोग्रामिंग विशेषताओं का उपयोग करते हुए, हम भोली पद्धति पर एक चरित्र बचा सकते हैं:

95@At/95@Ab
$/95@A[tb]    Make a list of t and b, apply 95@A(...) to each item, and fold on /

अंत में, नई इकाई के लिए ऑफसेट जोड़ें, अंत में एक स्थान और नई इकाई के प्रतीक को संक्षिप्त करें, और प्रिंट करें।

हम प्रत्येक के लिए ऐसा करते tहैं "CFK" RM b, इस प्रकार मूल को छोड़कर प्रत्येक इकाई में परिवर्तित होते हैं।

नमूना मंगलाचरण:

C:\Golf> pip.py tempConv.pip 86.987 F
30.548333333333332 C
303.6983333333333 K

(पिप पर अधिक जानकारी के लिए, भंडार देखें )


6

डीसी, 102 बाइट्स

मुझे पूरा यकीन है कि इसे और अधिक बढ़ाया जा सकता है, लेकिन यहाँ एक शुरुआत है:

4k[9*5/32+dn[ F
]n]sf[459.67+5*9/dn[ K
]n]sk[273.15-1/dn[ C
]n]sc[rlfxlkxq]sC[lkxlcxq]sF?dC=CF=Flcxlfx

dc बमुश्किल इस पर ग्रेड बनाता है। विशेष रूप से डीसी स्ट्रिंग हैंडलिंग वास्तव में काम तक नहीं है। लेकिन हमें केवल "सी", "एफ" और "के" के बीच अंतर करना होगा। सौभाग्य से डीसी पर्स "सी" और "एफ" हेक्स अंक 12 और 15. के रूप में और "के" के लिए यह सिर्फ स्टैक पर 0 छोड़ देता है।

आउटपुट:

$ dc -f tempconv.dc <<< "23 C"
73.4000 F
296.1500 K
$ dc -f tempconv.dc <<< "86.987 F"
303.6983 K
30.5483 C
$ dc -f tempconv.dc <<< "56.99999999 K"
-216.1500 C
-357.0700 F
$

5

सी, 160 बाइट्स

float v,f[]={1,1.8,1},d[]={0,32,273.15};u,t,j;main(){scanf("%f %c",&v,&u);for(u=u/5-13,v=(v-d[u])/f[u];j<2;)t=(++j+u)%3,printf("%f %c\n",f[t]*v+d[t],"CFK"[t]);}

यह स्टड से पढ़ता है। कोई आउटपुट परिशुद्धता निर्दिष्ट नहीं है, इसलिए यह printf()मुद्रण की तरह महसूस करने वाले प्रिंट करता है, जो कि ज्यादातर 4 अंकों से अधिक है।

Ungolfed संस्करण:

#include <stdio.h>

float v, f[] = {1.0f, 1.8f, 1.0f}, d[] = {0.0f, 32.0f, 273.15f};
char u;
int t, j;

int main() {
    scanf("%f %c", &v, &u);
    u = u / 5 - 13;
    v = (v - d[u]) / f[u];
    for( ; j < 2; ) {
        t = (++j + u) % 3;
        printf("%f %c\n", f[t] * v + d[t], "CFK"[t]);
    }

    return 0;
}

कुछ स्पष्टीकरण / टिप्पणी:

  • यह लुकअप टेबल पर आधारित है fऔर dइसमें सेल्सियस को किसी अन्य इकाई (विशेष मामलों से बचने के लिए सेल्सियस सहित) में परिवर्तित करने के लिए गुणन कारक और ऑफसेट शामिल हैं।
  • यदि uइनपुट इकाई है, तो 0 से 1 तक, और 2 तक के u / 5 - 13नक्शे ।CFK
  • इनपुट हमेशा सेल्सियस में परिवर्तित होता है।
  • लूप उन दो इकाइयों पर पुनरावृत्ति करता है जो इनपुट नहीं हैं, और सेल्सियस मान को उस इकाई में परिवर्तित करती हैं।
  • गोल्फ प्राप्त संस्करण इनपुट प्राप्त करने के लिए एक intचर के बजाय एक चर का उपयोग करता है । यह एक प्रकार का बेमेल है, जो केवल छोटे एंडियन मशीनों पर सही परिणाम देगा (जो इन दिनों लगभग सभी है)।charscanf()

152: को छोटा किया float v,f[]={1,1.8,1,0,32,273.15};u;main(j){scanf("%f %c",&v,&u);for(u=u/4&3,v-=f[u+3],v/=f[u];j++<3;printf("%f %c\n",f[u]*v+f[u+3],"CFK"[u]))u++,u%=3;}। कम चर के साथ थोड़ा सा, चारों ओर चल कोड। नई धारणा argc = 1 (j = 1) है। u = u/4 & 3
व्यक्त करते

4

अजगर 2, 168 बाइट्स

मैंने पायथन 3 समाधान को देखा जैसे ही मैं यह पोस्ट करने वाला था, लेकिन जो भी हो, मैं सिर्फ गोल्फ का अभ्यास कर रहा हूं।

s=raw_input().split();v=eval(s[0]);c,t=(v-32)/1.8,v-273.15
print[["%fC\n%fF"%(t,t*1.8+32),"%fK\n%fC"%(c+273.15,c)][s[1]=="F"],"%fK\n%fF"%(v+273.15,v*1.8+32)][s[1]=="C"]

Ungolfed:

def conv(s):
    s = s.split()
    v = float(s[0])
    if s[1]=="C":
        print "%f K\n%f F"%(v+273.15,v*1.8+32)
    elif s[1]=="F":
        v = (v-32)/1.8
        print "%f K\n%f C"%(v+274.15,v)
    else:
        c = v-273.15
        print "%f C\n%f F"%(c,c*1.8+32)


3

PHP, 161 153

function f($i){list($v,$u)=split(" ",$i);$u==C||print($v=$u==K?$v-273.15:($v-32)*5/9)."C\n";$u!=K&&print $v+273.15 ."K\n";$u!=F&&print $v*9/5+32 ."F\n";}

http://3v4l.org/CpvG7

शीर्ष दस में आने के लिए दो और पात्रों को बाहर करना अच्छा होगा ...


तकनीकी रूप से, नियमों के आधार पर, यूनिट के बीच रिक्त स्थान होने की आवश्यकता नहीं है और यह आउटपुट में तापमान है। मेरी गणना से जो 3 बाइट्स बचाता है।
काडे

अच्छा बिंदु :-) मुझे एक चर का पुन: उपयोग करने का एक तरीका भी मिला, जो एक और मुट्ठी भर बचाता है।
स्टीफन

135 बाइट लंबा समाधान: सैंडबॉक्स । मूल रूप से: को हटा दिया गया \nऔर वास्तविक न्यूलाइन्स में बदल दिया गया, एक पूर्ण प्रोग्राम (जीईटी से अधिक डेटा प्राप्त करना, जैसे:) में http://localhost/my_file.php?t=<temperature>बदल दिया $u!=Kगया $u^Kऔर इसके $u!=Fसाथ और उसके साथ बदल दिया गया $u^F। यदि $uहै K, तो रनिंग $u^Kएक खाली स्ट्रिंग लौटाएगा, जो एक मिथ्या मूल्य है। इसके अलावा, विभाजन के अंदर आपका स्थान परिवर्तित हो गया C^c(बस शांत दिखने के लिए)।
इस्माइल मिगुएल

3

अजगर 2, 167

s=raw_input();i=eval(s.split()[0]);d={"C":"%f K\n%f F"%(i+273,32+i*1.8),"K":"%f C\n%f F"%(i-273,i*1.8-459.4),"F":"%f C\n%f K"%(i/1.8-17.78,i/1.8+255.2)};print d[s[-1]]`

यह कोडगॉल्फ पर मेरा पहला प्रयास है।


PPCG में आपका स्वागत है। यह बहुत पहले गोल्फ के लिए एक अच्छा प्रयास है! मैंने फ़ॉर्मेटिंग और सामान को सही करके आपकी पोस्ट में थोड़ी चीनी डाली है।
ऑप्टिमाइज़र

2

पायथ, 126 बाइट्स

AYZczdJvY=Y*JK1.8
?%"%f F\n%f K",+32Y+J273.15qZ"C"?%"%f F\n%f C",-Y459.67-J273.15qZ"K"?%"%f C\n%f K",c-J32K*+J459.67c5 9qZ"F"

यह वास्तव में मुझे लंबा लगता है ... ओह ठीक है।


8
वहाँ एक पायथन समाधान इस से कम है: P
orlp

@orlp मुझे पता है, मुझे पता है ...
kirbyfan64sos

2

आर, 150 144 141 बाइट्स

a=scan(,"");U=c("C","K","F");i=which(U==a[2]);Z=273.15;x=scan(t=a[1]);cat(paste(c(C<-c(x,x-Z,5*(x-32)/9)[i],C+Z,32+C*9/5)[-i],U[-i]),sep="\n")

नई लाइनों के साथ प्रस्तुत:

a=scan(,"")
U=c("C","K","F")
i=which(U==a[2])
Z=273.15
x=as.double(a[1])
cat(paste(c(C<-c(x,x-Z,5*(x-32)/9)[i],C+Z,32+C*9/5)[-i],
            U[-i]),
    sep="\n")

उपयोग:

> a=scan(,"");U=c("C","K","F");i=which(U==a[2]);Z=273.15;x=scan(t=a[1]);cat(paste(c(C<-c(x,x-Z,5*(x-32)/9)[i],C+Z,32+C*9/5)[-i],U[-i]),sep="\n")
1: 23 C
3: 
Read 2 items
Read 1 item
296.15 K
73.4 F
> a=scan(,"");U=c("C","K","F");i=which(U==a[2]);Z=273.15;x=scan(t=a[1]);cat(paste(c(C<-c(x,x-Z,5*(x-32)/9)[i],C+Z,32+C*9/5)[-i],U[-i]),sep="\n")
1: 56.9999999 K
3: 
Read 2 items
Read 1 item
-216.1500001 C
-357.07000018 F
> a=scan(,"");U=c("C","K","F");i=which(U==a[2]);Z=273.15;x=scan(t=a[1]);cat(paste(c(C<-c(x,x-Z,5*(x-32)/9)[i],C+Z,32+C*9/5)[-i],U[-i]),sep="\n")
1: 86.987 F
3: 
Read 2 items
Read 1 item
30.5483333333333 C
303.698333333333 K

@AlexA को धन्यवाद। & @ मिकी। !


अच्छा काम। आप बाइट का उपयोग करने के as.double()बजाय बचा सकते हैं as.numeric()
एलेक्स ए

मुझे लगता है कि switchबयान c(x,x-273.15,5*(x-32)/9)[i]4 पात्रों के लिए किया जा सकता है
मिकी

धन्यवाद! वास्तव में, संस्करण 3.0 से पहले, मैं as.numeric () के बजाय as.real () के साथ इसे और अधिक छोटा कर सकता था, लेकिन अब फ़ंक्शन ख़राब है।
प्लेनैपस

एक और बचत के as.double(a[1])साथ बदल जाएगा scan(t=a[1])
मिकी

2

जावास्क्रिप्ट, 206 193 187 175 162 159 156

e=273.15,a=prompt(f=1.8).split(" "),b=+a[0],X=b-32,c=a[1];alert(c=="F"&&(X/f+"C\n"+(X/f+e+"K"))||(c=="C"?b*f+32+"‌​F\n"+(b+e+"K"):b*f-459.67+"F\n"+(b-e+"C")))

धन्यवाद ऑप्टिमाइज़र और इस्माईल मिगुएल को जाता है और मुझे इसे थोड़ा आगे बढ़ाने में मदद करने के लिए।


1
आप परिवर्तित करके कुछ बाइट्स बचा सकते हैं if elseकरने के लिए?:
अनुकूलक

1
आप अपने संयोजन से कुछ और बचा सकता है if ... return; return ?:एक करने के लिएreturn ?: ?:
डैनियल

1
आप 1 बाइट की जगह बचा सकता है a=prompt().split(" "),e=273.15,f=1.8;alert([...]के साथ a=prompt(e=273.15,f=1.8).split(" "),alert([...]। इसके अलावा, आप इकाई के बाद रिक्त स्थान निकाल सकते हैं। इसके अलावा, फ़ंक्शन को हटाने returnऔर alertअंदर ले जाने से बहुत कम हो गया! और सेटिंग के बजाय a, apply()विभाजन के साथ विधि का उपयोग करें । लेकिन यहाँ तुम जाओ: (function(b,c){alert(c=="F"&&((b-32)/f+"C\n"+((b-32)/f+e+"K"))||(c=="C"?b*f+32+"F\n"+(b+e+"K"):b*f-459.67+"F\n"+(b-e+"C")))}).apply(e=273.15,prompt(f=1.8).split(" "))! 166 बाइट्स ( -21 बाइट्स)। अगर आपको संदेह है तो मुझे चैट में पिंग करें।
इस्माईल मिगुएल

1
मैं वैसे भी 162 से नीचे उतर गया।
सुपरजेडी २२४

1
आप सही कह रहे हैं, मैंने कुछ रिक्त स्थान याद किए। उसे इंगित करने के लिए धन्यवाद।
सुपरजेडी २२४

2

गणितज्ञ, ६६

उम्मीद है कि इस बार सही होगा।

Print[1##]&@@@Reduce[F==1.8K-459.67&&C==K-273.15&&#==#2,,#2];&@@#&

उदाहरण

%[37 C]   (* % represents the function above *)

310.15 के

98.6 एफ


ओपी ने एक टिप्पणी में कहा कि "आपको केवल अन्य दो प्रारूपों का उत्पादन करना होगा।"
lirtosiast

@ थोमस वह और अन्य समस्याएं (उम्मीद) तय की। बहुत अच्छा नहीं है लेकिन मैं दिलचस्पी खो रहा हूं।
मि। छिपकली

1

एक्सेल, 239 बाइट्स

=IF(RIGHT(A1,1)="C",LEFT(A1,LEN(A1)-2)+273.15&"K
"&9*LEFT(A1,LEN(A1)-2)/5+32&"F",IF(RIGHT(A1,1)="K",LEFT(A1,LEN(A1)-2)-273.15&"C
"&(LEFT(A1,LEN(A1)-2)*9/5-459.67&"F",(LEFT(A1,LEN(A1)-2)+459.67)*5/9&"K
"&(LEFT(A1,LEN(A1)-2)-32)*5/9&"C"))

112 बाइट्स जिनका उपयोग वैल्यू और यूनिट को अलग करने के लिए किया जाता है। किसी को भी एक बेहतर समाधान पता है?

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