Dies ist eine antwortabhängige Herausforderung! Die Reihenfolge der Antworten ist wichtig, und Ihre genaue Aufgabe hängt von der zuletzt veröffentlichten Antwort ab. Möglicherweise möchten Sie die Antworten nach den ältesten sortieren .
Lassen Sie uns einen Code zusammensetzen! Hier sind 1920 zufällige (druckbare ASCII) Zeichen. Betrachten Sie sie als einen großen Haufen unsortierter Puzzleteile, die sich noch in der Schachtel befinden:
L-^=v^Ej2tW8OxNOIecSt4m}tji2O%YRJ;PJ!M|0*oO77$*Rs&2*<c"KI7e%FY^?I=];Y@`x)u)IBk%_a#<E6<yv5O*$kL):
KNGq)2Wa%b)j."(6U|{[UY@`lrCSJ`u0RHX!1z7f,v}n=GvRgkrEZ=YT:4H44bz]iC<](:+FF?Ay'vX~h5QMF)0vaXk1sk@p
Zj).{+l;PBKHABvEP%FnSw>u<_-4B^A>I8Kay&5]vXZJ{fCF]UVZ<!ZpOI$7\Y%`@:%H3wPsX-`/l]ZZ?Q/d`\M<T@'t]zip
{[ovg:6EpCT&'+vU4Heb^;}0AV|?<}M0rAH/^DL"RkT~%$[VUlM]-&We4(P=66},hL~;a`:$'yty.W[g2OWcL~b:Ryj0*eN<
;&-n[F1F=oh0k[NI!xS"]pA@Y;K}'=ekG5yda8J$+`N;:FIx:l,f_LT@sV[]HF@2*vl?|q"GL1j&%e(CyYPqY%3W|@`z}]bp
4_'1Nx{"G2&j6$UWt_#%`sTt2xC}s1P8J<gV24_RWge/aMuyVOjz=zS!1i2s@`Q#@^~@W/k@.YLbKxS:g9?J^p;7ju?B\yC5
x,ZApKS5G4}kx_iM)f4/|su>=[{XSV#{,j5Qn3U.v5LF;HXs%DYm4'+efmU;\}f6j$SFCRC`Gsd37:'3$q=bs;lvsW0Yj^:-
I[94@I|.IpR=}4KB4Z0G4>8PR29'L?n\gk,*4X[-%T`\FC)jj0jl_x<xL8E:G2-"3tT8&E}"sE+SH[7jR%@V)a{!m8K>.rAO
2[dq7GX9nrz8p4}^2mn@q|dF%<.Tl8)Dk?O.<UoE(a*k_=4+u!h$^bVd:$jS#EHFh@Z=y=ib^~/~lEJ^SQ3E_t#&^IOov7v8
~j#I#OHgxg{DZDyCsq-(GVq}HbiG,JV?eJ~5wJ;bSt@;3LI!2(6gIT92>}`_dw;YF@ccTIEz\Gu@2(}J2I1"S{R(2niIYPp9
8A3iiP[*!SH2*SN8'`V?w4Ufx2H*Az%{}FlUdH31TJ5{:ge^N91^;9Gj`Uqf'$_|8P"kHR1w.(ASwmN)U-~q"[XcWbqPnns=
d.ZoPJ}$Xc2lA>HN28`(d0y+UAr*sQ=?KE07=\FsVN(#?&hRabS%BVI#<`O$o#4x5ZFFLGDcA4t?&Eh~Z$oBWwNSNv`^;vO'
2&9egng~L#\QkfMG?S/n@%-VA[?f9K&3"V%P#Sv0!D<,GV:Z;3c&zFe^k&^0b7fAjvrbMc^Lq7k$h=YL<h7<0\NK>~Q=uUv)
4cI$.'b-RVS-=rom:=8QR=c>9am-^5F[XGv>E/>|]~\']3{r{kTc?ee1v=;I7]52#NE)~A;}!z>5?hi{5<9FtWH6{VO_Y-Jy
Mw>{l8n#mD,kl'8cG^.7sy=QqU-3~SKGs5(.Ta]:-Vfr'NS$o*q:w6e$&7spk3{CFT'l_hGY0-0Xui*5i^0^fO@6?2IdCn_C
lPKaJ6]0t!u>v8<d'Vby]8kEHh04p(YI)&7w82BrGB3PkI,s+%7ux5)gau`G!8F8hLa4[lfD55Xf3Hqy*-K,?;2'fxH3JWYE
Z.[N`:[K:CY@TzKX4TMXsm{Xbd:B3)Gy[mlwnC$>)z`:k=C\0ho/v{57#+2,*%]>p~vI2^C:2DebJR>.ESw^wd2N<~]O9sOQ
`_yvIw&Ryf%JgT@W(G1wfU3.4G3U}x1jKJzJY\S9n$2~P;F}*eT9UXcTNBTrTs>~0v_Oi.y8ofX6i5u$;'^"q][QhTb*gO[U
n'R0"v1r+9fv;5G7Bg=D:c*a=1@[}7}dYOO{Mz2&@6`jnNq.QcBDM9Dd=R.*=MqZ93#'{AJJFqx<{qb':B!H8ig1L%T\Vuc"
(h$i3`,scX'hqpbw"=nY`*Lu:h1wR{+-`\^3cQkIWfq)3?&p;~pvDW$o7\O|R6rB2{PX.s#G6A.s<OA_,TI_b*&lO@L3KrQv
Der "Boden", auf dem wir rätseln, besteht zunächst nur aus einem 96x20-Raster von Leerzeichen (Codepunkt 0x20). Jede Antwort kann sich um benachbarte Teileblöcke bewegen und bis zu 10 Puzzleteile (Charaktere) auswählen und dem Puzzle hinzufügen, um ein neues Programm zu erstellen. Dieses Programm muss die Nummer Ihrer Antwort ausgeben (fortlaufend nummeriert, beginnend mit 1).
Antworten
Das Wichtigste an dieser Herausforderung ist, dass immer nur eine Person antworten kann und jede Antwort von der vorherigen abhängt .
Es sollte niemals zwei Antworten mit der gleichen Nummer N geben . Wenn zwei Personen gleichzeitig auf ein N antworten , sollte derjenige, der später antwortet (auch wenn es ein paar Sekunden Unterschied sind), seine Antwort gnädig löschen.
Versuchen Sie, die folgenden Schritte einzuhalten, wenn Sie Ihre Antwort veröffentlichen, um den Vorgang etwas reibungsloser zu gestalten:
- Stellen Sie sicher, dass jemand die Richtigkeit der vorherigen Antwort unabhängig überprüft hat (und einen entsprechenden Kommentar hinterlassen hat).
Nehmen Sie den vorherigen "Puzzle-Boden" und "Schachtel mit Stücken". Sie können jeden benachbarten Zeichenblock auf dem Puzzle-Boden als Einheit frei bewegen (Zeichen sind benachbart, wenn sie sich in horizontaler oder vertikaler Richtung berühren). Benachbarte Blöcke können nicht erneut aufgeteilt werden. Beispiele in einem 5x4-Raster:
Last answer: Valid: Invalid: |a bc| |d g | |a bc| | bc | |a bc| | d e | |fa bc| |d e | -or- |d e | -or- | e | | f g| | e | | f g| |f g | |df g | | h | |h | | h | | h | | h |
Im gültigen Beispiel
a
wurde eine Stufe nach unten und rechts verschoben. Derdf
Block wurde nach links oben verschoben. Derbce
Block wurde um 1 nach unten verschoben. Der Block wurdeg
um 2 nach oben und einer nach links verschoben. Derh
Block wurde ganz nach links verschoben.
Im ersten ungültigen Beispieldf
wurde getrennt. In der zweitena
wurde entfernt. Im drittendf
wurde gedreht.Entfernen Sie als nächstes mindestens 1 und bis zu 10 Zeichen aus der "Schachtel mit Stücken" und wählen Sie so viele Leerzeichen auf dem "Puzzle-Boden", die Sie durch diese Zeichen ersetzen. Dies ist Ihr eingereichtes Programm. Bitte geben Sie in Ihrer Antwort sowohl den neuen "Puzzle-Boden" als auch die "Schachtel mit Stücken" an.
Veröffentlichen Sie Ihre Antwort in folgendem Format:
# N. [Language], [number of blocks moved], [number of pieces added] [grid that is your program] ### Remaining pieces: [grid of remaining characters] [notes, explanation, observations, whatever]
Wo
N
ist die Nummer Ihrer Antwort?Dies ist absolut wichtig für die Herausforderung! Ich habe ein Dashboard-Tool für die Herausforderung bereitgestellt, um die Buchhaltung zu vereinfachen, und es basiert auf der obigen Vorlage. (Siehe unten im Beitrag.)
- Bitte fügen Sie die vertikalen Balken an den Seiten des Puzzle-Bodens ein, da ansonsten in Stack Exchange keine leeren Zeilen angezeigt werden. Diese beiden Spalten dürfen niemals als Teil des Codes betrachtet werden.
- Ein anderer Benutzer sollte nun Ihre Eingabe überprüfen und einen Kommentar "Richtigkeit überprüft" hinterlassen, wenn Ihre Antwort allen Regeln entspricht (siehe unten). Wenn dies nicht der Fall ist, sollten sie einen Kommentar hinterlassen, der auf Mängel hinweist. Sie haben dann 15 Minuten Zeit , um diese Probleme zu beheben. Wenn Sie dies nicht tun, wird Ihre Antwort als ungültig erachtet und sollte gelöscht werden. Anderenfalls kann eine Antwort auf die vorherige Antwort gesendet werden. (In diesem Fall können Sie jederzeit eine neue Antwort einreichen.)
Diese Vorschriften mögen ziemlich streng erscheinen, aber sie sind notwendig, um ungültige Antworten irgendwo in der Kette zu vermeiden.
Die Regeln
- Ein Benutzer kann nur eine Antwort pro 4 Stunden senden. (Dies soll verhindern, dass Benutzer die Frage ständig beobachten und so oft wie möglich beantworten.)
- Ein Benutzer darf nicht zwei Antworten hintereinander übermitteln. (zB seit ich Antwort 1 eingereicht habe, kann ich Antwort 2 nicht tun, aber ich könnte 3 tun.)
- Keine Sprache darf mehrmals verwendet werden! Verschiedene Versionen derselben Sprache zählen als dieselbe Sprache. Sprachen gelten als verschieden, wenn sie traditionell mit zwei verschiedenen Namen bezeichnet werden. (Es mag hier einige Unklarheiten geben, aber lass das den Wettbewerb nicht ruinieren.)
- Bearbeiten Sie keine verifizierten Antworten.
Sollte ein Fehler früher in der Kette entdeckt werden (dh nachdem die Folgeantworten gepostet wurden), sollte die beleidigende Antwort gelöscht werden. Allerdings sind alle Antworten , die da sollte geschrieben wurden nicht geändert werden , um dies zu reflektieren.
Ihr Programm muss
N
die Nummer Ihrer Antwort an STDOUT oder die nächstgelegene Alternative senden. Es muss ein vollständiges Programm sein und darf keine REPL-Umgebung annehmen.- Möglicherweise drucken Sie eine nachgestellte Zeile oder nicht.
Lassen M die Anzahl der sein Blöcke Sie für Ihre Antwort bewegt (egal wie weit) und P die Anzahl der Zeichen , die Sie des Rätsels Boden hinzugefügt, wird die Punktzahl Ihrer Antwort sein 10 + N - M - P . Als 5x4 Beispiel, wenn Ihre Antwort den Rätselboden wie folgt geändert hat
|a bc| |a ij | | d e | --> | d bc| | f g| | f eg| | h | | h k|
Ihre Punktzahl wäre 10 + N - 2 - 3 = N + 5 , da zwei Blöcke verschoben (
h
undbce
) und drei Zeichen hinzugefügt (i
,j
undk
) wurden.Der Gewinner ist der Benutzer, der in seinen Antworten die meisten Punkte gesammelt hat. Bei Stimmengleichheit gewinnt der Benutzer mit der neuesten Antwort. Ich werde die letzte Antwort des Gewinners akzeptieren.
- In dem unwahrscheinlichen Fall, dass alle Charaktere aufgebraucht sind, endet die Herausforderung.
Instrumententafel
Hier ist ein kleines Dashboard-Tool, das bei der notwendigen Buchhaltung für diese Art von Herausforderung helfen soll.
Es zeigt den aktuellen Status der Herausforderung an - insbesondere, wenn es widersprüchliche Antworten gibt, wenn eine Antwort überprüft werden muss oder wenn die nächste Antwort veröffentlicht werden kann.
Außerdem wird eine Liste aller verwendeten Sprachen sowie eine Bestenliste aller Benutzer erstellt. Bitte halten Sie sich an das obige Antwortformat, damit das Dashboard die relevanten Zeichenfolgen aus Ihren Antworten auslesen kann. Andernfalls werden Sie möglicherweise nicht in die Bestenliste aufgenommen.
Bitte lassen Sie mich ( idealerweise im Chat ) wissen, wenn Sie Fehler entdecken oder Ideen haben, wie die Nützlichkeit des Tools verbessert werden könnte.
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 commentsUrl(e,t){return"http://api.stackexchange.com/2.2/answers/"+e+"/comments?page="+t+"&pagesize=100&order=asc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){$.ajax({url:answersUrl(page++),method:"get",dataType:"jsonp",crossDomain:true,success:function(e){answers.push.apply(answers,e.items);if(e.has_more)getAnswers();else{page=1;getFinalComments()}}})}function getFinalComments(){answers=answers.filter(shouldHaveHeading);answers=answers.filter(shouldHaveScore);console.log(answers);$.ajax({url:commentsUrl(answers[0].answer_id,page++),method:"get",dataType:"jsonp",crossDomain:true,success:function(e){comments.push.apply(comments,e.items);if(e.has_more)getAnswers();else process()}})}function shouldHaveHeading(e){var t=false;try{t|=/^(#|<h).*/.test(e.body_markdown);t|=["-","="].indexOf(e.body_markdown.split("\n")[1][0])>-1}catch(n){}return t}function shouldHaveScore(e){var t=false;try{t|=HEADER_REG.test(e.body_markdown.split("\n")[0])}catch(n){}return t}function findDuplicates(e){var t=false;var n={};e.forEach(function(e){var r=e.body_markdown.split("\n")[0].match(NUMBER_REG)[0];if(n[r])t=t||r;n[r]=true});return t}function hasBeenVerified(e,t){var n=false;t.forEach(function(t){n|=/correctness verified/i.test(t.body_markdown)&&e!=t.owner.user_id});return n}function userTimedOut(e){return NOW-e.creation_date*1e3<MSEC_PER_ANSWER}function getAuthorName(e){return e.owner.display_name}function getAnswerScore(e,t,n){e=parseInt(e);t=parseInt(t);n=parseInt(n);return 10+e-t-n}function process(){$("#last-user").append(answers[0].owner.display_name);var e=answers.slice(1).filter(userTimedOut).map(getAuthorName).join(", ");if(e)$("#timed-out-users").append(e);else $("#timed-out-notice").hide();var t=answers[0].body_markdown.split("\n")[0].match(NUMBER_REG)[0];var n=findDuplicates(answers);if(n){var r=$("#status-conflict-template").html();$("#challenge-status").append(r.replace("{{NUMBER}}",n));$("#challenge-status").addClass("conflict")}else if(!hasBeenVerified(answers[0].owner.user_id,comments)){var r=$("#status-verification-template").html();$("#challenge-status").append(r.replace("{{NUMBER}}",t));$("#challenge-status").addClass("verification")}else{var r=$("#status-next-template").html();$("#challenge-status").append(r.replace("{{NUMBER}}",t).replace("{{NEXT}}",parseInt(t)+1));$("#challenge-status").addClass("next")}var i={};var s={};var o=[];answers.forEach(function(e){var t=e.body_markdown.split("\n")[0];var n=$("#answer-template").html();var r=t.match(HEADER_REG)||[0,-1,"",0,0];var u=r[1];var a=r[2];var f=r[3];var l=r[4];var c=getAnswerScore(u,f,l);var h=getAuthorName(e);n=n.replace("{{NAME}}",h).replace("{{NUMBER}}",u).replace("{{LANGUAGE}}",a).replace("{{MOVED}}",f).replace("{{ADDED}}",l).replace("{{SCORE}}",c).replace("{{LINK}}",e.share_link);n=$(n);$("#answers").append(n);i[h]=(i[h]||0)+c;s[h]=(s[h]||0)+1;o.push({lang:a,link:e.share_link})});var u=[];for(var a in i)if(i.hasOwnProperty(a)){u.push({name:a,numAnswers:s[a],score:i[a]})}u.sort(function(e,t){return t.score-e.score});var f=1;u.forEach(function(e){var t=$("#user-template").html();t=t.replace("{{NAME}}",e.name).replace("{{NUMBER}}",f++).replace("{{COUNT}}",e.numAnswers).replace("{{SCORE}}",e.score);t=$(t);$("#users").append(t)});o.sort(function(e,t){return e.lang.localeCompare(t.lang)});o.forEach(function(e){var t=$("#lang-template").html();t=t.replace("{{LANGUAGE}}",e.lang).replace("{{LINK}}",e.link);t=$(t);$("#lang-list").append(t)})}var QUESTION_ID=44966;var ANSWER_FILTER="!*cCFgu5yS6BFQP8Z)xIZ.qGoikO4jB.Ahv_g-";var COMMENT_FILTER="!)Q2B_A497Z2O1kEH(Of5MUPK";var HOURS_PER_ANSWER=4;var MSEC_PER_ANSWER=HOURS_PER_ANSWER*60*60*1e3;var NOW=Date.now();var answers=[],comments=[],page=1;getAnswers();var NUMBER_REG=/\d+/;var HEADER_REG=/(\d+)[.]\s*([^,]*[^,\s])\s*,[^,\d]*(\d+)[^,\d]*,[^,\d]*(\d+)/
body { text-align: left !important} #challenge-status { font-weight: bold; padding: 10px; width: 800px; } #blocked-users { padding: 10px; width: 800px; } .conflict { background: #994343; color: white; } .verification { background: #FFDB12; } .next { background: #75FF6E; } #last-user, #timed-out-users { font-weight: bold; } #answer-list { padding: 10px; width: 350px; float: left; } #leaderboard { padding: 10px; width: 280px; float: left; } #languages { padding: 10px; width: 130px; float: left; } table thead { font-weight: bold; } 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="challenge-status"> </div> <div id="blocked-users"> User <span id="last-user"></span> has posted the last answer, and may not post the next one. <div id="timed-out-notice"><span id="timed-out-users"></span> have answered within the last four hours and may not answer again yet. (If a user appears in this list twice, they must have answered twice within four hours!)</div> </div> <div id="answer-list"> <h2>List of Answers (newest first)</h2> <table class="answer-list"> <thead> <tr><td>No.</td><td>Author</td><td>Language</td><td>M</td><td>P</td><td>Score</td></tr> </thead> <tbody id="answers"> </tbody> </table> </div> <div id="leaderboard"> <h2>Leaderboard</h2> <table class="leaderboard"> <thead> <tr><td>No.</td><td>User</td><td>Answers</td><td>Score</td></tr> </thead> <tbody id="users"> </tbody> </table> </div> <div id="languages"> <h2>Languages</h2> <table class="languages"> <tbody id="lang-list"> </tbody> </table> </div> <table style="display: none"> <tbody id="answer-template"> <tr><td>{{NUMBER}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{MOVED}}</td><td>{{ADDED}}</td><td>{{SCORE}}</td><td><a href="{{LINK}}">Link</a></td></tr> </tbody> </table> <table style="display: none"> <tbody id="user-template"> <tr><td>{{NUMBER}}</td><td>{{NAME}}</td><td>{{COUNT}}</td><td>{{SCORE}}</td></tr> </tbody> </table> <table style="display: none"> <tbody id="lang-template"> <tr><td><a href="{{LINK}}">{{LANGUAGE}}</a></td></tr> </tbody> </table> <div id="status-conflict-template" style="display: none"> There is more than one answer with number {{NUMBER}}!<br> Please resolve this conflict before posting any further answer. </div> <div id="status-verification-template" style="display: none"> Answer {{NUMBER}} has not been verified!<br> Please review the answer and post a comment reading "Correctness verified." on the answer if it is valid. Note that this has to be done by a different user than the author of the answer! </div> <div id="status-next-template" style="display: none"> Answer {{NUMBER}} has been verified!<br> You may now post answer {{NEXT}}. </div>
Nützliche Skripte
Hier sind zwei CJam-Skripte für Ihre Bequemlichkeit. Sie können sie im Online-Interpreter ausführen .
- Um die erste und letzte Spalte vom Puzzle-Boden zu entfernen (um den tatsächlichen Code zu erhalten), fügen Sie ihn in STDIN ein und führen Sie ihn aus
qN/1f>Wf<N*
. - Führen Sie den Code aus, um den Code in ein 96 x 20-Rechteck einzufügen und die Spalten mit vertikalen Balken um das Rechteck herum hinzuzufügen
qN/La20*+20<{96S*+96<'|\+'|+}%N*
. Um herauszufinden, welche Zeichen zwischen zwei Antworten aus dem Kästchen entfernt wurden, fügen Sie beide in STDIN ein (ohne eine leere Zeile dazwischen) und führen Sie den Befehl aus
qS-N/20/{:+}%94,\f{\33+c_@\f/:,~-_0<{N"Added character: "@;@N}{*}?}
Es wird auch angezeigt, ob Zeichen hinzugefügt wurden (jedoch nicht wie viele).
Wenn jemand diese als Stack-Snippets neu implementieren möchte, füge ich sie gerne diesem Beitrag hinzu.