一个简单的九宫格计算器
晚上闲来无事,刚装了一个ylmf的os,里面有个小游戏,九宫格,以前知道这个游戏没玩过,LP想玩玩就陪她看看,每个格子都用同样的方法计算,就写了一段代码来计算,呵呵,只能计算最简单的,复杂一点的还没研究。好了废话少说直接上代码,没有注释请大家原谅:
(解释下,把九宫格写成一个字符串,没有填写数字的为O,每一行用逗号隔开,每行中数字用空格隔开)
package com.jgg;public class CalcJGG {/*** @param args*/public static void main(String[] args) {JGG jgg = new JGG();jgg.init("7 6 8 3 2 5 1 4 9,3 4 1 0 9 0 2 5 6,2 9 5 1 6 4 0 8 0,9 1 2 0 5 6 4 3 0,6 8 3 0 0 0 0 2 0,4 5 7 2 0 0 0 6 0,5 7 4 6 3 9 8 1 2,1 3 9 5 8 2 6 7 4,8 2 6 4 7 1 0 9 0");jgg.out();jgg.calc();System.out.println("计算结果:");jgg.out();}
}package com.jgg;import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;public class JGG {private int[][] jgg;private boolean isOut = false;private boolean isNotCalc = false;public JGG_bak() {jgg = new int[9][9];}public void init(String str) {String[] arrStr = str.split(",");for (int i = 0; i < arrStr.length; i++) {String[] tmpArr = arrStr[i].split(" ");for (int j = 0; j < tmpArr.length; j++) {jgg[i][j] = Integer.parseInt(tmpArr[j]);}}}public void calc() {while (!isWin()) {isNotCalc = true;for (int i = 0; i < 9; i++) {for (int j = 0; j < 9; j++) {if (jgg[i][j] == 0) {List<Integer> rows = row(i);if (isFind(rows, i, j)) {continue;}List<Integer> cols = column(j);if (isFind(cols, i, j)) {continue;}List<Integer> colRow = colRow(i, j);if (isFind(colRow, i, j)) {continue;}List<Integer> tmpList = compare(rows, cols);if (isFind(tmpList, i, j)) {continue;}List<Integer> result = compare(tmpList, colRow);isFind(result, i, j);}}}if (isNotCalc) {System.out.println("对不起,不能计算!");break;}}}public List<Integer> row(int i) {List<Integer> tmpList = new ArrayList<Integer>();int[] tmpInt = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };for (int j = 0; j < 9; j++) {if (jgg[i][j] != 0) {for (int k = 0; k < tmpInt.length; k++) {if (tmpInt[k] == jgg[i][j]) {tmpInt[k] = 0;break;}}}}for (int j = 0; j < tmpInt.length; j++) {if (tmpInt[j] != 0) {tmpList.add(tmpInt[j]);}}return tmpList;}public List<Integer> column(int j) {List<Integer> tmpList = new ArrayList<Integer>();int[] tmpInt = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };for (int i = 0; i < 9; i++) {if (jgg[i][j] != 0) {for (int k = 0; k < tmpInt.length; k++) {if (tmpInt[k] == jgg[i][j]) {tmpInt[k] = 0;break;}}}}for (int i = 0; i < tmpInt.length; i++) {if (tmpInt[i] != 0) {tmpList.add(tmpInt[i]);}}return tmpList;}public List<Integer> colRow(int i, int j) {List<Integer> tmpList = new ArrayList<Integer>();int[] tmpInt = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };int startRow = (i / 3) * 3;int startCol = (j / 3) * 3;for (int k = startRow; k < (startRow + 3); k++) {for (int m = startCol; m < (startCol + 3); m++) {if (jgg[k][m] != 0) {for (int index = 0; index < tmpInt.length; index++) {if (tmpInt[index] == jgg[k][m]) {tmpInt[index] = 0;break;}}}}}for (int m = 0; m < tmpInt.length; m++) {if (tmpInt[m] != 0) {tmpList.add(tmpInt[m]);}}return tmpList;}public List<Integer> compare(List<Integer> list1,List<Integer> list2) {List<Integer> tmpList = new ArrayList<Integer>();for (Iterator iter = list1.iterator(); iter.hasNext();) {int tmp = (Integer)iter.next();for (Iterator iter1 = list2.iterator(); iter1.hasNext();) {int tmp2 = (Integer)iter1.next();if (tmp == tmp2) {tmpList.add(tmp);break;}}}return tmpList;}public boolean isWin(){for (int i = 0; i < 9; i++) {for (int j = 0; j < 9; j++) {if (jgg[i][j] == 0) {return false;}}}return true;}public void out(){for (int i = 0; i < 9; i++) {for (int j = 0; j < 9; j++) {System.out.print(jgg[i][j] + " ");}System.out.println();}}public boolean isFind(List<Integer> list, int i, int j){if (list.size() == 1) {jgg[i][j] = list.get(0);isNotCalc = false;if (isOut) {System.out.println("添加第" + (i + 1) + "行,第" + (j + 1) + "列 为【" + jgg[i][j] + "】");}return true;}return false;}public boolean isOut() {return isOut;}public void setOut(boolean isOut) {this.isOut = isOut;}
}
一个简单的九宫格计算器相关推荐
- php实现一个简单的四则运算计算器
php实现一个简单的四则运算计算器(还不支持括号的优先级).利用栈这种数据结构来计算表达式很赞. 这里可以使用栈的结构,由于php的数组"天然"就有栈的特性,这里直接就利用了数组. ...
- swift for循环_Swift | 实战一个简单的素数计算器demo
Swift 实战一个简单的素数计算器demo 本期我们来介绍如何用storyboard来实现一个素数计算器demo,storyboard可以明确地知道界面上的组件与代码的关系,而且比起仅用代码写要方便 ...
- 作业1开发一个简单的python计算器
开发一个简单的python计算器 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568 ...
- 设计一个简单的四则计算器
c# using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; u ...
- 程序员成长之旅——Delphi实现一个简单的科学计算器
程序员成长之旅--Delphi实现一个简单的科学计算器 目标效果 组件以及开发环境 最终呈现 源码GITHUB 目标效果 组件以及开发环境 delphi7版本及以上,这里我用delphi10.4进行的 ...
- Vue v-model双向数据绑定和一个简单的整数计算器
一.v-model双向数据绑定 方法 v-bind - 单向数据绑定(从M到V) v-model - 双向数据绑定 例子 <input type="text" v-bind: ...
- 设计一个简单的网页计算器
设计一个简单的网页计算器 一.代码 <!DOCTYPE html> <html> <head><meta charset="UTF-8"& ...
- python做的简单gui计算器_Python计算器–使用Tkinter创建一个简单的GUI计算器
在Python计算器教程中,您将学习创建简单的GUI计算器.在这篇文章中,我将向您展示如何使用python中的tkinter模块开发一个简单的计算器.因此,让我们进一步创建一个简单的python计算器 ...
- 一个简单的税利计算器(网页版)
嗯嗯,做一个简单的网页版的税率计算器,功能比较简单,但是相对比较实用.因为参考了一些其他作品,所以在计算汇率的时候习惯性的是以美元做单位.具体的功能有着较为详细的标注.仅供大家学习参考下. <! ...
最新文章
- 中国未来技术学院盘点
- C#中把货币、日期转换成中文大写
- 生产级部署 Python 脚本,崩溃可自启!
- 专插本跨考计算机科学与技术,2021年计算机科学与技术专业-计算机组成原理-考试大纲(专插本).docx...
- 关于jquerymobile的预加载
- 将大型项目从Ant迁移到Maven
- azure多功能成像好用吗_Azure持久功能简介:模式和最佳实践
- java你可能不知道的事(2)--堆和栈
- Passing the Message(HDU-3410)
- 音视频开发(3)---ffmpeg
- 霍夫直线检测python_python+opencv实现霍夫变换检测直线的方法
- 功放前级的左右_TDG Audio达芬奇:什么是前级,后极?
- Spark算子:RDD键值转换操作(2)–combineByKey、foldByKey
- 蓝懿IOS实战音乐播放器
- AndroidStudio高级计算器三角函数对数
- html详细笔记及练习的几个例子
- 【个人网站】零基础个人网站搭建完整教程二(网站服务器配置)
- 特斯拉Y系列降价后订单暴增,国信证券称后期有望降至26万
- 虚拟计算服务器吗,云计算服务器是虚拟的吗
- c语言 求两个数的平均值
热门文章
- hybrid在大前端的韩流中你自我增值必懂的一个点
- Python打印彩色字体
- 金士顿 KC3000 PCIe 4.0 NVMe 旗舰 SSD 上市
- C# 实现寻峰算法的简单优化(包含边峰,最小峰值,峰距)
- 明日方舟公式计算机,明日方舟公开招募计算器怎么用 公开招募计算工具分享...
- linux单机游戏软件下载,帝国时代单机手机版
- 企业宣传画册印刷产品的作用和功能
- 显卡3D管理程序设置与游戏画质的关系
- buuctf wustctf2020_getshell_2 ret2shellcode
- java+单例+恶汉_Java设计模式之单例模式(恶汉式和懒汉式)