Locked. This question and its answers are locked,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。








挑战

通过字符计数的最短代码可以解决输入灯熄灭的局面。

照明输出板是一个大小可变的二维正方形网格,由两个字符组成-熄灭的灯光的.和亮起的灯光的*

要解决该板,必须关闭所有“灯”。切换一个灯(即打开时关闭,关闭时打开)一次使5盏灯-所选的灯和周围的灯呈+(加号)形状。
“选择”中间的灯将解决木板:
.*.
***
.*.

自熄灯!解决方案的顺序无关紧要,输出将是一块新的电路板,上面有要选择的灯泡的标记。上板的解决方案是
...
.X.
...

在没有侧面灯泡要关掉的角落关掉灯不会溢出:
...
..*
.**

在这种情况下,选择右下角的灯泡只会关闭3个灯泡。

测试用例
Input:
    **.**
    *.*.*
    .***.
    *.*.*
    **.**
Output:
    X...X
    .....
    ..X..
    .....
    X...X
Input:
    .*.*.
    **.**
    .*.*.
    *.*.*
    *.*.*
Output:
    .....
    .X.X.
    .....
    .....
    X.X.X
Input:
    *...*
    **.**
    ..*..
    *.*..
    *.**.
Output:
    X.X.X
    ..X..
    .....
    .....
    X.X..

代码计数包括输入/​​输出(即完整程序)。

最佳答案

Perl,172个字符

Perl,333 251 203 197 190 172字符。在此版本中,我们随机按下按钮,直到所有指示灯熄灭为止。

  map{$N++;$E+=/\*/*1<<$t++for/./g}<>;
  $C^=$b=1<<($%=rand$t),
  $E^=$b|$b>>$N|($%<$t-$N)*$b<<$N|($%%$N&&$b/2)|(++$%%$N&&$b*2)while$E;
  die map{('.',X)[1&$C>>$_-1],$_%$N?"":$/}1..$t

关于language-agnostic - 高尔夫代码:熄灭,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1960200/

10-11 19:08