您的位置:首页 > 其它

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

2016-05-16 22:05 288 查看
上次博主公布了有关斗地主最少手数的搜索程序,在写的时候还没有学习集合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();
}
}
}
五子棋正在研究中,一月内将会有重大突破,目标达到高级棋手的水准。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: