首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场

4x4挑战
EN

Code Golf用户
提问于 2016-01-06 01:32:03
回答 2查看 1.9K关注 0票数 8

有一个名为枚举的大脑游戏(我是基于高祖制作的)。你的挑战是玩这个游戏。

任务

解决4x4枚举/Takuzu的游戏。

  • 通过STDIN或命令行接收起始网格。
  • 通过STDOUT或写入文件输出已解决的网格。

规则

游戏的特点是四轮驱动板,由红色和紫色的细胞组成。

  • 在每一行和每列中必须有相同数目的红色和紫色单元格(各有2个红色和2个紫色)。
  • 不能有相同的行或列。

输入

起始网格将作为一个仅由012组成的16个字符/字节字符串来表示。下面是一个示例:

代码语言:javascript
运行
复制
0001100002001200

1代表红细胞,2代表紫色细胞。所有输入板都是可解决的。

注意:如果您的语言不支持字符串文字输入,则可以将输入作为整数数组。请在你的答复中说明情况是这样的。所以没有混淆,这就是所谓的数组应该是什么样子:

代码语言:javascript
运行
复制
[0, 0, 0, 1, 1, 0, 0, 0, 0, 2, 0, 0, 1, 2, 0, 0]

不允许嵌套数组。

输出

解决后的板应该以与上面相同的格式输出;一个16个字符/字节字符串,仅由12组成。以下是上述输入的解决方案:

代码语言:javascript
运行
复制
2121112222111212

同样,1代表一个红细胞,2代表一个紫色细胞。

奖金

对于任何以ASCII网格形式输出解题板的答案,都会提供一个-25字节的加成。下面是前面提到的董事会的一个例子。

代码语言:javascript
运行
复制
2|1|2|1
-+-+-+-
1|1|2|2
-+-+-+-
2|2|1|1
-+-+-+-
1|2|1|2

一个-50字节额外的任何答案,输出解决板的颜色.这可以输出为图像或彩色文本。

如果选择了彩色文本,输出应该如下所示:

代码语言:javascript
运行
复制
2121
1122
2211
1212

但是,如果图像是选择的输出方法,则生成的文件应该是20x20像素,其中每个单元格是一个彩色的5x5像素块。下面是一个示例:

以下是颜色代码:

代码语言:javascript
运行
复制
Red      -   #a73cba   OR   (167,  60, 186)
Purple   -   #f94a32   OR   (249,  74,  50)

样品

代码语言:javascript
运行
复制
In:  0020010100000100
Out: 1221212112122112

In:  0010000200121000
Out: 2211112221121221

In:  1000100102000000
Out: 1122122122112112
EN

回答 2

Code Golf用户

发布于 2016-01-06 02:54:43

C (函数)(与gcc内置),283

在C中,这似乎是一个很有趣的挑战,很确定它可以被更多的打,但这里有一个开始:

代码语言:javascript
运行
复制
#define m(a,b)for(j=0;j<4;j++){l[j]=i&a<<j*b;if(__builtin_popcount(l[j])-2)goto l;for(k=0;k<j;k++)if(l[j]==l[k])goto l;}
i,j,k,l[4];f(char*s){for(i=0;i<65536;i++){m(15,4)m(4369,1)for(j=0;j<16;j++)if((!(i&1<<j)==s[j]-49)&&(s[j]!=48))goto l;for(j=0;j<16;j++)putchar(50-!(i&1<<j));l:;}}

输入作为字符串传递给函数f()。输出到STDOUT。

在网上试试。

票数 1
EN

Code Golf用户

发布于 2016-01-06 13:40:01

Ruby,196个字节

代码语言:javascript
运行
复制
->g{[o=?1,p=?2].repeated_permutation(16).find{|x|a=x.each_slice(4).to_a
t=a.transpose
a.uniq.size==4&&t.uniq.size==4&&(a+t).all?{|y|y.count(o)==2}&&x.zip(g.chars).none?{|y|y==[o,p]||y==[p,o]}}*''}

repeated_permutation,为什么你的名字要这么长?

这只是遍历所有可能的解决方案,直到其中一个与输入模式匹配为止。

票数 1
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/68646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档