用java自己动手写彩票福彩3D缩号工具

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ZhiXuan {
	public static void main(String[] args) {
        String bBit = "1,4,5,7,9";
        bBit = bBit.replace(" ", "");
        String[] bar = bBit.split(",");
        List<String> bCode = Arrays.asList(bar);

        String sBit = "4,5,7,9,3,8,2";
        sBit = sBit.replace(" ", "");
        String[] sar = sBit.split(",");
        List<String> sCode = Arrays.asList(sar);

        String gBit = "4,5,7,9,3";
        gBit = gBit.replace(" ", "");
        String[] gar = gBit.split(",");
        List<String> gCode = Arrays.asList(gar);

        List<String> combine = getCombine(bCode, sCode, gCode);

        //跨度
        Integer[] k = {0,1,2,3,4,5,6,7,8,9};
        List<Integer> kua = Arrays.asList(k);

        //和值
        Integer[] h = {5,25,7,17,27,10,20,3, 13, 23,2,12,22,6};
        List<Integer> he = Arrays.asList(h);

        //胆码
        Integer[] d = {3,0,1,2};
        List<Integer> dan = Arrays.asList(d);

        //保留二码
        String st = "00,11,22,33,44,55,66,77, 88, 99,01, 12, 23, 34, 45, 56, 67, 78, 89,02, 13, 24, 35, 46, 57, 68, 79,03, 14, 25, 36, 47, 58, 69,04, 15, 26, 37, 48, 59,05, 16, 27, 38, 49,06, 17, 28, 39,07, 18, 29,08, 19,09";
        st = st.replace(" ", "");
        String[] t = st.split(",");
        List<String> towCode = Arrays.asList(t);
        List<String> kTowCode = getDTowCode(towCode, dan);
        System.out.println("kTowCode: " + kTowCode.toString());

        //排除二码
        String st1 = "00,99,11,88,66";
        String[] t1 = st1.split(",");
        List<String> rTowCode = Arrays.asList(t1);

        //断组
        String[][] duan = {{"049", "523", "678"}};
        List<String[]> duanzu = Arrays.asList(duan);
        //List<String[]> duanzu = new ArrayList<>();

        //任意两码差
        Integer[] cha1 = {1, 2, 5, 8,9};
        List<Integer> cha = Arrays.asList(cha1);

        //十个差
        Integer[] chas = {0, 1, 3};
        List<Integer> cha2 = Arrays.asList(chas);

        //杀号
        Integer[] kills = {4,5,7,9};
        List<Integer> kill = Arrays.asList(kills);

        //区间1:[000,249],2:[250,499],3:[500,749],4:[750,999]
        Integer q = null;

        //组三 标志:0:所有值,3:组三,6:组六
        Integer cha3 = 0;

        /**
         * @param combine  组六
         * @param kua      跨度
         * @param he       和值
         * @param dan      胆码
         * @param kTowCode 保留两码
         * @param rTowCode 移除两码
         * @param duanzu   断组
         * @param cha      任意两码差
         * @param cha2     十个差
         * @param q        区间
         * @param kill     杀码
         * @param cha3     组三,组六,全部
         * @return
         */
        List<String> data = calculation(combine, kua, he, dan, kTowCode, rTowCode, null, cha, null, q, kill, cha3);

        System.out.println("data:[" + data.size() + "] " + data.toString().replace("[", "").replace("]", "").replace(" ", ""));

        List<String> threeData = getFlagData(data, 3);
        if (threeData != null && threeData.size() > 0) {
            System.out.println("组三:共" + threeData.size() + "注,投资:" + threeData.size() * 2 + " 元");
            for (int i = 0; i < threeData.size(); i++) {
                String code = threeData.get(i);
                Integer a = getHe(code);
                Integer b = getKua(code);
                String tcha = getTCha(code);
                String lu = getLu(code);
                System.out.println(code + ": " + ", 和: " + a + ", 均值: " + getMean(a) + ", 跨:" + b + ", 码差:" + tcha + ", 路数:" + lu);
            }
        }

        System.out.println("————————————————————");

        List<String> sixData = getFlagData(data, 6);
        if (sixData != null && sixData.size() > 0) {
            System.out.println("组六:共" + sixData.size() + "注,投资:" + sixData.size() * 2 + " 元");
            for (int i = 0; i < sixData.size(); i++) {
                String code = sixData.get(i);
                Integer a = getHe(code);
                Integer b = getKua(code);
                String tcha = getTCha(code);
                String lu = getLu(code);
                System.out.println(code + ": " + ", 和: " + a + ", 均值: " + getMean(a) + ", 跨:" + b + ", 码差:" + tcha + ", 路数:" + lu);
            }
        }
    }

    /**
     * @param combine  组六
     * @param kua      跨度
     * @param he       和值
     * @param dan      胆码
     * @param kTowCode 保留两码
     * @param rTowCode 移除两码
     * @param duanzu   断组
     * @param cha      任意两码差
     * @param cha2     十个差
     * @param q        区间
     * @param kill     杀码
     * @param cha3     组三,组六,全部
     * @return
     */
    public static List<String> calculation(
            List<String> combine,
            List<Integer> kua,
            List<Integer> he,
            List<Integer> dan,
            List<String> kTowCode,
            List<String> rTowCode,
            List<String[]> duanzu,
            List<Integer> cha,
            List<Integer> cha2,
            Integer q,
            List<Integer> kill,
            Integer cha3) {

        List<String> data = null;
        if (combine != null) {
            data = combine;
        }
        if (kTowCode != null) {
            data = keepT(data, kTowCode, rTowCode);
        }
        if (cha != null) {
            data = getCT(data, cha);
        }
        if (dan != null) {
            data = getD(data, dan);
        }
        if (he != null) {
            data = getHe(data, he);
        }
        if (kua != null) {
            data = getKua(data, kua);
        }
        if (duanzu != null) {
            for (int i = 0; i < duanzu.size(); i++) {
                String[] d = duanzu.get(i);
                data = duanZu(data, d);
            }
        }
        if (q != null) {
            data = getInterval(data, q);
        }

        if (kill != null) {
            data = killCT(data, kill);
        }
        if (cha3 != null) {
            data = getFlagData(data, cha3);
        }
        if (cha2 != null) {
            data = getCTSH(data, cha2);
        }
        data = removeDuplicate(data);
        return data;
    }


    /**
     * 获取均值
     *
     * @param num
     * @return
     */
    public static Long getMean(Integer num) {
        Long mean = null;
        try {
            double a = (double) num;
            mean = Math.round(a / 3);
        } catch (Exception es) {
            es.printStackTrace();
        }
        return mean;
    }


    /**
     * 获取路数
     *
     * @param num
     * @return
     */
    public static String getLu(String num) {
        StringBuilder str = new StringBuilder();
        try {
            String a = num.substring(0, 1);
            String b = num.substring(1, num.length() - 1);
            String c = num.substring(num.length() - 1, num.length());
            List<String> nums = new ArrayList<>();
            nums.add(a);
            nums.add(b);
            nums.add(c);
            String zero = "0369";
            String one = "147";
            String tow = "258";
            for (int i = 0; i < nums.size(); i++) {
                if (zero.contains(nums.get(i))) {
                    str.append("0");
                }
                if (one.contains(nums.get(i))) {
                    str.append("1");
                }
                if (tow.contains(nums.get(i))) {
                    str.append("2");
                }
            }
        } catch (Exception es) {
            es.printStackTrace();
        }
        return str.toString() + "路";
    }

    /**
     * 获取任意两码差
     *
     * @param num
     * @return
     */
    public static String getTCha(String num) {
        String cha = null;
        try {
            int a = Integer.parseInt(num.substring(0, 1));
            int b = Integer.parseInt(num.substring(1, num.length() - 1));
            int c = Integer.parseInt(num.substring(num.length() - 1, num.length()));
            String cha1 = Math.abs(a - b) + "";
            String cha2 = Math.abs(a - c) + "";
            String cha3 = Math.abs(b - c) + "";
            cha = cha1 + cha2 + cha3;
        } catch (Exception es) {
            es.printStackTrace();
        }
        return cha;
    }

    /**
     * 获取和值
     *
     * @param num
     * @return
     */
    public static Integer getHe(String num) {
        Integer sum = null;
        try {
            int a = Integer.parseInt(num.substring(0, 1));
            int b = Integer.parseInt(num.substring(1, num.length() - 1));
            int c = Integer.parseInt(num.substring(num.length() - 1, num.length()));
            sum = a + b + c;
        } catch (Exception es) {
            es.printStackTrace();
        }
        return sum;
    }

    /**
     * 获取跨
     *
     * @param num
     * @return
     */
    public static Integer getKua(String num) {
        Integer k = null;
        try {
            int a = Integer.parseInt(num.substring(0, 1));
            int b = Integer.parseInt(num.substring(1, num.length() - 1));
            int c = Integer.parseInt(num.substring(num.length() - 1, num.length()));
            String strs = getSort(a, b, c);
            int min = Integer.parseInt(strs.substring(0, 1));
            int max = Integer.parseInt(strs.substring(strs.length() - 1, strs.length()));
            k = max - min;
        } catch (Exception es) {
            es.printStackTrace();
        }
        return k;
    }

    /**
     * list去重
     *
     * @param list
     * @return
     */
    public static List removeDuplicate(List list) {
        List listTemp = new ArrayList();
        for (int i = 0; i < list.size(); i++) {
            if (!listTemp.contains(list.get(i))) {
                listTemp.add(list.get(i));
            }
        }
        return listTemp;
    }

    public static List<String> getCombine(List<String> bCode, List<String> sCode, List<String> gCode) {
        List<String> result = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            if (bCode.contains(i + "")) {
                continue;
            }
            for (int j = 0; j < 10; j++) {
                if (sCode.contains(j + "")) {
                    continue;
                }
                for (int k = 0; k < 10; k++) {
                    if (gCode.contains(k + "")) {
                        continue;
                    } else {
                        result.add(i + "" + j + "" + k);
                    }
                }
            }
        }
        return result;
    }

    public static List<String> getInterval(List<String> list, Integer flag) {
        Integer[] interval = new Integer[2];
        if (flag == 1) {
            interval[0] = 0;
            interval[1] = 249;
        }
        if (flag == 2) {
            interval[0] = 250;
            interval[1] = 499;
        }
        if (flag == 3) {
            interval[0] = 500;
            interval[1] = 749;
        }
        if (flag == 4) {
            interval[0] = 750;
            interval[1] = 999;
        }
        List<String> r = new ArrayList<>();
        if (list != null && list.size() > 0) {
            for (int i = 0; i < list.size(); i++) {
                String str = list.get(i);
                int num = Integer.parseInt(str);
                if (num >= interval[0] && num <= interval[1]) {
                    r.add(list.get(i));
                }
            }
        }
        return r;
    }

    /**
     * 判断组三,组六
     *
     * @param list
     * @param cha
     * @return
     */
    public static List<String> getFlagData(List<String> list, Integer cha) {
        List<String> r = new ArrayList<>();
        if (cha == 0) {
            return list;
        } else {
            if (list != null && list.size() > 0) {
                for (int i = 0; i < list.size(); i++) {
                    String str = list.get(i);
                    int a = Integer.parseInt(str.substring(0, 1));
                    int b = Integer.parseInt(str.substring(1, str.length() - 1));
                    int c = Integer.parseInt(str.substring(str.length() - 1, str.length()));
                    Integer cha1 = Math.abs(a - b);
                    Integer cha2 = Math.abs(a - c);
                    Integer cha3 = Math.abs(b - c);
                    //组三
                    if (cha == 3) {
                        if (cha1 == 0 || cha2 == 0 || cha3 == 0) {
                            r.add(list.get(i));
                        }
                    }
                    //组六
                    if (cha == 6) {
                        if (cha1 != 0 && cha2 != 0 && cha3 != 0) {
                            r.add(list.get(i));
                        }
                    }
                }
            }
        }
        return r;
    }

    /**
     * 根据胆码找两码
     *
     * @param list
     * @param dan
     * @return
     */
    public static List<String> getDTowCode(List<String> list, List<Integer> dan) {
        List<String> r = new ArrayList<>();
        if (list != null && list.size() > 0) {
            for (int i = 0; i < list.size(); i++) {
                String str = list.get(i);
                int a = Integer.parseInt(str.substring(0, 1));
                int b = Integer.parseInt(str.substring(str.length() - 1, str.length()));
                boolean flag = false;
                if (dan.contains(a)) {
                    flag = true;
                }
                if (dan.contains(b)) {
                    flag = true;
                }
                if (flag) {
                    r.add(list.get(i));
                }
            }
        }
        return r;
    }

    /**
     * 任意两码差
     *
     * @param list
     * @param cha
     * @return
     */
    public static List<String> getCT(List<String> list, List<Integer> cha) {
        List<String> r = new ArrayList<>();
        if (list != null && list.size() > 0) {
            for (int i = 0; i < list.size(); i++) {
                String str = list.get(i);
                int a = Integer.parseInt(str.substring(0, 1));
                int b = Integer.parseInt(str.substring(1, str.length() - 1));
                int c = Integer.parseInt(str.substring(str.length() - 1, str.length()));
                Integer cha1 = Math.abs(a - b);
                Integer cha2 = Math.abs(a - c);
                Integer cha3 = Math.abs(b - c);
                boolean flag = false;
                if (cha.contains(cha1)) {
                    flag = true;
                }
                if (cha.contains(cha2)) {
                    flag = true;
                }
                if (cha.contains(cha3)) {
                    flag = true;
                }
                if (flag) {
                    r.add(list.get(i));
                }
            }
        }
        return r;
    }

    /**
     * 十个差
     *
     * @param list
     * @param cha
     * @return
     */
    public static List<String> getCTSH(List<String> list, List<Integer> cha) {
        List<String> r = new ArrayList<>();
        if (list != null && list.size() > 0) {
            for (int i = 0; i < list.size(); i++) {
                String str = list.get(i);
                int a = Integer.parseInt(str.substring(0, 1));
                int b = Integer.parseInt(str.substring(1, str.length() - 1));
                int c = Integer.parseInt(str.substring(str.length() - 1, str.length()));
                Integer cha1 = Math.abs(a - b);
                Integer cha2 = Math.abs(a - c);
                Integer cha3 = Math.abs(b - c);
                if (cha.contains(cha1)) {
                    r.add(c + "" + a + "" + b);
                }
                if (cha.contains(cha2)) {
                    r.add(b + "" + a + "" + c);
                }
                if (cha.contains(cha3)) {
                    r.add(a + "" + b + "" + c);
                }
            }
        }
        return r;
    }

    /**
     * 杀号
     *
     * @param list
     * @param k
     * @return
     */
    public static List<String> killCT(List<String> list, List<Integer> k) {
        List<String> r = new ArrayList<>();
        if (list != null && list.size() > 0) {
            for (int i = 0; i < list.size(); i++) {
                String str = list.get(i);
                int a = Integer.parseInt(str.substring(0, 1));
                int b = Integer.parseInt(str.substring(1, str.length() - 1));
                int c = Integer.parseInt(str.substring(str.length() - 1, str.length()));
                boolean flag = false;
                if (k.contains(a)) {
                    flag = true;
                }
                if (k.contains(b)) {
                    flag = true;
                }
                if (k.contains(c)) {
                    flag = true;
                }
                if (!flag) {
                    r.add(list.get(i));
                }
            }
        }
        return r;
    }

    /**
     * 跨度
     *
     * @param list
     * @param k
     * @return
     */
    public static List<String> getKua(List<String> list, List<Integer> k) {
        List<String> r = new ArrayList<>();
        if (list != null && list.size() > 0) {
            for (int i = 0; i < list.size(); i++) {
                String str = list.get(i);
                int a = Integer.parseInt(str.substring(0, 1));
                int b = Integer.parseInt(str.substring(1, str.length() - 1));
                int c = Integer.parseInt(str.substring(str.length() - 1, str.length()));
                String strs = getSort(a, b, c);
                int min = Integer.parseInt(strs.substring(0, 1));
                int max = Integer.parseInt(strs.substring(strs.length() - 1, strs.length()));
                int tk1 = max - min;
                if (k.contains(tk1)) {
                    r.add(list.get(i));
                }
            }
        }
        return r;
    }

    /**
     * 和
     *
     * @param list
     * @param h
     * @return
     */
    public static List<String> getHe(List<String> list, List<Integer> h) {
        List<String> r = new ArrayList<>();
        if (list != null && list.size() > 0) {
            for (int i = 0; i < list.size(); i++) {
                String str = list.get(i);
                int a = Integer.parseInt(str.substring(0, 1));
                int b = Integer.parseInt(str.substring(1, str.length() - 1));
                int c = Integer.parseInt(str.substring(str.length() - 1, str.length()));
                int sum = a + b + c;
                if (h.contains(sum)) {
                    r.add(list.get(i));
                }
            }
        }
        return r;
    }

    /**
     * 胆码
     *
     * @param list
     * @param d
     * @return
     */
    public static List<String> getD(List<String> list, List<Integer> d) {
        List<String> r = new ArrayList<>();
        if (list != null && list.size() > 0) {
            for (int i = 0; i < list.size(); i++) {
                String str = list.get(i);
                for (int j = 0; j <= str.length() - 1; j++) {
                    //因为i的最大数是str长度-1,这里要+1;
                    Integer s = Integer.parseInt(str.substring(j, j + 1));
                    if (d.contains(s)) {
                        r.add(list.get(i));
                    }
                }
            }
        }
        return r;
    }

    /**
     * 保留两码,排除两码
     *
     * @param list
     * @param k
     * @param rm
     * @return
     */
    public static List<String> keepT(List<String> list, List<String> k, List<String> rm) {
        List<String> r = new ArrayList<>();
        List<String> r2 = new ArrayList<>();
        if (list != null && list.size() > 0) {
            for (int i = 0; i < list.size(); i++) {
                String str = list.get(i);
                int a = Integer.parseInt(str.substring(0, 1));
                int b = Integer.parseInt(str.substring(1, str.length() - 1));
                int c = Integer.parseInt(str.substring(str.length() - 1, str.length()));
                String ab = getSort(a, b);
                String ac = getSort(a, c);
                String bc = getSort(c, b);
                List<String> tt = new ArrayList<>();
                tt.add(ab);
                tt.add(ac);
                tt.add(bc);
                boolean flag = false;
                for (int j = 0; j < tt.size(); j++) {
                    if (k.contains(tt.get(j))) {
                        flag = true;
                        break;
                    }
                }
                if (flag) {
                    r.add(list.get(i));
                }
            }
        }

        if (r != null && r.size() > 0) {
            for (int i = 0; i < r.size(); i++) {
                String str = r.get(i);
                int a = Integer.parseInt(str.substring(0, 1));
                int b = Integer.parseInt(str.substring(1, str.length() - 1));
                int c = Integer.parseInt(str.substring(str.length() - 1, str.length()));
                String ab = getSort(a, b);
                String ac = getSort(a, c);
                String bc = getSort(c, b);
                List<String> tt = new ArrayList<>();
                tt.add(ab);
                tt.add(ac);
                tt.add(bc);
                boolean flag = true;
                for (int j = 0; j < tt.size(); j++) {
                    if (rm.contains(tt.get(j))) {
                        flag = false;
                        break;
                    }
                }
                if (flag) {
                    r2.add(r.get(i));
                }
            }
        }
        return r2;
    }

    /**
     * 断组
     *
     * @param list
     * @param atr
     * @return
     */
    public static List<String> duanZu(List<String> list, String[] atr) {
        List<String> r = new ArrayList<>();
        if (atr.length > 2) {

            String a1 = atr[0];
            String a2 = atr[1];
            String a3 = atr[2];

            if (list != null && list.size() > 0) {
                for (int i = 0; i < list.size(); i++) {
                    String str = list.get(i);
                    String a = str.substring(0, 1);
                    String b = str.substring(1, str.length() - 1);
                    String c = str.substring(str.length() - 1, str.length());
                    boolean flag1 = false;
                    boolean flag2 = false;
                    boolean flag3 = false;
                    if (a1.contains(a)) {
                        flag1 = true;
                    }
                    if (a1.contains(b)) {
                        flag1 = true;
                    }
                    if (a1.contains(c)) {
                        flag1 = true;
                    }
                    if (a2.contains(a)) {
                        flag2 = true;
                    }
                    if (a2.contains(b)) {
                        flag2 = true;
                    }
                    if (a2.contains(c)) {
                        flag2 = true;
                    }
                    if (a3.contains(a)) {
                        flag3 = true;
                    }
                    if (a3.contains(b)) {
                        flag3 = true;
                    }
                    if (a3.contains(c)) {
                        flag3 = true;
                    }
                    if (flag1 && flag2) {
                        if (!r.contains(list.get(i))) {
                            r.add(list.get(i));
                        }
                    }
                    if (flag1 && flag3) {
                        if (!r.contains(list.get(i))) {
                            r.add(list.get(i));
                        }
                    }
                    if (flag2 && flag3) {
                        if (!r.contains(list.get(i))) {
                            r.add(list.get(i));
                        }
                    }
                }
            }
        } else {

            String a1 = atr[0];
            String a2 = atr[1];

            if (list != null && list.size() > 0) {
                for (int i = 0; i < list.size(); i++) {
                    String str = list.get(i);
                    String a = str.substring(0, 1);
                    String b = str.substring(1, str.length() - 1);
                    String c = str.substring(str.length() - 1, str.length());
                    boolean flag1 = false;
                    boolean flag2 = false;
                    if (a1.contains(a)) {
                        flag1 = true;
                    }
                    if (a1.contains(b)) {
                        flag1 = true;
                    }
                    if (a1.contains(c)) {
                        flag1 = true;
                    }
                    if (a2.contains(a)) {
                        flag2 = true;
                    }
                    if (a2.contains(b)) {
                        flag2 = true;
                    }
                    if (a2.contains(c)) {
                        flag2 = true;
                    }
                    if (flag1 && flag2) {
                        if (!r.contains(list.get(i))) {
                            r.add(list.get(i));
                        }
                    }

                }
            }
        }


        return r;
    }

    /**
     * 三个数从小到大排序
     *
     * @param a
     * @param b
     * @param c
     * @return
     */
    public static String getSort(int a, int b, int c) {
        StringBuffer str = new StringBuffer();
        if (a > b) {
            if (c > a) {
                str.append(b).append(a).append(c);
            } else if (c < b) {
                str.append(c).append(b).append(a);
            } else {
                str.append(b).append(c).append(a);
            }
            // a<<b时
        } else {
            if (c < a) {
                str.append(c).append(a).append(b);
            } else if (c > b) {
                str.append(a).append(b).append(c);
            } else {
                str.append(a).append(c).append(b);
            }
        }
        return str.toString();
    }

    /**
     * 2个数从小到大排序
     *
     * @param a
     * @param b
     * @return
     */
    public static String getSort(int a, int b) {
        StringBuffer str = new StringBuffer();
        if (a > b) {
            str.append(b).append(a);
        } else {
            str.append(a).append(b);
        }
        return str.toString();
    }
}

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值