-1

19 or 23.5つのリストの合計が19になるように、これら2つをに分ける必要があるなどの奇妙な数字があり5 listsます。つまり、各リストの3.8は19/5=3.8です。ただし、問題は小数ができないことです。丸められた数値が必要です。それに応じて数値を丸めて、3.8ではなく4、4、3、4、4をリストに5回配置する方法はありますか?

さらに、5つの異なる数字に分けられていないものもあります。いくつかは77/12のようなものである可能性があり、したがって12diffに分割されます。それぞれに6または7の番号が付いたリストは、77に追加されます。

この問題にどのように取り組むことができるか考えていますか?

ありがとう!

4

2 に答える 2

8
def split(number, length):
    div, mod = divmod(number, length)
    return [div+1]*mod + [div]*(length-mod)

>>> split(19, 5)
[4, 4, 4, 4, 3]
>>> split(23, 4)
[6, 6, 6, 5]

元のバージョン:

def split(number, length):
    result = [number//length]*length
    for i in range(number%length):
        result[i] += 1
    return result
于 2012-08-06T21:50:54.253 に答える
0

どうぞ。

def roundto(number,items):
    start = [1 for i in xrange(items)]
    reached = False
    while not reached:
        for i in xrange(len(start)):
            start[i] += 1
            if sum(start) == number:
                return start

print roundto(19,5)
>>> 
[4, 4, 4, 4, 3]
于 2012-08-06T21:46:51.123 に答える