Цей виклик буде вести себе більш-менш, як традиційний гольф-код . Єдина відмінність полягає в тому, що замість того, щоб забивати відповіді за їх кількістю символів чи байтів, користувачі призначатимуть ваги різним символам у коментарях і виграє програма з найменшою сукупною вагою.
Виклик
Ваше завдання - написати програму, яка займає рядок і роздруковує форму ромба, де перший символ починається в центрі, а наступні символи займають ортогональні порожні пробіли до набору символів, які були розміщені останніми. Пробіли ( ) будуть використані для оббивки.
Наприклад, введення CAT
може дати результат
T
TAT
TACAT
TAT
T
і ()
вироблять
)
)()
)
і desserts
вироблять
s
sts
strts
strerts
streserts
stressserts
stressesserts
stressedesserts
stressed desserts
stressedesserts
stressesserts
stressserts
streserts
strerts
strts
sts
s
і 9
вироблять 9
.
Деталі
Код може містити лише друковані ASCII та нові рядки. (Дивіться, чому нижче.)
Введення / виведення слід здійснювати через stdin / stdout, або, якщо вони неможливі, використовувати подібні альтернативи.
Ви можете припустити, що вхідний рядок містить лише друкований ASCII (включаючи пробіл).
Стовпці провідних пробілів, що не містять жодної частини алмазного малюнка, не допускаються у висновку. Дозволяється будь-яка кількість та комбінація пробілів пробілів.
Необов'язково, може бути новий проміжний рядок у висновку.
Ви можете редагувати свою відповідь скільки завгодно.
Оцінка балів
Весь код повинен бути написаний, використовуючи лише нові рядки та 95 друкованих символів ASCII:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
(На жаль, вкладки заборонені, оскільки Stack Exchange надає їх як пробіли в кодових блоках.)
Кожен з цих 96 символів має пов’язане з ним значення ваги . За замовчуванням всі ваги - 97.
Оцінка програми - це сума вагових значень для кожного її персонажа. Наприклад, якби програма була, print(4)
а вага для них 4
становила 70, але незмінною для всього іншого, оцінка була б 749 = 97+97+97+97+97+97+70+97
.
Після того як активність у цьому питанні майже не зникає, виграє найнижчий показник балів. У імовірно малоймовірному випадку виграш перемог переходить до найвищої відповіді.
Зміна ваг
Кожен користувач, відповів чи ні, може змінити вагу одного з 96 символів на унікальне значення від 1 до 96. Для цього додайте коментар до цього питання форми #### W -> C ####
, де W - ціле число 1 - 96 і C - символ (як сам, без лапок, без зворотних посилань). Використовуйте \n
замість C для нових рядків і \s
для місця, оскільки Stack Exchange стискає 3 проміжки поспіль. Наведений print(4)
вище приклад мав би коментар #### 70 -> 4 ####
.
Кожен користувач може зробити лише ОДИН коментар, як цей, і він буде дійсним лише в тому випадку, якщо і характер, і значення ваги не були використані в раніше зробленому коментарі. Таким чином, в кінцевому підсумку може бути 96 #### W -> C ####
коментарів, від різних користувачів, всі з різною вагою, присвоєними різним персонажам.
Користувачі можуть видалити власний коментар, якщо захочуть, скинувши вагу своїх персонажів до 97, поки вони чи хтось ще не дасть коментар. Вони також можуть їх редагувати. Коментарі, які не відповідають правилам щодо окремих користувачів / ваги / символів, повинні бути видалені або позначені як "неконструктивні". Загальні коментарі щодо правил та інших речей є прекрасними, але їх слід мінімізувати.
Цей фрагмент стека є офіційним таблицею лідерів цього питання. Він автоматично обчислює бали за всі подані матеріали, збираючи ваги з коментарів кожного разу, коли він запускається. Він не справляється зі зв’язками. Ви також можете використовувати його для перевірки балів, які матиме програма.
Можливо, вам потрібно буде right-click -> Open link in new tab
для посилань.
function compute(){var e=computeScore($("#code").val());$("#score").val(e==-1?"Invalid characters":e)}function computeScore(e){var t=0;for(var n=0;n<e.length;n++){if(weights.hasOwnProperty(e[n])){t+=weights[e[n]]}else{return-1}}return t}function htmlDecode(e){var t=document.createElement("div");t.innerHTML=e;return t.childNodes.length===0?"":t.childNodes[0].nodeValue}function addLeaderboard(){validAnswers.sort(function(e,t){return e.score>t.score});var e=1;var t="";for(var n=0;n<validAnswers.length;n++){var r=validAnswers[n];t+="<tr><td>"+e+"</td><td><a href='"+r.link+"'>"+r.owner.display_name+"</a></td><td>"+r.score+"</td><td>"+r.length+"</td></tr>";if(n+1<validAnswers.length&&validAnswers[n+1].score>r.score){e++}}$("#leaderboard").append(t)}function addAnalytics(){var e="";for(var t in weights){if(weights.hasOwnProperty(t)&&weights[t]!=defaultWeight){e+=(t=="\n"?"\\n":t)+"="+weights[t]+" "}}$("#weights").val(e);var n="";for(var t in usedChars){if(usedChars.hasOwnProperty(t)&&usedChars[t]==false){n+=t=="\n"?"\\n":t}}$("#unusedc").val(n);var r="";for(var t in usedWeights){if(usedWeights.hasOwnProperty(t)&&usedWeights[t]==false){r+=t+" "}}$("#unusedw").val(r);var i="";if(invalidComments.length>0){for(var s=0;s<invalidComments.length;s++){var o=invalidComments[s];i+="<a href='#"+o.link+"'>"+o.owner.display_name+"</a> "}}else{i="none"}$("#comments").html(i);var u="";if(invalidAnswers.length>0){for(var s=0;s<invalidAnswers.length;s++){var a=invalidAnswers[s];u+="<a href='#"+a.link+"'>"+a.owner.display_name+"</a> "}}else{u="none"}$("#answers").html(u)}function checkAnswers(e){for(var t=0;t<e.items.length;t++){var n=e.items[t];var r=answerPattern.exec(n.body);if(r){var i=htmlDecode(r[1]);var s=computeScore(i);if(s==-1){invalidAnswers.push(n)}else{n.length=i.length;n.score=s;validAnswers.push(n)}}else{invalidAnswers.push(n)}}addLeaderboard();addAnalytics()}function checkComments(e){for(var t=0;t<e.items.length;t++){var n=e.items[t];var r=commentPattern.exec(htmlDecode(n.body));if(r){var i=n.owner.user_id;var s=parseInt(r[1]);var o=r[2]=="\\n"?"\n":r[2]=="\\s"?" ":r[2];if(userIDs.hasOwnProperty(i)||!usedWeights.hasOwnProperty(s)||usedWeights[s]||!usedChars.hasOwnProperty(o)||usedChars[o]){invalidComments.push(n)}else{userIDs[i]=true;usedWeights[s]=true;usedChars[o]=true;weights[o]=s}}}$.get(answersURL,checkAnswers)}function refresh(){$.get(commentsURL,checkComments)}questionID=45040;commentsURL="https://api.stackexchange.com/2.2/questions/"+questionID+"/comments?order=asc&sort=creation&site=codegolf&filter=!t)IWLXOkOvAuPe8m2xJrXOknWcw(ZqZ";answersURL="https://api.stackexchange.com/2.2/questions/"+questionID+"/answers?order=desc&sort=activity&site=codegolf&filter=!.FjsvG2LuND(frE*)WTvqQev1.lyu";commentPattern=/^#### (\d+) -> (\\(?:n|s)|[ -~]) ####$/;answerPattern=/<pre><code>((?:\n|.)*?)\n<\/code><\/pre>/;chars="\n !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~";validAnswers=[];invalidAnswers=[];invalidComments=[];userIDs={};usedWeights={};usedChars={};weights={};defaultWeight=chars.length+1;for(var i=0;i<chars.length;i++){usedChars[chars[i]]=false;usedWeights[i+1]=false;weights[chars[i]]=defaultWeight}refresh()
*{font-family:Helvetica,Arial,sans-serif}table{border:3px solid green;border-collapse:collapse}button{font-size:100%}th{background-color:green;color:#fff;padding:6pt}td{border:1px solid green;padding:6pt}.large{font-size:140%}.title{font-weight:700;margin:6pt 0}textarea{font-family:"Courier New";white-space:nowrap;overflow:auto}input[readonly]{background-color:#dcdcdc}.analytics{font-size:90%;padding:4pt 0 0}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><div class='large title'>Leaderboard</div><table id='leaderboard'> <tr> <th>Place</th> <th>Submitter</th> <th>Score</th> <th>Program Length</th> </tr></table><br><div class='title'>Compute Score</div><textarea id='code' rows='5' cols='40' placeholder='paste code here...'></textarea><br><button type='button' onclick='compute()'>Compute</button> Score: <input type='text' id='score' readonly><br><br><div class='title'>Analytics</div><div class='analytics'>Assigned weights: <input type='text' id='weights' readonly></div><div class='analytics'>Unused characters: <input type='text' id='unusedc' readonly> (all weight 97)</div><div class='analytics'>Unused weights: <input type='text' id='unusedw' readonly></div><div class='analytics'>Invalid comments (duplicate user/char/weight): <span id='comments'></span></div><div class='analytics'>Invalid answers (illegal characters or no code block): <span id='answers'><span></div><br><button type='button' onclick='refresh'>Refresh</button>
Щоб ця таблиця лідерів працювала, коментарі повинні бути у точному форматі, описаному вище, а код вашої програми повинен бути у першому багаторядковому кодовому блоці у вашій відповіді ( <pre><code>...</code></pre>
ті). Не використовуйте підсвічування синтаксису, інакше ваш код не буде прочитаний правильно. До оновлення фрагменту може пройти хвилину-дві.
Я не перевірив фрагмент ретельно, але буду стежити за цим, як цей конкурс триває. Якщо ви помітили будь-які помилки, будь ласка, скажіть мені. Ось неміфікована версія:
Майте на увазі, що ця система балів є абсолютно новою та експериментальною. Сподіваємось, Exchange Stack не заперечує, що вона включає багато коментарів. : P
Пов’язаний виклик: надрукуйте цей алмаз