gpt4 book ai didi

algorithm - 动态成就系统算法/设计

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:53:04 24 4
gpt4 key购买 nike

我正在开发这个成就系统,它必须有一个 CRUD,管理员可以访问它来创建新的成就及其规则。我在设计和算法方面需要一些帮助,以便它可以按照管理员的要求轻松地随着新规则发展。

规则示例

一等奖:必须完成 5 门任意类(class)且分数至少为 90
二等奖:必须以至少 85 分的成绩完成两门特定类(class)
勋章三:必须至少有一次总排名前5
勋章四:必须有5000分以上

我基本上会将其作为元数据存储在关系数据库中,可能包含以下这些列:

  • 行动
  • 行动数量
  • 类(class)数量
  • 得分
  • 确定类(class)
  • 排名职位
  • 积分

我想知道是否有针对此类问题的已知算法/设计?或者我应该以不同的方式存储它们以使其更容易?不知道,我想要建议。

最佳答案

你的怀疑可能是对的。在我看来,数据库是组织这些数据的错误方式。您想要创建的每一种新成就都会向您的数据库添加额外的列,而大多数成就不会使用大部分列。一种更灵活的数据结构,即默认情况下不希望每个条目同时使用所有可能的成就标准的数据结构,可能会更有用。大多数语言支持 JSON ,所以我建议你使用它。结构可能是这样的:

[
{
"name": "Medal One",
"requirements": {
"coursesCompleted": 5,
"scoreMin": 90
}
},
{
"name": "Medal Two",
"requirements": {
"specificCoursesCompleted": [
"Course 1",
"Course 2"
],
"scoreMin": 85
}
},
{
"name": "Medal Three",
"requirements": {
"generalRankingMin": 5
}
},
{
"name": "Medal Four",
"requirements": {
"scoreMin": 5000
}
}
]

您可以在此处看到标准类型有时如何被重用,但在不需要时可以省略它们,并且可以将新类型添加到一些成就中而不会膨胀其余数据集。

PS:出于演示目的,我将条件名称写得非常冗长;在实际使用中缩短或不缩短它们取决于偏好。

关于algorithm - 动态成就系统算法/设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53858522/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com