Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 需要信用到期算法的帮助吗_Algorithm_Language Agnostic - Fatal编程技术网

Algorithm 需要信用到期算法的帮助吗

Algorithm 需要信用到期算法的帮助吗,algorithm,language-agnostic,Algorithm,Language Agnostic,所以我被卡住了。我正在研究一个即将到期的信用体系。与信用卡里程相似,但不完全相同。顺便说一句,我为前面的书感到抱歉,但我需要添加足够的细节来帮助了解整个情况 我需要的是一个系统,在这个系统中,用户可以为完成活动积累积分。但他们也可以把这些学分花在活动上。如果不使用信用证,信用证应在30天后到期。我似乎被困在如何在每天晚上运行的批次中准确计算这一点上。任何语言中的任何想法都将受到极大的赞赏,因为我似乎只停留在一个我无法理解的小细节上。以下是数据示例: Date : Amount : Expirie

所以我被卡住了。我正在研究一个即将到期的信用体系。与信用卡里程相似,但不完全相同。顺便说一句,我为前面的书感到抱歉,但我需要添加足够的细节来帮助了解整个情况

我需要的是一个系统,在这个系统中,用户可以为完成活动积累积分。但他们也可以把这些学分花在活动上。如果不使用信用证,信用证应在30天后到期。我似乎被困在如何在每天晚上运行的批次中准确计算这一点上。任何语言中的任何想法都将受到极大的赞赏,因为我似乎只停留在一个我无法理解的小细节上。以下是数据示例:

Date : Amount : Expiries
7/1 : +5 : 7/31
7/2 : +5 : 8/1
7/2 : -3 : never
7/3 : +5 : 8/2
7/1:+5-用户注册
7/2:+5-用户与系统交互
7/2:-3-用户购买活动
7/3:+5-用户与系统交互

因此,在这一点上,用户已收到15个学分,并已花费3。留给他总共12个学分。(至少我的基础数学成绩是:P)

我应该补充一点,目前我们正在考虑两个字段:最后一个处理,下一个处理。因此,假设是新的注册,此时的这些值为:

最后处理日期:7/1
下次加工日期:8/1

所以现在8/1出现了。批处理开始并查看所有超过30天的积分。这一点是5

这就是它开始变得模糊的地方

然后,系统应该查看过去30天内花费的所有学分,看看他们是否使用了任何学分。因为它们只有在没有被使用的情况下才会过期。所以有3个。因此,我扣除了用户2个积分,因为这是30天之前获得的积分与花费的积分之差。所以我完成了这一批,并为第二天设置了相应的日期。现在假设他们不再消费了,我开始计算30岁以上获得的学分,即5学分和3学分。但我显然不想考虑我昨天考虑的3个学分。什么是一个好的方法,不包括这3学分再次考虑

这就是我被困的地方

我们正在考虑为过期的贷项写一个借记记录,这样我们就可以跟踪它们,但很难看到我如何在计算中使用它

如果你读到这里,谢谢你。如果你在回答问题时做出了一些努力,我至少会投你一张放弃努力的票

编辑:
好的@Greg提到了我忘记解决的问题。考虑在信用卡上挂一面旗帜的想法。一个有效点,但由于以下情况而无法工作:


假设用户在某一天花费10个积分。但该批次考虑的过期积分仅累积到5。好吧,他应该还有5个学分没有到期,因为他花了不止一个到期。所以国旗不起作用,因为我们会跳过那5个额外的学分。希望这是有意义的?

在支出中添加一个标志怎么样?如果未设置该标志,则可以在必要时将该支出包括在批次中。如果确实使用支出来抵消到期,则设置标志。下一次,你会忽略这个费用,因为标志被设置。

< P>我不会考虑在你提交数据时尝试处理数据。相反,您应该跟踪用户拥有多少信用,以及何时到期。这样,您就可以在购买时跟踪使用了哪些信用卡,而不是在以后再进行计算

因此,当用户注册时,他们有:

5 credits expiring on 8/1
第二天与系统交互后:

5 credits expiring on 8/1
5 credits expiring on 8/2
买了东西之后:

2 credits expiring on 8/1
5 credits expiring on 8/2

等等。

使用借方记录记录正常支出。当每月批处理作业运行时,它可以计算小于或等于到期贷项的总借项。如果有信用证到期,只需在应用程序中插入适当的借记记录(适当==以取消超额)。这样,任何只检查贷项和借项的“运行总计”代码都将达到批处理代码预期的余额。

对于系统的每个用户,保留一个数组,该数组存储关于用户在接下来连续30天内可用贷项数量的信息

例如,某些用户的数据可能如下所示

8  | 
7  | | 
6  | | | | 
5  | | | | | | | | | | |
4  | | | | | | | | | | | | | | | | |
3  | | | | | | | | | | | | | | | | | | | | | | | | 
2  | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
1  | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
  -------------------------------------------------------------
  | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
   ^ ^                           ^          
   |  \_                         |
  today tomorrow             in 15 days
每次用户获得一些积分时,您都会根据获得的积分数增加所有天数的金额。例如,如果用户获得2个学分,则表格将更改如下。这就像是把整个图形向上提升

10 | 
9  | | 
8  | | | | 
7  | | | | | | | | | | |
6  | | | | | | | | | | | | | | | | |
5  | | | | | | | | | | | | | | | | | | | | | | | | 
4  | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
3  | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
2  | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
1  | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
  -------------------------------------------------------------
  | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
   ^ ^                           ^          
   |  \_                         |
  today tomorrow             in 15 days
如果用户今天有x个积分,并且花费了y个积分,那么您可以将他可用的积分量减少到x-y,因为他每天的积分量都大于x-y。几天来,他只有x-y,数量保持不变。这就像是把图表的顶端剪掉。例如,如果用户花费3个学分,则图表将更改为

7  | | | | | | | | | | |
6  | | | | | | | | | | | | | | | | |
5  | | | | | | | | | | | | | | | | | | | | | | | | 
4  | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
3  | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
2  | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
1  | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
  -------------------------------------------------------------
  | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
   ^ ^                           ^          
   |  \_                         |
  today tomorrow             in 15 days
每天将图表向左移动,以模拟到期信用。用户明天将有以下金额

7  | | | | | | | | | |
6  | | | | | | | | | | | | | | | |
5  | | | | | | | | | | | | | | | | | | | | | | | 
4  | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
3  | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
2  | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
1  | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
  -------------------------------------------------------------
  | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
   ^ ^                           ^          
   |  \_                         |
  today tomorrow             in 15 days

假设您每天运行此批处理,您可以有一个表来跟踪他们获得的所有积分和使用的积分(负积分)

在下个月初,你的工作就是找出在第一天获得的学分中有哪些在这个月没有花掉

第一天获得的学分数-他们上个月花费的所有学分。如果这个数字是正数,他们有一些学分需要过期。因此,简单地在表中添加一条负信用记录。这将使未使用的积分归零

第二天,重复这个过程,看看他们在第二天获得了多少学分减去他们在上个月获得的所有学分的总和,同时考虑到你在前一天创建的负学分记录。

一个应用程序