ඔබේ භාෂාවෙන් යම් කේතයක් ලිවීමට උත්සාහ කර එය අපගේ තෘප්තියට පත් නොකරන්න ක්රමලේඛන භාෂාවක් වීමේ නිර්ණායක සපුරාලන්නේ නැත.
ක්රමලේඛන භාෂාවක් වීම පිළිබඳ භාෂාවක් අපගේ නිර්ණායක (මෙම අභියෝගය සඳහා සරල කළ අනුවාදය) තෘප්තිමත් කරන්නේ නම්:
- යම් ආකාරයකින් ධනාත්මක නිඛිලවල ටුපල් නියෝජනය කරන පරිශීලක ආදානය එයට කියවිය හැකිය.
- එය ආදානය මත පදනම්ව අවම වශයෙන් වෙනස් ප්රති results ල දෙකක්වත් ලබා දිය හැකිය.
- එයට ධනාත්මක නිඛිල දෙකක් ගෙන ඒවා එකතු කළ හැකිය (ප්රති result ලය ප්රතිදානයට බලපායි).
- එයට ධන නිඛිලයක් ගෙන එය ප්රාථමිකයක්ද යන්න තීරණය කළ හැකිය (ප්රති result ලය ප්රතිදානයට බලපායි).
- මෙම අභියෝගයේ අරමුණ සඳහා, සාමාන්ය අභියෝගයක් සඳහා අවසර දී ඇති ප්රතිදාන ක්රමයක් නොවන ඕනෑම ආකාරයක ප්රතිදානයක් නොසලකා හරිනු ලැබේ. එබැවින් වැඩසටහනට සංගීත භාණ්ඩයක් වාදනය කළ හැකිද, නැතහොත් HTTP හරහා පළ කිරීම ආදිය වැදගත් නොවේ.
- යාවත්කාලීන කිරීම: ඔබට අවසර දී ඇති නිමැවුම් ක්රම එකක් හෝ කිහිපයක් තෝරා ගත හැකි අතර අනෙක් සියල්ල නොසලකා හරින්න. නමුත් ඔබ පහත දැක්වෙන නිර්ණායකයන්හි සෑම තැනකම එකම අර්ථ දැක්වීම භාවිතා කළ යුතුය. ඔබේ වැඩසටහනට ප්රතිදාන ක්රම එකකට වඩා අක්රිය කළ හැකි නම් - එය වැඩි දියුණු කිරීම වටී.
නිමැවුම් කිරීමට නොහැකි වීම හෝ සියලු ලූප ඉදිකිරීම් අක්රීය කිරීම වැනි උදාහරණ මඟින් ප්රාථමික පරීක්ෂණයක් කිරීමට නොහැකි වන අතර පරිශීලකයාට ඒවා නැවත සක්රීය කළ නොහැකි බවට වග බලා ගන්න.
නව කේතයක් ඇතුළත් කිරීම සඳහා ඔබ ස්ථානයක් තැබිය යුතුය. පෙරනිමියෙන්, එය ඔබගේ කේතයේ අවසානයේ ඇත. ඔබේ පිළිතුරෙහි ප්රභව කේතය එම ස්ථානයේ තබා සම්පූර්ණ කේතය සම්පූර්ණ වැඩසටහනක් ලෙස ක්රියාත්මක කිරීම ගැන අපි සලකා බලන්නේ නම් නව පරිවර්තකයා , එම භාෂාව නිර්ණායක සපුරාලිය යුතු නොවේ.
නමුත් ඇතුළත් කළ කේතය නිර්ණායකයන් සපුරාලන භාෂාවක් වැනි ආකාරයකින් ක්රියාත්මක කළ යුතුය :
- ඇතුළත් කළ කේතය ව්යාකරණමය වශයෙන් යම් දෙයකට සමාන විය යුතුය (එය පහත දැක්වෙන නිර්ණායකයන්හි කේත වාරණයක් යැයි කියන්න ) සාමාන්යයෙන් නිර්ණායක සපුරාලන, සින්ටැක්ස් හයිලයිටරයක් ලිවීමට කැමති අයගේ දෘෂ්ටි කෝණයෙන්. එබැවින් එය නූලක්, අදහස් දැක්වීමක් යනාදියෙහි තිබිය නොහැක.
- ඇතුළත් කළ කේතය ඇත්ත වශයෙන්ම ක්රියාත්මක කළ යුතුය, යම් ආකාරයකින් එය නිර්ණායක සපුරාලිය යුතුය. එබැවින් එය භාවිතයට නොගත් ශ්රිතයක විය නොහැක
sizeof
සී හි විය නොහැක, ඔබට කේතයේ ක්රියාකාරී නොවන කොටසක් පමණක් ක්රියාත්මක කළ නොහැකි අතර ඔබට එය අසීමිත ලූපයකට පසුව තැබිය නොහැක. - මේ ආකාරයෙන් ජනනය කළ හැකි ව්යාකරණ නිවැරදි වැඩසටහන් ගණන ඔබට සීමා කළ නොහැක. ඔබ භාවිතා කරන භාෂාවේ දිග සීමාවක් වැනි දෙයක් දැනටමත් තිබේ නම්, මෙම සීමාව ඉවත් කළද එය නිර්ණායක සපුරාලිය යුතු නොවේ.
- ඔබට ආදාන / ප්රතිදානයේ අන්තර්ගතය වෙනස් කිරීමට හෝ "භාවිතා කිරීමට" නොහැක, නමුත් ඔබට ඒවාට ප්රවේශ වීම වළක්වා ගත හැකිය.
- මෙම නිර්ණායක සාමාන්යයෙන් අදාළ වන්නේ පැහැදිලි I / O නොමැතිව භාෂාවන්ට පමණි:
- කේත වාරණයකට සාමාන්යයෙන් ඔබ භාවිතා කරන භාෂාවෙන් සෘජුවම / පැහැදිලිව පරිශීලක ආදානය ලබා ගත නොහැකි නම්, ඔබේ කේතය පරිශීලක ආදානය (අත්තනෝමතික දිග පිළිබඳ තොරතුරු අඩංගු) ඇතුළු කළ කේතයට හරවා යැවිය යුතුය.
- කේත වාරණයකට සාමාන්යයෙන් ඔබ භාවිතා කරන භාෂාවෙන් දේවල් සෘජුව / පැහැදිලිව ප්රතිදානය කිරීමට නොහැකි නම්, ඔබේ කේතය ඇතුළු කළ කේතයේ ආපසු ලබා දුන් අගය මුද්රණය කළ යුතුය.
- ඔබ ආපසු ලබා දුන් අගය මුද්රණය කර එය භාවිතා කරන භාෂාවෙන් ටයිප් කර තිබේ නම්, ආපසු ලබා දුන් වර්ගයට ප්රායෝගිකව හැකි අගයන් 2 ක් තිබිය යුතුය. උදාහරණයක් ලෙස, ඔබට වර්ගය
struct {}
හෝstruct {private:int x;}
C ++ භාවිතා කළ නොහැක .
මෙය ජනප්රියත්වය-තරගයයි. වැඩිම ඡන්දය දුන් වලංගු පිළිතුර (එබැවින් කිසිවෙකු දෝෂයක් හඳුනාගෙන නැත හෝ සියලු දෝෂ නිවැරදි කර ඇත) ජය ගනී.
පැහැදිලි කිරීම්
- ඔබ පෙළ ස්වරූපයෙන් කේතය වෙනස් නොකළ යුතුය, නමුත් කේතය අර්ථ නිරූපණය කිරීමට හෝ සම්පාදනය කිරීමට පෙර වාක්ය ඛණ්ඩය වෙනස් කළ හැකිය.
- කේතය ක්රියාත්මක වන අතරතුර ඔබට වෙනත් දේවල් කළ හැකිය. නමුත් එය නිර්ණායක සපුරාලීමට හේතුව ඇතුළත් කළ කේතය තුළම තිබිය යුතුය. වෙනත් නූලක ඇඟිලි ගැසීම් නිසා එය දෝෂ විය හැකි නමුත් වෙනත් නූලකින් මරා දැමිය නොහැක.
- සියළුම පිරිවිතරයන් මූලික වශයෙන් අදහස් කරන්නේ සියලු ගොඩනංවන ලද ඒවා වෙනස් නොකළ නමුත් ඇත්ත වශයෙන්ම එසේ නොකළේ නම් එය ව්යාකරණමය වශයෙන් නිර්ණායකයන් සපුරාලිය යුතු බවයි. කේත කාණ්ඩයට පරාමිතීන් නිවැරදිව යැවීම වැනි ව්යාකරණ නොවන ක්රියාමාර්ග ඔබ සොයා ගන්නේ නම් එය හොඳයි, නමුත් ඒවා යම් ආකාරයකින් භාවිතා කිරීමට නොහැකි වන පරිදි සකසන්න.
- නැවතත්, ඇතුළත් කළ කේතය ඇත්ත වශයෙන්ම ක්රියාත්මක කළ යුතුය. අනන්ත පුඩුවක් හෝ බිඳවැටීමෙන් පසු කේතය "ඇත්ත වශයෙන්ම ක්රියාත්මක නොවේ" ලෙස සලකනු ලැබේ, එබැවින් වලංගු නොවේ . එම පිළිතුරු සිත්ගන්නාසුළු විය හැකි නමුත් මෙම වෙබ් අඩවියේ දැනටමත් අනන්ත ලූප හෝ බිඳ වැටෙන ප්රශ්න තිබේ, ඔබට පිළිතුරු දීමට වඩාත් සුදුසු එකක් සොයාගත හැකිය. එසේ නොවේ නම්, නව ප්රශ්නයක් ඇසීම සලකා බලන්න. එම ප්රශ්න සඳහා උදාහරණ නම්:
ප්රමුඛ පුවරුව
var QUESTION_ID=61115/*,OVERRIDE_USER=8478*/;function answersUrl(e){return"https://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"https://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()*/(more_answers?getAnswers():process())}})}/*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),score:s.score,language:a[1],lang:jQuery('<div>').html(a[1]).text(),link:s.share_link})}),e.sort(function(e,s){var r=e.score,a=s.score;return a-r});var s={},r=1,a=null,n=1;e.forEach(function(e){e.score!=a&&(n=r),a=e.score,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",e.n=n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.score).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=e/*[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o])*/;t.sort(function(e,s){return (e.lang.toUpperCase()>s.lang.toUpperCase())-(e.lang.toUpperCase()<s.lang.toUpperCase())||(e.lang>s.lang)-(e.lang<s.lang)});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{PLACE}}",o.n).replace("{{LANGUAGE}}",o.language).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.score).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|(?!.*<h\d>)p)>\s*((?:[^,;(\s]| +[^-,;(\s])+)(?=(?: *(?:[,;(]| -).*?)?\s*<\/(h\d|p)>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;float:left}table{width:250px}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="https://cdn.sstatic.net/Sites/codegolf/all.css?v=7509797c03ea"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Score</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Sorted by Language</h2> <table class="language-list"> <thead> <tr><td></td><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>{{PLACE}}</td><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>