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


    上次博主公布了有关斗地主最少手数的搜索程序,在写的时候还没有学习集合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();
    		}
    	}
    }
    
    五子棋正在研究中,一月内将会有重大突破,目标达到高级棋手的水准。


  • 相关阅读:
    2013-2014-2(复变函数56)
    2015-2016-1(实变函数56)
    2014-2015-2(常微分方程64, 数学分析提高64)
    2015-2016-2(点集拓扑56, 点集拓扑56)
    2016-2017-2(点集拓扑56, 点集拓扑56)
    2016-2017-1(实变函数56, 点集拓扑56)
    2017-2018-1(实变函数56, 点集拓扑56)
    2013-2014 指导2014届毕业生8名(48)
    2015-2016 指导2016届毕业生8名(48)
    2014-2015 指导2015届毕业生8名(48)
  • 原文地址:https://www.cnblogs.com/actanble/p/6713462.html
Copyright © 2020-2023  润新知