五月中旬博客闲聊;内容[同花顺得分,文件搜索,盲文数字输出的探究]

来源:互联网 发布:维基百科 大数据 编辑:程序博客网 时间:2024/05/20 11:28
上次博主公布了有关斗地主最少手数的搜索程序,在写的时候还没有学习集合Set和Map;所以重新建立了类来实心同个元素出现的次数统计。
现在正在学IO流,觉得还挺新鲜的。
过段时间就学完返校了,就可以和张龙交流数据挖掘的知识,和他学习各种大数据分析的技巧。

1.同花顺(炸金花)的评分和鉴定。

这里只给出对应的评分。比较略,得分比较粗糙但是能用,有相关需求或者强迫症可以设置较艺术的得分模型。

2.由递归方法提取目标格式的文件。

这个非常有用,藏得较深的文件忘记了位置可以快速搜索得到.

3,盲文生成(只是给个思想示例,由于比较简单没有完全实行下去);


最后:五子棋正在研究中,在网上已经学习了很多五子棋的下法技巧,在不久将会完成;现在仍然在总结各种厉害下法中。

也许是在学习GUI之后。

1,给出同花顺的程序

import java.util.ArrayList;import java.util.Arrays;import java.util.HashMap;import java.util.HashSet;import java.util.Map.Entry;import java.util.Set;public class Demo {static String[] srr = new String[]{"A","2","3","4","5","6","7","8","9","10","J","Q","K"};static int[] arr = new int[]{14,16,3,4,5,6,7,8,9,10,11,12,13};   //3,4,5,6,7,8,9,10,J ,Q ,K , A,2///*{3,4,5,6,7,8,9,10,11,12,13,14,15} * 对应每种牌都有一种花色,用一个class记录; * 第一个元素是值,用作比较,第二个值是花色,对应String *  */static HashSet<Poker> hsp1 = new HashSet<>();static {hsp1.add(new Poker("6","♥"));hsp1.add(new Poker("7","♠"));hsp1.add(new Poker("8","♣"));}public static void main(String[] args) {int spScore = spScore(hsp1);System.out.println(spScore);}public static int spScore(HashSet<Poker> hsp1){int s=1;HashSet<String> hs = new HashSet<>();HashSet<String> hs1 = new HashSet<>();ArrayList<Integer> hsv = new ArrayList<>();//对应的数值for(Poker p:hsp1){hs.add(p.getPai());hs1.add(p.getColor());hsv.add(value(p.getPai()));}HashMap<Integer, Integer> hsm2 = new HashMap<>();Set<Entry<Integer, Integer>> entrySet = hsm2.entrySet();for(Integer t:hsv){if(!hsm2.keySet().contains(t)){hsm2.put(t, 1);}else{hsm2.put(t, hsm2.get(t)+1);}}System.out.println(hsm2);if(hs.size()==1){s*=100000*(hsv.get(0));//炸弹System.out.println("炸弹");}int min = returnMin(hsv);ArrayList<Integer> hsvm = new ArrayList<>();//连续的3个值hsvm.add(min);hsvm.add(min+1);hsvm.add(min+2);if(hsvm.containsAll(hsv)&&hsv.containsAll(hsvm)){s*= (17*min*6);//顺子System.out.println("顺子");}if(hs.size()==2){for(Entry<Integer, Integer> en:entrySet){if(en.getValue()==2){s =s*(60*en.getKey());//对子乘以100}else{s = s+en.getKey();}}System.out.println("对子");}if(hs.size()==3){Set<Integer> keySet1 = hsm2.keySet();Object[] array1 = keySet1.toArray();Arrays.sort(array1);System.out.println(array1[0]+","+array1[1]+","+array1[2]);int jc1=1;for(int i=keySet1.size()-1;i>-1;i--){Integer c =(Integer) array1[i];s+=(c*jc1);jc1 = jc1*6;}System.out.println("都是零单");}if(hs1.size()==1){s*=100;//花色System.out.println("同花色");}return s;}public static int value(String s){HashMap<String,Integer> hm= new HashMap<>();for(int i=0;i<arr.length;i++){hm.put(srr[i], arr[i]);}return hm.get(s);}public static int returnMin(ArrayList<Integer> hs){int min=10;for(Integer h:hs){if(h<min){min = h;}}return min;}}




2.给出搜索txt文件的方法

public static void printTxt(File dir){if(dir==null) return;File[] listFiles = dir.listFiles();if(listFiles==null) return ;for(File file:listFiles){if(file.isFile() && file.getName().toLowerCase().endsWith(".txt")){System.out.println(file);}else{printTxt(file);}}}
3,给出盲文的一种输出方法;根据输入1-4个1-6的数字输出相应的盲文序列

public class Demo2 {static int[][] arr =new int[][]{{1,4},{2,5},{3,6}};public static void main(String[] args) {String[][] reChangeAS = Demo2.reChangeAS(Demo2.returnAr2(new MWimput(2,3,4)));Demo2.printArrayS2(reChangeAS);}public static int[][] returnAr2(MWimput mw){int[][] arr2 = arr;HashSet<Integer> hs  = new HashSet<Integer>();hs.add(mw.a1);hs.add(mw.a2);hs.add(mw.a3);hs.add(mw.a4);for(Integer ii:hs){for(int i=0;i<3;i++){for(int j=0;j<2;j++){if(ii==arr2[i][j]){arr2[i][j]  = 10;}}}}for(int i=0;i<3;i++){for(int j=0;j<2;j++){if(arr2[i][j]!=10){arr2[i][j] = 0;}}}return arr2;}public static String[][] reChangeAS(int[][] arr2){String[][] srr = new String[arr2.length][];for(int i=0;i<arr2.length;i++){srr[i] = new String[arr2[i].length];for(int j=0;j<arr2[i].length;j++){if(arr[i][j]==10){srr[i][j] = "●";}else{srr[i][j] = "○";}}}return srr;}//将两个String[][]横向拼接public static String[][] pjStringA2(String[][] sr1,String[][] sr2){String[][] sr = new String[3][];for(int i=0;i<3;i++){sr[i] = new String[sr1[i].length+sr2[i].length];for(int j=0;j<sr1[i].length;j++){sr[i][j] = sr1[i][j];}for(int j=0;j<sr2[i].length;j++){sr[i][j+(sr1[i].length)] = sr2[i][j];}}return sr;}public static void printArrayS2(String[][] arr){for(int i=0;i<arr.length;i++){int k= arr[i].length;for(int j=0;j<k;j++){System.out.print(arr[i][j]+"  ");}System.out.println();}}}
五子棋正在研究中,一月内将会有重大突破,目标达到高级棋手的水准。


0 0
原创粉丝点击