算法正三角图形拼接是来自幼儿园老师的拷问。

shubo2000 2020-11-15 01:05:46
三角形卡片拼图的算法求助,这类似于什么算法,给关键字搜索都行,谢谢大神们了。整了个标题吸引人谢谢。
幼儿园老师发了一叠正三角形卡片要求拼图,目前有41张,有可能有遗失的卡片。卡片边的图 可以 两两组合 形成6种行为,老师没有下发拼好后的参考图形,所以可能是完整四边形或五边形或六边形,也可能是其它异形。
我的想法是通过计算得到最小空闲边的组合,从而得出最优拼图解。但折腾未果。

41张卡片目前按:“卡片编号,边1(底边)图形,边2(边1顺时针1次)图形,边3图形@下一个卡片..."的格式得到的字符串如下:

//初始值定义
var tStrCard = "1,G2过马路_右,D2电梯_右,Q2骑车_下@2,G2过马路_右,D2电梯_右,Q2骑车_下@3,G2过马路_右,D2电梯_右,Q2骑车_下@4,G2过马路_右,D2电梯_右,Q2骑车_下@5,G2过马路_右,D2电梯_右,Q2骑车_下@6,G2过马路_右,D2电梯_右,Q2骑车_下@7,Q1骑车_上,G2过马路_右,D1电梯_左@8,Q1骑车_上,G2过马路_右,D1电梯_左@9,Q1骑车_上,G2过马路_右,D1电梯_左@10,Q1骑车_上,G2过马路_右,D1电梯_左@11,Q1骑车_上,G2过马路_右,D1电梯_左@12,G1过马路_左,C1出口_左,P1爬高_上@13,G1过马路_左,C1出口_左,P1爬高_上@14,G1过马路_左,C1出口_左,P1爬高_上@15,K1开车_上,D2电梯_右,P1爬高_上@16,K1开车_上,D2电梯_右,P1爬高_上@17,K1开车_上,D2电梯_右,P1爬高_上@18,K1开车_上,D2电梯_右,P1爬高_上@19,G1过马路_左,C1出口_左,P1爬高_上@20,G1过马路_左,C1出口_左,P1爬高_上@21,C2出口_右,P2爬高_下,G1过马路_左@22,C2出口_右,P2爬高_下,G1过马路_左@23,C2出口_右,P2爬高_下,G1过马路_左@24,C2出口_右,P2爬高_下,G1过马路_左@25,C2出口_右,P2爬高_下,G1过马路_左@26,D1电梯_左,P2爬高_下,K2开车_下@27,D1电梯_左,P2爬高_下,K2开车_下@28,D1电梯_左,P2爬高_下,K2开车_下@29,D1电梯_左,P2爬高_下,K2开车_下@30,D1电梯_左,P2爬高_下,K2开车_下@31,D1电梯_左,P2爬高_下,K2开车_下@32,Q2骑车_下,K1开车_上,C1出口_左@33,Q2骑车_下,K1开车_上,C1出口_左@34,Q2骑车_下,K1开车_上,C1出口_左@35,Q2骑车_下,K1开车_上,C1出口_左@36,K2开车_下,C2出口_右,Q1骑车_上@37,K2开车_下,C2出口_右,Q1骑车_上@38,K2开车_下,C2出口_右,Q1骑车_上@39,K2开车_下,C2出口_右,Q1骑车_上@40,K2开车_下,C2出口_右,Q1骑车_上@41,K2开车_下,C2出口_右,Q1骑车_上";
//线下测试可摆为6边形的卡片组合,摆好后空闲的边只有6条,此字符串用于验证程序(编号4 5 11 19 20 25)
var tStrCart6 = "4,G2过马路_右,D2电梯_右,Q2骑车_下@5,G2过马路_右,D2电梯_右,Q2骑车_下@11,Q1骑车_上,G2过马路_右,D1电梯_左@19,G1过马路_左,C1出口_左,P1爬高_上@20,G1过马路_左,C1出口_左,P1爬高_上@25,C2出口_右,P2爬高_下,G1过马路_左";
/*
完整卡片
卡片编号 1号边(签编号侧的边) 顺时针2号边 顺时针3号边
1 G2过马路_右 D2电梯_右 Q2骑车_下
2 G2过马路_右 D2电梯_右 Q2骑车_下
3 G2过马路_右 D2电梯_右 Q2骑车_下
4 G2过马路_右 D2电梯_右 Q2骑车_下
5 G2过马路_右 D2电梯_右 Q2骑车_下
6 G2过马路_右 D2电梯_右 Q2骑车_下
7 Q1骑车_上 G2过马路_右 D1电梯_左
8 Q1骑车_上 G2过马路_右 D1电梯_左
9 Q1骑车_上 G2过马路_右 D1电梯_左
10 Q1骑车_上 G2过马路_右 D1电梯_左
11 Q1骑车_上 G2过马路_右 D1电梯_左
12 G1过马路_左 C1出口_左 P1爬高_上
13 G1过马路_左 C1出口_左 P1爬高_上
14 G1过马路_左 C1出口_左 P1爬高_上
15 K1开车_上 D2电梯_右 P1爬高_上
16 K1开车_上 D2电梯_右 P1爬高_上
17 K1开车_上 D2电梯_右 P1爬高_上
18 K1开车_上 D2电梯_右 P1爬高_上
19 G1过马路_左 C1出口_左 P1爬高_上
20 G1过马路_左 C1出口_左 P1爬高_上
21 C2出口_右 P2爬高_下 G1过马路_左
22 C2出口_右 P2爬高_下 G1过马路_左
23 C2出口_右 P2爬高_下 G1过马路_左
24 C2出口_右 P2爬高_下 G1过马路_左
25 C2出口_右 P2爬高_下 G1过马路_左
26 D1电梯_左 P2爬高_下 K2开车_下
27 D1电梯_左 P2爬高_下 K2开车_下
28 D1电梯_左 P2爬高_下 K2开车_下
29 D1电梯_左 P2爬高_下 K2开车_下
30 D1电梯_左 P2爬高_下 K2开车_下
31 D1电梯_左 P2爬高_下 K2开车_下
32 Q2骑车_下 K1开车_上 C1出口_左
33 Q2骑车_下 K1开车_上 C1出口_左
34 Q2骑车_下 K1开车_上 C1出口_左
35 Q2骑车_下 K1开车_上 C1出口_左
36 K2开车_下 C2出口_右 Q1骑车_上
37 K2开车_下 C2出口_右 Q1骑车_上
38 K2开车_下 C2出口_右 Q1骑车_上
39 K2开车_下 C2出口_右 Q1骑车_上
40 K2开车_下 C2出口_右 Q1骑车_上
41 K2开车_下 C2出口_右 Q1骑车_上
*/




...全文
4957 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
groovy2007 2020-11-17
  • 打赏
  • 举报
回复
试试回溯法。感觉计算量太大,回溯未必可行。

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧