变色方块 世上最难智力游戏 (yanhaijing.com)
新建文件夹,命名为Inverter
在文件夹下新建inverter.js文件,内容如下
- "use strict";
-
- function getA() {
- let a = [];
- let level = parseInt(document.querySelector("#cur-level").innerHTML);
- for (let i = 0; i < level; i++) {
- a.push([]);
- for (let j = 0; j < level; j++) {
- a[i].push(0);
- }
- }
- return a;
- }
-
- function solve() {
- let level = parseInt(document.querySelector("#cur-level").innerHTML);
- let screen = document.querySelector("#screen");
-
-
- let max = Math.floor(Math.pow(2, level));
-
- for (let num = 0; num < max; num++) {
- let a = getA();
- let f = getA();
-
- let s = num.toString(2);
- while (s.length < level) {
- s = "0" + s;
- }
-
- for (let i = 0; i < level; i++) {
- if (s[i] == '1') {
- a[0][i] = 1 - a[0][i];
- f[0][i] = 1;
- if (i > 0) {
- a[0][i - 1] = 1 - a[0][i - 1];
- }
- if (i + 1 < level) {
- a[0][i + 1] = 1 - a[0][i + 1];
- }
- if (1 < level) {
- a[1][i] = 1 - a[1][i];
- }
- }
- }
-
- for (let i = 0; i < level - 1; i++) {
- for (let j = 0; j < level; j++) {
- if (a[i][j] == 0) {
- f[i + 1][j] = 1;
-
- a[i][j] = 1 - a[i][j];
- a[i + 1][j] = 1 - a[i + 1][j];
- if (j > 0) {
- a[i + 1][j - 1] = 1 - a[i + 1][j - 1];
- }
- if (j + 1 < level) {
- a[i + 1][j + 1] = 1 - a[i + 1][j + 1];
- }
- if (i + 2 < level) {
- a[i + 2][j] = 1 - a[i + 2][j];
- }
- }
- }
- }
-
- let c = 0;
- for (let i = level - 1, j = 0; j < level; j++) {
- c += a[i][j];
- }
- if (c == level) {
- console.log(a);
- console.log();
- console.log(f)
- console.log();
- console.log(s);
-
- let divs=document.querySelectorAll(".square ");
- for(let i=0;i
- for(let j=0;j
- if(f[i][j]==1){
- let index=i*level+j;
- divs[index].click();
- }
- }
- }
- break;
- }
- }
- }
-
- document.oncontextmenu = (e) => {
- e.preventDefault();
- solve();
- }
再建一个manifest.json文件,内容如下
- {
- "name": "inverter",
- "version": "1.0",
- "description": "单击鼠标右键自动求解点灯",
- "manifest_version": 2,
- "content_scripts": [{
- "matches": [
- "http://yanhaijing.com/inverter/"
- ],
- "js": [
- "inverter.js"
- ]
- }]
- }
部署
因为我用的是Edge浏览器,就以它为例,打开它的扩展

使用键盘上的Win键+右方向键,将这个画面缩到右边,将脚本文件夹缩到左边

使用鼠标将脚本文件夹Inverter拖到扩展区中,即可添加完毕
测试
打开我们的游戏主页

鼠标右键单击,即可自动帮我们解答,进入下一关。


注意
由于随着N的增长,算法复杂度为O(2^N),后面有可能会变得很慢,适当游戏,主要是学习算法以及搭配浏览器编写脚本,不要本末倒置。
-
相关阅读:
MongoDB CRUD操作:批量写操作
【离网逆变器】离网逆变器型号由一个高频DC-DC升压转换器与全桥PI控制电压源逆变器级联组成、逆变器使用带LC滤波器的SPWM调制(Simulink)
Vue理解之路:如何在Vue项目中使用vuex
生产设备上的静电该如何处理?
IntelliJ IDEA 2022.2 (Ultimate Edition) plugin插件开发
给你的R语言再次提速
DSP介绍及CCS
Web前端:为什么企业应该将Javascript视为构建软件产品的首选?
【剑指Offer】二分法例题
Linux之ebpf(1)基础使用
-
原文地址:https://blog.csdn.net/qq_36694133/article/details/133084229