Php 困难算法:徽章平衡、数学分配

Php 困难算法:徽章平衡、数学分配,php,algorithm,math,logic,Php,Algorithm,Math,Logic,我有一个很有趣的问题,让我头晕目眩。我正在开发一个由用户和奖项组成的小型系统,名为“徽章”。根据以下标准向用户颁发特殊徽章:10枚铜牌、5枚银牌和1枚金牌。这很简单,但是,如果一个用户有8个青铜徽章、7个银徽章和1个金徽章,他可以使用另外2个银徽章作为青铜徽章 每当用户有更高级别的徽章可分发时,就会发生这种情况。同样,例如,如果他有8枚青铜徽章、4枚银徽章和4枚金徽章,他可以将2枚金徽章转换为青铜,1枚转换为银,以获得特殊徽章 我完全不知道怎么做。我尝试过各种循环,如果,但我永远无法正确分配。也

我有一个很有趣的问题,让我头晕目眩。我正在开发一个由用户和奖项组成的小型系统,名为“徽章”。根据以下标准向用户颁发特殊徽章:10枚铜牌、5枚银牌和1枚金牌。这很简单,但是,如果一个用户有8个青铜徽章、7个银徽章和1个金徽章,他可以使用另外2个银徽章作为青铜徽章

每当用户有更高级别的徽章可分发时,就会发生这种情况。同样,例如,如果他有8枚青铜徽章、4枚银徽章和4枚金徽章,他可以将2枚金徽章转换为青铜,1枚转换为银,以获得特殊徽章


我完全不知道怎么做。我尝试过各种循环,如果,但我永远无法正确分配。也许有人可以帮我?

用户需要至少1枚金徽章,至少6枚银或金徽章,以及至少16枚铜、银或金徽章

伪代码是

count(gold) >= 1
&& count(gold) + count(silver) >= 6
&& count(gold) + count(silver) + count(bronze) >= 16
如果你也有一枚钻石奖牌,可以换成金、银或铜,那么也包括这枚,比如

count(diamond) + count(gold) >= 1
&& count(diamond) + count(gold) + count(silver) >= 6
// etc
或者你可以使用“奖牌等级”,这样你可以做一些简单的事情,比如

count(rank of gold or higher) >= 1
&& count(rank of silver or higher) >= 6
&& count(rank of bronze or higher) >= 16

用户需要至少1个金徽章,至少6个银或金徽章,以及至少16个铜、银或金徽章

伪代码是

count(gold) >= 1
&& count(gold) + count(silver) >= 6
&& count(gold) + count(silver) + count(bronze) >= 16
如果你也有一枚钻石奖牌,可以换成金、银或铜,那么也包括这枚,比如

count(diamond) + count(gold) >= 1
&& count(diamond) + count(gold) + count(silver) >= 6
// etc
或者你可以使用“奖牌等级”,这样你可以做一些简单的事情,比如

count(rank of gold or higher) >= 1
&& count(rank of silver or higher) >= 6
&& count(rank of bronze or higher) >= 16

一种方法是从最高的徽章开始,减去所需的数字,然后将其余的徽章转换为下一个徽章。因此:

拿走一枚金徽章。 将所有剩余的金徽章转换为银。 拿走五枚银徽章。 将所有剩余的银徽章转换为青铜徽章。 拿走10枚青铜徽章。
如果任何外卖步骤失败,那么他们就没有资格获得徽章。这很简单,对于其他徽章数量或汇率修改它也很简单

一种方法是从最高的徽章开始,减去所需的数字,然后将其余的徽章转换为下一个徽章。因此:

拿走一枚金徽章。 将所有剩余的金徽章转换为银。 拿走五枚银徽章。 将所有剩余的银徽章转换为青铜徽章。 拿走10枚青铜徽章。
如果任何外卖步骤失败,那么他们就没有资格获得徽章。这很简单,对于其他徽章数量或汇率修改它也很简单

如果我有比黄金更高的东西可以是0呢?比如钻石。用户至少需要1金,5银和10铜,但如果它有钻石,它可以转换成其他。如果我有比黄金更高的东西,可以是0呢?比如钻石。用户至少需要1金,5银和10铜,但如果它有钻石,它可以转换成其他。如果我有比黄金更高的东西,可以是0呢?比如钻石。用户至少需要1枚金、5枚银和10枚铜,但如果它有一枚钻石,它可以转换成其他的。@vinnylinux然后前两步是拿走零枚钻石徽章,并将所有剩余的[即所有]钻石徽章转换成金徽章。如果我有比黄金更高的东西,可以是0,该怎么办?比如钻石。用户至少需要1枚金、5枚银和10枚铜,但如果它有一枚钻石,它可以转换成其他的。@vinnylinux然后前两步是拿走零枚钻石徽章,并将所有剩余的[即所有]钻石徽章转换成金徽章。