有趣的数学 - 123数学黑洞 - Python代码实现

123数学黑洞简介:

设定一个任意数字串X,数出这个数中的偶数个数a,奇数个数b,位数c,然后将三个数字按照abc的顺序拼接起来(拼接,而非相加相乘),abc拼接成一个新的数字串X1,按照上面的步骤重复,最终都会拼接成数字串123

举例:

1. 设定一个任意数字串X:12345678;

2. 偶数个数为 4 ,即2、4、6、8;

3. 奇数个数为 4 ,即1、3、5、7;

4. 位数为 8 ;

5. 按照偶数、奇数、位数拼接成的新数字串为 448;

6. 新数字串 448 的偶数、奇数、位数分别是 3、0、3,因此拼接的新数字串为 303;

7. 新数字串 303 的偶数、奇数、位数分别是 1、2、3,因此拼接的新数字串为 123

6174数学黑洞的区别是,123数学黑洞的初始数字串可以取相同的数字,即1111111

123数学黑洞python代码实现:

def num_calculate(str_number):    
    even, ood = [], []
    for i in str_number:
        if int(i) % 2 == 0:
            even.append(i)        
        else:
            ood.append(i)
    str_list = "".join([str(len(even)), str(len(ood)), str(len(even)+len(ood))])
    return str_list
     
def BlackHole(str_number):    
    i = 0
    number = num_calculate(str_number)    
    while 1:      
        i += 1  
        print('第{}次:{}'.format(i, number)) 
        number = num_calculate(number)
        if int(number) == 123:
            print('第{}次:{}'.format(i, number))
            break

if __name__ == '__main__':
     BlackHole(input("随意输入一个数字: "))


版权声明:本文为weixin_40683253原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。