寻找神秘4位数:在0-9十个数字中任意选择4个数字,如选2,9,8,4这四个数字,组成最大的数是9842,最小的数是2489,然后相减,再把得到的4位数组成的最大与最小值相减

寻找神秘4位数:在0-9十个数字中任意选择4个数字,如选2,9,8,4这四个数字,组成最大的数是9842,最小的数是2489,然后相减,再把得到的4位数组成的最大与最小值相减,在这样重复的过程中,你能找到一个神秘的四位数吗?
《寻找神秘4位数:在0-9十个数字中任意选择4个数字,如选2,9,8,4这四个数字,组成最大的数是9842,最小的数是2489,然后相减,再把得到的4位数组成的最大与最小值相减》

# coding=UTF-8
import random

''' 总体思路: 全集:[0,1,2,3,4,5,6,7,8,9] 提取子集:[2,4,9,8](依次为例) 第1轮: 排序:[2,4,8,9] 最值:9842、2489 最值拆分:[9,8,4,2] 差值:9842-2489=7353 差值拆分:[7,3,5,3] 判断“最值拆分”与“差值拆分”是否相同:False,进入下一轮 最值拆分=差值拆分(赋值,开启下一轮) 第2轮: 排序:[7,3,5,3] 最值:7533、3357 最值拆分:[7,5,3,3] 差值:7533-3357=4176 差值拆分:[4,1,7,6] 判断“最值拆分”与“差值拆分”是否相同:False,进入下一轮 最值拆分=差值拆分(赋值,开启下一轮) 第3轮: 排序:[4,1,7,6] 最值:7641、1467 最值拆分:[7,6,4,1] 差值:7641-1467=6174 差值拆分:[4,1,7,6] 判断“最值拆分”与“差值拆分”是否相同:True,结束 '''

''' 定义一个函数,用来拆分4位数的个十百千位,并加入列表 如chaiFen(1234),返回[1,2,3,4] '''
def chaiFen(num):
	geWei=num//1%10
	shiWei=num//10%10
	baiWei=num//100%10
	qianWei=num//1000
	chaiFen_list=[geWei,shiWei,baiWei,qianWei]
	return chaiFen_list

#全集:建立一个包含0-9数字的列表全集,然后从里面取数字
num_list=[0,1,2,3,4,5,6,7,8,9] 
#子集:从全集中任取4个数字,组成一个子集,例如[2,9,8,4]
subNum_list=random.sample(num_list,4) 
#排序:对列表中的值进行排序,默认是升序,该方法没有返回值,但是会对列表的对象进行排序,[2,4,8,9]。
subNum_list.sort()

i=1
while True:#将差值拆分成列表,排序。
	#最值:定义最大的数和最小的数,然后做减法,maxNum=9842,minNum=2489,
	maxNum=subNum_list[3]*1000+subNum_list[2]*100+subNum_list[1]*10+subNum_list[0]*1
	minNum=subNum_list[0]*1000+subNum_list[1]*100+subNum_list[2]*10+subNum_list[3]*1
	#差值
	subtraction=maxNum-minNum #subtraction=7353
	#差值拆分
	breakSubNum_list=chaiFen(subtraction) #[7,3,5,3]
	breakSubNum_list.sort() #[3,3,5,7]
	#最值拆分
	maxNum_list=chaiFen(maxNum)
	maxNum_list.sort() #[2,4,8,9]
	#判断:当差值拆分与最值拆分相等时,可以认为收敛,结束。
	if maxNum_list==breakSubNum_list:
		break
	else:
		print("第{}次:{}-{}={}".format(i,maxNum,minNum,subtraction))
		subNum_list=breakSubNum_list
		i+=1

print("共运行{}次,该组数字是{}".format(i,breakSubNum_list))



运行结果:
《寻找神秘4位数:在0-9十个数字中任意选择4个数字,如选2,9,8,4这四个数字,组成最大的数是9842,最小的数是2489,然后相减,再把得到的4位数组成的最大与最小值相减》

    原文作者:AlwayswetHXZhang
    原文地址: https://blog.csdn.net/DBC111/article/details/109093572
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞