Java程序使用4D数组

我是第一年的计算机工程专业的学生,​​我在这里很新。 在过去的三个半月里,我一直在学习Java,在此之前我已经学习了六个月的C ++。 我对Java的了解仅限于定义和使用自己的方法,面向对象编程的绝对基础知识,如使用静态数据成员和成员可见性。

今天下午,我的计算机编程教授教我们Java中的多维数组。 关于多维数组只是数组的数组,依此类推。 他提到,在名义教育编程中,几乎从不使用超过2维的数组。 甚至3Darrays也仅在绝对必要的地方使用,例如执行科学function。 这使得4Darrays零使用,因为使用它们显示“我使用错误的数据类型”,在我的教授的话。

但是,我想编写一个程序,其中使用任何数据类型(原始或其他)的4D数组是合理的。 该程序不能像打印数组元素那样简单。

我不知道从哪里开始,这就是我在这里发布的原因。 我想要你的建议。 还欢迎相关的问题陈述,算法和代码片段。

谢谢。

编辑:忘记提及,我完全不知道在Java中使用GUI,所以请不要发布实现GUI的想法。

思路:

– 矩阵乘法及其应用,如在图中寻找最短路径 – 求解方程组 – 密码学 – 许多密码协议代表数据或密钥或以矩阵forms的内部结构。 – 图表上表示为矩阵的任何算法

我一定是对矩阵有一些固定,对不起:)

对于4Darrays,我能想到的一个显而易见的事情是3D环境在时间上的变化表示,因此第4维代表时间尺度。 或者3D的任何表示,其具有放置在数组的第四维中的附加关联属性。

您可以创建一个包含4维的Sodoku超立方体,并将用户输入的数字存储到4维int数组中。

只是为了支持他,…你的教授是对的。 我担心在生产代码中使用4D +arrays的人可能会身体暴力。

能够进入超过3个维度作为教育练习有点酷,但对于实际工作而言,它使事情过于复杂,因为我们对3维以上的结构并没有太多的理解。

难以想出4D +arrays的实际用途的原因是因为在现实世界中(几乎)没有任何复杂的模型。

你可以研究像tesseract这样的建模,这是(用外行的术语)4D立方体,或者Victor建议使用第4维来模拟恒定时间。

HTH

一种用途可能是将动态编程应用于一个带有4个整数参数f(int x,int y,int z,int w)的函数。 为了避免一遍又一遍地调用这个昂贵的函数,你可以将结果缓存在一个4D数组中, results[x][y][z][w]=f(x,y,z,w);

现在你只需找到一个昂贵的整数函数,其中arity为4,哦,并且需要经常计算它…

有许多可能的用途。 正如其他人所说,你可以建模超立方体或者使用超立方体的东西以及随时间变化的建模。 但是,还有许多其他可能的用途。

例如,我们宇宙的理论模拟模型之一使用了第11维物理学。 您可以编写一个程序来模拟这些假设的物理外观。 用户只能看到明显限制可用性的三维空间,但第四维坐标可以像改变通道一样,允许用户改变他们的视角。 例如,如果发生第四维爆炸,您甚至可能需要第五维arrays,以便您可以在每个连接的三维空间中模拟它的外观以及它在每个时间帧中的外观。

要远离科学,请考虑一个MMORPG。 今天,许多游戏使用“实例化”位置,这意味着创建给定区域的副本专门用于给定的一组玩家,以防止滞后。 如果这个“实例化”概念被赋予第四维坐标并且它允许玩家在实例之间移动它们的位置,则它可以有效地允许所有服务器世界合并在一起,同时允许玩家在降低成本的同时对他们去的地方进行大量控制。

当然,您的问题想要在不使用GUI的情况下了解想法。 这有点困难,因为您在2D环境中工作。 一个真正的应用是微积分。 我们有3D图形计算器,但对于更高的尺寸,您几乎必须手动完成。 旨在为您解决这些计算的计划可能无法正确显示信息,但您当然可以计算出来。 此外,当hologaphic接口成为普遍存在的现实时,有可能在3D中表示超立方体图,使得这样的程序有用。

您可以编写基于文本的棋盘游戏,其中棋子的位置用文本表示。 您可以添加尺寸和游戏规则来使用它们。

我能给你的最简单的想法是一个保存状态系统。 在每个间隔,内存中的程序被复制并存储到文件中。 它的坐标是它的位置。 在面值处,您可能不需要4Darrays来处理此问题,但假设您正在保存使用3Darrays的状态的程序。 您可以将其设置为将每个已保存的状态表示为您可以使用的位置,然后查看更改的时间。

我不确定你能用这个具体做什么,因为我刚开始考虑它。 但是你可以使用4Darrays进行某种基本的物理模拟,比如建模涉及一些风值的射弹飞行而不是。 刚想到这一点,因为术语4D总是让人想起任何物体的“位置”是4个值,时间是第4个。