Vb.net 星号兼容性查找算法

Vb.net 星号兼容性查找算法,vb.net,algorithm,Vb.net,Algorithm,我使用的是VB.NET,但是任何其他已知的语言只要使用基本功能就可以了 我的任务是创建占星术兼容性图表,当两个用户将某些占星术符号作为输入,并且有一个关于这些符号兼容性的文本时 对于那些不知道占星术的迹象,但仍然想帮助的人,有12个迹象。每个标志与其他标志或自身具有不同的兼容性。所以基本上我进入了12^2-12的状态。患癌症的白羊座根本不匹配,所以我可以保存一个记录,因为它是相同的,所以最后是12 问题很简单,除了使用12^2-12案例问题之外,还有其他方法来创建此问题吗 伪代码 if sign

我使用的是VB.NET,但是任何其他已知的语言只要使用基本功能就可以了

我的任务是创建占星术兼容性图表,当两个用户将某些占星术符号作为输入,并且有一个关于这些符号兼容性的文本时

对于那些不知道占星术的迹象,但仍然想帮助的人,有12个迹象。每个标志与其他标志或自身具有不同的兼容性。所以基本上我进入了12^2-12的状态。患癌症的白羊座根本不匹配,所以我可以保存一个记录,因为它是相同的,所以最后是12

问题很简单,除了使用12^2-12案例问题之外,还有其他方法来创建此问题吗

伪代码

if sign1=1 and sign2=4
return "do not match at all"
...

您需要一个二维数组,其中包含要返回的值的排序,例如字符串 然后你可以说

compatibility = c[sign1][sign2]
print compatibility

对。使用查找表,例如以文本文件的形式。这样,您也可以在不更改代码的情况下快速修改消息

文本文件:

Aries Gemini "Like cat and dog"
Aries Libra "Certain Love"
...
伪代码:

var compatibilities = read(textFile)  // This is a 2D array

function compatibility(sign1, sign2) {
    int sign1Index = signNameToNumber(sign1)
    int sign2Index = signNameToNumber(sign2)
    return compatibilities(sign1Index, sign2Index)
}

只需准备六份预先编写的兼容性摘要,并随机插入用户输入的星号即可。没有人能够分辨出差异。

此外,您不保存12,而是保存12*11/2所有条目i,j都由j,i,if i镜像=j-可能需要确保始终将较高的索引放在第一位,将较低的索引放在第二位,以使此工作正常properly@nicolas78,你的评论是什么意思?@nicolas78,如果我把它保存为二维数组,这不是浪费空间吗?例如,从白羊座到天秤座的距离是c[1][6],也可能是c[6][1]?你说你保存了12个条目。但你没有-你正在保存12*11/2个条目。如果你想到一张桌子,整个右上角或左下角的三角形(不包括对角线)是多余的,因为它是另一个三角形的镜像。因此,您考虑的方向是正确的,但节省的存储空间更大。然而,如果你只想存储[Gemini][Libra]而不想存储[Libra][Gemini],你应该知道哪一个是集合,哪一个不是——我建议先使用较高的索引,然后使用较低的索引方案,即始终使用[3][1],并保留[1][3]空。如果你打算将条目保留为空,你就不会损失太多空间。在网格中保留空间并不是真正消耗内存的东西;保存字符串不起作用。你也可以选择字典、地图或哈希表的哈希表,如果你真的关心的话,我不知道VB的行话。我猜在我的例子中是随机的,因为我只需要实现它。至于占星术,有4组星座在这一组内部和另一组中都很好地工作。我只是不想去那里。