python进阶练习题:社会主义分配【难度:2级】:

几个左翼意识形态的核心思想是,最富有的人应该* 支持* 最贫穷的人,无论如何,这正是你所谓的使用这个kata所做的事情(从旁注来看,这是出于必要性将divs的宽度重新分配到给定的容器中).

你将获得两个参数,populationminimum:你的目标是根据自己的需要给予每一个参数(我们假设它们等于每个人的"最小值",无论如何),取自最富有的(更大的数字).

例如,假设人口"[2,3,5,15,75]“和"5"作为最小值,预期结果应为”[5,5,5,15,70]".让我们惩罚那些肮脏的资本家,因为我们都知道,富人必须以某种方式成为过错和耻辱!

如果碰巧只有少数人是最富有的人,那么首先从数组中索引最低(最接近左边,少数几个字)的那些人,以1:1为基础的英雄无产阶级再分配,直到每个人都满意为止.

为了澄清这个规则,假设人口"[2,3,5,45,45]“和"5"为"最小”,预期结果应为"[5,5,5,42,43]".

如果你想逐步看到它,可以考虑从群体中的每个成员中删除"minimum",然后迭代地(或递归地)向最穷的人添加1,同时从最富有的人中删除1.如果存在具有相同最小贫困程度的更多元素,那么选择最左边的元素,因为它们肯定比其他穷人更加符合党的意愿;同样地,可以从左边最富有的人那里拿走,这样他们就可以吸取教训,变得更善良,可能会给国家的检查员提供更多礼物*!

步骤:


[2,3,5,45,45]变成了
[-3,-2,0,40,40]然后成为
[-2,-2,0,39,40]然后成为
[-1,-2,0,39,39]然后成为
[-1,-1,0,38,39]然后成为
[0,-1,0,38,38]然后成为
[0,0,0,37,38]然后最终成为(再次增加最小值,因为没有价值不再低于贫困线
[5,5,5,42,43]

如果用现有资源给予"最低限度"是不可行的(因为社会主义社区经常出现这种情况…),例如,如果上述起始人口设定了给予任何人至少"30"的目标,那么就回归一个空数组[].

编程目标:

def socialist_distribution(population, minimum):
    #your code here


测试样例:

Test.describe("Basic tests")
Test.assert_equals(socialist_distribution([2,3,5,15,75],5),[5,5,5,,70])
Test.assert_equals(socialist_distribution([2,3,5,15,75],20),[20,20,,20,20])
Test.assert_equals(socialist_distribution([2,3,5,45,45],5),[5,5,5,,43])
Test.assert_equals(socialist_distribution([2,3,5,45,45],30),[])
Test.assert_equals(socialist_distribution([24,48,22,19,37],30),[30,,30,30,30])


最佳答案(多种解法):

点击查看答案

更多关联题目:

免责申明

本博客所有编程题目及答案均收集自互联网,主要用于供网友学习参考,如有侵犯你的权益请联系管理员及时删除,谢谢
题目收集至https://www.codewars/
https://www.codewars/kata/socialist-distribution

更多推荐

python进阶练习题:社会主义分配【难度:2级】--景越Python编程实例训练营,不同难度Python习题,适合自学Python的新手进阶