Це виклик, що залежить від відповіді! Порядок відповідей має значення, а ваше точне завдання залежить від останньої відповіді, яка була опублікована. Ви можете сортувати відповіді за найстарішими .
Давайте складемо разом якийсь код! Ось 1920 випадкових (друкованих ASCII) символів. Подумайте про них як про велику купу несортованих частинок головоломки, які все ще знаходяться в коробці:
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
"Підлога", на яку ми спантеличуємо, - це спочатку просто сітка пробілів 96x20 (кодова точка 0x20). Кожна відповідь може переміщатися по сусідніх блоках фрагментів і вибирати до 10 фігур головоломки (символів) та додавати їх до головоломки для створення нової програми. Ця програма повинна надрукувати номер вашої відповіді (пронумерована послідовно, починаючи з 1).
Відповідаючи
Ключове, що потрібно зрозуміти щодо цього виклику, - це те, що одночасно може відповісти лише одна людина, і кожна відповідь залежить від тієї, що перед нею .
Там ніколи не повинно бути дві відповіді з тим же номером N . Якщо двоє людей одночасно відповідають за якийсь N , той, хто відповів пізніше (навіть якщо це декілька секунд різниці), повинен милосердно видалити свою відповідь.
Щоб зробити цей запуск трохи більш плавним, спробуйте дотримуватися наступних кроків, коли публікуєте свою відповідь:
- Переконайтесь, що хтось незалежно перевірив правильність попередньої відповіді (і залишив відповідний коментар).
Візьміть попередній «головоломка підлоги» та «ящик штук». Ви можете вільно переміщувати будь-який сусідній блок символів на підлозі головоломки як одиниця (символи є сусідніми, якщо вони торкаються вздовж горизонтального чи вертикального напрямку). Суміжні блоки неможливо розділити знову. Приклади в сітці 5x4:
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 |
У дійсному прикладі
a
було переміщено на один крок вниз і вправо.df
Блок був переміщений в лівому верхньому кутку.bce
Блок був переміщений вниз 1.g
було перемістити два вгору і один вліво.h
Блок був переміщений весь шлях вліво.
У першому недійсному прикладіdf
було відокремлено. У другому,a
було видалено. По-третє,df
був повернутий.Далі вийміть щонайменше 1 та до 10 символів із "поля штук" та виберіть стільки пробілів на "підлозі головоломки", які ви заміните цими символами. Це ваша подана програма. Будь ласка, включіть у свою відповідь як нову "головоломку", так і "коробку штук".
Опублікуйте свою відповідь у такому форматі:
# 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]
де
N
номер вашої відповіді.Це абсолютно важливо для виклику!Я запропонував інструмент приладної панелі для завдання, щоб допомогти в бухгалтерії, і він спирається на вищенаведений шаблон. (Дивіться внизу публікації.)
- Будь ласка, включіть вертикальні смуги з боків підлоги головоломки, оскільки в іншому випадку Stack Exchange не відображатиме порожні рядки. Ці два стовпчики ніколи не вважаються частиною коду.
- Тепер інший користувач повинен переглянути ваше подання та залишити коментар "Правильність перевірено", якщо ваша відповідь відповідає всім правилам (див. Нижче). Якщо цього не відбувається, вони повинні залишити коментар із зазначенням будь-яких недоліків. Потім у вас є 15 хвилин, щоб вирішити ці проблеми. Якщо ви цього не зробите, ваша відповідь буде визнана недійсною, її слід видалити, а хтось ще може опублікувати відповідь на попередній. (Якщо це станеться, ви можете будь-коли надіслати нову відповідь.)
Ці норми можуть здатися досить суворими, але вони необхідні, щоб уникнути неправдивих відповідей десь у ланцюжку.
Правила
- Користувач може надіслати лише одну відповідь протягом 4 годин.(Це для того, щоб користувачі не могли постійно переглядати питання і відповідати якомога більше.)
- Користувач може не надсилати дві відповіді поспіль. (наприклад, оскільки я подав відповідь 1, я не можу відповісти 2, але міг зробити 3).
- Жодна мова не може використовуватися більше одного разу! Різні версії однієї мови вважаються однією і тією ж мовою. Мови вважаються відмінними, якщо їх традиційно називають двома різними іменами. (Тут можуть бути деякі неоднозначності, але не дозволяйте це зіпсувати змагання.)
- Не редагуйте перевірені відповіді.
Якщо помилка буде виявлена раніше в ланцюжку (тобто після опублікування відповідей, що надаються), відповідь, що порушує право, слід видалити. Однак усі відповіді, опубліковані з того часу, не слід змінювати, щоб відобразити це.
Ваша програма повинна друкувати
N
номер вашої відповіді до STDOUT або найближчої альтернативи. Вона повинна бути повноцінною програмою і не повинна припускати середовища REPL.- Ви можете або не можете надрукувати останній новий рядок.
Нехай М буде кількість блоків ви перейшли на ваш відповідь (незалежно від того , як далеко) і P число символів , які ви додали до підлоги головоломки, оцінка вашої відповіді буде 10 + N - M - P . Як приклад 5x4, якщо ваша відповідь змінила підлогу головоломки наступним чином
|a bc| |a ij | | d e | --> | d bc| | f g| | f eg| | h | | h k|
ваш приводу буде 10 + N - 2 - 3 = N + 5 , оскільки два блоки були переміщені (
h
іbce
) , і були додані три символи (i
,j
іk
).Переможець стане той користувач, який набере найбільшу кількість балів за свої відповіді. У разі вирівнювання виграє користувач із останньою відповіддю. Я прийму останню відповідь переможця.
- У тому випадку, коли всі символи будуть використані, виклик закінчується.
Панель приладів
Ось невеликий інструмент інформаційної панелі, який повинен допомогти у необхідній бухгалтерії для такого типу викликів.
Він відображає поточний статус виклику - зокрема, якщо є суперечливі відповіді, якщо відповідь потрібно перевірити, або якщо наступну відповідь можна опублікувати.
Він також створює список усіх використовуваних мов, а також таблицю лідерів усіх користувачів. Будь ласка, дотримуйтесь формату відповідей вище, щоб на інформаційній панелі можна було прочитати відповідні рядки з ваших відповідей. Інакше ви не можете бути включені до таблиці лідерів.
Будь ласка, дайте мені знати (в ідеалі в чаті ), якщо ви помітили будь-які помилки або маєте якісь ідеї, як можна покращити корисність інструменту.
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>
Корисні сценарії
Ось два сценарії CJam для вашої зручності. Ви можете запустити їх в онлайн-перекладачі .
- Щоб видалити перший і останній стовпчик із поверху головоломки (щоб отримати фактичний код), вставте його в STDIN і запустіть
qN/1f>Wf<N*
. - Щоб наклеїти код на прямокутник 96x20 і додати колонки вертикальних смуг навколо нього, запустіть
qN/La20*+20<{96S*+96<'|\+'|+}%N*
свій код. Щоб дізнатися, які символи були вилучені з поля штук між двома відповідями, вставити їх обох у STDIN (без порожнього рядка між ними) та запустіть
qS-N/20/{:+}%94,\f{\33+c_@\f/:,~-_0<{N"Added character: "@;@N}{*}?}
Він також покаже, чи було додано символів (не скільки, хоча).
Якщо хтось хоче повторно застосувати їх як Stack Snippets, я радий додати їх до цієї публікації.