算法计算最佳的项目数量



好吧,这是一个从内部吃掉我的问题,因此对任何帮助都表示赞赏。我有一个返回项目列表的Web服务。返回的项目数由两个变量"页面"one_answers" per_page"约束。所以一个URL

abc.com?page=10&per_page=100

将显示第10页,其中包含100个项目。我必须有效地查询此服务,并且仅获取上次获取后添加的项目。因此,假设我将所有物品缓存至#1024,然后再添加12个项目,使计数1036。如何计算页面和per_page值,以便我将所有添加的项目在单个页面中获取,同时保持per_page qunatity尽可能接近新添加的项目。例如:在这种情况下,per_page应该接近但不少于12。我已经知道缓存的最后一个计数和当前的项目总数。如果获取的页面具有先前缓存的项目,则可以。我试图找到最佳的响应,而不是最准确的响应。我使用的语言是Python,但仅仅是算法或伪用代码的语言。

注意:该服务首先给了我最早的物品。因此,最新条目始终添加到最后一页

是否有令人信服的理由不重新要求?

abc.com?page=2&per_page=1024

只是始终设置page=2per_page =可缓存的项目数。

唯一的怪异情况是,添加元素的数量大于缓存的项目数,在这种情况下,您必须 abc.com?page=1&per_page=99999

因此,从需要使per_page至少等于新项目的数量(假设您都希望它们全部在同一页面上)开始

 def items_per_page(total_item_count,new_item_count):
     for i in itertools.count(new_item_count):
        if total_items % i>= new_item_count:
            return i
 total_count = 136  #including the new items
 new_count = 12
 ct_per_page = items_per_page(total_count,new_count)
 page_num = total_count//ct_per_page  + 1 # the last page
 print my_url+"?page="+page_num+"&per_page="+ct_per_page

至少我很确定这总是会给您带来最佳结果:)

通过最佳我的意思是per_page

的最小值

这是带有小错误框的代码,可以提供最佳的页面大小(建议的代码不会返回完全分配总数的页面大小)。

def items_per_page(total_item_count,new_item_count):
     for i in itertools.count(new_item_count):
        if total_items % i>= new_item_count or total_items %i == 0:
            return i
 total_count = 136  #including the new items
 new_count = 12
 ct_per_page = items_per_page(total_count,new_count)
 page_num = total_count//ct_per_page  + 1 # the last page
 print my_url+"?page="+page_num+"&per_page="+ct_per_page

最新更新