In dieser Herausforderung werden wir gemeinsam eine Wortsuche erstellen, die viele Programme in verschiedenen Sprachen enthält.
Ich habe mit einem Raster von 60 mal 25 Leerzeichen ( ·
) begonnen, von denen einige durch die Zeichen eines Ruby-Programms ersetzt werden.
Um zu antworten, wählen Sie eine Sprache, die noch nicht verwendet wurde. Schreiben Sie in der von Ihnen gewählten Sprache ein Programm, das ein Zeichen, einen Token, eine Zeile oder alle Eingaben von der Konsole liest und druckt . Fügen Sie dann Ihr Programm in die Wortsuche ein.
Angenommen, Sie wählen Python 3 als Antwort und schreiben das Programm print(input())
. Jetzt müssen Sie das Programm in das Raster einfügen.
Wenn das Raster vor Ihrer Antwort so aussieht:
···a·24··········
··z····t·········
Dann können Sie einfach Ihr Programm in die zweite Zeile stellen und es mit dem vorhandenen überschneiden t
:
···a·24··········
··zprint(input())
Beachten Sie, dass Sie Ihr Programm in eine beliebige Richtung platzieren können: vorwärts, rückwärts, aufwärts, abwärts oder diagonal, solange es sich in einer geraden Linie befindet.
Was aber, wenn das vorhandene Gitter so aussieht:
···a·24··········
··z····q·········
Es gibt keine Möglichkeit, das print(input())
hier anzupassen , ohne vorhandene Charaktere zu ändern, was verboten ist. Stattdessen können Sie das Programm ändern:
print(
input())
Dieses zweizeilige Programm passt genau:
···a·24·print(···
··z····q input())
Hier ersetzen Sie ein Leerzeichen ( ·
) durch ein Leerzeichen (
). Ein Leerzeichen ist jedoch wie jedes andere Zeichen und kann in zukünftigen Programmen nicht überschrieben werden.
Wie bei einem Einzeiler kann ein Mehrzeilenprogramm in jede Richtung platziert werden. In einem größeren Raster können Sie beispielsweise Folgendes tun, indem Sie das Programm um 135 ° im Uhrzeigersinn drehen.
··········
········ ·
·······i·p
······n·r·
·····p·i··
····u·n···
···t·t····
··(·(·····
·)········
)·········
Wertung
Ihre Punktzahl für jede Antwort wird durch die Anzahl der hinzugefügten Zeichen geteilt. Zählen Sie keine Zeichen, die bereits im Raster vorhanden waren, auch wenn Sie sie selbst verwenden.
Ihre Gesamtpunktzahl ist die Summe der Punkte für alle Ihre Antworten, multipliziert mit der Anzahl der Antworten. Höchste Punktzahl gewinnt.
Regeln
- Jede Antwort muss in einer anderen Sprache verfasst sein. Sprachen, die sich nur in der Versionsnummer unterscheiden (z. B. Python 2 und Python 3), werden als gleich angesehen.
- Jede Antwort muss auf der zuletzt gültigen Antwort aufbauen. Das heißt, nehmen Sie das Raster der neuesten Antwort und fügen Sie Ihr Programm ein.
- Um Ihr Programm einzufügen, ersetzen Sie mindestens eines der Leerzeichen (
·
) durch Zeichen Ihrer Wahl. Sie können vorhandene Zeichen aus dem Raster in Ihrer Antwort verwenden, aber Sie dürfen keine von ihnen ändern oder verschieben.
- Sie dürfen insgesamt nicht mehr als 500 Zeichen in alle Ihre Antworten einfügen.
- Alle Zeichen, die Sie einfügen, müssen Teil Ihres Programms sein.
- Ihr Programm besteht möglicherweise nur aus druckbarem ASCII und Zeilenumbrüchen, es gibt jedoch möglicherweise nicht zwei oder mehr aufeinanderfolgende Zeilenumbrüche hintereinander.
- Zeilenumbrüche zählen nicht zu Ihrer Punktzahl.
- Ein vollständiges Programm, nicht nur eine Funktion oder ein Snippet, ist erforderlich.
- Derselbe Benutzer darf nicht zwei aufeinanderfolgende Antworten schreiben.
- Wenn eine Antwort gegen eine Regel verstößt, hinterlasse einen Kommentar. Wenn der Fehler in 30 Minuten nicht behoben ist, sollte er gelöscht werden.
Sprachausschnitt verwendet
Dies ist ein Stack-Snippet von ETHproductions, FryAmTheEggman und Mauris, das die Punktzahlen der Benutzer und die verwendeten Sprachen protokolliert. Es wurde ursprünglich von Martin Büttners erstaunlicher Vorlage kopiert .
Ursprüngliche Bestenliste:
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>
Neue (experimentelle) Version mit geänderter Formel:
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>
Verwenden Sie die folgende Header-Vorlage, um sicherzustellen, dass Ihr Beitrag vom Snippet erkannt wird:
# Language, X characters added
Antworten:
Java, 124 Zeichen hinzugefügt
Solange noch Platz ist!
Das Gitter ist jetzt
Eine Ninja-Bearbeitung wurde durchgeführt und der Code im Raster wurde umgekehrt, da OP angibt, dass der Code rückwärts sein kann. Dann bei der nächsten Antwort nachrüsten
quelle
Mumps, 23 Zeichen hinzugefügt
Entschuldigen Sie erneut, dass Sie die eine Anforderung in der Frage verpasst haben.
Hier ist meine neue Einreichung:
Dies setzt die Variable t auf ein Leerzeichen und liest dann höchstens 50 Zeichen aus der Standardeingabe mit einem Timeout von 20 Sekunden. Schreibt eine neue Zeile, die Variable und dann eine weitere neue Zeile. (Viele Mumps-Terminals werden ein bisschen chaotisch, wenn Sie das nicht tun ...)
Das Raster ist jetzt:
Diese verdammte R-Vorlage machte das Schreiben etwas schwieriger ... :-)
quelle
Beatnik , 29 Zeichen hinzugefügt
Erklärung kommt :)
Das neue Raster
quelle
C, 27 Zeichen hinzugefügt
Jemand erwähnte C, und ich sah, dass es immer noch möglich war.
Neues Gitter:
quelle
??? , 1 Zeichen hinzugefügt
Das Raster ist jetzt:
quelle
Urne , 3 Zeichen hinzugefügt
Das neue Raster:
quelle
Ruby, 9 Zeichen hinzugefügt
Das Raster ist jetzt:
quelle
LISP, 3 Zeichen hinzugefügt
Das neue Raster:
quelle
Perl, 6 Zeichen hinzugefügt
Das Raster ist jetzt:
quelle
Quipu , 3 Zeichen hinzugefügt
Das Katzenprogramm in Quipu besteht aus vier Zeichen:
Ich habe diesen um 90 ° gedreht und einen der Schrägstriche aus dem Rail- Programm wieder verwendet.
Das neue Raster:
quelle
Marbelous , 7 Zeichen hinzugefügt
(Wenn ich richtig verstanden habe, wie Marbelous funktioniert ...)
quelle
00\n]]
hätte es auch getan.Pyth, 1 Zeichen hinzugefügt
Das Raster ist jetzt:
quelle
w__t_
Ich sehe, was Sie dort getan habenPowerShell, 14 Zeichen hinzugefügt
Ich werde nett sein und den Leuten viel mehr Raum zum Atmen geben. :)
Das Gitter ist jetzt
quelle
ALGOL 68, 7 Zeichen hinzugefügt
Das neue Raster:
quelle
LOLCODE , 31 Zeichen hinzugefügt
Rechts von der Mitte, um 90 ° gedreht . Konifizierter sich schön gegen die
-
,und
d
dort. Trotzdem bin ich mir ziemlich sicher, dass ich zwischen Batch-Dateien und PowerShell nicht punktebasiert gewinnen werde. :-)Das Raster ist jetzt:
(Ich habe auch die vierte Zeile von unten korrigiert.)
quelle
Prolog (SWI), 14 Zeichen hinzugefügt
Liest ein einzelnes Zeichen und gibt es aus. Auf Ideone funktioniert dies aber mit Ausgabe an stderr. Mit
swipl
unter Ubuntu wird Folgendes ausgeführt:Wo
X
ist das eingegebene Zeichen und?-
ist eine Eingabeaufforderung. Sie können die Eingabeaufforderung mit Strg-D verlassen.Neues Raster (Code liest von oben nach unten, von rechts nach links in der Nähe der oberen rechten Ecke):
quelle
oOo CODE , 1 Zeichen hinzugefügt
Neues Gitter:
quelle
Labyrinth , 1 Zeichen hinzugefügt
Liest und schreibt ein Zeichen.
Das Gitter ist jetzt
quelle
Beam, 11 Zeichen hinzugefügt
Ein zusätzliches H verhindert, dass es sich wie ein Katzenprogramm verhält. Die
q
undi
werden ignoriert. Ich hätte wahrscheinlich größer werden können, aber das schien ein bisschen zu schummeln.Das Gitter ist jetzt
quelle
ferNANDo , 31 Zeichen hinzugefügt
Das neue Raster:
quelle
Schema, 8 Zeichen hinzugefügt
Das neue Raster:
quelle
Bash, 6 Zeichen hinzugefügt
Das Raster ist jetzt:
quelle
itflabtijtslwi , 5 Zeichen hinzugefügt
Dies ist die Sprache ///, aber mit Benutzereingaben, wenn sie von umgeben sind
GG
. Es wird "benannt", was auch immer zwischen ihnen kommt. Daher spiegelt dies nur das erste Zeichen von STDIN wider. (Da dies nur 1 Zeichen liest, bedeutet der Name mit 2 Zeichen, dass es immer anhält, nachdem Oa durch das ersetzt wurde, was Sie eingegeben haben.)Oben links vertikal von (quer, unten) = (0,1) bis (0,9) hinzugefügt
Das neue Raster:
quelle
GOa
! +1PHP, 24 Zeichen hinzugefügt
Das Raster ist jetzt:
quelle
var_dump($argv);
. Sie könnenprint_r($args)
stattdessen 1 Byte verwenden und speichern.Retina , 1 Zeichen hinzugefügt
Das ist im Wesentlichen
cat
.G
Aktiviert den Grep-Modus, dh das Programm druckt jede Zeile des Programms, die der angegebenen Regex entspricht. Der reguläre Ausdruck ist jedoch leer, sodass jede Zeile übereinstimmt und die gesamte Eingabe an STDOUT zurückgegeben wird.quelle
RunR , 8 Zeichen hinzugefügt
Ein letzter für den Moment
Nah in der Mitte, unten und links hinzugefügt. Das neue Raster ist
quelle
Mathematica, 19 Zeichen hinzugefügt
Neues Gitter:
quelle
Haskell, 16 Zeichen hinzugefügt
Kopiert Standard auf Standard. Der Code beginnt in Zeile 15, Buchstabe 39.
quelle
Ook! , 19 Zeichen hinzugefügt
In der 24. Zeile platziert.
quelle
Oktave / Matlab, 23 Zeichen hinzugefügt
Können wir C rein bekommen? : D
Das Raster ist jetzt:
quelle