Cố gắng viết một số mã bằng ngôn ngữ của bạn và làm cho nó không thỏa mãn tiêu chí của chúng tôi là ngôn ngữ lập trình nữa.
Một ngôn ngữ đáp ứng các tiêu chí của chúng tôi (phiên bản đơn giản hóa cho thử thách này) là ngôn ngữ lập trình nếu:
- Nó có thể đọc đầu vào của người dùng đại diện cho các bộ số nguyên dương theo một cách nào đó.
- Nó có thể xuất ít nhất hai kết quả khác nhau tùy thuộc vào đầu vào.
- Nó có thể lấy hai số nguyên dương và thêm chúng (và kết quả có thể ảnh hưởng đến đầu ra).
- Nó có thể lấy một số nguyên dương và quyết định xem nó có phải là số nguyên tố hay không (và kết quả có thể ảnh hưởng đến đầu ra).
- Với mục đích của thử thách này, bất kỳ loại đầu ra nào không phải là phương thức đầu ra được phép cho một thử thách thông thường đều bị bỏ qua. Vì vậy, không quan trọng chương trình cũng có thể phát một bản nhạc hay đăng qua HTTP, v.v.
- Cập nhật: Bạn cũng có thể chọn một hoặc một số phương thức đầu ra được phép và bỏ qua tất cả các phương thức khác. Nhưng bạn phải sử dụng định nghĩa tương tự ở mọi nơi trong các tiêu chí sau. Và nếu chương trình của bạn có thể vô hiệu hóa nhiều hơn một phương thức đầu ra - điều đó đáng để nâng cao hơn.
Các ví dụ như làm cho nó không thể xuất hoặc vô hiệu hóa tất cả các cấu trúc vòng lặp để nó không thể thực hiện kiểm tra tính nguyên thủy và đảm bảo người dùng không thể kích hoạt lại chúng.
Bạn nên để một chỗ để chèn mã mới. Theo mặc định, nó nằm ở cuối mã của bạn. Nếu chúng tôi xem xét đưa mã nguồn vào vị trí đó trong câu trả lời của bạn và chạy mã đầy đủ dưới dạng một chương trình hoàn chỉnh, trình thông dịch của một ngôn ngữ mới, ngôn ngữ đó sẽ không đáp ứng các tiêu chí.
Nhưng mã được chèn phải được thực thi theo cách giống như một ngôn ngữ thỏa mãn các tiêu chí:
- Mã được chèn phải về mặt ngữ pháp giống như một cái gì đó (giả sử đó là một khối mã theo các tiêu chí sau) thường đáp ứng các tiêu chí, từ quan điểm của bất kỳ ai muốn viết một cú pháp tô sáng. Vì vậy, nó không thể ở trong một chuỗi, bình luận, vv
- Mã được chèn phải thực sự được thực thi, theo cách nó được cho là thỏa mãn các tiêu chí. Vì vậy, nó không thể ở trong một hàm không được sử dụng hoặc
sizeof
trong C, bạn không thể chỉ thực hiện một phần không có chức năng trong mã và bạn không thể đặt nó sau một vòng lặp vô hạn, v.v. - Bạn không thể giới hạn số lượng chương trình đúng ngữ pháp có thể được tạo theo cách này. Nếu đã có thứ gì đó như giới hạn độ dài trong ngôn ngữ bạn đang sử dụng, thì nó không nên đáp ứng các tiêu chí ngay cả khi giới hạn này được loại bỏ.
- Bạn không thể sửa đổi hoặc "sử dụng hết" nội dung của đầu vào / đầu ra, nhưng bạn có thể ngăn không cho chúng truy cập.
- Các tiêu chí này thường chỉ áp dụng cho các ngôn ngữ mà không có I / O rõ ràng:
- Mã của bạn nên chuyển hướng đầu vào của người dùng (có chứa thông tin về độ dài tùy ý) sang mã được chèn, nếu một khối mã thường không thể lấy đầu vào của người dùng trực tiếp / rõ ràng bằng ngôn ngữ bạn đang sử dụng.
- Mã của bạn sẽ in giá trị trả về của mã được chèn, nếu một khối mã thường không thể xuất ra những thứ trực tiếp / rõ ràng bằng ngôn ngữ bạn đang sử dụng.
- Trong trường hợp bạn in giá trị được trả về và nó được nhập bằng ngôn ngữ bạn đang sử dụng, loại được trả về sẽ có thể có 2 giá trị thực tế có thể khác nhau. Ví dụ: bạn không thể sử dụng loại
struct {}
hoặcstruct {private:int x;}
trong C ++.
Đây là cuộc thi phổ biến. Câu trả lời hợp lệ được bình chọn cao nhất (vì vậy không ai phát hiện ra lỗi hoặc tất cả các lỗi đã được sửa) sẽ thắng.
Làm rõ
- Bạn không nên sửa đổi mã ở dạng văn bản, nhưng có thể thay đổi cú pháp trước khi mã được diễn giải hoặc biên dịch.
- Bạn có thể làm những việc khác trong khi mã đang chạy. Nhưng lý do nó không thỏa mãn các tiêu chí nên nằm trong chính mã được chèn. Nó có thể bị lỗi do sự can thiệp của một luồng khác, nhưng không chỉ bị giết bởi một luồng khác.
- Tất cả các thông số kỹ thuật về cơ bản có nghĩa là nó phải có khả năng đáp ứng các tiêu chí về mặt ngữ pháp nếu tất cả các phần tử tích hợp không thay đổi nhưng thực tế không làm được. Sẽ tốt thôi nếu bạn tìm thấy bất kỳ cách giải quyết phi ngữ pháp nào, chẳng hạn như chuyển các tham số cho khối mã một cách chính xác, nhưng làm cho chúng không thể được sử dụng theo một cách nào đó.
- Một lần nữa, mã được chèn phải được thực thi. Mã sau một vòng lặp vô hạn hoặc sự cố được coi là "không thực sự được thực thi", do đó không hợp lệ . Những câu trả lời đó có thể thú vị, nhưng đã có một số câu hỏi lặp vô hạn hoặc câu hỏi khác trên trang web này và bạn có thể tìm thấy một câu trả lời thích hợp hơn để trả lời. Nếu không, hãy xem xét hỏi một câu hỏi mới. Ví dụ về những câu hỏi đó là:
Bảng xếp hạng
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>