自娱小程序--九宫格

简介: 定义好数据结构,事半功倍
package com.arvey.eventbank.crash;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

public class JiuGG {
/*
* 构建数据结构
* Map<1-5整数(亦做数值使用),两层嵌夽整型SET(两个数值,升序) key + sum(set) = 15
*/
Map<Integer,Set<Set<Integer>>> nine = new HashMap<Integer,Set<Set<Integer>>>();
// a+b = sum, both a and b (beginNum ... 9)
public Set<Integer> getSets(int sum,int beginNum){
boolean nullset = true;
Set<Integer> res=null;
//except sum-1
for(int x=beginNum;x<sum/2+1;x++){
if(x == 15-sum)
continue;
for(int m=9;m>sum/2;m--){
if(m == 15-sum) continue;
if(x+m == sum){
if(nullset){
res = new HashSet<Integer>();
res.add(x);
res.add(m);
nullset = false;
break;
}
}
if(!nullset)
break;
}
return res;
}
//firNum ( 1 ... 5)
public Set<Set<Integer>> getAllSetsByNum(int firNum){
Set<Set<Integer>> res = new HashSet<Set<Integer>>();
int div=(15-firNum)/2;
for(int i=1;i<=div;i++){
Set<Integer> aSet = getSets(15-firNum,i);
if(aSet != null)
res.add(aSet);
}
return res;
}
//get all groups, x+y+z = 15
public void initialNums(){
for(int i=1;i<=5;i++){
Set<Set<Integer>> aSet = getAllSetsByNum(i);
if( aSet !=null )
nine.put(i, aSet);
}
}
/***
* 九宫格特点(数字代表位置)
* 1 2 3
* 4 5 6
* 7 8 9
 *  5位置被使用四次,1+5+9 2+5+8 3+5+7 4+5+6
*  1,3,7,9位置被使用三次   1+2+3 1+4+7 1+5+9
 *  2,4,6,8位置被使用两次, 1+2+3 和 2+5+8 
*/
boolean isPos1379(Set<Set<Integer>> specialkey,Integer value){
boolean res = false;
for(Set<Integer> aset:specialkey){
if(aset.contains(Integer.valueOf( 10 - value))){
res = true;
break;
}
}
return res;
}
public void printJiuGG(){
/*确定5,1,2,3,4,7的位置上的数值,规则取Map里key最小的
* 位置5,只有5被使用四次,所以找出包涵Set最多的key就是5位置的元素
* 位置1,取key最小的,有3组数,不取有5的一组的两组,这五个数会放在,12347的位置
* 位置3,7, 在key = 1的嵌夽数据集中,找到另两相加等于10的数,一个放在3,另一个落在7
* 位置2,必须被引用两次的数据中,且不能在有5的一组数中
* 位置4, 另一组有两组数据且
*/
Set<Integer> keys = nine.keySet();//放入进有序,所以取第一个有三组数的key值,
int pos1 = -1;
Set<Set<Integer>> aSet = null;
for(Integer key:keys){
aSet = (Set<Set<Integer>>)nine.get(key);
if( aSet.size() == 3 ){
pos1 =  key;
break;
}
}
Set<Set<Integer>> pos1Set = (Set<Set<Integer>>)nine.get(pos1);
Set<Integer> pos123 = null;
Set<Integer> pos147 = null;
for(Set<Integer> as : pos1Set){
if(as.contains(Integer.valueOf(5)))
continue;
else if(pos123 == null)
pos123 = as;
else
pos147 = as;
}
//pos123中确定 位置2 3
int pos2 = -1,pos3 = -1;
for(Integer aInt:pos123){
if(isPos1379(pos1Set,aInt)){
pos3 = aInt;
} else
pos2 = aInt;
}
//pos147中确定 位置7 4
int pos4 = -1,pos7 = -1;
for(Integer aInt:pos147){
if(isPos1379(pos1Set,aInt)){
pos7 = aInt;
} else
pos4 = aInt;
}
System.out.println("Print the Result: 1-2-3 : "+pos1+"-"+pos2+"-"+pos3);
System.out.println("Print the Result: 4-5-6 : "+pos4+"-"+5+"-"+(10-pos4));
System.out.println("Print the Result: 7-8-9 : "+pos7+"-"+(10-pos2)+"-"+(10-pos1));
}
public Map<Integer,Set<Set<Integer>>> getNine(){
return nine;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
JiuGG jiuGG = new JiuGG();
jiuGG.initialNums();
Set<Integer> keys = jiuGG.getNine().keySet();
for(Integer key:keys){
System.out.println("Key :"+key);
Set<Set<Integer>> sets = (Set<Set<Integer>>)jiuGG.getNine().get(key);
for(Set<Integer> ele:sets){
System.out.println(ele);
}
}
jiuGG.printJiuGG();
}
}
目录
相关文章
|
8月前
|
小程序 JavaScript
【微信小程序】之自定义九宫格展示row-grid(每行显示三个)
【微信小程序】之自定义九宫格展示row-grid(每行显示三个)
|
6月前
|
小程序
【微信小程序-原生开发】实用教程18 - 九宫格、底部悬停按钮、页内悬浮按钮、拨打电话、一键复制
【微信小程序-原生开发】实用教程18 - 九宫格、底部悬停按钮、页内悬浮按钮、拨打电话、一键复制
71 0
|
7月前
|
前端开发 小程序 API
技术心得记录:小程序—九宫格心形拼图
技术心得记录:小程序—九宫格心形拼图
36 0
|
小程序
自娱小程序--超大文件topN
大文件处理,线程沲
1840 0
|
Python 小程序
|
4天前
|
移动开发 小程序 前端开发
超详细攻略!uniapp陪玩系统,打包陪玩小程序、H5需要注意什么?
陪玩系统的打包过程涵盖APP、小程序和H5平台。APP打包需使用uni-app开发工具,配置项目信息并选择云打包;小程序打包需在微信公众平台注册账号并提交审核;H5打包则直接通过uni-app生成文件并上传至服务器。各平台需注意权限配置、代码规范及充分测试,确保应用稳定性和兼容性。
|
2月前
|
小程序 前端开发 JavaScript
在线课堂+工具组件小程序uniapp移动端源码
在线课堂+工具组件小程序uniapp移动端源码
45 0
在线课堂+工具组件小程序uniapp移动端源码
|
3月前
|
移动开发 小程序 数据可视化
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
422 3
|
3月前
|
小程序 API
微信小程序更新提醒uniapp
在小程序开发中,版本更新至关重要。本方案利用 `uni-app` 的 `uni.getUpdateManager()` API 在启动时检测版本更新,提示用户并提供立即更新选项,自动下载更新内容,并在更新完成后重启小程序以应用新版本。适用于微信小程序,确保用户始终使用最新版本。以下是实现步骤: ### 实现步骤 1. **创建更新方法**:在 `App.vue` 中创建 `updateApp` 方法用于检查小程序是否有新版本。 2. **测试**:添加编译模式并选择成功状态进行模拟测试。
65 0
微信小程序更新提醒uniapp
|
5月前
|
小程序 前端开发 Java
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
JavaDog Chat v1.0.0 是一款基于 SpringBoot、MybatisPlus 和 uniapp 的简易聊天软件,兼容 H5、小程序和 APP,提供丰富的注释和简洁代码,适合初学者。主要功能包括登录注册、消息发送、好友管理及群组交流。
125 0
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目

热门文章

最新文章