csharp进阶练习题:求解长方体索玛【难度:2级】:
A 索马立方是一个组件,益智和在1933年通过海恩发明,包括七个块,通过切割一个小的(通常是木制)立方体成创建大小相等的较小的27米的立方体,然后胶合三到其中四个在一起以形成7 polycubes.然后,这些片可以被组合成一个立方体(见下例)或成各种其它形状.
目标
有240个解决方案,以形成索马立方.这个习题的目标是找到其中之一.但是,为了使事情更有趣一点,我们将推广任务.取而代之的是索玛立方体的,我们将与长方体(所以不一定立方体),这是分割成w
Xh
X’D’同等大小的立方体工作.然后,这些立方体粘在一起成N
件.这些作品通常有不同的形状,但也可能是一些具有相同的形状.
对于复杂性和运行的缘故,片的转动应* 不* 以这种习题考虑.在您的解决方案的所有作品预计将有相同的方向,因为他们提供的.
你的任务是组装件放回等于该origial长方体的形状.显然不可能有条任何空间重叠.必须有在长方体,并没有从它伸出没有"洞".
如果存在多个解决方案,任何人都可以返回.
输入
你将与片的地图/字典接收尺寸W,H,期望的长方体作为输入的D
,一起,与片作为键,并且其形状为值的名称.名字的目的是确定在解决方案中的碎片.形状都是布尔型的三维排列,它代表一个笛卡尔网格.每个布尔值定义素是否包含立方体.例如,从原有的立方体(灰色上图中)的三脚架形件可以被定义如下:
布尔[,,] pieceP = {
{{真,假},{假,假}},
{{真,真},{真,假}}
};
件将被修整,即它们的数组矩阵具有最小可能的尺寸.
如果考虑到所有提供作品,TRUE;值的数字的总和永远是’W H 目标长方体的D’,因为每一个真正代表小方块该长方体组成之一.
输出
你的函数的输出应与尺寸w
,h
和’D’串的三维数组矩阵.它代表了组装长方体.每个字符串应是件占据该体素的名称.饮片一定要保留其原来的形状和 - 如上所述 - 也是他们的方位.
如果没有解,null
应当返还.
实施例
在这个例子中,我们使用2号和两片的立方体.
VAR =件新词典<字符串,布尔[,,]>(){
{ "P",新布尔[,,] {{{真,假},{假,假}},
{{真,真},{真,假}}}},
{ "Q",新布尔[,,] {{{假,真},{真,真}},
{{假,假},{假,真}}}},
};
VAR溶液=解答(2,2,2,件);
在这种情况下,唯一有效的解决办法如下:
串[,,]预期= {{{ "P", "Q"},{ "Q", "Q"}},
{{ "P", "P"},{ "P", "Q"}}};
编程目标:
using System;
using System.Collections.Generic;
using System.Linq;
public class SomaCuboidSolver
{
public static string[, ,] Solve(int w, int h, int d, Dictionary, bool[, ,]> pieces)
{
return null;
}
}
测试样例:
using System;
using System.Collections.Generic;
using NUnit.Framework;
[TestFixture]
public class SomaCuboidTest
{
[Test]
public void Simple2x2()
{ "P", new bool[, ,] { { {true, false}, {false, false} },
{ {true, true }, {true, false} } } },
{ "Q", new bool[, ,] { { {false, true }, {true, true } },
{ {false, false}, {false, true } } } },
};
string[, ,] expected = { { {"P", "Q"}, {"Q", "Q"} },
{ {"P", "P"}, {"P", "Q"} } };
最佳答案(多种解法):
点击查看答案
更多关联题目:
csharp进阶练习题:Burrows-Wheeler变换编码I.【难度:2级】–景越C# 经典编程题库,不同难度C# 练习题,适合自学C# 的新手进阶训练
csharp进阶练习题:获取Excel列标题!【难度:2级】–景越C# 经典编程题库,不同难度C# 练习题,适合自学C# 的新手进阶训练
csharp高级练习题:Codewars风格排名系统【难度:4级】–景越C# 经典编程题库,不同难度C# 练习题,适合自学C# 的新手进阶训练
免责申明
本博客所有编程题目及答案均收集自互联网,主要用于供网友学习参考,如有侵犯你的权益请联系管理员及时删除,谢谢
题目收集至https://www.codewars/
https://www.codewars/kata/solving-a-soma-cuboid
更多推荐
csharp进阶练习题:求解长方体索玛【难度:2级】--景越C#经典编程题库,不同难度C#练习题,适合自学C#的新手进阶训练
发布评论