दो संख्याओं की तुलना


25

चुनौती

दो पूर्णांकों Aऔर Bइनपुट के रूप में, आपको एक प्रोग्राम लिखना होगा, जो यदि A>B, A==Bया A<B

पूर्णांक आपकी भाषा द्वारा समर्थित किसी भी उचित सीमा में होगा जिसमें कम से कम 256 मान शामिल हैं।

आपका कार्यक्रम या तो एक पूर्ण कार्यक्रम या फ़ंक्शन हो सकता है, STDIN या फ़ंक्शन तर्कों के माध्यम से इनपुट ले सकता है।

आउटपुट

अगर A>Bआउटपुट

A is greater than B

अगर A==Bआउटपुट

A is equal to B

अगर A<Bआउटपुट

A is less than B

जहां आप प्रतिस्थापित करते हैं Aऔर Bउनके पूर्णांक मानों के लिए।

जीतना

बाइट्स में सबसे छोटा कार्यक्रम जीत जाता है।

लीडरबोर्ड

var QUESTION_ID=55693,OVERRIDE_USER=8478;function answersUrl(e){return"http://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"http://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>


प्रोग्रामिंग और कोड गोल्फ पर आज: तीखी बयान!
ट्रेबुचेट

क्या फ़ंक्शंस केवल समाधान को प्रिंट करने के बजाय समाधान को वापस कर सकते हैं?
TheNumberOne

@NumberOne नहीं, उन्हें समाधान प्रिंट करना होगा
बीटा डिके

जवाबों:


11

CJam, 47

q~_~-g"is
equal greater less
to than"N/Sf/f=*S*

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

स्पष्टीकरण:

q~     read and evaluate the input (array of 2 numbers)
_      duplicate the array
~-     dump one array on the stack and subtract the numbers
g      get signum (-1 for <, 0 for ==, 1 for >)
"…"    push that string
N/     split into lines
Sf/    split each line by space
f=     get the corresponding word (for the signum) from each line
*      join the array of 2 numbers by the array of words
        it effectively inserts the words between the numbers
S*     join everything with spaces

ऐसा लगता है कि CJam आज पाइथ की तुलना में एक बाइट कम है :(
orlp

इनपुट के कई टुकड़ों को पढ़ने के लिए चूक के अनुसार , आप इनपुट को अपने कोड से पढ़ सकते हैं [A B]और समाप्त कर सकते हैं ]
डेनिस

@ डेनिस धन्यवाद, मैंने इसके बारे में सोचा था लेकिन निश्चित नहीं था।
एडिट्स

@orlp 2 बाइट्स अब, और यह मुस्कुराने का एक कारण है, न कि
भौंका

उचित है कि आपके कोड में वास्तव में एक स्माइली शामिल है ~_~...
डारेल हॉफमैन

19

पायथन 2, 95 94 76 बाइट्स

इनपुट को अल्पविराम से अलग किया जाना चाहिए।

A,B=input();print A,'is',['equal to','greater than','less than'][cmp(A,B)],B

मैं अंतर्मुखी हूं, क्या आप बता सकते हैं कि क्या cmp(A,B)है और क्या करता है? :)
बीटा डिके

2
@BetaDecay, docs.python.org/2/library/functions.html#cmp । "दो वस्तुओं की तुलना करें x और y और परिणाम के अनुसार एक पूर्णांक लौटाएं। रिटर्न मान ऋणात्मक है यदि x <y, शून्य यदि x == y और सख्ती से सकारात्मक हो तो x> y।" CPython 2.7.6 में, उन पूर्णांकों का मान क्रमशः -1, 0, 1 है। फ़ंक्शन की परिभाषा इसे निर्धारित नहीं करती है, इसलिए एक पेडेंट जोर दे सकता है कि अजगर के सटीक कार्यान्वयन और संस्करण को केवल "पायथन 2" के बजाय यहां दिया गया था, लेकिन मुझे उम्मीद है कि अधिकांश कार्यान्वयन यहां एक ही व्यवहार करेंगे।
ymbirtt

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

@ Sp3000 मैंने इसकी जाँच की, और यह पायथन 2.7.6 में पूरी तरह से ठीक काम करता है
ML

1
@ML मेरी टिप्पणी पिछले संशोधन की बात कर रही थी, लेकिन चूंकि यह अब पुरानी हो
चुकी है

10

भूलभुलैया , 180 152 149 बाइट्स

<
?01.23.511.501.23};,!:?
:
= ;3.114.101.97.116.101.114.32.116.104.97.110.32.{!@
-""
; ;8.101.115:..""""""""""""^
1
.113.117.97.108.32.116.111.32.{!@

संपादित करें: पुन: उपयोग से 3 बाइट्स बंद दाढ़ी बनाने के लिए प्रबंधित 10के बीच 101, 103और 108(के चरित्र कोड e, gऔर l)। नीचे दिए गए स्पष्टीकरण से यह प्रतिबिंबित नहीं होता है, लेकिन यह एक महत्वपूर्ण बदलाव नहीं है।

व्याख्या

स्ट्रिंग्स को प्रिंट करने के लिए बाइट को बचाने के तरीके में हम बहुत कुछ नहीं कर सकते हैं, यह सिर्फ लंबे रैखिक खंड होने जा रहा है। इसलिए गोल्फिंग में मुख्य चुनौती बड़ी मात्रा में अनावश्यक व्हाट्सएप से बचने की है। इसका मतलब है कि हम चाहते हैं कि रैखिक भागों को बाएं-सबसे कॉलम से "बाहर निकलना" हो। हम उस कोड का पुन: उपयोग करके कुछ और बचत कर सकते हैं जो प्रिंट करता है than B। तो आइए यहां नियंत्रण प्रवाह देखें:

कार्यक्रम ग्रिड रोटेशन कमांड पर शुरू होता है <। यह वर्तमान पंक्ति को उस पर आईपी के साथ चक्रवात से बाईं ओर बदलता है, इसलिए हमें यह मिलता है:

                                                     <
?.23.511.501.23};,!:?
:
= ;103.114.101.97.116.101.114.32.116.104.97.110.32.{!@
-""
1 ;108.101.115:..""""""""""""^
0
1.113.117.97.108.32.116.111.32.{!@

अब आईपी एक पृथक सेल पर है, इसलिए यह एक ही कमांड को बार-बार निष्पादित करता है, जबकि <आगे की यात्रा बाईं ओर होती है ...

                    <
?.23.511.501.23};,!:?
:
= ;103.114.101.97.116.101.114.32.116.104.97.110.32.{!@
-""
1 ;108.101.115:..""""""""""""^
0
1.113.117.97.108.32.116.111.32.{!@

इस बिंदु पर, आईपी को कहीं जाना है और पहले रैखिक खंड (दूसरी पंक्ति) को दाएं से बाएं करना है। यह क्या पढ़ता है A, कॉपी, प्रिंट करता है । संख्या, प्रिंट is(और रिक्त स्थान) के बीच परिसीमन वर्ण का उपभोग करें । फिर पढ़ें B, इसे कॉपी करें और Aइसमें से घटाएं -

इस बिंदु पर हमने पहले "सड़क में कांटा" मारा। यदि अंतर उत्पन्न होता है 0, तो आईपी सीधे नीचे की शाखा की ओर आगे बढ़ता रहता है। वह शाखा बस प्रिंट करती है equal toऔर फिर B

अन्यथा, आईपी दो नो-ऑप्स की ओर ले जाता है ""। फिर एक और कांटा है। यदि अंतर नकारात्मक था, तो आईपी लंबे ऊपरी शाखा की ओर एक और छोड़ देता है। वह शाखा बस प्रिंट करती है greater thanऔर फिर B

यदि अंतर सकारात्मक था, तो आईपी निचली शाखा पर एक अधिकार लेता है, जो प्रिंट करता है less। अब हम thanदूसरी शाखा से पुन: उपयोग करना चाहते हैं । लेकिन एक ही समय में हम दो शाखाओं को बाद में कनेक्ट नहीं करना चाहते हैं, क्योंकि हमें अनावश्यक स्थानों की एक पूरी गुच्छा की आवश्यकता होगी। इसके बजाय हम निचली शाखा को संरेखित करने के लिए कुछ नो-ऑप्स का उपयोग करते हैं, जहां thanऊपरी शाखा पर शुरू होता है और उसके बाद फिर से स्रोत में हेरफेर करना शुरू करते हैं ^:

                    <
?.23.511.501.23};,!:?
:                            .
= ;103.114.101.97.116.101.114 32.116.104.97.110.32.{!@
-""                          ^
1 ;108.101.115:..""""""""""""
0                            2
1.113.117.97.108.32.116.111.3 .{!@

फिर से, यह आईपी को अलग करता है, इसलिए ^फिर से निष्पादित किया जाता है और हम प्राप्त करते हैं

                    <
?.23.511.501.23};,!:?        .
:
= ;103.114.101.97.116.101.114^32.116.104.97.110.32.{!@
-""
1 ;108.101.115:..""""""""""""2
0
1.113.117.97.108.32.116.111.3 .{!@

अब IP दाईं ओर बढ़ना जारी रख सकती है thanऔर Bआवश्यकतानुसार प्रिंट कर सकती है।


8

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

(a,b)=>a+` is ${a<b?"less than":a>b?"greater than":"equal to"} `+b

एक अनाम फ़ंक्शन को परिभाषित करता है। f=इससे पहले जोड़कर परीक्षण करें, और इसे कॉल करेंalert(f(4, 5))


दुर्भाग्य से "से" दोहराए जाने से कोई बचत नहीं होनी चाहिए।


क्या आपको यकीन है? जावा उत्तर थान के आसपास लगता है;)
बीटा डेके

3
@ बेताडे अच्छी तरह से, नहीं। यहां तक ​​कि जावा का उत्तर भी वही लंबाई होगी जो दोहराई जा रही है thanpublic void c(int a,int b){System.out.print(a+" is "+(a==b?"equal to ":a>b?"greater than ":"smaller than ")+b);}
edc65

अगर यह वास्तव में पाठ का उत्पादन नहीं करता है, तो क्या यह एक वैध जवाब है? वैकल्पिक रूप से 7 alert()को स्कोर में जोड़ा जाना चाहिए।
जिज्ञासु cur

@curiousdannii ओह, मैं देख रहा हूँ, यदि आप alert()अपने कोड और बाइट की गिनती के रूप में गिनती नहीं करते हैं तो यह अमान्य है
बीटा डिके

@ BetaDecay ओह, मुझे यह एहसास नहीं था कि उत्तर के बदले मुद्रित होने की उम्मीद थी। अगर एक REPL वातावरण को मान लें तो ठीक है, इसे बिना किसी कीमत पर FireFox कंसोल में चलाया जा सकता है, अन्यथा मुझे लगता है कि यह 73 तक है।
jrich

8

जावा, 114 113 बाइट्स या 74 72 67 यदि हम लैम्ब्डा नोटेशन का उपयोग करते हैं

आधारित समाधान के लिए केविन क्रूज़सेन का धन्यवाद:

a->b->a+" is "+(a==b?"equal to ":(a>b?"greater":"less")+" than ")+b

पुराना पूर्व लंबोदर समाधान

public void c(int a,int b){System.out.print(a+" is "+(a==b?"equal to ":(a>b?"greater":"less")+" than ")+b);}

टिप्पणी में उपयोगकर्ता hjk अभिप्राय के रूप में, अगर हमने लैम्ब्डा का उपयोग किया है तो हम 74 बाइट्स तक काफी कम कर सकते हैं।

(a,b)->a+" is "+(a==b?"equal to ":(a>b?"greater":"less")+" than ")+b;

1
संपीड़ित करने का चतुर तरीका than:)
TheNumberOne

4
आप चाहें publicतो निकाल सकते हैं। मैं इसे एक मेमने में बनाने का सुझाव दूंगा। आप इससे पहले एक स्थान निकाल सकते हैं {
TheNumberOne

1
और जब आप इस पर हों, तो #Java के बाद अल्पविराम जोड़ें ताकि आप लीडरबोर्ड पर हो सकें। ;)
टीएनटी

2
आधिकारिक प्रश्न युक्ति "कम" कहना है, "छोटा" नहीं। आप ऐसा कर सकते हैं और तीन बाइट्स खो सकते हैं! मुझे जावा पता नहीं है, लेकिन क्या लैम्ब्डा कोड टेक्स्ट को प्रिंट करेगा या इसे वापस लौटाएगा? यदि वह इसे प्रिंट नहीं करता है, तो यह संभवतः एक वैध जवाब नहीं है।
जिज्ञासु

2
@hjk Shorter lambda करी का उपयोग करते हुए: a->b->a+" is "+(a==b?"equal to ":(a>b?"greater":"smaller" )+" than ")+bहां, मुझे पता है कि लगभग दो साल हो गए हैं। ;) और आप वास्तव में चुनौती विवरण lessके smallerआधार पर उपयोग कर सकते हैं , जैसा कि मेरे ऊपर दो टिप्पणियों द्वारा उल्लेख किया गया है। यह देखने की कोशिश करें कि करी कैसे किया जाता है।
केविन क्रूज़सेन

7

आर, 80 बाइट्स

function(A,B)cat(A,"is",c("less than","equal to","greater than")[2+sign(A-B)],B)

1
उपरोक्त युक्ति का पालन करने के लिए "छोटे से" से "कम" में बदलकर आप 3 बाइट्स बचा सकते हैं। एक ternary ऑपरेटर का उपयोग नहीं करने के लिए +1।
हस्ताक्षर

आह धन्यवाद, मैंने उसे नहीं पकड़ा! तय!
फ्लोडेल

@ चिह्न आर में एक टर्नरी ऑपरेटर नहीं है। : पी
एलेक्स ए।

@AlexA। मुझे पता है। मेरा मतलब था कि एक सूची और साइन फ़ंक्शन का उपयोग करना अब तक के अन्य उत्तरों से बहुत अलग था (जिनमें से अधिकांश का उपयोग टर्नरी ऑपरेटर या समान) करते थे।
bmarks

सही। तुलना के लिए, अगर / अन्यथा का उपयोग करने का मेरा पहला प्रयास 83: था function(A,B)cat(A,"is",if(A==B)"equal to"else c(if(A>B)"greater"else"less","than"),B)
फ्लोडेल

7

पायथ, 52 49 बाइट्स

jdm@cd)._-FQcj"
is
equal greater less
to than
"Qb

7

जूलिया, 69 66 बाइट्स

f(A,B)="$A is $(A>B?"greater than":A<B?"less than":"equal to") $B"

इस एम्बेड करने के लिए स्ट्रिंग प्रक्षेप का उपयोग करता है A, Bएक भी स्ट्रिंग के अंदर, और त्रिगुट।

ग्लेन ओ को धन्यवाद के लिए 3 बाइट्स बचाए।


6

पर्ल, 64 63 बाइट्स

#!/usr/bin/perl -p
s/ /" is ".("equal to ",greaterx,lessx)[$`<=>$']/e;s/x/ than /

के लिए 62 बाइट्स + 1 बाइट -p । STDIN से इनपुट लेता है, दो नंबरों के साथ एक ही स्थान से अलग किया गया है:

$ echo 1 2 | ./cmp
1 is less than 2
$ echo 42 -17 | ./cmp
42 is greater than -17
$ echo 123456789 123456789 | ./cmp
123456789 is equal to 123456789

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

<=>ऑपरेटर रिटर्न -1, 0, या 1 चाहे प्रथम संकार्य कम है पर निर्भर करता है के बराबर, या दूसरे से अधिक है, की तुलना में। आसानी से, पर्ल सरणियों और स्लाइस के साथ नकारात्मक सदस्यता की अनुमति देता है, जहां अंतिम तत्व -1 स्थिति पर है, दूसरा-से-अंतिम तत्व -2 स्थिति पर है, और इसी तरह।

कोड में

("equal to ",greaterx,lessx)[$`<=>$']

हम <=>संबंधित स्ट्रिंग, जहां पाने के लिए एक सूची स्लाइस में सबस्क्रिप्ट के रूप में वापसी मूल्य का उपयोग करते हैं$` पहला नंबर है और $'दूसरा है।

दोहराने से बचने के लिए than, xएक प्लेसहोल्डर के रूप में उपयोग किया जाता है और अंत में एक दूसरे प्रतिस्थापन में बदल दिया जाता है।


वैकल्पिक समाधान, 63 बाइट्स

#!/usr/bin/perl -p
@a=(equal,greater,than,to,less);s/ / is @a[$i=$`<=>$',!$i+2] /

के लिए 62 बाइट्स + 1 बाइट -p । पहले समाधान की तरह ही एसटीडीआईएन से अंतरिक्ष-पृथक इनपुट लेता है।

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

यह समाधान एक स्लाइस का भी उपयोग करता है, लेकिन इस तथ्य का लाभ उठाता है कि सूची स्लाइस के विपरीत, सरणी स्लाइस को स्ट्रिंग्स (और प्रतिस्थापन के आरएचएस) में प्रक्षेपित किया जा सकता है। यह हमें छोड़ देता है/e प्रतिस्थापन ऑपरेटर में संशोधक और उद्धरण ।

असली चाल स्लाइस सबस्क्रिप्ट में है:

@a[$i=$`<=>$',!$i+2]

के विभिन्न मूल्यों के लिए <=>, यह देता है:

$i  !$i+2  $a[$i]  $a[!$i+2]
----------------------------
-1    2     less      than
 0    3     equal     to
 1    2     greater   than

जब एक सरणी या सरणी टुकड़ा एक स्ट्रिंग में प्रक्षेपित होता है, तो तत्व स्वचालित रूप से $"(डिफ़ॉल्ट रूप से, एकल स्थान) द्वारा जुड़ जाते हैं ।


5

माउस , 79 बाइट्स

?A:?B:A.!" is "A.B.<["less than"]A.B.>["greater than"]A.B.=["equal to"]" "B.!$

जब तार का सामना किया जाता है तो उन्हें तुरंत स्टैक पर डालने के बजाय STDOUT पर लिखा जाता है। स्टैक में केवल पूर्णांक हो सकते हैं।

Ungolfed:

? A:                            ~ Read an integer A from STDIN
? B:                            ~ Read an integer B from STDIN
A. !                            ~ Write A to STDOUT
" is "
A. B. < [ "less than" ]         ~ If A < B
A. B. > [ "greater than" ]      ~ If A > B
A. B. = [ "equal to" ]          ~ If A == B
" "
B. !                            ~ Write B to STDOUT
$                               ~ End of program

4

गोल्फस्क्रिप्ट, 61 बाइट्स

\.@.@="equal to "{.@.@>"greater""less"if" than "+}if" is "\+@

स्टैक पर 2 पूर्णांकों की अपेक्षा करता है। इसे ऑनलाइन आज़माएं

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

  • \.@.@- ए और बी पहले से ही स्टैक पर हैं, और यह कोड टुकड़ा स्टैक जैसा दिखता है ABBA:। \स्टैक पर दो शीर्ष आइटम स्वैप करता है, शीर्ष आइटम को .डुप्लिकेट करता है, और @3 शीर्ष आइटम ( 1 2 3-> 2 3 1) को घुमाता है ।

  • फिर, तीन आइटम स्टैक पर धकेल दिए जाते हैं: =साइन "equal to ", और ब्लॉक {}ifबयान करता है: यदि पहला तर्क सही का आकलन, यह पहली कोड ब्लॉक (दूसरा तर्क) कार्यान्वित करता है, अन्यथा, दूसरा कोड ब्लॉक (तीसरा तर्क)। तो अगर ए और बी बराबर हैं, तो यह स्टैक पर "बराबर" को धक्का देगा। यदि वे समान नहीं हैं, तो यह ब्लॉक के बीच कोड निष्पादित करेगा। ध्यान दें कि =स्टैक से दो शीर्ष आइटम पॉप करते हैं, इसलिए अब स्टैक जैसा दिखता है AB

  • ब्लॉक के अंदर, आप पहली बार देखते हैं .@.@। इन आदेशों से पहले, स्टैक जैसा दिखता है AB, और बाद में, स्टैक जैसा दिखता है BAAB। आदेश समान हैं, जैसा कि ऊपर उल्लेख किया गया है।

  • फिर, एक और ifबयान है। इस बार, यह जाँचता है कि क्या ए> बी, और यदि सही है, तो यह स्टैक पर "अधिक" धक्का देता है। एल्स, यह स्टैक पर "कम" धक्का देता है। इन दोनों में से एक को धकेलने के बाद, यह स्टैक पर "से" को धक्का देगा और इसे पिछले धकेलने वाले स्ट्रिंग के साथ समतल करेगा। >स्टैक के दो शीर्ष आइटम को भी पॉप करता है, इसलिए अब स्टैक जैसा दिखता है BA"string"

  • अगले तीन आदेशों हैं: " is "\+" is "स्टैक पर उस स्ट्रिंग को धकेलता है (स्टैक जैसा दिखता है BA"string"" is "), \दो शीर्ष आइटम स्वैप करता है (स्टैक जैसा दिखता है BA" is ""string"), और +दो शीर्ष आइटम (स्टैक जैसा दिखता है BA" is string") को समेटता है ।

  • अंतिम कमांड, @तीन स्टैक आइटम को घुमाता है, इसलिए स्टैक अब जैसा दिखता है A" is string"B:। गोल्फस्क्रिप्ट स्वचालित रूप से कार्यक्रम को समाप्त करने के बाद स्टैड के बारे में स्टैक मूल्यों को प्रिंट करता है, इसलिए तब आपको वांछित आउटपुट मिलता है।


4

MATLAB, 105 बाइट्स

x=input('');y=input('');t={'less than','greater than','equal to'};
sprintf('%i is %s %i',x,t{(x>=y)+(x==y)+1},y)

पठनीयता को आसान बनाने के लिए, स्प्रिंट से पहले एक लाइन ब्रेक जोड़ा गया। यह इस लाइन ब्रेक के साथ और इसके बिना काम करता है, इसलिए यह बाइट की गिनती में शामिल नहीं है। दो इनपुट नंबरों के बीच में प्रवेश करना चाहिए।


2
बहुत चतुर उपयोग sprintf!
लुइस मेंडू


4

फोरट्रान, 129

फोरट्रान अंकगणित अगर इस चुनौती के लिए एकदम सही है

टेस्ट: आइडोन

read(*,*)i,j
if(i-j)1,2,3
1 print*,i," is less than",j
stop
2 print*,j," is equal to",j
stop
3 print*,i," is greater than",j
end

3

बैश, 94 86 बाइट्स (डिजिटल ट्रॉमा के लिए आठ बाइट्स बचाए गए)

p=equal;q=than;(($1>$2))&&p=greater&&[ ]||(($1<$2))&&p=less||q=to;echo $1 is $p $q $2

टेस्ट (लिनक्स पर):

echo 'p=equal;q=than;(($1>$2))&&p=greater&&[ ]||(($1<$2))&&p=less||q=to;echo $1 is $p $q $2' > cmp.sh
chmod +x cmp.sh
./cmp.sh 10 12
10 is less than 12

के [ ]बाद p=greaterका उपयोग ||ऑपरेटर =को अभिव्यक्ति में पहले मूल्यांकन करने से रोकने के लिए है...&&p=greater||(($1<$2))... (ऑपरेटर पूर्वता!) ।

विकल्प के आसपास कोष्ठक का उपयोग किया जाएगा (($1>$2))&&p=greaterऔर (($1<$2))&&p=less, लेकिन कोष्ठक चरों के लिए आंतरिक गुंजाइश बनाते हैं, इसलिए pअनछुए को छोड़ दिया जाएगा।


1
p=equal;q=than;(($1>$2))&&p=greater&&[ ]||(($1<$2))&&p=less||q=to;echo $1 is $p $q $2
डिजिटल ट्रॉमा

3

IA-32 मशीन कोड + लिनक्स, 107 बाइट्स

कोड के Hexdump:

60 89 e5 89 d0 e8 51 00 00 00 4c c6 04 24 20 38
d1 74 20 68 74 68 61 6e 4c c6 04 24 20 72 0d 68
61 74 65 72 68 20 67 72 65 44 eb 11 68 6c 65 73
73 eb 0a 68 6c 20 74 6f 68 65 71 75 61 68 20 69
73 20 88 c8 e8 12 00 00 00 89 ea 29 e2 89 e1 31
db 43 8d 43 03 cd 80 89 ec 61 c3 5b d4 0a 4c 04
30 88 04 24 c1 e8 08 75 f3 ff e3

हार्डवेयर सीमाओं के कारण, कोड 0 ... 255 की सीमा में संख्याओं के साथ काम करता है।

स्रोत कोड (जीसीसी के साथ इकट्ठा किया जा सकता है):

    .globl print_it
    .text
    .align 16
print_it:
    pushal;
    mov %esp, %ebp; // save esp (stack pointer)
    mov %edx, %eax; // put second number in al
    call prepend;   // convert al to string

    dec %esp;       // write ...
    movb $' ', (%esp); // ... a space
    cmp %dl, %cl;   // compare the numbers
    je equal;       // if equal, goto there

    push $0x6e616874; // write "than"
    dec %esp;       // write ...
    movb $' ', (%esp); // ... a space
    jb less;        // if below, goto there

greater:
    push $0x72657461; // write "ater"
    push $0x65726720; // write " gre"
    inc %esp;         // remove a space
    jmp finish;     // bypass the code for "less than"

less:
    push $0x7373656c; // write "less"
    jmp finish;     // bypass the code for "equal"

equal:
    push $0x6f74206c; // write "l to"
    push $0x61757165; // write "equa"

finish:
    push $0x20736920; // write " is "

    mov %cl, %al;   // put first number in al
    call prepend;   // convert al to string

    mov %ebp, %edx; // calculate the length ...
    sub %esp, %edx; // ... of the output message
    mov %esp, %ecx; // address of the message
    xor %ebx, %ebx; // set ebx to ...
    inc %ebx;       // ... 1 (i.e. stdout)
    lea 3(%ebx), %eax; // set eax=4 (syscall "write")
    int $0x80;      // do the system call
    mov %ebp, %esp; // restore the stack pointer
    popal;          // restore other registers
    ret;            // return

prepend:            // writes al converted to string
    pop %ebx;       // remove return address from the stack
appendloop:
    aam;            // calculate a digit in al, rest in ah
    dec %esp;
    add $'0', %al;  // convert the digit to ASCII
    mov %al, (%esp);// write the digit
    shr $8, %eax;   // replace al by ah; check if zero
    jnz appendloop; // nonzero? repeat
    jmp *%ebx;      // return

यह स्टैक का कुछ गंभीर दुरुपयोग है! कोड स्टैक पर आउटपुट संदेश बनाता है, अंत से शुरुआत तक। 4 बाइट्स लिखने के लिए, यह एक pushनिर्देश का उपयोग करता है । 1 बाइट लिखने के लिए, यह दो निर्देशों का उपयोग करता है:

dec %esp
mov %al, (%esp);

भाग्य से, लिखने के लिए अधिकांश टुकड़े 4 बाइट हैं। उनमें से एक ("ग्र्रे" "अधिक" में) 3 बाइट्स है; यह 4 बाइट्स को आगे बढ़ाता है और एक बाद में निकालता है:

inc %esp

दशमलव के रूप में संख्या लिखने वाली दिनचर्या बार-बार aamविभाजित करने के निर्देश का उपयोग करती axहै 10। यह लाभप्रद है कि यह दाएं से बाएं तक के अंकों की गणना करता है!


चूंकि लिखने के लिए दो नंबर होते हैं, कोड एक सबरूटीन का उपयोग करता है, जिसे दो बार कहा जाता है। हालाँकि, क्योंकि सबरूटीन स्टैक पर परिणाम लिखता है, यह रिटर्न एड्रेस को होल्ड करने के लिए एक रजिस्टर का उपयोग करता है।


C कोड जो मशीन कोड को ऊपर कहता है:

include <stdio.h>

void print_it(int, int) __attribute__((fastcall));

int main()
{
    print_it(90, 102);
    puts("");
    print_it(78, 0);
    puts("");
    print_it(222, 222);
    puts("");
    return 0;
}

आउटपुट:

90 is less than 102
78 is greater than 0
222 is equal to 222

3

शॉर्टकट , 98 बाइट्स

←Α
←Β
↑Γαis
↔α>β→γgreater thanβ
↔α<β→γless thanβ
↔α|β→γequal toβ

यह उत्तर गैर-प्रतिस्पर्धात्मक है, क्योंकि इस चुनौती के बाद शॉर्टस्क्रिप्ट प्रकाशित किया गया था।


3

फूरियर , 147 74 बाइट्स

गैर-प्रतिस्पर्धात्मक क्योंकि स्ट्रिंग मुद्रण इस चुनौती से नया है

I~AoI~B` is `<A{1}{`greater than`}A<B{1}{`less than`}A{B}{`equal to`}` `Bo

यह चार वीडियो पर कोशिश करो!

डननो ने पहले मुझे छपाई की अनुमति क्यों नहीं दी ... यह कोड को पठनीय बनाता है और गोल्फिंग के लिए बहुत अच्छा है


आपको सामान्य अक्षरों को 101और 116चर को, सही बताकर सहेजना चाहिए ? मुझे यकीन नहीं है कि कैसे / अगर वैरिएबल स्कोप को संभाला जाता है।
Geobits

@Geobits फूरियर में कोई स्थानीय स्कोप नहीं हैं, इसलिए हाँ, मैं उस पर काम करूंगा
बीटा डिके

@Geobits ने इसे थोड़ा और अधिक उपयोग करके चर
बीटा डिके

2

सी, 155 136 127 83 बाइट्स

f(a,b){printf("%d is %s %d\n",a,a>b?"greater than":a<b?"less than":"equal to",b);}

5
आप इसे बहुत छोटा बना सकते हैं - argc और argv का नाम बदल सकते हैं, a और b दोनों को एक लाइन में परिभाषित कर सकते हैं, argc चेक को छोड़ सकते हैं, और बहुत कुछ।
बदसूरत

1
ध्यान दें कि आवश्यकता या तो एक पूर्ण कार्यक्रम या फ़ंक्शन है। एक समारोह बहुत कम होगा।
बदसूरत

@ यूगोरेन मुझे यकीन नहीं था कि यह एक फ़ंक्शन हो सकता है, इसलिए मैंने एक पूरा कार्यक्रम लिखने का फैसला किया। मैं इसे रिफ्लेक्टर करने वाला हूं। फिर से धन्यवाद!
मौरन

2

हास्केल, 87 बाइट्स

ओटोमो के दृष्टिकोण से एक बाइट कम है।

a?b=show a++" is "++["less than ","equal to ","greater than "]!!(1+signum(a-b))++show b

अच्छा समाधान है। :)
ओटोमो

2

लुआ, 118 बाइट्स

मैं यहाँ पर्याप्त Lua उत्तर नहीं देख रहा हूँ ...

function f(a,b)print(a>b and a.." is greater than "..b or a==b and a.." is equal to "..b or a.." is less than "..b)end

Ungolfed:

function f(a,b)
    print(a>b and a.." is greater than "..b or a==b and a.." is equal to "..b or a.." is less than "..b)
end

PPCG में आपका स्वागत है!
डेनिस

2

पायथन 2, 78 बाइट्स

मुझे प्यार है कि cmp()वास्तव में कैसे उपयोगी है, लेकिन इसे पायथन 3 में हटा दिया गया था

एक अनाम फ़ंक्शन का उपयोग करना:

lambda a,b:`a`+' is '+['equal to ','greater than ','less than '][cmp(a,b)]+`b`

फ़ंक्शन का उपयोग नहीं करना (79 बाइट्स):

a,b=input();print a,'is %s'%['equal to','greater than','less than'][cmp(a,b)],b

क्या यह @ TheNumberOne के जवाब का धोखा नहीं है ?
बीटा डेके

@ बटेडेके नोप। वे भिन्न हैं। उस उत्तर पर मेरी टिप्पणी पढ़ें।
mbomb007

2

जावास्क्रिप्ट, 151 104 100 95 92 बाइट्स

a+=prompt()
b+=prompt()
alert(a+" is "+(a>b?"greater than ":a<b?"lesser than ":"equal to ")+b)

मैं edc65 की मदद से छोटा करने में कामयाब रहा


मैं एक जावास्क्रिप्ट नौसिखिया हूँ ...
Kritii Lithos

क्या मैं पूछ सकता हूं कि आप अपना स्कोर खोजने के लिए क्या उपयोग कर रहे हैं?
बीटा डेके

यह टूटा नहीं है (सिंटैक्स त्रुटि)। पोस्ट करने से पहले बस कोशिश करें
edc65

क्या अब कोई त्रुटि है?
कृति लीथोस

1
a = अभिव्यक्ति। वह एक आरंभ है। var aचर घोषित कर रहा है a। आप राशि में इसका इस्तेमाल करने की वास्तविक अच्छे कारणों की एक बहुत कुछ के लिए कोड। लेकिन यह जावास्क्रिप्ट में वैकल्पिक है और इससे बचने के लिए var आप 4
ट्रिक्स

2

सी # 6, 113 103 100 95 बाइट्स

void C(int a,int b){System.Console.Write($"{a} is {a-b:greater than;less than;equal to} {b}");}

13 बाइट्स को बचाने के लिए edc65 और C # 6 के प्रक्षेपित स्ट्रिंग्स का उपयोग करके 5 बाइट्स बचाने के लिए cell001uk का धन्यवाद !


10 बाइट्स बचाएंvoid C(int a,int b){System.Console.Write("A is {0} B",a==b?"equal to":a>b?"greater than":"less than");}
edc65

@ edc65 अच्छा लगा, धन्यवाद!
ProgramFOX

मुझे C # प्रारूपण पसंद है:Write("{0} is {1:greater than;less than;equal to} {2}",a,a-b,b)
edc65

@ edc65 वाह, यह बहुत बढ़िया है! धन्यवाद! मुझे यह याद दिलाने के लिए भी धन्यवाद कि ए और बी को उनके मूल्यों द्वारा प्रतिस्थापित किया जाना है, मैंने पूरी तरह से अनदेखी की कि> _>
ProgramFOX



1

पायथ, 57 55 53 बाइट्स

AQjd[G"is"@c"equal to
greater than
less than"b._-GHH)

यह मूल रूप से करता है:

["less than", "greater than", "equal to"][sign_of(A-B)]

सहेजी गयी 2 @ एलेक्सा के लिए धन्यवाद बाइट्स। के उपयोग करने का सुझाव Aके बजाय JऔरK और एक सरल घटाव के साथ पूरे अलावा गंदगी की जगह एक और 2 बाइट्स।

लाइव डेमो और परीक्षण के मामले।

55-बाइट संस्करण

AQjd[G"is"@c"less than
greater than
equal to"b+gGHqGHH)

लाइव डेमो और परीक्षण के मामले।

57-बाइट संस्करण:

jd[JhQ"is"@c"less than
greater than
equal to"b+gJKeQqJKK)

लाइव डेमो और परीक्षण के मामले।


एक बाइट छोटी:AQs[Gd"is"d?<GH"less than"?>GH"greater than""equal to"dH
एलेक्स ए।

@AlexA। मैंने सिर्फ और के Aबजाय सुझाव का उपयोग किया , जिसने 2 बाइट्स बचाए। JK
kirbyfan64sos


1

एसडब्ल्यूआई-प्रोलॉग, 94 बाइट्स

a(A,B):-(((A>B,C=greater;A<B,C=less),D=than);C=equal,D=to),writef("%t is %t %t %t",[A,C,D,B]).

1

स्विफ्ट, 105 92 बाइट

func c(a:Int, b:Int){println("A is",(a==b ?"equal to":(a<b ?"less":"greater")," than"),"B")}

स्विफ्ट 2.0 के साथ भी कम ( 103 90 बाइट)

func c(a:Int, b:Int){print("A is",(a==b ?"equal to":(a<b ?"less":"greater")," than"),"B")}

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