প্রথাগত Tetris , সেখানে 7 স্বতন্ত্র tetromino ইট, প্রতিটি একটি চিঠি তার আকৃতি অনুরূপ দ্বারা প্রকাশ।
#
# # #
# ## # # ### ## ##
# ## ## ## # ## ##
I O L J T Z S
এই ইটগুলির বিন্যাসগুলি বিবেচনা করুন যা কিছু শক্ত inte এইচটি আয়তক্ষেত্র তৈরি করতে পারে, কিছু ইতিবাচক পূর্ণসংখ্যার জন্য ডাব্লু এবং এইচ উদাহরণস্বরূপ, 2 আই, 1 এল, 1 জে, 2 টি এবং 1 এস ব্যবহার করে একটি 7 7 4 আয়তক্ষেত্র পারে তৈরি করা:
IIIITTT
LIIIITJ
LTTTSSJ
LLTSSJJ
একই ইটগুলি পুনরায় সাজানো যেতে পারে (চলন্ত এবং ঘোরানোর মাধ্যমে তবে উল্টানো নয় ) ভিন্ন 7 ating 4 প্যাটার্নে:
IJJTLLI
IJTTTLI
IJSSTLI
ISSTTTI
এখন প্রথম ব্যবস্থাটির জায়গায় কোডের একটি আয়তক্ষেত্রাকার ব্লক ব্যবহার করে বিবেচনা করুন। উদাহরণস্বরূপ পাইথন 3 এর এই 7 × 4 বিট, যা Tetris
প্রসারিত করে:
p=print
x='Tet'
y='ris'
p(x+y)#
প্রথম টেট্রিস বিন্যাস অনুসারে এর 7 "ইট" হ'ল ...
x '
int y ' ='r is
p=pr t p( ='Te )# x +y
অন্যান্য বিন্যাসে (অনেকের মধ্যে অন্যতম) তারা কোড হিসাবে অনির্বচনীয়:
r#)x(x=
p'r'=y'
='istpT
p+ytnie
তবে, ইটগুলি আলাদাভাবে দেওয়া থাকলে এগুলি আবার ভালভাবে একসাথে করা সম্ভব হবে might এটি চ্যালেঞ্জের ভিত্তি।
চ্যালেঞ্জ
এটি একটি পুলিশ-ডাকাতদের চ্যালেঞ্জ। দুটি প্রতিদ্বন্দ্বী ভূমিকা আছে Jumblers এবং Rebuilders ।
জাম্বলরা কোডের ব্লকগুলির সাথে উত্তর জমা দেন যা টেট্রিস ইটগুলিতে বিভক্ত হয়ে গেছে।
পুনর্নির্মাণকারীরা তাদের জন্য উত্সর্গীকৃত পৃথক প্রশ্নে এই ব্লকগুলি পুনর্নির্মাণের চেষ্টা করেছেন: জম্বার্স বনাম রিবিল্ডার্স: টেট্রিস ইট সহ কোডিং - পুনর্নির্মাণের উত্তরগুলির ক্ষেত্র ।
Jumblers
কেবল প্রিন্টযোগ্য এএসসিআইআই (হেক্স কোড 20 থেকে 7 ই) ব্যবহার করে একটি ডাব্লু × এইচ আয়তক্ষেত্রাকারী প্রোগ্রাম লিখুন। রান করার সময় এটি অবশ্যই স্টডআউট (বা নিকটতম বিকল্প) এ একমাত্র শব্দটি আউটপুট দেয় Tetris
। আপনার উত্তরে এই কোডটি পোস্ট করবেন না; ডাব্লু বা এইচ নাও। এটি উপরের উদাহরণের মতো টেট্রিস ইটের কিছু বিন্যাসে ভাঙা এবং এগুলি আপনার উত্তরে পোস্ট করুন। (আপনার কোডে স্পেস থাকতে পারে তবে সেগুলি আলাদা করা শক্ত বলে স্পেসের জায়গায় অন্য কোনও চরিত্র ব্যবহার করা এবং আপনি কী ব্যবহার করেছেন তা লোকদের জানানোর পক্ষে ভাল))
আপনার প্রোগ্রামটি পুনর্গঠন করা আরও কঠিন The আপনার কোড-ইটকে আয়তক্ষেত্রে পুনরায় সাজানোর বিভিন্ন উপায় থাকতে পারে, সম্ভবত বিভিন্ন মাত্রা সহ। এই বিভিন্ন ব্যবস্থায় চলাকালীন কোডটি কী করবে তা যতক্ষণ না কমপক্ষে একটি বিন্যাস Tetris
স্টাডাউটে প্রিন্ট করা যায় ততক্ষণ তা বিবেচনা করে না ।
কেবলমাত্র অন্য বিধিনিষেধ হ'ল ডাব্লু * এইচ 1025 এর চেয়ে কম হবে।
জাম্বলারের তাদের প্রোগ্রামিং ভাষা (এবং সংস্করণ) নির্দিষ্ট করা উচিত।
Rebuilders
আপনার লক্ষ্যটি হ'ল একটি জম্বলের কোড-ইট নিয়ে সেগুলি তাদের মূল ক্রমে ফিরিয়ে দেওয়া, Tetris
কোড চালিত হওয়ার পরে এটি মুদ্রিত হবে। যদি আপনি যে কাজের ব্যবস্থা খুঁজে পান তবে জম্বলারের মনে যে বিষয়টি ছিল তা তাদের পক্ষে খুব খারাপ নয়।
মনে রাখবেন যে কেবল অনুবাদ এবং ঘূর্ণন মিরর নয়, পুনর্বিন্যাসে অনুমোদিত।
স্কোরিং
প্রতিবার যখন কোনও জমা পুনর্নির্মাণ করা হয় তখন এটি "ক্র্যাকড" হিসাবে বিবেচিত হয় এবং আর চলমান থাকে না। জমা দেওয়ার পুনর্নির্মাণকারী প্রথম পুনর্নির্মাণকারী এর কৃতিত্ব পায়। যদি কোনও উত্তর hours২ ঘন্টা অবরুদ্ধ হয়ে যায় তবে ঝাঁকুনির সমাধানটি প্রকাশ করা উচিত এবং এখন থেকে ক্র্যাক হওয়া থেকে প্রতিরোধ ক্ষমতা থাকবে। একজন জম্বলারের জয়ের জন্য এটি অবশ্যই করা উচিত, অন্যথায় যদি কোনও সমাধানও পাওয়া যায় তবে এটি অস্পষ্ট।
বিজয়ী জাম্বলর হ'ল ক্ষুদ্রতম অঞ্চলটির সাথে আবদ্ধ উত্তর * (ডাব্লু * এইচ = 4 * ইটের সংখ্যা)। সম্পর্কের ক্ষেত্রে সর্বাধিক ভোট দেওয়া উত্তর জয়ী হয়। এই প্রশ্নের স্বীকৃত উত্তর হবেন বিজয়ী জাম্বলার।
বিজয়ী পুনর্নির্মাণকারী হলেন ব্যবহারকারী যা সর্বাধিক জমাগুলিকে ক্র্যাক করে। সম্পর্কের ক্ষেত্রে এটি সবচেয়ে বেশি জমে থাকা অঞ্চলটি কার কাছে যায়।
নোট
- আপনি নিজের জমাগুলি পুনর্নির্মাণ নাও করতে পারেন। (তবে অন্যথায় আপনি উভয় ভূমিকা নিতে পারেন))
- পুনর্নির্মাণকারীরা একই উত্তর একাধিকবার ফাটিয়ে দেওয়ার চেষ্টা করতে পারে না।
স্কোরবোর্ড
পুরানো জমা থেকে সর্বাধিক নতুন অনুসারে বাছাই করা হয়েছে।
+--------------+-------------+------------------+---------+----------+----------------+-------------------------------------------+-------------------------------------------+
| Jumbler | Language | Area | Immune? | Rebuilt? | Rebuilder | Link | Solution Link |
+--------------+-------------+------------------+---------+----------+----------------+-------------------------------------------+-------------------------------------------+
| xnor | Python 3 | 212 | no | yes | foobar | https://codegolf.stackexchange.com/a/40142 | https://codegolf.stackexchange.com/a/40203 |
| xnor | Python 3 | 340 | no | yes | feersum | https://codegolf.stackexchange.com/a/40146 | https://codegolf.stackexchange.com/a/40189 |
| es1024 | C | 80 | no | yes | user23013 | https://codegolf.stackexchange.com/a/40155 | https://codegolf.stackexchange.com/a/40210 |
| Ethiraric | Brainfuck | 108 | yes | | | https://codegolf.stackexchange.com/a/40156 | |
| Qwertiy | JavaScript | 420 | yes | | | https://codegolf.stackexchange.com/a/40161 | |
| user23013 | Befunge | 360 | yes | | | https://codegolf.stackexchange.com/a/40163 | |
| user23013 | CJam | 80 | yes | | | https://codegolf.stackexchange.com/a/40171 | |
| Geobits | Java | 360 | yes | | | https://codegolf.stackexchange.com/a/40180 | |
| Dennis | CJam | 60 | yes | | | https://codegolf.stackexchange.com/a/40184 | |
| xnor | Python 3 | 160 | yes | | | https://codegolf.stackexchange.com/a/40192 | |
| COTO | C | 72 | yes | | | https://codegolf.stackexchange.com/a/40198 | |
| es1024 | C | 780 | yes | | | https://codegolf.stackexchange.com/a/40202 | |
| Gerli | Mathematica | 72 | no | yes | Martin Büttner | https://codegolf.stackexchange.com/a/40230 | https://codegolf.stackexchange.com/a/40242 |
| Hydrothermal | JavaScript | 80 | yes | | | https://codegolf.stackexchange.com/a/40235 | |
| Sam Yonnou | GolfScript | 48 (frontrunner) | yes | | | https://codegolf.stackexchange.com/a/40239 | |
| feersum | Matlab | 48 | | | | https://codegolf.stackexchange.com/a/40310 | |
| Beta Decay | Python 3 | 484 | | | | https://codegolf.stackexchange.com/a/40312 | |
| potato | Python 3 | 176 | | | | https://codegolf.stackexchange.com/a/40341 | |
+--------------+-------------+------------------+---------+----------+----------------+-------------------------------------------+-------------------------------------------+
( টেবিল বিন্যাসের জন্য http://www.sensefulsolutions.com/2010/10/format-text-as-table.html ধন্যবাদ )
ব্যবহারকারী সিটিও কোড-ইট নিয়ে খেলার জন্য একটি দুর্দান্ত সরঞ্জাম তৈরি করেছে। আমি এটিকে একটি সুবিধাজনক স্নিপেটে পরিণত করেছি:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><script>function parseSpec(s){function first(){var e,t;t=S.findIndex(function(t){return(e=t.findIndex(function(e){return/\S/.test(e)}))!=-1});return t==-1?null:[e,t]}function at(e){var t=e[0],n=e[1];return n>=0&&n<S.length&&t>=0&&t<S[n].length?S[n][t]:" "}function wipe(e){var t=e[0],n=e[1];if(n>=0&&n<S.length&&t>=0&&t<S[n].length)S[n][t]=" "}var P,S=s.split("\n").map(function(e){return e.split("")});var oPats=$(".proto-tet [pat]").get().map(function(e){return{sPat:eval("["+$(e).attr("pat")+"]"),e:e,block:function(e){return[at(e)].concat(this.sPat.map(function(t){return at([e[0]+t[0],e[1]+t[1]])}))},wipe:function(e){this.sPat.forEach(function(e){return wipe([P[0]+e[0],P[1]+e[1]])})},match:function(e){return!/\s/.test(this.block(e).join(""))}}});window.oPats=oPats;while(P=first()){var oPat=oPats.find(function(e){return e.match(P)});if(!oPat){orphan(at(P));wipe(P);continue}createPiece(oPat.e,oPat.block(P));wipe(P);oPat.wipe(P)}}function createPiece(e,t){function r(e){var t=$(this).position();G.isIgnoreClick=false;G.eDrag=this;G.iOffsets=[e.clientX-t.left,e.clientY-t.top]}function i(){if(G.isIgnoreClick)return;var e=$(this);s($(".proto-tet ."+e.attr("rr")),function(e,t){return n[t-1]},e.css("left"),e.css("top"));e.remove()}function s(e,t,n,s){e.clone().html(e.html().replace(/@(\d)(\d)/g,t)).appendTo("body").on("mousedown",r).click(i).css({left:n,top:s})}var n=[];s($(e),function(e,r,i){return n[r-1]=t[i-1]},18+G.iSpawn%8*18*4+"px",18+~~(G.iSpawn/8)*18*4+"px");G.iSpawn++}function init(){$(document).on("mouseup",function(){return G.eDrag=null}).on("mousemove",function(e){if(G.eDrag){var t=$(G.eDrag),n=Math.round((e.clientX-G.iOffsets[0])/18)*18,r=Math.round((e.clientY-G.iOffsets[1])/18)*18,i=t.position();if(n!=i.left||r!=i.top)G.isIgnoreClick=true;t.css({left:n+"px",top:r+"px"})}})}function orphan(e){error("Spec character not a part of any block: '"+e+"'")}function error(e){$(".error").css("display","block").append("<div>"+e+"</div>")}function go(){$(init);$(function(){parseSpec($("#spec").val())});$("#spec").remove();$("#info").remove();$("#go").remove()}var G={eDrag:null,isIgnoreClick:true,iSpawn:0};Array.prototype.findIndex=function(e){for(var t=0;t<this.length;t++){if(e(this[t]))return t}return-1};Array.prototype.find=function(e){var t=this.findIndex(e);if(t==-1)return;else return this[t]}</script><style>.proto-tet, .spec{display: none;}.tet-I{color: darkgreen;}.tet-J{color: orangered;}.tet-L{color: navy;}.tet-T{color: darkred;}.tet-O{color: darkcyan;}.tet-S{color: darkviolet;}.tet-Z{color: darkorange;}body > .tet{position: absolute;cursor: move;-webkit-touch-callout: none;-webkit-user-select: none;-khtml-user-select: none;-moz-user-select: none;-ms-user-select: none;user-select: none;border-collapse: collapse;}.tet td{width: 18px;height: 18px;font: bold 14px "Courier New",monospace;text-align: center;vertical-align: middle;padding: 0;}.error{z-index: 1024;position: absolute;display: none;color: red;font-weight: bold;background-color: white;}textarea{font-family: "Courier New", Courier, monospace;}</style><div id='info'>Put code-bricks here and hit OK. Re-run the snippet to restart.<br>(You may need to replace spaces in code-bricks with some other character first.)</div><textarea id='spec' rows='16' cols='80'>ABCD a b Oo c oo d E h F efg hg GFE GH f H e I IJK J l L LK kji kl j i t OP p QR rs MN on ST q m W z XY zxw yx Y Z y w WXZ</textarea><br><button id='go' type='button' onclick='go()'>OK</button><div class="proto-tet"><table class="tet tet-I tet-I0" rr="tet-I1" pat="[1,0],[2,0],[3,0]"><tr><td>@11</td><td>@22</td><td>@33</td><td>@44</td></tr></table><table class="tet tet-I tet-I1" rr="tet-I2" pat="[0,1],[0,2],[0,3]"><tr><td>@11</td></tr><tr><td>@22</td></tr><tr><td>@33</td></tr><tr><td>@44</td></tr></table><table class="tet tet-I tet-I2" rr="tet-I3" ><tr><td>@40</td><td>@30</td><td>@20</td><td>@10</td></tr></table><table class="tet tet-I tet-I3" rr="tet-I0"><tr><td>@40</td></tr><tr><td>@30</td></tr><tr><td>@20</td></tr><tr><td>@10</td></tr></table><table class="tet tet-J tet-J0" rr="tet-J1" pat="[0,1],[-1,2],[0,2]"><tr><td></td><td>@11</td></tr><tr><td></td><td>@22</td></tr><tr><td>@33</td><td>@44</td></tr></table><table class="tet tet-J tet-J1" rr="tet-J2" pat="[0,1],[1,1],[2,1]"><tr><td>@31</td><td></td><td></td></tr><tr><td>@42</td><td>@23</td><td>@14</td></tr></table><table class="tet tet-J tet-J2" rr="tet-J3" pat="[1,0],[0,1],[0,2]"><tr><td>@41</td><td>@32</td></tr><tr><td>@23</td><td></td></tr><tr><td>@14</td><td></td></tr></table><table class="tet tet-J tet-J3" rr="tet-J0" pat="[1,0],[2,0],[2,1]"><tr><td>@11</td><td>@22</td><td>@43</td></tr><tr><td></td><td></td><td>@34</td></tr></table><table class="tet tet-O tet-O0" rr="tet-O1" pat="[1,0],[0,1],[1,1]"><tr><td>@11</td><td>@22</td></tr><tr><td>@33</td><td>@44</td></tr></table><table class="tet tet-O tet-O1" rr="tet-O2"><tr><td>@30</td><td>@10</td></tr><tr><td>@40</td><td>@20</td></tr></table><table class="tet tet-O tet-O2" rr="tet-O3"><tr><td>@40</td><td>@30</td></tr><tr><td>@20</td><td>@10</td></tr></table><table class="tet tet-O tet-O3" rr="tet-O0"><tr><td>@20</td><td>@40</td></tr><tr><td>@10</td><td>@30</td></tr></table><table class="tet tet-L tet-L0" rr="tet-L1" pat="[0,1],[0,2],[1,2]"><tr><td>@11</td><td></td></tr><tr><td>@22</td><td></td></tr><tr><td>@33</td><td>@44</td></tr></table><table class="tet tet-L tet-L1" rr="tet-L2" pat="[1,0],[2,0],[0,1]"><tr><td>@31</td><td>@22</td><td>@13</td></tr><tr><td>@44</td><td></td><td></td></tr></table><table class="tet tet-L tet-L2" rr="tet-L3" pat="[1,0],[1,1],[1,2]"><tr><td>@41</td><td>@32</td></tr><tr><td></td><td>@23</td></tr><tr><td></td><td>@14</td></tr></table><table class="tet tet-L tet-L3" rr="tet-L0" pat="[-2,1],[-1,1],[0,1]"><tr><td></td><td></td><td>@41</td></tr><tr><td>@12</td><td>@23</td><td>@34</td></tr></table><table class="tet tet-S tet-S0" rr="tet-S1" pat="[1,0],[-1,1],[0,1]"><tr><td></td><td>@21</td><td>@12</td></tr><tr><td>@43</td><td>@34</td><td></td></tr></table><table class="tet tet-S tet-S1" rr="tet-S2" pat="[0,1],[1,1],[1,2]"><tr><td>@41</td><td></td></tr><tr><td>@32</td><td>@23</td></tr><tr><td></td><td>@14</td></tr></table><table class="tet tet-S tet-S2" rr="tet-S3"><tr><td></td><td>@30</td><td>@40</td></tr><tr><td>@10</td><td>@20</td><td></td></tr></table><table class="tet tet-S tet-S3" rr="tet-S0"><tr><td>@10</td><td></td></tr><tr><td>@20</td><td>@30</td></tr><tr><td></td><td>@40</td></tr></table><table class="tet tet-Z tet-Z0" rr="tet-Z1" pat="[1,0],[1,1],[2,1]"><tr><td>@11</td><td>@22</td><td></td></tr><tr><td></td><td>@33</td><td>@44</td></tr></table><table class="tet tet-Z tet-Z1" rr="tet-Z2" pat="[-1,1],[0,1],[-1,2]"><tr><td></td><td>@11</td></tr><tr><td>@32</td><td>@23</td></tr><tr><td>@44</td><td></td></tr></table><table class="tet tet-Z tet-Z2" rr="tet-Z3"><tr><td>@40</td><td>@30</td><td></td></tr><tr><td></td><td>@20</td><td>@10</td></tr></table><table class="tet tet-Z tet-Z3" rr="tet-Z0"><tr><td></td><td>@40</td></tr><tr><td>@20</td><td>@30</td></tr><tr><td>@10</td><td></td></tr></table><table class="tet tet-T tet-T0" rr="tet-T1" pat="[1,0],[2,0],[1,1]"><tr><td>@11</td><td>@22</td><td>@33</td></tr><tr><td></td><td>@44</td><td></td></tr></table><table class="tet tet-T tet-T1" rr="tet-T2" pat="[-1,1],[0,1],[0,2]"><tr><td></td><td>@11</td></tr><tr><td>@42</td><td>@23</td></tr><tr><td></td><td>@34</td></tr></table><table class="tet tet-T tet-T2" rr="tet-T3" pat="[-1,1],[0,1],[1,1]"><tr><td></td><td>@41</td><td></td></tr><tr><td>@32</td><td>@23</td><td>@14</td></tr></table><table class="tet tet-T tet-T3" rr="tet-T0" pat="[0,1],[1,1],[0,2]"><tr><td>@31</td><td></td></tr><tr><td>@22</td><td>@43</td></tr><tr><td>@14</td><td></td></tr></table></div><div class="error"></div>