Cobalah untuk menulis beberapa kode dalam bahasa Anda dan membuatnya tidak memenuhi kriteria kami sebagai bahasa pemrograman lagi.
Bahasa memenuhi kriteria kami (versi yang disederhanakan untuk tantangan ini) sebagai bahasa pemrograman jika:
- Itu dapat membaca input pengguna yang mewakili tupel bilangan bulat positif dalam beberapa cara.
- Ini dapat menghasilkan setidaknya dua hasil yang berbeda tergantung pada input.
- Ini dapat mengambil dua bilangan bulat positif dan menambahkannya (dan hasilnya dapat mempengaruhi output).
- Dapat mengambil bilangan bulat positif dan memutuskan apakah bilangan prima (dan hasilnya dapat mempengaruhi output).
- Untuk tujuan tantangan ini, segala jenis keluaran yang bukan merupakan metode keluaran yang diizinkan untuk tantangan normal diabaikan. Jadi tidak masalah apakah program tersebut juga dapat memainkan musik, atau memposting melalui HTTP, dll.
- Pembaruan: Anda juga dapat memilih satu atau beberapa metode output yang diizinkan, dan mengabaikan yang lainnya. Tetapi Anda harus menggunakan definisi yang sama di mana-mana dalam kriteria berikut. Dan jika program Anda dapat menonaktifkan lebih dari satu metode output - yang bernilai lebih banyak upvotes.
Contohnya seperti membuatnya tidak dapat menampilkan, atau menonaktifkan semua konstruksi loop sehingga tidak akan dapat melakukan uji coba awal dan memastikan pengguna tidak dapat mengaktifkannya kembali.
Anda harus meninggalkan tempat untuk memasukkan kode baru. Secara default, ini di akhir kode Anda. Jika kami mempertimbangkan untuk meletakkan kode sumber di tempat itu di jawaban Anda dan menjalankan kode lengkap sebagai program lengkap sebagai penerjemah bahasa baru, bahasa itu seharusnya tidak memenuhi kriteria.
Tetapi kode yang dimasukkan harus dieksekusi sedemikian rupa seperti bahasa yang memenuhi kriteria:
- Kode yang dimasukkan harus secara tata bahasa sama dengan sesuatu (katakan itu adalah blok kode dalam kriteria berikut) yang umumnya memenuhi kriteria, dari perspektif siapa pun yang ingin menulis stabilo sintaksis. Jadi tidak bisa dalam string, komentar, dll.
- Kode yang dimasukkan harus benar-benar dieksekusi, dengan cara yang seharusnya memenuhi kriteria. Jadi itu tidak bisa dalam fungsi yang tidak terpakai atau
sizeof
di C, Anda tidak bisa hanya menjalankan bagian yang tidak berfungsi dalam kode, dan Anda tidak bisa meletakkannya setelah loop tak terbatas, dll. - Anda tidak dapat membatasi jumlah program yang mungkin benar secara tata bahasa yang dihasilkan dengan cara ini. Jika sudah ada sesuatu seperti batas panjang dalam bahasa yang Anda gunakan, itu tidak akan memenuhi kriteria bahkan jika batas ini dihapus.
- Anda tidak dapat memodifikasi atau "menggunakan" konten input / output, tetapi Anda dapat mencegahnya diakses.
- Kriteria ini biasanya hanya berlaku untuk bahasa tanpa I / O eksplisit:
- Kode Anda harus mengarahkan input pengguna (yang berisi informasi dengan panjang sewenang-wenang) ke kode yang dimasukkan, jika suatu blok kode biasanya tidak bisa mendapatkan input pengguna secara langsung / eksplisit dalam bahasa yang Anda gunakan.
- Kode Anda harus mencetak nilai yang dikembalikan dari kode yang dimasukkan, jika blok kode biasanya tidak dapat menampilkan hal-hal secara langsung / eksplisit dalam bahasa yang Anda gunakan.
- Jika Anda mencetak nilai yang dikembalikan, dan itu diketik dalam bahasa yang Anda gunakan, jenis yang dikembalikan harus dapat memiliki 2 nilai praktis yang mungkin berbeda. Misalnya, Anda tidak bisa menggunakan tipe
struct {}
ataustruct {private:int x;}
dalam C ++.
Ini adalah kontes popularitas. Jawaban sah terpilih tertinggi (jadi tidak ada yang melihat kesalahan atau semua kesalahan diperbaiki) menang.
Klarifikasi
- Anda tidak boleh memodifikasi kode dalam bentuk teks, tetapi dapat mengubah sintaksis sebelum kode ditafsirkan atau dikompilasi.
- Anda dapat melakukan hal-hal lain saat kode sedang berjalan. Tetapi alasan itu tidak memenuhi kriteria harus dalam kode yang dimasukkan itu sendiri. Itu dapat kesalahan karena gangguan dari utas lain, tetapi tidak hanya terbunuh oleh utas lain.
- Semua spesifikasi pada dasarnya berarti harus memenuhi kriteria secara tata bahasa jika semua built-in tidak diubah tetapi tidak benar-benar dilakukan. Tidak masalah jika Anda menemukan solusi non-gramatikal, seperti meneruskan parameter ke blok kode dengan benar, tetapi membuatnya tidak dapat digunakan dalam beberapa cara.
- Sekali lagi, kode yang dimasukkan harus benar-benar dieksekusi. Kode setelah infinite loop atau crashing dianggap "tidak benar-benar dieksekusi", sehingga tidak valid . Jawaban-jawaban itu mungkin menarik, tetapi sudah ada beberapa loop tak terbatas atau pertanyaan lain di situs ini, dan Anda mungkin menemukan jawaban yang lebih tepat untuk dijawab. Jika tidak, pertimbangkan untuk mengajukan pertanyaan baru. Contoh dari pertanyaan itu adalah:
Papan peringkat
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>