Bu, cevaba bağlı bir mücadeledir! Yanıtların sırası önemlidir ve tam göreviniz gönderilen son cevaba bağlıdır. Cevapları en eskisine göre sıralamak isteyebilirsiniz .
Bazı kodları bir araya getirelim! İşte 1920 rastgele (yazdırılabilir ASCII) karakter. Onları hala kutuda bulunan sıralanmamış bilmecenin parçalarının büyük bir yığını olarak düşünün:
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
Şaşkın olduğumuz "taban" başlangıçta sadece 96x20 boşlukluk bir ızgaradır (0x20 kod noktası). Her cevap, bitişik parça blokları etrafında hareket edebilir ve en fazla 10 bulmaca parçası (karakter) seçebilir ve yeni bir program oluşturmak için bunları bulmacanın içine ekleyebilir. Bu program yanıtınızın numarasını yazdırmalıdır (1'den başlayarak sırayla numaralandırılmıştır).
cevaplama
Bu zorluk hakkında anlaşılması gereken en önemli şey , bir kerede yalnızca bir kişinin cevap verebilmesidir ve her cevap bir önceki yanıtın kendisine bağlıdır. .
Aynı sayıda N ile asla iki cevap olmamalıdır . İki kişi aynı anda bazı N için cevap verirse , nezaketle onların cevabını silmelisiniz (bir kaç saniye fark bile) daha sonra cevap one.
Bunun daha düzgün çalışmasını sağlamak için cevabınızı gönderirken aşağıdaki adımlara bağlı kalmaya çalışın:
- Birisinin önceki yanıtın doğruluğunu bağımsız olarak doğruladığından (ve karşılık gelen bir yorum bıraktığından) emin olun.
Önceki "bulmaca zemini" ve "parça kutusunu" alın. Bir bulmaca olarak bulmaca tabanındaki herhangi bir bitişik blok bloğunu serbestçe hareket ettirebilirsiniz (karakterler yatay veya dikey yönde dokunurlarsa bitişiktir). Bitişik bloklar tekrar bölünemez. 5x4 ızgaraya örnekler:
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 |
Geçerli örnekte,
a
bir adım aşağı ve sağa taşındı.df
Blok sol üst taşındı.bce
Blok 1. The aşağı taşındıg
hareket ettiremeyecek soldan iki yukarı ve bir tane idi.h
Blok tamamen sola taşındı.
İlk geçersiz örnekdf
ayrıldı. İkincisi,a
kaldırıldı. Üçüncüsü,df
döndürüldü.Daha sonra, "parça kutusundan" en az 1 ve en fazla 10 karakter çıkarın ve "bulmaca zemini" üzerinde bu karakterlerle değiştireceğiniz birçok boşluğu seçin. Gönderdiğiniz program budur. Lütfen cevabınıza hem yeni "bulmaca zemini" hem de "parça kutusu" nu ekleyin.
Cevabınızı aşağıdaki biçimde gönderin:
# 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]
nerede
N
cevabınızın numarası .Bu meydan okuma için kesinlikle çok önemlidir!Defter tutma ile ilgili meydan okuma için bir pano aracı sağladım ve yukarıdaki şablona dayanıyor. (Yazının altına bakın.)
- Lütfen bulmaca zemininin kenarlarına dikey çubuklar ekleyin, aksi takdirde Yığın Değişimi boş çizgiler görüntülemez. Bu iki sütun asla kodun bir parçası sayılmaz.
- Başka bir kullanıcı şimdi gönderinizi incelemeli ve yanıtınız tüm kurallara uyuyorsa "Doğrulama doğrulandı" yorumunu yapmalıdır (aşağıya bakın). Olmazsa, kusurları gösteren bir yorum bırakmalıdırlar. Bu sorunları gidermek için 15 dakikanız var . Bunu yapmazsanız, cevabınız geçersiz sayılacaktır, silinmelidir ve bir başkası bir öncekine takip cevabı gönderebilir. (Bu durumda, istediğiniz zaman yeni bir yanıt gönderebilirsiniz.)
Bu düzenlemeler oldukça katı görünebilir, ancak zincirin bir yerinde geçersiz cevaplardan kaçınmak gerekir.
Kurallar
- Kullanıcı her 4 saatlik periyotta yalnızca bir cevap gönderebilir.(Bu, kullanıcıların soruyu sürekli izlemesini ve mümkün olduğunca yanıt vermesini önlemektir.)
- Bir kullanıcı arka arkaya iki cevap gönderemez. (örneğin, 1. yanıtı gönderdiğimden, 2. yanıtı yapamam, ancak 3. yapabilirim.)
- Hiçbir dil bir kereden fazla kullanılamaz! Aynı dilin farklı sürümleri aynı dil olarak sayılır. Diller geleneksel olarak iki farklı adla çağrıldıklarında farklı sayılır. (Burada bazı belirsizlikler olabilir, ancak yarışmayı mahvetmesine izin vermeyin.)
- Doğrulanmış cevapları düzenlemeyin.
Eğer zincirde daha önce bir hata bulunursa (yani takip cevapları gönderildikten sonra), rahatsız edici cevap silinmelidir. Ancak , sonra yayınlanan tüm cevapları gerekir değil bu yansıtacak şekilde değiştirilmelidir.
Programınızın yazdırması gerekiyor
N
yanıt sayısını, STDOUT'a veya en yakın alternatife gerekir. Tam bir program olmalı ve bir REPL ortamı kabul etmemelidir.- Sondaki satırsonu yazdırabilir veya yazamayabilirsiniz.
Let M sayısı olmak blokları ve (ne kadar olursa olsun) Eğer cevap taşındı P Eğer bulmaca zemine eklenen karakter sayısı, Cevabınız puanı olacak M - - P 10 + N . 5x4 örneği olarak, cevabınız bulmaca zemini aşağıdaki gibi değiştirdiyse
|a bc| |a ij | | d e | --> | d bc| | f g| | f eg| | h | | h k|
skor olur 3 = N + 5 - 2 - 10 + N iki blok taşınan (nedeniyle,
h
vebce
) ve üç karakter eklendi (i
,j
vek
).Kazanan cevaplarında en fazla puanı toplayan kullanıcı olacaktır. Beraberlik durumunda, en son cevabı veren kullanıcı kazanır. Kazananın son cevabını kabul edeceğim.
- Tüm karakterlerin tükenme olasılığı düşükse, sorun sona erer.
Gösterge Paneli
İşte bu tür bir meydan okuma için gerekli defter tutmaya yardımcı olması gereken küçük bir Gösterge Tablosu aracı.
Sorunun mevcut durumunu görüntüler - özellikle de çelişkili cevaplar varsa, bir cevabın doğrulanması gerekiyorsa veya bir sonraki cevap gönderilebiliyorsa.
Ayrıca, kullanılan tüm dillerin bir listesini ve tüm kullanıcıların lider panosunu üretir. Lütfen yukarıdaki yanıt biçimine sadık kalın, böylece gösterge tablosu yanıtlarınızdan ilgili dizeleri okuyabilir. Aksi takdirde skor tablosuna dahil edilemeyebilirsiniz.
Herhangi bir hata tespit ederseniz veya aracın yararlılığının nasıl geliştirilebileceği konusunda bazı fikirleriniz varsa lütfen bana bildirin ( ideal olarak sohbet sırasında ).
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>
Yararlı komut dosyaları
Size kolaylık sağlamak için iki CJam kodu bulunmaktadır. Onları çevrimiçi yorumlayıcıda çalıştırabilirsiniz .
- İlk ve son sütunu bulmaca tabanından kaldırmak için (gerçek kodu almak için) STDIN'e yapıştırın ve çalıştırın
qN/1f>Wf<N*
. - Kodunuzu 96x20 dikdörtgene yerleştirmek ve çevresine dikey çubuk sütunları eklemek
qN/La20*+20<{96S*+96<'|\+'|+}%N*
için kodunuzda çalıştırın . İki yanıt arasındaki parça kutusundan hangi karakterlerin kaldırıldığını bulmak için her ikisini de STDIN'e (arada boş bir çizgi olmadan) yapıştırın ve çalıştırın
qS-N/20/{:+}%94,\f{\33+c_@\f/:,~-_0<{N"Added character: "@;@N}{*}?}
Ayrıca karakterlerin eklenip eklenmediğini de gösterir (kaç tane olmasa da).
Birisi bunları Yığın Parçacıkları olarak yeniden uygulamak istiyorsa, bunları bu gönderiye eklemekten mutluluk duyuyorum.