根据产品数量计算PDF格式的页面

时间:2017-07-14 03:35:37

标签: python algorithm python-2.7 math

我正在创建一个将html产品目录转换为PDF的Web应用程序。我试图根据产品数量计算页数,将函数传递给产品总数并返回页数的整数。

由于显示横幅,产品数量会在不同页面上发生变化。

  • 第一页可容纳8个产品
  • 最后一页可容纳12个产品
  • 如果至少共有2页
  • ,则始终显示最后一页
  • 中间页面可容纳14种产品
  • 除第一页和最后一页之外的每组2x页面的中间页面
  • 如果有奇数页面,那么第二页最后一页将包含16个产品

提供目录页数的更直观的示例:

1 page: [8]  
2 pages: [8][12]  
3 pages: [8][16][12]  
4 pages: [8][14][14][12]  
5 pages: [8][14][14][16][12]  
6 pages: [8][14][14][14][14][12]  

我无法绕过这个,我的数学和算法技能都达不到。如果有人能够对我应该走的方向有所了解,我真的很感激。

1 个答案:

答案 0 :(得分:2)

逻辑上,您将首先放置第一页,然后放置最后一页,然后检查总数是否为奇数,然后添加middles。

def ass(num):
    #Check for negative number
    if num <= 0: return
    #This list will be returned, start with 8, since it always has 8
    ret = [8]

    #If only on number, then return
    if num == 1: return ret
    #add 14s in the middle; even need total-2, odd number needs total-3
    to_add = num - 2 if num % 2 == 0 else num - 3

    for i in range(to_add):
        ret.append(14)

    #check for second to last if odd, we need 16 appended
    if num % 2 != 0:
        ret.append(16)
    #Final 12
    ret.append(12)

    return ret