Trong thử thách này, chúng tôi sẽ cùng nhau tạo ra một từ tìm kiếm có chứa nhiều chương trình bằng các ngôn ngữ khác nhau.
Tôi đã bắt đầu với chúng tôi với một lưới 60 đến 25 khoảng trống ( ·
), một số trong đó được thay thế bằng các ký tự của chương trình Ruby.
Để trả lời, hãy chọn một ngôn ngữ chưa được sử dụng. Sử dụng ngôn ngữ bạn đã chọn, viết chương trình đọc ký tự, mã thông báo, dòng hoặc tất cả đầu vào từ bảng điều khiển và in nó . Sau đó, chèn chương trình của bạn vào tìm kiếm từ.
Ví dụ: giả sử bạn chọn Python 3 cho câu trả lời của mình và viết chương trình print(input())
. Bây giờ bạn phải chèn chương trình đó vào lưới.
Nếu lưới trước câu trả lời của bạn trông như thế này:
···a·24··········
··z····t·········
Sau đó, bạn có thể chỉ cần đặt chương trình của mình vào dòng thứ hai, chồng chéo với hiện có t
:
···a·24··········
··zprint(input())
Lưu ý rằng bạn có thể đặt chương trình của mình theo bất kỳ hướng nào: tiến, lùi, hướng lên, hướng xuống hoặc theo đường chéo, miễn là nó nằm trên một đường thẳng.
Nhưng nếu lưới hiện tại trông như thế này:
···a·24··········
··z····q·········
Không có cách nào để phù hợp với print(input())
ở đây mà không thay đổi các ký tự hiện có, điều bị cấm. Thay vào đó, bạn có thể thay đổi chương trình:
print(
input())
Chương trình hai dòng này phù hợp gọn gàng:
···a·24·print(···
··z····q input())
Ở đây bạn thay thế một khoảng trống (·
) bằng một khoảng (
). Tuy nhiên, một không gian cũng giống như bất kỳ nhân vật nào khác và không thể bị ghi đè trong các chương trình trong tương lai.
Giống như một lớp lót, một chương trình nhiều dòng có thể được đặt theo bất kỳ hướng nào. Ví dụ, trong một lưới lớn hơn, bạn có thể làm như sau, bằng cách xoay chương trình 135 ° theo chiều kim đồng hồ.
··········
········ ·
·······i·p
······n·r·
·····p·i··
····u·n···
···t·t····
··(·(·····
·)········
)·········
Chấm điểm
Điểm của bạn cho mỗi câu trả lời là ba mươi chia cho số lượng ký tự được thêm vào. Không đếm các ký tự đã tồn tại trong lưới, ngay cả khi bạn tự sử dụng chúng.
Tổng số điểm của bạn là tổng số điểm cho tất cả các câu trả lời của bạn, nhân với số lượng câu trả lời. Điểm số cao nhất chiến thắng.
Quy tắc
- Mỗi câu trả lời phải được viết bằng một ngôn ngữ khác nhau. Các ngôn ngữ chỉ khác nhau về số phiên bản (ví dụ: Python 2 và Python 3) được coi là giống nhau.
- Mỗi câu trả lời phải được xây dựng từ câu trả lời hợp lệ gần đây nhất. Đó là, lấy lưới của câu trả lời gần đây nhất và chèn chương trình của bạn vào đó.
- Để chèn chương trình của bạn, thay thế ít nhất một trong các khoảng trống (
·
) bằng các ký tự bạn chọn. Bạn có thể sử dụng các ký tự hiện có từ lưới trong câu trả lời của mình, nhưng bạn không thể thay đổi hoặc di chuyển bất kỳ ký tự nào trong số chúng.
- Bạn không được chèn tổng cộng hơn 500 ký tự, trên tất cả các câu trả lời của bạn.
- Tất cả các ký tự bạn chèn phải là một phần của chương trình của bạn.
- Chương trình của bạn có thể chỉ bao gồm ASCII có thể in và các dòng mới, nhưng có thể không có hai hoặc nhiều dòng mới liên tiếp quay lại.
- Dòng mới không được tính vào điểm số của bạn.
- Một chương trình đầy đủ, không chỉ là một chức năng hoặc đoạn trích, được yêu cầu.
- Người dùng giống nhau có thể không viết hai câu trả lời liên tiếp.
- Nếu câu trả lời của ai đó vi phạm quy tắc, hãy để lại nhận xét. Nếu lỗi không được sửa trong 30 phút, nó sẽ bị xóa.
Đoạn ngôn ngữ được sử dụng
Đây là một Snippet Stack, được tạo bởi ETHproductions, FryAmTheEggman và Mauris, theo dõi điểm số của người dùng và các ngôn ngữ được sử dụng. Ban đầu nó được sao chép từ mẫu tuyệt vời của Martin Büttner .
Bảng xếp hạng gốc:
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,r){return"http://api.stackexchange.com/2.2/answers/"+r.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 r=+e.share_link.match(/\d+/);answer_ids.push(r),answers_hash[r]=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=[],r={},x={};answers.forEach(function(s){var a=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(a="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var n=a.match(SCORE_REG);if(n){var t=getAuthorName(s);e.push({user:getAuthorName(s),size:+n[2],language:n[1],link:s.share_link}),r[t]=r[t]||0,r[t]+=30/+n[2],x[t]=x[t]||0,x[t]++}});Object.keys(r).forEach(function(e){r[e]*=x[e]});var s=Object.keys(r).sort(function(e,s){return r[s]-r[e]});e.sort(function(e,r){var s=e.size,a=r.size;return s-a});var a={},t=null;e.forEach(function(e){t=e.size;var r=e.language;/<a/.test(r)&&(r=jQuery(r).text()),a[r]=a[r]||{lang:e.language,user:e.user,size:e.size,link:e.link}});for(var c=0,o=1;c<s.length;c++){var i=jQuery("#author-template").html();r[s[c]]!==r[s[c-1]]&&(o=c+1);i=i.replace("{{PLACE}}",o+'.').replace("{{NAME}}",s[c]).replace("{{SCORE}}",r[s[c]].toFixed(2)),jQuery("#authors").append(jQuery(i))}var u=[];for(var m in a)a.hasOwnProperty(m)&&u.push(a[m]);u.sort(function(e,r){var s=e.lang.replace(/<.*?>/g,"").toLowerCase(),a=r.lang.replace(/<.*?>/g,"").toLowerCase();return s>a?1:a>s?-1:0});for(var l=0;l<u.length;++l){var h=jQuery("#language-template").html(),m=u[l];h=h.replace("{{LANGUAGE}}",m.lang).replace("{{NAME}}",m.user).replace("{{SIZE}}",m.size).replace("{{LINK}}",m.link),h=jQuery(h),jQuery("#languages").append(h)}}var QUESTION_ID=57327,ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",OVERRIDE_USER=16294,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}#author-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="author-list"> <h2>Leaderboard</h2> <table class="author-list"> <thead> <tr><td></td><td>Author</td><td>Score</td></tr></thead> <tbody id="authors"> </tbody> </table> </div><div id="language-list"> <h2>Languages</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="author-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{SCORE}}</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>
Phiên bản mới (thử nghiệm), sử dụng công thức đã sửa đổi:
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,r){return"http://api.stackexchange.com/2.2/answers/"+r.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 r=+e.share_link.match(/\d+/);answer_ids.push(r),answers_hash[r]=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=[],r={},x={};answers.forEach(function(s){var a=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(a="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var n=a.match(SCORE_REG);if(n){var t=getAuthorName(s);e.push({user:getAuthorName(s),size:+n[2],language:n[1],link:s.share_link}),r[t]=r[t]||0,r[t]+=30/+n[2]+20,x[t]=x[t]||0,x[t]++}});var s=Object.keys(r).sort(function(e,s){return r[s]-r[e]});e.sort(function(e,r){var s=e.size,a=r.size;return s-a});var a={},t=null;e.forEach(function(e){t=e.size;var r=e.language;/<a/.test(r)&&(r=jQuery(r).text()),a[r]=a[r]||{lang:e.language,user:e.user,size:e.size,link:e.link}});for(var c=0,o=1;c<s.length;c++){var i=jQuery("#author-template").html();r[s[c]]!==r[s[c-1]]&&(o=c+1);i=i.replace("{{PLACE}}",o+'.').replace("{{NAME}}",s[c]).replace("{{SCORE}}",r[s[c]].toFixed(2)),jQuery("#authors").append(jQuery(i))}var u=[];for(var m in a)a.hasOwnProperty(m)&&u.push(a[m]);u.sort(function(e,r){var s=e.lang.replace(/<.*?>/g,"").toLowerCase(),a=r.lang.replace(/<.*?>/g,"").toLowerCase();return s>a?1:a>s?-1:0});for(var l=0;l<u.length;++l){var h=jQuery("#language-template").html(),m=u[l];h=h.replace("{{LANGUAGE}}",m.lang).replace("{{NAME}}",m.user).replace("{{SIZE}}",m.size).replace("{{LINK}}",m.link),h=jQuery(h),jQuery("#languages").append(h)}}var QUESTION_ID=57327,ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",OVERRIDE_USER=16294,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}#author-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="author-list"> <h2>Leaderboard</h2> <table class="author-list"> <thead> <tr><td></td><td>Author</td><td>Score</td></tr></thead> <tbody id="authors"> </tbody> </table> </div><div id="language-list"> <h2>Languages</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="author-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{SCORE}}</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>
Để đảm bảo việc gửi của bạn được đoạn mã nhận ra, vui lòng sử dụng mẫu tiêu đề sau:
# Language, X characters added