Kendi dilinizde bazı kodlar yazmaya çalışın ve bir programlama dili olma ölçütümüzü artık karşılamamasını sağlayın .
Bir dil, eğer bir programlama dili olma kriterlerimizi (bu zorluk için basitleştirilmiş versiyon) yerine getirir:
- Pozitif tamsayı tekillerini temsil eden kullanıcı girdisini bir şekilde okuyabilir.
- Girdiye bağlı olarak en az iki farklı sonuç verebilir.
- İki pozitif tamsayı alabilir ve bunları ekleyebilir (ve sonuç çıktıyı etkileyebilir).
- Olumlu bir tamsayı alabilir ve bunun birinci sınıf olup olmadığına karar verebilir (ve sonuç çıktıyı etkileyebilir).
- Bu zorluğun amacı için, normal bir zorlama için izin verilen bir çıktı yöntemi olmayan her türlü çıktı göz ardı edilir. Bu nedenle, programın bir parça müzik de çalabileceği ya da HTTP vb. Yoluyla yayınlayabileceği önemli değil.
- Güncelleme: İzin verilen çıktı yöntemlerinden birini veya bazılarını seçebilir ve diğerlerini göz ardı edebilirsiniz. Fakat aynı tanımı her yerde aşağıdaki kriterlerde kullanmalısınız. Ve eğer programınız birden fazla çıktı yöntemini devre dışı bırakabilirse - bu daha fazla yükseltme gerektirir.
Çıktı yapamama veya tüm döngü yapılarını devre dışı bırakma gibi örnekler, böylece primalite testi yapamaz ve kullanıcının bunları tekrar etkinleştiremeyeceğinden emin olmaz.
Yeni kod eklemek için bir yer bırakmalısınız. Varsayılan olarak, kodunuzun sonunda. Kaynak kodu cevabınızdaki o yere koyup tam kodu eksiksiz bir program olarak çalıştırmayı düşünürsek , bu dilin ölçütleri karşılamaması gerekir.
Ancak eklenen kod , kriterleri karşılayan bir dil gibi yürütülmelidir :
- Girilen kod , sözdizimi vurgulayıcı yazmak isteyenler açısından, genel olarak kriterleri karşılayan bir şeyle aynı olmalıdır ( aşağıdaki kriterlerde bir kod bloğudur ). Bu yüzden bir dize, yorum, vb olamaz.
- Girilen kod, kriterleri yerine getirmesi gerektiği şekilde gerçekleştirilmelidir. Bu yüzden kullanılmayan bir fonksiyonda veya
sizeof
C'de olamaz, kodda sadece işlevsel olmayan bir parçayı çalıştıramazsınız ve sonsuz bir döngüden sonra koyamazsınız, vb. - Bu yolla oluşturulan olası gramersel olarak doğru programların sayısını sınırlandıramazsınız. Kullanmakta olduğunuz dilde zaten bir uzunluk sınırı gibi bir şey varsa, bu sınır kaldırılsa bile ölçütleri karşılamamalıdır.
- Giriş / çıkış içeriğini değiştiremez veya "kullanamazsınız", ancak bunlara erişilmesini engelleyebilirsiniz.
- Bu ölçütler genellikle yalnızca açık G / Ç olmayan diller için geçerlidir:
- Eğer bir kod bloğu genellikle kullandığınız dilde doğrudan / açıkça kullanıcı girişi yapamıyorsa, kodunuz kullanıcı kodunu (rastgele uzunluk bilgisi içeren) eklenen koda yönlendirmelidir.
- Bir kod bloğu genellikle kullandığınız dilde doğrudan / açıkça çıktı veremiyorsa, kodunuz eklenen kodun döndürülen değerini yazdırmalıdır.
- Döndürülen değeri yazdırmanız ve kullandığınız dilde yazmanız durumunda, döndürülen türün pratikte 2 farklı olası değeri olması gerekir. Örneğin, türü
struct {}
veyastruct {private:int x;}
C ++ kullanamazsınız .
Bu popülerlik yarışması. En yüksek oy alan geçerli cevap (yani kimse hata görmedi ya da tüm hatalar düzeltildi) kazandı.
Açıklamalar
- Kodu metin biçiminde değiştirmemelisiniz, ancak kod yorumlanmadan veya derlenmeden önce sözdizimini değiştirebilirsiniz.
- Kod çalışırken başka şeyler de yapabilirsiniz. Ancak kriterleri karşılamamasının nedeni eklenen kodun kendisinde olmalıdır. Başka bir dişlinin paraziti nedeniyle hata yapabilir, ancak sadece başka bir iplik tarafından öldürülmez.
- Tüm özellikler temel olarak , eğer tüm yerleşik parçalar değişmediyse ve gerçekte yapılmadıysa, kriterleri yerine getirme ihtimalinin yüksek olması gerektiği anlamına gelir . Parametreleri doğru bir şekilde kod bloğuna geçirmek gibi dilbilgisi olmayan herhangi bir geçici çözüm bulursanız sorun değil, ancak bir şekilde kullanılamamasını sağlayın.
- Yine, eklenen kodun gerçekten çalıştırılması gerekir. Sonsuz bir döngü veya çökmeden sonra kod "aslında yürütülmedi" olarak kabul edilir, bu nedenle geçerli değildir . Bu cevaplar ilginç olabilir, ancak zaten bu sitede başka bir sınırsız döngü ya da soru sorulması var ve cevaplamak için daha uygun bir cevap bulabilirsiniz. Değilse, yeni bir soru sormayı düşünün. Bu soruların örnekleri:
Liderler Sıralaması
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>