দুটি সংখ্যার তুলনা করছি


25

চ্যালেঞ্জ

দুটি পূর্ণসংখ্যা Aএবং Bইনপুট হিসাবে দেওয়া হয়েছে , আপনাকে অবশ্যই একটি প্রোগ্রাম লিখতে হবে যা যদি হয় A>B, A==Bবা হয় A<B

পূর্ণসংখ্যাগুলি আপনার ভাষার দ্বারা সমর্থিত কোনও যুক্তিসঙ্গত ব্যাপ্তিতে থাকবে যার মধ্যে অন্তত 256 টি মান রয়েছে।

আপনার প্রোগ্রামটি একটি সম্পূর্ণ প্রোগ্রাম বা কোনও ফাংশন হতে পারে, এসটিডিআইএন বা ফাংশন আর্গুমেন্টের মাধ্যমে ইনপুট নেয়।

আউটপুট

যদি 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>


আজ প্রোগ্রামিং প্রহেলিকা এবং কোড গল্ফ: ত্রৈমাসিক বিবৃতি!
ট্রেবুচেট

সমাধানগুলি মুদ্রণের পরিবর্তে ফাংশনগুলি কী কেবল সমাধানটি ফিরিয়ে দিতে পারে?
দ্য নাম্বারওন

@ দি নাম্বারওন না, তাদের অবশ্যই সমাধানটি মুদ্রণ করতে হবে
বিটা

উত্তর:


11

সিজেম, 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

দেখে মনে হচ্ছে সিজাম আজ
পাইথের

বেশ কয়েকটি টুকরো ইনপুট পড়ার জন্য ডিফল্ট অনুসারে , আপনি ইনপুট হিসাবে পড়তে পারেন [A B]এবং ]আপনার কোড থেকে মুছে ফেলতে পারেন ।
ডেনিস

@ ডেনিস ধন্যবাদ, আমি এটি সম্পর্কে ভেবেছিলাম কিন্তু নিশ্চিত ছিল না।
aditsu

@orlp এখন 2 বাইট, এবং এটি হাসার কারণ, ভ্রূণ নয় :)
aditsu

উপযুক্ত যে আপনার কোড আসলে আকারে একটি হাস্যজ্জল রয়েছে ~_~...
Darrel হফম্যান

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
@ বেটাডেকে, ডকস.পিথন.আর. / ২ / লাইব্রেরি / ফাংশনস html# cmp । "X এবং y দুটি বস্তুর তুলনা করুন এবং ফলাফল অনুসারে একটি পূর্ণসংখ্যা ফেরত দিন। X <y, শূন্য যদি x == y এবং x> y হলে কঠোরভাবে ইতিবাচক হয়" " সিপাইথন ২.7. In এ, সেই পূর্ণসংখ্যার মান যথাক্রমে -১, ০, ১ are ফাংশনটির সংজ্ঞা এটি নির্ধারণ করে না, তাই কোনও অভিভাবক জোর দিয়েছিলেন যে পাইথনের সঠিক বাস্তবায়ন এবং সংস্করণটি কেবল "পাইথন 2" না দিয়ে এখানে দেওয়া হয়েছিল, তবে আমি আশা করি বেশিরভাগ বাস্তবায়ন এখানে একই আচরণ করবে।
ymbirtt

আমি শুধু আপনাকে জানাতে চাই যে আমি তোমার উত্তরের কপি করা হয়নি নিয়ে আসা করতে চান খনি । আমি এখন দেখলাম যে তারা কতটা কাছাকাছি ছিল। যখন আমি আমার লিখেছিলাম স্নিপেটটি চালাতে সমস্যা হচ্ছিল এবং আমি শপথ করে বলতে পারি যে ইতিমধ্যে পাইথন উত্তর ছিল না (অবশ্যই ২ য় পৃষ্ঠা মিস করেছি)। আমি এটি সম্পূর্ণ স্বাধীনভাবে লিখেছি, আশ্চর্যের বিষয় যথেষ্ট।
mbomb007

@ এসপি 3000 আমি এটি পরীক্ষা করে দেখেছি এবং এটি পাইথন ২.7..6 এ পুরোপুরি সূক্ষ্মভাবে কাজ করে
এমএল

1
@ এমএমএল আমার মন্তব্যটি অতীতের সংশোধনটির কথা উল্লেখ করছে তবে এটি এখন পুরানো হওয়ার পরে আমি মন্তব্যটি মুছে
ফেলেছি

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)। নীচের ব্যাখ্যাটি এটি প্রতিফলিত করে না, তবে এটি কোনও উল্লেখযোগ্য পরিবর্তন নয়।

ব্যাখ্যা

স্ট্রিংগুলি মুদ্রণের জন্য বাইট সংরক্ষণের ক্ষেত্রে আমরা অনেক কিছু করতে পারি না, এটি কেবল দীর্ঘ লিনিয়ার বিভাগ হতে চলেছে। তাই গল্ফিংয়ের মূল চ্যালেঞ্জ হল প্রচুর পরিমাণে অপ্রয়োজনীয় সাদা স্থান এড়ানো p এর অর্থ আমরা বাম-সর্বাধিক কলাম থেকে লিনিয়ার অংশগুলি "বিকিরণ" করতে চাই। মুদ্রিত কোডটি পুনরায় ব্যবহার করে আমরা আরও কিছু সঞ্চয় অর্জন করতে পারি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 .{!@

এখন আইপি ডানদিকে সরানো এবং মুদ্রণ thanএবং Bপ্রয়োজনীয় হিসাবে চালিয়ে যেতে পারে ।


8

জাভাস্ক্রিপ্ট (ES6), 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()স্কোর যুক্ত করা উচিত।
কৌতূহলীনি

@ কুরিয়াসননইহ ওহ আমি দেখতে পাচ্ছি, হ্যাঁ যদি আপনি alert()আপনার কোড এবং বাইট গণনার অংশ হিসাবে গণনা না করেন তবে এটি অবৈধ
বিটা ডেকে

@ বেটাডেহে ওহ, আমি বুঝতে পারি না যে উত্তরটি কেবল ফিরে আসার পরিবর্তে মুদ্রণ করা হবে বলে আশা করা হচ্ছে। যদি একটি REPL পরিবেশ অভিমানী ঠিক আছে, এই কোন খরচ ফায়ারফক্স কনসোলে চালানো যেতে পারে, অন্যথায় আমি অনুমান এটা 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);}

ইউজার এইচজেকে মন্তব্যে অর্থ হিসাবে, যদি আমরা ল্যাম্বডা ব্যবহার করি তবে আমরা down৪ বাইটে উল্লেখযোগ্যভাবে করতে পারি।

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

1
সংকোচনের চতুর উপায় than:)
TheNumberOne

4
আপনি চাইলে অপসারণ publicকরতে পারেন। আমি এটি একটি ল্যাম্বডায় তৈরি করার পরামর্শ দেব। আপনি এর আগে একটি স্থান সরাতে পারেন {
TheNumberOne

1
এবং আপনি যখন এদিকে যাচ্ছেন তখন # জাভার পরে কমা যুক্ত করুন যাতে আপনি লিডারবোর্ডে থাকতে পারেন। ;)
টিএনটি

2
অফিসিয়াল প্রশ্ন স্পেসটি "ছোট" নয়, "কম" বলা উচিত। আপনি পাশাপাশি এটি করতে পারেন এবং তিনটি বাইট হারাতে পারেন! আমি জাভা জানি না, তবে ল্যাম্বড্ড কোডটি কি প্রিন্টটি প্রিন্ট করবে বা কেবল তা ফিরিয়ে দেবে? যদি এটি মুদ্রণ না করে তবে এটি সম্ভবত কোনও বৈধ উত্তর নয়।
কৌতূহলীনি

2
@ hjk শর্ট ল্যাম্বদা তরকারী ব্যবহার করে: a->b->a+" is "+(a==b?"equal to ":(a>b?"greater":"smaller" )+" than ")+bহ্যাঁ, আমি জানি এটি প্রায় দুই বছর হয়ে গেছে been ;) এবং আপনি আমার উপরে দুটি মন্তব্য দ্বারা উল্লিখিত হিসাবে চ্যালেঞ্জ বিবরণের উপর ভিত্তি করে সত্যই lessপরিবর্তে ব্যবহার করতে পারেন smallerকারিরিং কীভাবে হয় তা দেখতে এখানে চেষ্টা করুন।
কেভিন ক্রুইজসেন

7

আর, 80 বাইট

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

1
উপরের অনুমানটি অনুসরণ করতে আপনি "ছোট" থেকে "কম" পরিবর্তন করে 3 বাইট সংরক্ষণ করতে পারেন। টার্নারি অপারেটর ব্যবহার না করার জন্য +1।
বুকমার্কগুলি

আহ ধন্যবাদ, আমি যে ধরেন না! সংশোধন করা হয়েছে!
ফ্লোডেল

@ বারমার্স আর এর একটি টের্নারি অপারেটর নেই। : পি
অ্যালেক্স এ।

@AlexA। আমি জানি. আমি বোঝাতে চাইছি যে একটি তালিকা এবং সাইন ফাংশন ব্যবহার করা এখন পর্যন্ত অন্যান্য উত্তরগুলির চেয়ে খুব আলাদা ছিল (যার বেশিরভাগটি টার্নারি অপারেটর বা অনুরূপ ব্যবহৃত)।
বার্তা

ঠিক। তুলনার জন্য, যদি / অন্যথায় 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 । প্রথম সমাধানের মতোই STDIN থেকে স্থান-পৃথক ইনপুট নেয়।

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

এই দ্রবণটি একটি স্লাইসও ব্যবহার করে, তবে তালিকার টুকরোগুলির বিপরীতে অ্যারে স্লাইসগুলি স্ট্রিংগুলিতে (এবং বিকল্পগুলির আরএইচএস) মধ্যে বিভক্ত করা যেতে পারে যে সুবিধাটি গ্রহণ করে। এটি আমাদের ড্রপ করতে দেয়/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 পূর্ণসংখ্যা আশা করে। এটি অনলাইনে চেষ্টা করুন

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

  • \.@.@- A এবং B স্ট্যাক ইতিমধ্যে আছে, এবং এই কোড টুকরা ভালো স্ট্যাক বর্ণন তোলে: ABBA\স্ট্যাকের উপরে দুটি শীর্ষ আইটেম অদলবদল করে, .শীর্ষের আইটেমটিকে নকল করে এবং @3 টি শীর্ষ আইটেম ( 1 2 3-> 2 3 1) ঘোরান ।

  • তারপরে, তিনটি আইটেম স্ট্যাকের দিকে ঠেলাঠেলি করা হয়: =সাইন "equal to ", এবং এর মধ্যে ব্লক {}ifবিবৃতি এই আছে: যদি প্রথম আর্গুমেন্ট সত্য মূল্যায়ণ, এটা প্রথম কোড ব্লক (দ্বিতীয় যুক্তি) executes, অন্যথায়, দ্বিতীয় কোড ব্লক (তৃতীয় যুক্তি)। সুতরাং A এবং B সমান হলে এটি স্ট্যাকের "সমান" তে চাপ দেবে। যদি তারা সমান না হয় তবে এটি ব্লকের মধ্যে কোডটি কার্যকর করবে। নোট করুন যে =স্ট্যাক থেকে দুটি শীর্ষ আইটেম পপ করে, তাই এখন স্ট্যাকটি দেখতে মনে হচ্ছে AB

  • ব্লকের ভিতরে আপনি প্রথমে দেখতে পাবেন .@.@। এই কমান্ডগুলির আগে, স্ট্যাকটি দেখতে দেখতে ABএবং পরে, স্ট্যাকটি দেখতে দেখতে ভাল লাগে BAAB। কমান্ডগুলি উপরে বর্ণিত আদেশগুলির অনুরূপ।

  • তারপরে, আরও একটি ifবিবৃতি আছে। এবার, এটি> বি> কিনা তা যাচাই করে এবং যদি সত্য হয় তবে এটি স্ট্যাকের "আরও" ধাক্কা দেয়। অন্যথায়, এটি স্ট্যাকের উপর "কম" চাপায়। এই দুটির মধ্যে একটিকে ধাক্কা দেওয়ার পরে, এটি স্ট্যাকের উপর "তুলনায়" চাপ দেবে এবং পূর্বের ধাক্কা স্ট্রিং দিয়ে এটি যুক্ত করবে। >এছাড়াও স্ট্যাকের দুটি শীর্ষ আইটেমগুলি পপ করে, তাই এখন স্ট্যাকটি দেখতে মনে হচ্ছে BA"string"

  • পরবর্তী তিন কমান্ডের বর্ণনা দেয়া হলঃ " is "\+" is "স্ট্যাকের উপর স্ট্রিংটি ধাক্কা দেয় (স্ট্যাকের মতো দেখতে BA"string"" is "), \দুটি শীর্ষ আইটেম (স্ট্যাকের মতো দেখতে BA" is ""string") অদলবদল করে এবং দুটি শীর্ষ আইটেমকে +সম্মিলিত করে (স্ট্যাকের মতো দেখতে লাগে BA" is string")।

  • গত কমান্ড @, তিন স্ট্যাক আইটেম rotates, তাই স্ট্যাক এখন মনে হচ্ছে: A" is string"B। প্রোগ্রামটি শেষ হয়ে গেলে গল্ফস্ক্রিপ্ট স্বয়ংক্রিয়ভাবে স্ট্যাকউটে স্ট্যাকের মানগুলি মুদ্রণ করে, তারপরে আপনি পছন্দসই আউটপুট পান।


4

ম্যাটল্যাব, 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

আইএ -32 মেশিন কোড + লিনাক্স, 107 বাইট

কোডের হেক্সডাম্প:

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বিভাজনের নির্দেশকে ব্যবহার করে । এটি সুবিধাজনক যে এটি ডান থেকে বামে অঙ্কগুলি গণনা করে!ax10


যেহেতু লেখার জন্য দুটি সংখ্যা রয়েছে, কোডটিতে একটি সাবরুটাইন ব্যবহার করা হয়, যা দুটিবার বলা হয়। যাইহোক, সাব্রুটাইন স্ট্যাকের উপর ফলাফল লিখেছে বলে, এটি ফেরতের ঠিকানা ধরে রাখতে একটি রেজিস্টার ব্যবহার করে।


সি কোড যা উপরের মেশিন কোডকে কল করে:

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

@ জিওবিটস ফুরিয়ারে কোনও স্থানীয় স্কোপ নেই, তাই হ্যাঁ, আমি এটিতে কাজ করব
বিটা ডেকে

@ জিওবিটস ভেরিয়েবলগুলি ব্যবহার করে এটি আরও কিছুটা গল্ফ করেছেন
বিটা

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
আপনি এটিকে আরও সংক্ষিপ্ত করে তুলতে পারেন - আরগসি এবং আরজিভিটির নতুন নামকরণ করুন, ক এবং খ উভয়কে একটি লাইনে সংজ্ঞায়িত করুন, আরগিক চেক এড়িয়ে চলুন এবং আরও অনেক কিছু।
ugoren

1
নোট করুন যে প্রয়োজনীয়তা হয় একটি সম্পূর্ণ প্রোগ্রাম বা একটি ফাংশন। একটি ফাংশন অনেক খাটো হবে।
ugoren

@ugoren আমি নিশ্চিত ছিলাম না এটি কোনও ফাংশন হতে পারে, তাই আমি একটি সম্পূর্ণ প্রোগ্রাম লেখার সিদ্ধান্ত নিয়েছি। আমি এটি রিফ্যাক্টর করছি। আবার আপনাকে ধন্যবাদ!
মৌরেন

2

হাস্কেল, 87 বাইট

ওটোমোর পদ্ধতির চেয়ে এক বাইট ছোট।

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

সুন্দর সমাধান। :)
ওটোমো

2

লুয়া, 118 বাইট

আমি এখানে যথেষ্ট লুয়া উত্তর দেখতে পাচ্ছি না ...

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

পিপিসিজিতে আপনাকে স্বাগতম!
ডেনিস

2

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

আমি cmp()সত্যিই কীভাবে দরকারী তা পছন্দ করি তবে এটি পাইথন 3-এ সরানো হয়েছিল

বেনামে ফাংশন ব্যবহার করা:

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

কোনও ফাংশন (by৯ বাইট) ব্যবহার করছেন না:

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


পুনঃটুইট তারা ভিন্ন ধরনের. উত্তরটিতে আমার মন্তব্য পড়ুন।
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 এর সাহায্যে সংক্ষিপ্ত করতে সক্ষম হয়েছি


আমি একটি জাভাস্ক্রিপ্ট নবাগত ...
ক্রিটসি লিথোস

আমি কী জিজ্ঞাসা করতে পারি আপনি আপনার স্কোরটি সন্ধান করতে কী ব্যবহার করছেন?
বিটা ক্ষয়

এটি ভাঙা হয়নি (সিনট্যাক্স ত্রুটি)। শুধু পোস্ট করার আগে চেষ্টা করুন
edc65

এখন কোন ত্রুটি আছে?
ক্রিটসি লিথোস

1
a = প্রকাশ। এটি একটি সূচনা। var aভেরিয়েবলটি ঘোষণা করছে a। আপনি আছে এটি ব্যবহার করতে বাস্তব ভাল কারণ অনেক জন্য কোড। তবে এটি জাভাস্ক্রিপ্টে var
alচ্ছিক

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}");}

সি # 6 এর ইন্টারপোলটেড স্ট্রিং ব্যবহার করে 5 বাইট সংরক্ষণের জন্য 13 বাইট সংরক্ষণ করার জন্য এবং সেল 1001ukকে এডকি 65 ধন্যবাদ !


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

আমি সি # ফর্ম্যাটিং পছন্দ করি: Write("{0} is {1:greater than;less than;equal to} {2}",a,a-b,b)
edc65

@ এডসি 65 ওহ, এটি দুর্দান্ত! ধন্যবাদ! এছাড়াও আমাকে এবং এটিকে বি এর মানগুলি প্রতিস্থাপন করতে হবে তা মনে করিয়ে দেওয়ার জন্য ধন্যবাদ, আমি পুরোপুরি এটিকে> _ _> উপেক্ষা করেছি
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)]

সরল বিয়োগের সাথে পুরো সংযোজন জগাখিচির Aপরিবর্তে Jএবং অ্যালেক্সা এর পরিবর্তে Kএবং আরও 2 বাইট ব্যবহারের পরামর্শের জন্য 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
অ্যালেক্স এ 0

@AlexA। আমি শুধু পরামর্শে ব্যবহৃত Aপরিবর্তে Jএবং K, যা 2 বাইট সংরক্ষিত হয়েছে।
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")}

এমনকি সুইফট ২.০ ( 103 90 বাইট) দিয়ে আরও খাটো

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

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