我正在研究一个应用程序,以找到给定特定起始结构的拼图立方体的可能解决方案的数量。

我将所有唯一的解决方案存储在内存中,将与给定结构进行比较,以确定可能有多少解决方案。

为此,我必须围绕每个面将立方体旋转90度,共4次,以便检查所有可能的方向。稍后我将考虑思考。

[使用一个立方体,有6个面进行4圈旋转,总共进行24个操作。

由于围绕一个轴的旋转等效于围绕另一个2轴的旋转,因此我努力实现高效的算法'。

例如:绕x轴旋转产生的方向与绕y轴然后绕z轴旋转的方向相同。因此,我当前的实现需要64个操作,这是多余的,因为我多次检查相同的方向。

当前算法:public static int getPossibleSolutionCount(Map pieces)

{

int count = 0;

for (Solution s : solutions)

{

for (int z = 0; z < 4; z++)

{

for (int x = 0; x < 4; x++)

{

for (int y = 0; y < 4; y++)

{

if (s.isDerrivedFrom(pieces))

{

count++;

}

//all rotation calls rotate the piece / structure byt 90 degrees

pieces.values().forEach(piece -> piece.rotate(GameObject.Axis.Y_AXIS));

}

pieces.values().forEach(piece -> piece.rotate(GameObject.Axis.X_AXIS));

}

pieces.values().forEach(piece -> piece.rotate(GameObject.Axis.Z_AXIS));

}

}

return count;

}

如何改善这一点,以便不重复相同的方向,即,我只能检入24次迭代,而不是64次。

java 三维旋转立方体_java - 如何通过旋转来计算立方体的所有方向,而不重复方向? - SO中文参考 - www.soinside.com...相关推荐

  1. java凌晨12点_java - JAVA如果我在每天中午12点之后安排我的时间表,会发生什么? - SO中文参考 - www.soinside.com...

    它实际上是Timer / TimerTask组合(link)的更通用的替代品 此外,Java 8提供了一些有用的工具来进行所需的时间计算.一个例子可能是: private final Schedule ...

  2. shell看java控制台_java - 为什么我的shell脚本的输出不能打印在控制台? - SO中文参考 - www.soinside.com...

    我试图用java在控制台打印一个shell脚本的输出.当我手动运行该脚本时,我得到C:/Users/user1/Desktop/shell.sh: line 78: /usr/ucb/ps: No s ...

  3. 另一个.java文件调用_java - 如何调用另一个类“写文件”的方法? - SO中文参考 - www.soinside.com...

    在我的Android应用程序,我想有一类处理所有"写入/读取到文本文件"的行动.所以,我根本就调用我的readUserFile.java文件我想的方法.但我的方法将不会在该文件中工 ...

  4. java游戏移动_java - Java游戏 - 如何让敌人移动? - SO中文参考 - www.soinside.com

    Java游戏 - 如何让敌人移动? 问题描述 投票:1回答:2 我正在做一个射击游戏,并添加了许多带阵列的敌人,然后在地图上给他们一个随机位置,但我不知道如何让他们在到达他们的位置后移动.这是我的敌人 ...

  5. java方法未定义类型_java - 方法未定义为类 - SO中文参考 - www.soinside.com

    我试图在eclipse中运行一个使用名为getArea(一个对象)的方法的代码.我目前收到错误说 对于getArea(ComparableRectangle)类型,方法RectangleTest未定义 ...

  6. java keytool 导入证书_java - Keytool无法导入证书 - SO中文参考 - www.soinside.com

    在尝试导入证书时,我收到一条错误,导致无法导入,因为在这种情况下别名(tomcat)已经存在 $ keytool -import -v -alias tomcat -file tomcat.crt - ...

  7. java按钮不显示中文_java - 按钮没有显示日志也不吐司[复制] - SO中文参考 - www.soinside.com...

    你好,我是新来的Android工作室我刚刚学会了如何记录和烤面包的工作,所以我想测试一下,但我的按钮没有显示任何.下面的代码: main activity.Java import android.su ...

  8. java activemq 断线_java - 防止ActiveMQ重新连接失败时自动退出 - SO中文参考 - www.soinside.com...

    我有一个小型的spring-boot应用程序,该应用程序连接到ActiveMQ上的一个或多个主题,这些主题在启动时在应用程序的application.properties文件中设置-然后将这些消息发送 ...

  9. java中使用几率_Java中使用蒙特卡洛算法计算德州扑克成牌概率(二)- 计算牌面分值...

    德州扑克中比较重要的一个算法就是计算牌面的得分,不仅仅关乎概率计算的结果,同时也需要很高的性能.蒙特卡洛算法计算的次数越多结果越准确,因此算法的性能至关重要.下面是一个高性能的牌面java计算算法. ...

最新文章

  1. Ubuntu 14.04 64bit上安装Scrapy
  2. 干货丨机器学习中的模型评价、模型选择与算法选择
  3. android工程建立到最后一步提示unsupported template dependency的解决方法
  4. 大型企业网络配置系列课程详解(四) --HSRP和VRRP配置与相关概念的理解(一)...
  5. Distinct Characters Queries CodeForces - 1234D(线段树求区间字母种类数)
  6. java Math 方法
  7. 能在任意一种框架中复用的组件,太牛了!
  8. 01tire+洛谷P4551 最长异或路径
  9. epoll边缘触发_4.2.3、epoll:水平触发与边缘触发
  10. 会向业务“砍需求”的技术同学,该具备哪6点能力?
  11. centos在文本中搜索字符串_linux(centos8):用grep命令查找文件内容
  12. 神奇的go语言(聊天室的开发)
  13. RE管理器root explorer基础操作教程
  14. yii2 关系...
  15. 破解版超级数据恢复软件-内含已破解注册码
  16. 汇编语言工具(DosBox、debug)下载与安装教程
  17. 2013年MBA、MPA、MPAcc入学考试英语辅导教材
  18. 计算机基础知识--->对张海藩老师所著《软件工程》的这本书的一些知识总结
  19. Saber吃苹果,保持每箱苹果数量递增
  20. 《2018中国直销银行白皮书》发布 银行面临“颠覆式创新”

热门文章

  1. ubuntu安装软件包命令
  2. 名帖301 刘墉 行书《自作诗卷》
  3. 施耐德电气:“三步走”实现配电数字化,制胜可持续未来
  4. VTK 实现MinIP Activiz
  5. 数据分析_表和表的运用
  6. 稍纵即逝的烟花蓄势于纸
  7. day4. jetson nx 确认 SPI 时钟
  8. 这4个兼职平台实测靠谱,想做兼职的赶紧收藏起来看看吧
  9. 教你学Python38-利用SVD简化数据
  10. 京东云引擎:免费好用的web应用托管平台