Jumblers vs Rebuilders:用俄罗斯方块砖编码


34

在传统的俄罗斯方块中,有7种不同的tetromino砖,每个砖都用与其形状相似的字母表示。

#          
#      #    #
#  ##  #    #  ###  ##    ##
#  ##  ##  ##   #    ##  ##
I  O   L   J    T    Z    S

考虑对于一些正整数W和H,这些砖的排列方式可以形成一个实心的W×H矩形。例如,使用2个I,1个L,1个J,2个T和1个S,一个7×4矩形可以被制成:

IIIITTT
LIIIITJ
LTTTSSJ
LLTSSJJ

可以将相同的积木重新排列(通过移动和旋转,但不能翻转)为不同的7×4模式:

IJJTLLI
IJTTTLI
IJSSTLI
ISSTTTI

现在考虑使用矩形代码块代替第一种排列。例如,Python 3的以下7×4位将打印Tetris到stdout:

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

但是,将砖分开放置,则有可能将它们正确地拼凑在一起。这是挑战的基础。

挑战

这是挑战。有两个竞争角色,JumblersRebuilders

杂乱无章的人提交的答案包含已分解为俄罗斯方块的代码块。

重建人员尝试在一个专用于它们的单独问题中重建这些块Jumblers vs Rebuilders:用Tetris Bricks编码-重建人员答案区域

杂物

仅使用可打印的ASCII(十六进制代码20至7E)编写W×H矩形程序。运行时,它必须将唯一字输出Tetris到stdout(或最接近的替代字)。不要在您的答案中张贴此代码;也不要给W或H。像上面的示例一样,将其分解为俄罗斯方块砖的某种排列,并将其张贴在答案中。(您的代码可能包含空格,但是由于它们难以区分,因此最好使用其他字符代替空格并告诉别人您使用了什么。)

越难重建程序越好。有多种方法可以将代码块重新排列为矩形,并且尺寸可能不同。只要在至少一个排列上打印Tetris到stdout,在这些不同排列中运行时代码做什么都无关紧要。

唯一的其他限制是W * H小于1025。

杂乱的人应指定其编程语言(和版本)。

重建者

您的目标是获取Jumbler的代码块并将它们放回原始顺序,因此Tetris在运行代码时将其打印出来。如果您发现的工作安排不是Jumbler认为对他们来说太糟糕的安排。

请记住,在重新排列中仅允许平移和旋转,而不能进行镜像。

计分

每次重新构建提交时,都将其视为“已破解”,并且不再运行。第一个重建提交文件的重建器将为此功劳。如果答案在72小时内保持不变,那么Jumbler应该显示解决方案,此后便不会受到破解。Jumbler必须做到这一点才能获胜,因为否则无法确定是否有解决方案。

获奖的Jumbler是面积最小(W * H = 4 *砖块数量)的完整答案。如果是平局,则以票数最高的答案为准。该问题的公认答案将是获奖的Jumbler。

获奖的Rebuilder是破解最多提交内容的用户。如果发生平局,则将其破解至累积面积最大的那个人。

笔记

  • 您可能无法重建自己的提交。(但否则,您可能会同时扮演两个角色。)
  • 重建者可能不会多次尝试破解相同的答案。

计分板

从最早的提交到最新的排序。

+--------------+-------------+------------------+---------+----------+----------------+-------------------------------------------+-------------------------------------------+
|   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进行表格格式化。)

用户COTO提供了一个出色的工具来处理代码块。我把它变成了一个方便的代码段:

<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&nbsp;&nbsp;a&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;Oo&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c&nbsp;&nbsp;&nbsp;oo&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d&#13;&#10;&#13;&#10;&nbsp;E&nbsp;&nbsp;&nbsp;&nbsp;h&#13;&#10;&nbsp;F&nbsp;&nbsp;efg&nbsp;&nbsp;&nbsp;hg&nbsp;&nbsp;&nbsp;GFE&#13;&#10;&nbsp;GH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f&nbsp;&nbsp;&nbsp;H&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e&#13;&#10;&#13;&#10;&nbsp;I&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IJK&#13;&#10;&nbsp;J&nbsp;&nbsp;&nbsp;l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;L&#13;&#10;LK&nbsp;&nbsp;&nbsp;kji&nbsp;&nbsp;kl&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t&#13;&#10;&nbsp;OP&nbsp;&nbsp;&nbsp;p&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;QR&nbsp;&nbsp;&nbsp;&nbsp;rs&#13;&#10;MN&nbsp;&nbsp;&nbsp;&nbsp;on&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ST&nbsp;&nbsp;&nbsp;q&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m&#13;&#10;&nbsp;W&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;z&#13;&#10;&nbsp;XY&nbsp;&nbsp;&nbsp;&nbsp;zxw&nbsp;&nbsp;&nbsp;&nbsp;yx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Y&#13;&#10;&nbsp;Z&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;w&nbsp;&nbsp;&nbsp;&nbsp;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>


10
听起来像Befunge的工作。
Martin Ender 2014年

8
OP请告诉我们他如何设法提出类似的建议?
Soham Chowdhury

5
@SohamChowdhury我不能说太多,超过我已经说过。我的主要宗旨是简洁独创性
卡尔文的爱好2014年

我仍然可以提出问题吗?还是Jumblers可以接受这项挑战?
ASCIIThenANSI

@ASCIIThenANSI继续。不过,仍然没有很多重建者。
加尔文的爱好2015年

Answers:


3

高尔夫脚本48

I 件:

!;..  )+?;

O 件:

.[  ;*  .(
):  ++  -\

T 件:

+]\  +++  ;).  );.
 .    *    ,    )

J 件:

.    )    *
(@@  :?,  .,:

.[!)):,.
):;+:?,*
;*.?;).+
++.;),*+
.(..;).+
-\(@@\]+


是的,哎呀,我正在用它来制作俄罗斯方块。我对其进行了足够迅速的编辑,以至于“编辑”链接不会出现,因此人们无法查看答案的编辑历史记录。
SamYonnou 2014年

好吧,我不想破坏游戏,但是我们希望我是唯一打开页面很快的人。;)
Martin Ender 2014年

我知道这早就该开始了,但是我已经正式结束比赛了,除非我误会了这个提交才赢了!山姆,如果您发布解决方案以证明确实可行,我将接受此答案。
加尔文的爱好2015年

@ Calvin'sHobbies完成
SamYonnou

23

Java:360区域

赏金:500

重建这些东西很困难!这可能就是为什么没有太多劫匪参加这一挑战的原因。但是,我看看我的破裂。因此,我没有在72小时后给出解决方案,而是将500个代表提交到了第一个成功的饼干上。为了明确起见,如果将这些片段重新组装成任何可输出“ Tetris”的矩形Java程序,我将在答案栏中添加+500悬赏,并将其奖励给您。我不会抢先激活赏金计划,因为如果没有人回答,我不会浪费代表。

此优惠没有结束日期。只要我是这里的会员,它就有效。为确保我能看到您的答案,请在下面提供一条评论。

我已经进行了三次检查,以确保代码(和代码)有效,但是如果受信任的用户想要确认这一点,我可以向他们发送电子邮件/解决方案。显然,这将使他们免于发布和收集赏金。

由所有七种类型的混合物制成。为了使事情变得容易(?),我确保所有相同类型的零件都旋转到相同的方向。由于Java的部分不能进行太多更改,因此我将真正显而易见的部分保留为简单的I块来开始使用。

注意:由于Java有一些强制性空格,_出于布局目的,我在下面用下划线()替换了它们。它们总共有11个,应将它们全部转换为空格以运行代码。代码中没有其他空格,以下仅用于定位。

有:

  • 41我
  • 15 O
  • 11 J
  • 8升
  • 6吨
  • 6秒
  • 3 Z

玩得开心!

------------- I 

clas    s_X{    publ    ic_s

tati    c_vo    id_m    ain(    

Stri    ng[]    2;c*    p(b-    

(b-c    _voi    nt_a    Syst    

em.o    ut.p    rint    1,c=    

d=1,    e=3,    new_    int[    

;b++    for(    1008    ?1:2    

)a);    ccc+    ==++    pf}(    

for(    (b);    p(b+    --b-    

or(d    1?1:    +1;e    for(    

=1);

------------- O

a)
*2

b=
r(

12
<3

36
[c

*1
++

b<
6]

64
64

7]
]-

<1
1;

89
0;

;p
c)

=0
ic

st
ch

at
ar

d/
1;

-------------- T

{in
 ]

+b(
 5

d/2
 ;

d<<
 )

;;;
 1

=1)
 (

------------- L

2=[
+

]b*
8

=1)
]

<<b
<

}_}
d

3=b
)

+[[
=

=c,
=

-------------- J

o
;b=

,
2;)

f
2;c

*
=][

c
f=d

+
e1+

e
=;;

d
_p(

i
<++

=
){_

[
f+e

---------------- S

 t_
;f

 c+
1)

 +<
;p

 64
<6

 b=
;p

 ))
(;

--------------- Z

4,
 -1

;=
 ff

;f
 0;

是否必须旋转任何代码块以构造有效的(或至少是预期的)解决方案?
El'endia Starman

@ El'endiaStarman是的,您需要为预期的解决方案旋转一些。
Geobits 2015年

12

Brainfuck,108区

该代码由27个I组成。

-.[>
.<++
.<++
[>++
[>++
-]++
]>.-
-]>[
-]>+
]>++
+.+-
+[>+
+-+-
++[>
++[>
++]-
++++
++++
+++<
+++<
+<-]
--<-
<-]>
<><+
>+.>
>++[
>+<<

我不知道除了蛮力以外没有其他方法可以找到答案。如果有,我真的很想知道如何。


9

Python 3:212区域[重建]

我的代码分为以下53个I部分,我按字母顺序每行写了一个。

(358
0048
0396
0796
0824
0981
1013
1314
1330
1438
1502
2285
2317
2479
2585
2955
3116
3738
3818
4169
4356
4360
4632
4800
5016
5153
5256
5394
5598
5631
5758
5840
6312
6425
6539
7045
7156
7163
7329
7624
7674
8164
8250
8903
9%38
9009
94))
9413
9748
etri
prin
s'* 
t('T

玩得开心!


我在这种方法中发现了一个漏洞,但我将其加以破解。我发布了另一个答案,希望它更安全。
xnor14 2014年

8
print('Tetris'* (3580048039607960824098110131314133014381502228523172479258529553116373838184169435643604632480050165153525653945598563157585840631264256539704571638903974876749009825073297156762481649%38941394))
foob​​ar 2014年

1
@foobar恭喜!您是否尝试过大量改组38941394或更系统的东西?花了多长时间?另外,为什么不%3894呢?
xnor 2014年

1
我刚刚进行了预构建,print('Tetris'* (358UNKNOWN94))并且非常确定您不会旋转任何图块,所以我要做的就是构建其余图块的所有可能排列,将它们合并在一起并评估是否358UNKNOWN94等于1,而我替换UNKNOWN为排列。所以我没有使用,%3894因为首先找到了一个不同的匹配排列;)我不知道它花了多长时间,但是使用单个内核大约需要20分钟。所以我实际上使用了一些不太系统的东西,只是蛮力解决了问题;)
foob​​ar 2014年

1
@MartinBüttner完成了;)codegolf.stackexchange.com/a/40203/19475
foob​​ar

5

JavaScript-地区80

似乎很多这样的答案只是使用了很多I片,也许是一个O片,所以我将其与一些更有趣的形状一起使用。

  • 7我件
  • 1升
  • 1 J片
  • 4 O件
  • 6 T
  • 1个S

每一块都由两个空格隔开。这两个哈希符号实际上是代码中的空格。

l  n  \  /  ;  +  r
o  -  x  c  v  (  i
g  (  5  o  a  ;  s    )  o    //  #c  ns  ->   )    "    d    l    e    l    wi
(  "  4  n  r  ;  "  x65  log  ;/  ")  ].  "c  "(#  o+\  ave  ow"  t"o  "Te  [" 

玩得开心!


5

Javascript,区域420

仅I块。

!!!(
!!!+
!!!+
!!![
!!!]
!!!]
!!!]
!!!]
!!!]
!!'!
!![]
!!]]
!(!+
!(![
!+!]
!+!]
!+"+
!++)
!++[
!++[
!++[
!++[
!++]
![+[
!](+
(!!'
(!!+
(!(]
(++!
(['[
)!'!
)[)[
)]]!
+++"
+++)
++++
+++[
+++]
++])
+[+[
+[[[
+]'+
+]']
+]+[
+]+[
+]]!
+]]!
+]]!
+]]!
+]]'
+]][
+]]]
[!!+
[!!+
[!!+
[!!+
[!!+
[!!]
[!+!
[![[
[![[
[((!
[))!
[){!
[+'+
[++)
[++]
[[)+
[[+[
[[[!
[[['
[[[+
[][]
[]]]
[{[[
]!(!
]!]+
]['[
][[!
][[!
][[!
][[!
][[(
][[+
][[+
][[[
][[[
][]]
][}!
]]T]
]][(
]]]!
]]]!
]]]'
]]])
]]]]
]}]]
a['!
e]'(
l++[
v).!
{[[[
{]g]
})')
}]]]

没有使用任何标准的混淆器。我自己的代码不到16行,就可以完成所有代码,包括混淆处理并创建此排序的块列表。


现在该展示其制作方法了:

x="+[],+!![],+!![]+!![],+!![]+!![]+!![],+!![]+!![]+!![]+!![],+!![]+!![]+!![]+!![]+!![],+!![]+!![]+!![]+!![]+!![]+!![],+!![]+!![]+!![]+!![]+!![]+!![]+!![],+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![],+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]".split(/,/g)
res={}
for(q=0; q<x.length; ++q) res[eval(x[q])]=x[q]
function add(str) { for(q=0;q<Math.min(str.length,10);++q) res[eval(x=str+"["+res[q]+"]")]=x }
add("({}+[])")
add("(![]+[])")
add("(!![]+[])")
add("([][[]]+[])")
code = 'eval('+Array.prototype.map.call('console.log("Tetris")',function(x){return res[x]||"'"+x+"'"}).join("+")+')'
res=[]
console.log(code)
code.replace(/(.)(?=.{104}(.).{104}(.).{104}(.))/g,function(m,a,b,c,d){res.push(a+b+c+d)})
eval(res.map(function(x){return x[0]}).join("")+res.map(function(x){return x[1]}).join("")+res.map(function(x){return x[2]}).join("")+res.map(function(x){return x[3]}).join(""))
console.log(res.sort().join("\n"))

因此,它只是eval使用混淆'console.log("Tetris")'参数(长度为420个符号)进行调用。它分为4行,每行包含105个符号,按列阅读并按字母顺序排序。

对10位数字的混淆进行硬编码,对于其他使用的符号,从4个组合中的前10个符号传递给add函数。如果某个符号没有混淆,则按原样传递。


是时候发布它的完成方式了吗?
Qwertiy 2014年

@Qwerity是的,如果您愿意。
卡尔文的爱好2014年

添加说明。
Qwertiy 2014年

4

C,80区

由12 I件和8 O件制成。C语法总是很有趣。

I 件没有特定的顺序:

 c[] // starts with a space
','n
',;}
(q){
,',  // ends in a space 
u>6/
T2sr
char
main
q/**
t#1'
ts(c

O 件:

q<
pu

't
i'

Ir
$'

/}
);

'?
re

',
`:

"e
i>

={
,0

2
main(q){char c[] ={'/T','$"e','t' ,0162,'rIi>`:i', '?#>s',q<q/**/}; return puts(c);}
jimmy23013

@ user23013恭喜!
es1024 2014年

4

CJam,60岁(15岁)

71 05 37 23 36 04 27 69 32 :i 12 93 bi i] 43
69 44 71 71 -# 70 10 25 44 cb 93 20 *G 9B 62

27
10
96
17
54
04
52
96
71
37
12
93
43
62
29
03
07
40
44
23
72
13
]B
i9
*b
Gi
6#
3-
ib
:c


4

Befunge,360区

90 O

 "
#6

 "
#^

 #
# 

 #
4 

 +
$ 

 +
0>

 +
v_

 0
> 

 3
# 

 >
\ 

 ^
/1

 _
v8

 v
$,

 ~
*=

!!
00

!<
v>

"!
< 

"<
#^

">
^<

"v
# 

"v
w\

# 
 #

# 
|_

#*
_*

#0
.@

#3
~#

#?
t@

#^
RI

#v
~>

#~
~#

$ 
!4

&v
v#

*#
"#

**
>^

+1
>^

+5
 ,

+^
S"

- 
#"

-#
2\

-~
 #

0 
|>

00
00

0<
v\

2,
+#

2v
^v

3#
< 

3#
>2

3~
^-

47
31

6 
6#

70
"T

8#
:\

:#
 #

:$
$*

:0
3<

< 
#$

<*
<|

<<
>>

<>
<>

<@
 >

<~
2,

> 
7<

>$
^6

>>
<<

>v
|g

\ 
^ 

\_
 !

^ 
<s

_!
>9

_$
ET

kr
 >

m~
#3

q~
~+

r^
c 

t~
, 

v 
 ?

v/
_$

v4
>>

v7
>#

v<
>#

v<
>#

v>
:^

v~
1/

zr
 $

~#
#~

~#
\#

~$
7>

~3
$_

~v
\$

~~
~#

您可以在这里尝试

3#~#~vm~00-~q~\_:$:#r^&v_!!<v<
>2\#\$#300 #~+ !$* #c v#>9v>>#
"v0< 36 v < ~~ ^<~^ <<<@\ -##v
w\v\# 6# ?#$~#/12,<s>> >^ 2\~>
"> +>$ +:0 _ #2,v/$ >>v4v7- 3~
^<0>^6v_3<v84 +#_$!4<<>>>##"^-
<*8#> #0 v ~v~2v#~~#kr"v "zr"<
<|:\7<.@$,*=1/^v~##~ ># #6 $#^
#*+1# 3# 0470 >vv< ## ~$t~ "<>
_*>^|_< > 31|>|g>##  #7>, #^<>
70_$#^+^~3 +** >v>!!+5#3*#"!#?
"TETRIS"$_$ >^\ :^00 ,~#"#< t@

可能还有其他解决方案。我没有旋转砖头。


这是我见过和观看过的最复杂的Befunge程序之一。非常聪明!
El'endia Starman

3

Python 3:340区域[重建]

由85件I制成,在此按字母顺序每行给出一个。

    #Four spaces
    #Four spaces
    #Four spaces
    #Four spaces
    #Four spaces
    #Four spaces
    #Four spaces
    #Four spaces
    #Four spaces        
))  #Two spaces
0290
0398
0866
0887
0892
0992
1108
1268
1297
1339
1555
1722
1817
1848
1930
2328
2521
2611
2747
3179
3192
3245
3284
3334
3613
3862
4086
4629
4639
4674
4695
4781
4968
5723
5742
5791
5938
6011
6069
6180
6231
6265
6269
6444
6564
6776
6884
7116
7253
7348
7440
7527
7743
7873
8064
8291
8808
8843
9305
9324
9458
9460
9586
9869
====
a,b,
abcd
c)-d
etri
pow(
prin
s'*(
t('T

作为Python列表:

['    ', '    ', '    ', '    ', '    ', '    ', '    ', '    ', '    ', '    ', '    ', '))  ', '0290', '0398', '0866', '0887', '0892', '0992', '1108', '1268', '1297', '1339', '1555', '1722', '1817', '1848', '1930', '2328', '2521', '2611', '2747', '3179', '3192', '3245', '3284', '3334', '3613', '3862', '4086', '4629', '4639', '4674', '4695', '4781', '4968', '5723', '5742', '5791', '5938', '6011', '6069', '6180', '6231', '6265', '6269', '6444', '6564', '6776', '6884', '7116', '7253', '7348', '7440', '7527', '7743', '7873', '8064', '8291', '8808', '8843', '9305', '9324', '9458', '9460', '9586', '9869', '====', 'a,b,', 'abcd', 'c)-d', 'etri', 'pow(', 'prin', "s'*(", "t('T"]

我犯了一个错误,粘贴得太多了。我已经修复了,但是重建器请不要浏览编辑历史记录。
xnor

2
仅供参考,您已在宽限期内解决了该问题,因此无需担心编辑历史记录。
纳撒尼尔(Nathaniel)2014年

主列表缺少4个空间块中的两个。
feersum

@feersum恭喜!我完全没想到要使用这样的突出部分。是时候做一个新的更好的混乱了。
xnor 2014年


3

Python 3:160区

feersum破解之后,我试图收紧我的代码,以使其更难避免使用加密的巨型组合。它由40 I件制成,每行列出一个:

')    #Two spaces
)-d)
*'Te
,b,c
0484
0824
2448
2562
3094
3762
3896
4052
4233
4562
5266
5277
5400
5885
5927
5965
6080
6720
6808
6884
7568
7856
7963
8609
8639
8665
8732
8892
9206
9893
====
abcd
ow(a
prin
t((p
tris

作为Python列表:

["')  ", ')-d)', "*'Te", ',b,c', '0484', '0824', '2448', '2562', '3094', '3762', '3896', '4052', '4233', '4562', '5266', '5277', '5400', '5885', '5927', '5965', '6080', '6720', '6808', '6884', '7568', '7856', '7963', '8609', '8639', '8665', '8732', '8892', '9206', '9893', '====', 'abcd', 'ow(a', 'prin', 't((p', 'tris']

已更改:

  • 重新排序了字符串乘法以尝试强制pow使用
  • 更少的空间(虽然数字更短)
  • 没有1

我担心该地区的许多因素。


2

C区72

方块:

I    J     _______ L ______       O      __ Z _     _______ T ______
          /                \   /    \   /      \   /                \
"    e    m   "   T   )   6    };  ii   3"   (.    \nn  {6"  ]"0  i%s
i    t    p   ,   &   m   1    -]  ar    "\   f(    t    8    e    T
s   )"    .[  0x  ,f  ai  0r
"  

 ""   (t   ["
)"   61   4+
\____   ____/
      S

由于唯一的其他C提交被破解了。;)

整齐的72个字符。纯粹的迷惑。没有要解决的NP难题,也没有庞大的整数可以分解。从其中一位大师那里借来一些花样。.s 表示空格。.解决方案中没有实际的。

我已经对解决方案进行了三重检查,以确保片段的有效性。


2

CJam,80地区

20 O个。

 I
`7

&d
'X

+5
7m

-2
`-

-6
#b

-O
U[

3Z
Pi

4"
2X

43
P"

?<
5b

D:
.=

FH
uL

K`
~C

QT
:c

[^
+9

aj
^F

hD
dP

tn
6 

uq
KG

x6
CF

-24"hD&d ID:uqx6tn-OajFH43[^+5?<3ZK`-6QT
`-2XdP'X`7.=KGCF6 U[^FuLP"+97m5bPi~C#b:c

我没有旋转砖头。


2

C区780

总共有195件。没有使用评论。没什么特别复杂的。

注意:所有反斜杠(\)均应替换为空格。

95 I

____ x12
incl
\edu
\\\\
\\\\
\\\\
dts<
h.oi
*_*>
_,_(
int\
__;\
,_(_
_*_,
=__,
__"*
+|_;
r__+
ahct
)=pu
_\ra
f\ch
edep
#t_,
y___
*_;_
(_;-
){__
,<_\
9"=_
+__*
___;
_+>_
_??<
+__*
*__,
__*_
*=+_
__:-
___-
_+__
,___
,__,
_,*&
*\&*
_,*_
_++,
+,__
++++
+__=
_++,
,,,_
___+
=+__
?++_
___+
=__+
,<_*
__+*
&+;*
+*__
__*_
__+,
++?~
__-9
_?__
__*_
(_+_
[**(
_<&_
};__
_@A:
(nia
@@@@
AAAA
AAAA
~~~~
_++;
_&,)
A__+
~~__
g_""
_;}_
+*__

35 O

__
__
 (x18)
)_
__

_*
_\

_;
,-

_*
__

~)
"{

+_
+_

*_
,_

__
_)

~~
a~

_,
__

__
,)

_:
__

+*
__

__
+,

*+
_+

AA
AA

__
,+

18 L

___
_
 (x2)
_;*
_
_=_
+
__*
_
+__
_
**_
&
+*_
_
&*&
,
++,
_
_*_
_
;;_
"
__+
_
AAA
~
"*)
;
___
(
,_-
_
_~^
_

25 J

_+=
  +
+,_
  _
*__
  ;
;;_
  \
_,_
  )
~~~
  _
___
  A
~;(
  _
;__
  i
_;m
  A
=__
  _
a;a
  A
="A
  a
~_\
  o
o_a
  a
~~~
  _
99-
  _
*9_
  _
__)
  _
__*
  <
+_,
  _
_++
  =
_+_
  _
++_
  _
_+:
  _

10 T

 _
,__
 +
*?_
 =
**=
 _
__+
 _
:_+
 _
_+_
 _
(_-
 +
++,
 +
___
 *
__:

4 Z

=*
 ++
*+
 __
t_
 -~
__
 f(

8 S

 _,
_,
 __
__
 (x2)
 -_
__
 (x2)
 _9
~_
 99
__
 __
],

#include <stdio.h> typedef char _________; int (* _____)()=putchar;____(_,___,__ ,______) _________*__,* *___,* ______;{__="9>?_|";______=*___ ;--_;--_<*__++?++*______,_+=_+ _:___,__,___;_<*__++?*______+= *______,++______,__,*______+=* ______,__,++______,*&*______+= *______,++______,* &*______+=* ______,++______,*&*&*______+=* ______,++______,_,*______+=*&* ______,_+=_+_:__,_;_<*__++?++* ______++,++*______++,++*______ ++,++*______++,++*&*______++,_ ,++*______,_+=_+_+_+_:______;_ <*__++?~_____(_-_+_-_)^~_____( *______),++*___,_____,_,_+=*&* ______,_+_:_____(_+_-_-_);;_<* __?--*______:___;}_________ _[ 999-99-99],*__=_;main(______){ _________*___="AAA@@@@@~~~~~~" "~~~~~~aAAAAAaAAAAAAAAAAAAA;;" "aa~~~~~~~~~a;a";_____:____((* ___-______),&__);if(__,*++___) goto _____;++______;++______;}


1

沃尔夫勒姆,72区

到处都有破折号(-)的地方,请用空格替换

一世

h01-

r*1/

Ĵ

6
115

  m
+1C

  t
*0e

  e
,,[

Ø

r4
a+

s

 10
-1

 +1
Pr

ž

ro
 8*

ac
 -1

od
 +1

Ť

--F
 {

,50
 0

/]}  -- fixed bracket directions
 0

1-,
 ,

01C
 0

tni
 4

您是指Wolfram语言(即Mathematica)吗?您所有的支架和支架都指向同一个方向-旋转积木时是否不小心将它们翻转了?
马丁·恩德2014年

1
好的,第三段的支架和支架T应该相反。我设法重建它
Martin Ender 2014年

Wolfram语言,是的。哦,不,我确实弄错了!恭喜您能解决该问题!
Gerli 2014年

我固定了T。我打印出代码并旋转了纸,以减少精神锻炼……我忘记考虑符号也
随之

0

MATLAB,第48区

不幸的是,它似乎在Octave中不起作用。

-
^-1

'
'u"

v'+
e

[['
;

'.i
]

lmi
a

 kv
hW

 .x
).

3)
t;

b(
'p

('l; 

.]'e

0

Python 3176区域

我在此程序中不使用下划线,因此我决定用下划线替换所有空格以增加可读性。如果无法将它们放回原处,请确保将它们放回原处。

我阻止:

1456

"jtr

\)\~

tris

],i)

t=""

2697

t(t[

_r+2

_r_i

O块:

i_
s_

_;
32

6#
an

".
+-

t)
in

n(
_[

""
(c

ap
ri

L块:

  =
#14

  .
\n"

  ;
"(t

  i
T%"

  o
:=i

  r
ioj

  6
mp#

J块:

6
2(h

5
574

#
"=t

7
spl

f
o__

s
(s_

n
];#

0    
t=_

*
#)(

T块:

=_1
 _

295
 r

21,
 r

,2)
 .

Z块:

46
 ""

"5
 3"

#t
 )n

1t
 ),

S块:

 ge
34

 nt
68

0

Python 3

地区-484

空格替换为%。有一些注释用作填充。相当重复的代码。可能会很复杂。

121个

41
)+

%r
1-

:#
1#

%r
1-

01
,+

a1
n+

))
0+

h1
r-

#0
##

--
ge

11
1-

hr
1-

--
-1

ap
0+

+1
+'

h0
r+

:1
##

11
1-

))
0+

a0
p+

n0
d+

f%
oz

-1
0+

hr
1-

n0
d+

a0
p+

a1
n+

+0
1+

hf
.=

i1
%-

f%
oa

a1
n+

(c
0+

(0
1+

0,
1+

i1
n+

in
1+

r+
%=

-0
1+

fo
%l

n'
d'

--
=1

p1
%-

-;
-a

-;
-h

a1
n+

pe
0+

pe
0+

-1
0+

n0
d+

11
0-

a0
p+

i1
n+

hz
.=

n0
d+

##
)#

5)
1+

g(
1-

%1
r-

(c
.j

(0
c+

11
0-

(z
n(

g(
1-

41
)+

)s
)'

in
1+

r+
%=

ap
in

g(
1-

01
,+

-a
-n

(l
1+

pt
e(

%1
r-

-#
]#

(1
f+

g1
(-

h.
l=

01
,+

h.
pr

:1
##

:#
1#

(1
z+

r+
%=

+1
0+

p0
e+

r%
+=

(a
0+

hz
.=

+0
1+

(0
c+

))
0+

#0
##

q%
1-

g1
e-

-0
1+

#0
##

pe
0+

-1
h)

61
)+

an
1+

--
ng

fo
%f

)0
)+

f%
oz

-=
-[

11
)+

q1
%-

:#
1#

+0
1+

--
=r

j1
%-

ho
ri

#-
ra

(0
c+

i1
n+

,1
8-

r+
%=

%1
r-

##
0#
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.