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

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


原文地址:https://www.cnblogs.com/actanble/p/6713462.html