摸鱼也摸鱼之在线数独自动求解

news2024/11/25 15:32:13

背景

在发现被老板CPU之后,大家想做的基本上都是摸鱼,像我这种没什么手法的人不可能摸鱼打MOBA游戏,所以只能选择数独这种对时间要求不怎么急促的小游戏。然而,有时候搞半天才发现从一开始就错了,这让我很苦恼,看来有必要对这一摸鱼行动进行再次摸鱼。

平台

偶然发现的在线数独页游[在线数独 (sudoku-cn.com)]

方案

浏览器安装油猴插件,并新建一个油猴脚本,其内容如下:

// ==UserScript==
// @name         右键自动解答数独
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        https://sudoku-cn.com/
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    let board = [];
	let over = false;



	function getQuestion() {
		let s = [];
		for (let i = 0; i < 9; i++) {
			s.push([]);
			for (let j = 0; j < 9; j++) {
				let div = document.querySelector("#vc_" + j + "_" + i);
				if (div.innerHTML.trim().length != 0 && div.className == "r1") {
					s[i].push(div.innerHTML.trim());
				} else {
					s[i].push("_");
				}
			}
		}
		return s;
	}

	function dfs(index) {
		if (over) {
			return;
		}
		let i = Math.floor(index / 9);
		let j = index % 9;
		if (index >= 81) {
			over = true;
			return;
		}
		if (board[i][j] == "_") {
			for (let c = '1'; c <= '9'; c++) {
				let hang = false,
					lie = false,
					gong = false;
				for (let u = i, v = 0; v < 9; v++) {
					if (board[u][v] == c) {
						hang = true;
						break;
					}
				}
				if (hang) {
					continue;
				}
				for (let u = 0, v = j; u < 9; u++) {
					if (board[u][v] == c) {
						lie = true;
						break;
					}
				}
				if (lie) {
					continue;
				}
				for (let u = Math.floor(i / 3) * 3, v = Math.floor(j / 3) * 3; u < Math.floor(i / 3) * 3 + 3 && v < Math
					.floor(j / 3) * 3 + 3; u++, v++) {
					if (board[u][v] == c) {
						gong = true;
						break;
					}
				}
				if (gong) {
					continue;
				}
				board[i][j] = c;
				dfs(index + 1);
				if (!over) {
					board[i][j] = '_';
				} else {
					break;
				}
			}
		} else {
			dfs(index + 1);
		}
	}

	function setAnswer() {
		let index = 0;
		for (let i = 0; i < 9; i++) {
			for (let j = 0; j < 9; j++) {
				let div = document.querySelector("#vc_" + j + "_" + i);
				div.innerHTML = board[i][j];
			}
		}
	}

	document.oncontextmenu = (e) => {
		e.preventDefault();
		over = false;
		board = getQuestion();
		dfs(0);
		setAnswer();
	}
})();

如代码所示,我把鼠标右键默认事件取消了,取而代之的是右键单击时自动求解该题目,并填写答案进去。

测试

直接高级+难度的题目

点击鼠标右键直接求解

全是绿色的,那就没问题了。

至此,完成了摸鱼也摸鱼的目标。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1024040.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

毕业设计|基于stm32单片机的app视频遥控抽水灭火小车设计

基于stm32单片机的app视频遥控抽水灭火水泵小车设计 1、项目简介1.1 系统构成1.2 系统功能 2、部分电路设计2.1 L298N电机驱动电路设计2.2 继电器控制电路设计 3、部分代码展示3.1 小车控制代码3.1 水泵控制代码 4 演示视频及代码资料获取 1、项目简介 视频简介中包含资料http…

开源日报 0822 | 语音识别与推理

这些项目包括 JavaScript 算法示例、系统编程语言 Rust、高性能的自动语音识别推理项目 Whisper.cpp 以及键盘工作者的单词记忆与英语肌肉记忆锻炼软件 Qwerty Learner。 trekhleb/javascript-algorithms Stars: 174.1k License: MIT 这个项目是一个包含许多流行算法和数据结…

mmc20创建进程c/c++实现

背景 最近写了一份遍历clsid所有接口的代码&#xff08;链接点这里&#xff09;&#xff0c;在查找有意思的包含exe方法的时候发现了mmc20&#xff0c;且接口是6efc2da2-b38c-457e-9abb-ed2d189b8c38。 但常见的使用mmc20都是用的vbs和powershell来创建的进程&#xff0c;这里…

Hadoop的HDFS高可用方案

一、Hadoop高可用简介 Hadoop 高可用 (High Availability) 分为 HDFS 高可用和 YARN 高可用&#xff0c;两者的实现基本类似&#xff0c;但 HDFSNameNode 对数据存储及其一致性的要求比 YARN ResourceManger 高得多&#xff0c;所以它的实现也更加复杂 1、HDFS系统高可用简介…

链家网房源价格信息的爬虫分析工具

导语 链家网是中国最大的房地产交易平台之一&#xff0c;提供了全国各地的房源信息&#xff0c;包括价格、面积、户型、楼层、朝向、小区、地理位置等。这些信息对于房地产市场的分析和预测有着重要的价值&#xff0c;但是链家网并没有提供方便的数据接口&#xff0c;因此需要…

用flask框架flask-sock和websocket创建一个自己的聊天界面

WebSocket 协议在10年前就已经标准化了(在2011年&#xff0c;你能相信吗?)所以我相信你不需要介绍。但是如果你不熟悉它&#xff0c;WebSocket 是 HTTP 协议的一个扩展&#xff0c;它在客户端和服务器之间提供了一个永久的、双向的通信通道&#xff0c;在这里双方可以实时地发…

91 # 实现 express 的优化处理

上一节实现 express 的请求处理&#xff0c;这一节来进行实现 express 的优化处理 让 layer 提供 match 方法去匹配 pathname&#xff0c;方便拓展让 layer 提供 handle_request 方法&#xff0c;方便拓展利用第三方库 methods 批量生成方法性能优化问题 进行路由懒加载&#…

亚马逊 CodeWhisperer 初体验

1、CodeWhisperer 介绍 CodeWhisperer 是亚马逊出品的一款基于机器学习的通用代码生成器&#xff0c;可实时提供代码建议。类似 Cursor 和 Github Copilot 编码工具。 官网&#xff1a;AI 代码生成器 - Amazon CodeWhisperer - AWS 在编写代码时&#xff0c;它会自动根据您现…

Flink sql 1.17笔记

环境准备 # 启动hadoop集群 # 启动Flink yarn session (base) [link999hadoop102 flink-1.17.0]$ bin/yarn-session.sh -d# 启动finksql客户端 (base) [link999hadoop102 flink-1.17.0]$ bin/sql-client.sh -s yarn-session# 如果有初始化文件 bin/sql-client.sh embedded -s …

数据结构 - 二叉树

文章目录 目录 文章目录 前言 一 . 树型结构 1.1 树的概念(了解) 1.2 数的常用术语 (掌握) 1.3 树的应用(了解) 1.4 树相较于数组和链表的优势(了解) 二 . 二叉树(重点) 2.1 二叉树的概念 2.2 两种特殊的二叉树 2.3 二叉树的性质 2.4 二叉树的基本操作 2.4.1 二叉树的前序遍历 …

高云FPGA系列教程(7):ARM GPIO外部中断

文章目录 [toc]GPIO中断简介FPGA配置常用函数MCU程序设计工程下载 本文是高云FPGA系列教程的第7篇文章。 本篇文章介绍片上ARM Cortex-M3硬核处理器GPIO外部的使用&#xff0c;演示按键中断方式来控制LED亮灭&#xff0c;基于TangNano 4K开发板。 参考文档&#xff1a;Gowin_E…

go学习之函数知识

函数 文章目录 函数1.函数入门(1)为什么需要函数&#xff1f;(2)什么是函数&#xff1a;2.包3.函数的调用机制通俗理解调用过程&#xff1a;return语句递归调用 4.函数注意事项和细节讨论5.init函数6.匿名函数7.闭包8.defer9.函数参数的传递方式10.字符串中常用的函数11.时间和…

JVM中的java同步互斥工具应用演示及设计分析

1.火车站售票系统仿真 某火车站目前正在出售火车票&#xff0c;共有50张票&#xff0c;而它有3个售票窗口同时售票&#xff0c;下面设计了一个程序模拟该火车站售票&#xff0c;通过实现Runnable接口实现&#xff08;模拟网络延迟&#xff09;。 伪代码&#xff1a; Ticket类…

Java代码质量评估工具

概述 Java代码的质量评估主要包括代码的可维护性、健壮性、以及在运行时能达到既定的性能目标&#xff0c;可维护性主要包括代码的可读性、在关键的代码上提供详细注释、在设计类、方法以及代码逻辑时符合设定的编码规范&#xff0c;健壮性主要包括编写代码时应使用常用的设计…

【JAVA-Day26】数组解析:什么是数组?如何定义?

数组解析&#xff1a;什么是数组&#xff1f;如何定义&#xff1f; 数组解析&#xff1a;什么是数组&#xff1f;如何定义&#xff1f;摘要一、什么是数组数组的特性&#xff1a;不同类型的数组&#xff1a;数组的应用场景&#xff1a;数组的限制和挑战&#xff1a; 二、如何定…

【论文阅读 07】Anomaly region detection and localization in metal surface inspection

比较老的一篇论文&#xff0c;金属表面检测中的异常区域检测与定位 总结&#xff1a;提出了一个找模板图的方法&#xff0c;使用SIFT做特征提取&#xff0c;姿态估计看差异有哪些&#xff0c;Hough聚类做描述符筛选&#xff0c;仿射变换可视化匹配图之间的关系&#xf…

【算法基础】数学知识

质数 质数的判定 866. 试除法判定质数 - AcWing题库 时间复杂度是logN #include<bits/stdc.h> using namespace std; int n; bool isprime(int x) {if(x<2) return false;for(int i2;i<x/i;i){if(x%i0) return false;}return true; } signed main() {cin>&g…

Git学习笔记1

任务要求&#xff1a; 1、使用git提交代码到仓库&#xff1b; 2、实现自动代码发布系统&#xff1b; 1、了解DevOps的发展历程和思想&#xff1b; 2、学会git版本控制&#xff1b; 3、会使用github公有仓库和gitlab私有仓库&#xff1b; 4、了解CI/CD&#xff1b; 5、使用…

svn(乌龟svn)和SVN-VS2022插件(visualsvn) 下载

下载地址: https://www.visualsvn.com/visualsvn/download/

Go的error接口

从本书的开始&#xff0c;我们就已经创建和使用过神秘的预定义error类型&#xff0c;而且没有解释它究竟是什么。实际上它就是interface类型&#xff0c;这个类型有一个返回错误信息的单一方法&#xff1a; type error interface { Error() string } 创建一个error最简单的方…