有些网站只讲了代码递归原理,但不能弄明白怎么分的财产,我找了个图,应该够简单易懂了吧

背景

争执大衣

• 《塔木德·损害部·中门卷》有则故事:甲、乙两人共同抓着一件大衣来找法官,
若甲、乙都发誓自己拥有全部所有权, 法官会判定甲、乙分别得到这件大衣的二分之一.
若甲发誓自己拥有全部所有权, 乙发誓拥有二分之一,则法官会判定甲拥有大衣四分之三,乙拥有四分之一。
• 法官判甲拥有四分之三,乙拥有四分之一。

三妻争产

• 当有100个金币,各33.3
• 当有200个金币,大75,二75,三50
• 当有300个金币,大150,二100,三50
• 如何得出的?

解决问题的三原则

*1. 仅分割有争议财产,无争议财产不予分割.

  1. 宣称拥有更多财产权利一方最终所得不少于宣称拥有较少权利
    一方.
  2. 财产争议者超过两人时,将所有争议者按照其诉求金额排序,
    最小者自成一组, 剩下所有争议者另成一组, 争议财产在两组
    间公平分配.*

老师讲解的思路

我的思路



沙漏图出处
如图所示,我的思路:

  1. 当财产小于债权之和一半时,从最低层级债权开始逐层满足;
  2. 当财产 大于等于 债权一半时,从债权最高者到最低者逐层分配;
  3. 当财产大于债权之和时(图片没给出这种情况),所有人均分额外财产。

python代码(思路有了,代码很简单)

  1. 当财产不足所有人债权之和一半时
if money<sum_rights/2:l3=[]for i in range(n):if money>l2[i]*(n-i):for j in range(i,n):l3[j]=l2[i]money-=( l2[i]*(n-i) )else:for j in range(i,n):l3[j]+=money/(n-i)print('分配列表',l3)break
  1. 当超过一半时
elif (sum_rights/2)<=money<sum_rights:l3=l2money-=(sum_rights/2)for i in range(1,n):if money>(l2[n-i] - l2[n-i-1])*i:for j in range(n-i,n):l3[j]+=(l2[n-i] - l2[n-i-1])money-=(l2[n-i] - l2[n-i-1])*ielse:for j in range(n-i,n):l3[j]+=money/iprint('分配列表',l3)money=0breakif money!=0:#前面的循环是1~n-1层,最后一层单独在此分配l3=[i+money/n for i in l3]print('分配列表',l3)
  1. 当超过债权之和时
else:each_add=(money-sum_rights)/nl3=[i+each_add for i in l]print('分配列表',l3)

完整代码,循环实现

#输入:财产、人数、债权
money=float(input('财产(float):'))
n=int(input('人数:'))
l=[]
for i in range(1,n+1):l.append(int(input("债权%d (int):"%i)))
l.sort()#债权从小到大排序
print('债权列表',l)
sum_rights=sum(l)
l2=[i/2 for i in l]#债权一半
#当财产小于债权之和一半时
if money<sum_rights/2:print()l3=[]for i in range(n):if money>l2[i]*(n-i):for j in range(i,n):l3[j]=l2[i]money-=( l2[i]*(n-i) )else:for j in range(i,n):l3[j]+=money/(n-i)print('分配列表',l3)break
#当财产 大于等于 债权一半时
elif (sum_rights/2)<=money<sum_rights:l3=l2money-=(sum_rights/2)for i in range(1,n):if money>(l2[n-i] - l2[n-i-1])*i:for j in range(n-i,n):l3[j]+=(l2[n-i] - l2[n-i-1])money-=(l2[n-i] - l2[n-i-1])*ielse:for j in range(n-i,n):l3[j]+=money/iprint('分配列表',l3)money=0breakif money!=0:#前面的循环是1~n-1层,最后一层单独在此分配l3=[i+money/n for i in l3]print('分配列表',l3)
#当财产大于债权之和时
else:each_add=(money-sum_rights)/nl3=[i+each_add for i in l]print('分配列表',l3)

运行结果

以折线图形式展示结果

折线图我从这学的

完整代码,粘贴复制即可

import matplotlib.pyplot as pltdef tamude(money,n,l):#print('财产',money)l.sort()#债权从小到大排序#print('债权列表',l)sum_rights=sum(l)l2=[i/2 for i in l]#债权一半#当财产小于债权之和一半时if money<sum_rights/2:l3=[0 for i in range(n)]for i in range(n):if money>l2[i]*(n-i):for j in range(i,n):l3[j]=l2[i]money-=( l2[i]*(n-i) )else:for j in range(i,n):l3[j]+=money/(n-i)#print('分配列表',l3)return l3break#当财产 大于等于 债权一半时elif (sum_rights/2)<=money<sum_rights:l3=l2money-=(sum_rights/2)for i in range(1,n):if money>(l2[n-i] - l2[n-i-1])*i:for j in range(n-i,n):l3[j]+=(l2[n-i] - l2[n-i-1])money-=(l2[n-i] - l2[n-i-1])*ielse:for j in range(n-i,n):l3[j]+=money/i#print('分配列表',l3)money=0return l3breakif money!=0:#前面的循环是1~n-1层,最后一层单独在此分配l3=[i+money/n for i in l3]#print('分配列表',l3)return l3#当财产大于债权之和时else:each_add=(money-sum_rights)/nl3=[i+each_add for i in l]#print('分配列表',l3)return l3if __name__ == '__main__':#a计算次数/精细度 l债权列表a=10l=[100,200,300]n=len(l)#y=[money*100 for money in range(a)]x=[]for money in range(a):x.append(tamude(money*100, n, l))x=list(map(list, zip(*x)))#二维数组/矩阵转置# 这两行代码解决 plt 中文显示的问题plt.rcParams['font.sans-serif'] = ['SimHei']plt.rcParams['axes.unicode_minus'] = False# 标题 坐标轴(文字大小)plt.title("分配方案", fontsize=20)plt.xlabel("财产", fontsize=14)plt.ylabel("分配额", fontsize=14)#设置水平虚线,方便观察plt.grid(linestyle='--')#supported values are '-', '--', '-.', ':', 'None', ' ', '', 'solid', 'dashed', 'dashdot', 'dotted'#n个人画n条线for i in range(n):#n个人 n条线 a个点(点代表不同财产时三人分配方案)plt.plot(y, x[i],label='债权'+str(l[i]))#左上角图例plt.legend()#秀plt.show()

运行结果


跳至简略版

塔木德分财产 思路+图片易懂 2022相关推荐

  1. 塔木德分财产,有图,快速过关

    跳转详细版 如下图所示,我的思路: 当财产小于债权之和一半时,从最低层级债权开始逐层满足: 当财产 大于等于 债权一半时,从债权最高者到最低者逐层分配: 当财产大于债权之和时(图片没给出这种情况),所 ...

  2. 《塔木德智慧全书》--艾格

    <塔木德只会全书>,作者是艾格. 我很庆幸能够阅读到此书,并根据里面的一个故事,拿回了朋友欠我的2200元钱. 下面是我书摘: *   <塔木德>上说:"不能空口白舌 ...

  3. 《塔木德智慧全书》摘要(之一)

    (1).投资于比金钱更有价值的时间 <塔木德>中写道:"金钱能够储蓄,而时间不能储蓄.金钱可以从别人那里借,而时间不能借.人生这个银行里还剩下多少时间也无从知道.因此,时间更重要 ...

  4. 《塔木德智慧全书》(之三)

    四.<塔木德>的经营智慧--借别人的鞋子比赤脚走得快 1.明白什么是值得冒的经济风险 <塔木德>上说:"伟人经常犯错误,经常要摔倒,但虫子不会.因为,它们做的事情 ...

  5. 《塔木德智慧全书》摘要(之三)

    四.<塔木德>的经营智慧--借别人的鞋子比赤脚走得快 1.明白什么是值得冒的经济风险 <塔木德>上说:"伟人经常犯错误,经常要摔倒,但虫子不会.因为,它们做的事情 ...

  6. 塔木德故事-注重学习

    成为某一行当的行家里手(智慧=资本) 大多数犹太商人看起来更像学者,他们学识渊博,风度儒雅,身上普遍透着一股书卷气. 这并非因为犹太商人都有高学历,都在学校学习过许多年而是因为犹太民族的学习传统和钻研 ...

  7. 《塔木德智慧全书》(之四)

    1.以上帝的"特选子民"自居 (1)首先要绝对确信上帝爱你. "慈爱的上帝是为我们着想的,天生我才必有用." (2)完全地无条件地接受你自己,现在就开始! ...

  8. 第七讲 塔木德破产分配法练习题

    解:(首先我们来回顾一下"二人争产"问题的塔木德算法, ) 由塔木德分配法可知,二人争产问题的第一分界点为c[1]c[1]c[1] 即为选项C ∴\therefore∴选C (这一 ...

  9. 《塔木德智慧全书》摘要(之二)

    二.<塔木德>的思维智慧 1.寻找对自己最有利的角度 <塔木德>上说:"你只要活着,智慧就永远跟着你." 2.决定正确决策和行动的是明智 <塔 ...

最新文章

  1. Android include 标签使用
  2. 【jdbc】兴唐第三十一节课之修改数据和查询数据(使用自己写的DBUtil)
  3. 利用stdin stdout stderr及POSIX-linux机制重定向写日志
  4. 修改PHP上传文件大小限制的方法
  5. 发布至今18年,为什么SQLite一定要用C语言来开发?
  6. IPSEC ***两个阶段的协商过程
  7. C语言——输出9*9口诀
  8. 华为大数据战略_任正非:华为应抓住“大数据”机遇 抢占战略制高点
  9. python运算学习之Numpy ------ 数组操作:连接数组、拆分数组 、广播机制、结构化数组、文件贮存与读写、np.where、数组去重...
  10. linux 基础学习之常用命令
  11. MySQL常用的日期时间函数
  12. HTML+CSS技术实现网页滑动门效果
  13. 序列傅里叶变换性质matlab,MATLAB傅里叶变换及性质.docx
  14. 两个简单方法快速解决怎么把kux格式转mp4
  15. android 日期控件计算星座,21. “我”模块(二)之星座选择
  16. excel几个数相加等于某个数_EXCEL如何求出哪几个单元格里的数字之和等于某个特定值...
  17. add_days oracle_Oracle日期函数简介
  18. 高端门诊提示预约体检短信怎么发?
  19. sys fs的原理和使用
  20. 浅谈 js 面向对象

热门文章

  1. 【Vijos P1052】 贾老二算算术 高斯消元傻题
  2. 【离线安装系列】离线环境下为Ubuntu16.04安装fzf(How to install fzf from source offline)
  3. RabbitMQ 进阶 -- SpringBoot 集成 RabbitMQ实现生产者与消费者模式
  4. linux下制作makefile文件
  5. Android平台HTTPS抓包解决方案及问题分析,移动网页开发工具
  6. Chapter 8 子查询
  7. 年龄焦虑总是来得猝不及防
  8. WEB APP 调用相册上传和拍照上传的实现
  9. 纯路端感知实现L4自动驾驶!全球首次,轻车熟路方案,背后玩家是他们
  10. 机房布线,上走线、下走线,那个好?