用Java尝试一下数字黑洞结果

public void test1() {

        int numIndex = 0;

        for (int i = 0; i < 10; i++) {
            for (int i1 = 0; i1 < 10; i1++) {
                if (i1 == i) continue;
                for (int i2 = 0; i2 < 10; i2++) {
                    if (i2 == i || i2 == i1) continue;
                    for (int i3 = 0; i3 < 10; i3++) {
                        if (i3 == i || i3 == i1 || i3 == i2) continue;

                        numIndex++;

                        int[] nums = new int[]{i, i1, i2, i3};

                        Arrays.sort(nums);

                        System.out.print(numIndex + " :" + i + " " + i1 + " " + i2 + " " + i3 + "  == > " + nums[0] + nums[1] + nums[2] + nums[3] + " ");

                        int index = 0;
                        calcNums(nums, index);
                    }
                }
            }
        }

    }

    private void calcNums(int[] nums, int index) {

        //最大值和最小值
        int max = nums[3] * 1000 + nums[2] * 100 + nums[1] * 10 + nums[0];
        int min = nums[0] * 1000 + nums[1] * 100 + nums[2] * 10 + nums[3];

        int cha = max - min;

         System.out.print(index + ":[" + max + "-" + min + "=" + cha + "] ");

        if (index >= 7) {
            System.out.println("结束了 步骤 大于7 -------------------------------------------------------------------------------:" + cha);
        } else if (cha == 6174) {
            System.out.println("结束了 步骤 :" + index);
        } else {
            index++;
            chaiNum(cha, index);
        }
    }

    private void chaiNum(int cha, int index) {
        int[] nums = new int[4];
        if (cha > 999) {
            nums[0] = cha / 1000;
            nums[1] = (cha % 1000) / 100;
            nums[2] = (cha % 100) / 10;
            nums[3] = (cha % 10);
        } else if (cha > 99) {
            nums[0] = 0;
            nums[1] = (cha % 1000) / 100;
            nums[2] = (cha % 100) / 10;
            nums[3] = (cha % 10);
        } else if (cha > 9) {
            nums[0] = 0;
            nums[1] = 0;
            nums[2] = (cha % 100) / 10;
            nums[3] = (cha % 10);
        } else if (cha > 0) {
            nums[0] = 0;
            nums[1] = 0;
            nums[2] = 0;
            nums[3] = cha;
        }

        Arrays.sort(nums);

        System.out.print("== >");
        //System.out.print("== >" + nums[0] + nums[1] + nums[2] + nums[3]+" ");

        calcNums(nums, index);
    }

 

 

输出结果:所有的结果计算步骤都不大于7,

1 :0 1 2 3  == > 0123 0:[3210-123=3087] == >1:[8730-378=8352] == >2:[8532-2358=6174] 结束了 步骤 :2
2 :0 1 2 4  == > 0124 0:[4210-124=4086] == >1:[8640-468=8172] == >2:[8721-1278=7443] == >3:[7443-3447=3996] == >4:[9963-3699=6264] == >5:[6642-2466=4176] == >6:[7641-1467=6174] 结束了 步骤 :6
3 :0 1 2 5  == > 0125 0:[5210-125=5085] == >1:[8550-558=7992] == >2:[9972-2799=7173] == >3:[7731-1377=6354] == >4:[6543-3456=3087] == >5:[8730-378=8352] == >6:[8532-2358=6174] 结束了 步骤 :6
4 :0 1 2 6  == > 0126 0:[6210-126=6084] == >1:[8640-468=8172] == >2:[8721-1278=7443] == >3:[7443-3447=3996] == >4:[9963-3699=6264] == >5:[6642-2466=4176] == >6:[7641-1467=6174] 结束了 步骤 :6
5 :0 1 2 7  == > 0127 0:[7210-127=7083] == >1:[8730-378=8352] == >2:[8532-2358=6174] 结束了 步骤 :2
6 :0 1 2 8  == > 0128 0:[8210-128=8082] == >1:[8820-288=8532] == >2:[8532-2358=6174] 结束了 步骤 :2
7 :0 1 2 9  == > 0129 0:[9210-129=9081] == >1:[9810-189=9621] == >2:[9621-1269=8352] == >3:[8532-2358=6174] 结束了 步骤 :3
8 :0 1 3 2  == > 0123 0:[3210-123=3087] == >1:[8730-378=8352] == >2:[8532-2358=6174] 结束了 步骤 :2
9 :0 1 3 4  == > 0134 0:[4310-134=4176] == >1:[7641-1467=6174] 结束了 步骤 :1

.........


5023 :9 8 5 3  == > 3589 0:[9853-3589=6264] == >1:[6642-2466=4176] == >2:[7641-1467=6174] 结束了 步骤 :2
5024 :9 8 5 4  == > 4589 0:[9854-4589=5265] == >1:[6552-2556=3996] == >2:[9963-3699=6264] == >3:[6642-2466=4176] == >4:[7641-1467=6174] 结束了 步骤 :4
5025 :9 8 5 6  == > 5689 0:[9865-5689=4176] == >1:[7641-1467=6174] 结束了 步骤 :1
5026 :9 8 5 7  == > 5789 0:[9875-5789=4086] == >1:[8640-468=8172] == >2:[8721-1278=7443] == >3:[7443-3447=3996] == >4:[9963-3699=6264] == >5:[6642-2466=4176] == >6:[7641-1467=6174] 结束了 步骤 :6
5027 :9 8 6 0  == > 0689 0:[9860-689=9171] == >1:[9711-1179=8532] == >2:[8532-2358=6174] 结束了 步骤 :2
5028 :9 8 6 1  == > 1689 0:[9861-1689=8172] == >1:[8721-1278=7443] == >2:[7443-3447=3996] == >3:[9963-3699=6264] == >4:[6642-2466=4176] == >5:[7641-1467=6174] 结束了 步骤 :5
5029 :9 8 6 2  == > 2689 0:[9862-2689=7173] == >1:[7731-1377=6354] == >2:[6543-3456=3087] == >3:[8730-378=8352] == >4:[8532-2358=6174] 结束了 步骤 :4
5030 :9 8 6 3  == > 3689 0:[9863-3689=6174] 结束了 步骤 :0
5031 :9 8 6 4  == > 4689 0:[9864-4689=5175] == >1:[7551-1557=5994] == >2:[9954-4599=5355] == >3:[5553-3555=1998] == >4:[9981-1899=8082] == >5:[8820-288=8532] == >6:[8532-2358=6174] 结束了 步骤 :6
5032 :9 8 6 5  == > 5689 0:[9865-5689=4176] == >1:[7641-1467=6174] 结束了 步骤 :1
5033 :9 8 6 7  == > 6789 0:[9876-6789=3087] == >1:[8730-378=8352] == >2:[8532-2358=6174] 结束了 步骤 :2
5034 :9 8 7 0  == > 0789 0:[9870-789=9081] == >1:[9810-189=9621] == >2:[9621-1269=8352] == >3:[8532-2358=6174] 结束了 步骤 :3
5035 :9 8 7 1  == > 1789 0:[9871-1789=8082] == >1:[8820-288=8532] == >2:[8532-2358=6174] 结束了 步骤 :2
5036 :9 8 7 2  == > 2789 0:[9872-2789=7083] == >1:[8730-378=8352] == >2:[8532-2358=6174] 结束了 步骤 :2
5037 :9 8 7 3  == > 3789 0:[9873-3789=6084] == >1:[8640-468=8172] == >2:[8721-1278=7443] == >3:[7443-3447=3996] == >4:[9963-3699=6264] == >5:[6642-2466=4176] == >6:[7641-1467=6174] 结束了 步骤 :6
5038 :9 8 7 4  == > 4789 0:[9874-4789=5085] == >1:[8550-558=7992] == >2:[9972-2799=7173] == >3:[7731-1377=6354] == >4:[6543-3456=3087] == >5:[8730-378=8352] == >6:[8532-2358=6174] 结束了 步骤 :6
5039 :9 8 7 5  == > 5789 0:[9875-5789=4086] == >1:[8640-468=8172] == >2:[8721-1278=7443] == >3:[7443-3447=3996] == >4:[9963-3699=6264] == >5:[6642-2466=4176] == >6:[7641-1467=6174] 结束了 步骤 :6
5040 :9 8 7 6  == > 6789 0:[9876-6789=3087] == >1:[8730-378=8352] == >2:[8532-2358=6174] 结束了 步骤 :2

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值