当前位置: 首页 > news >正文

【算法可视化】模拟算法专题

运行平台

Algorithm Visualizer

神奇的幻方

[NOIP2015 提高组] 神奇的幻方

// import visualization libraries {
const { Tracer, Array2DTracer, Array1DTracer, LogTracer, Randomize, Layout, VerticalLayout } = require('algorithm-visualizer');
// }
function filledArray(length, value) {return Array(...Array(length)).map(Number.prototype.valueOf, value);
}const N = 5; //配置幻方大小
const board = (function createArray(N) {const result = [];for (let i = 0; i < N; i++) {result[i] = filledArray(N, 0);}return result;
}(N));// define tracer variables {
const boardTracer = new Array2DTracer('幻方');
const logger = new LogTracer('算法过程');
Layout.setRoot(new VerticalLayout([boardTracer, logger]));
boardTracer.set(board);
logger.println(`${N}阶幻方`);
Tracer.delay();
// }// logger {
logger.println('开始执行');
// }
let x = 0, y = (N - 1)  / 2for(let i = 1; i <= N * N; i ++)
{board[x][y] = i;// logger {logger.println(`${x}${y}列填入${i}`);// }// visualizer {boardTracer.patch(x, y, i); Tracer.delay();// }if(x === 0 && y != N - 1) x = N - 1, y += 1;else if(y == N - 1 && x !== 0) x -= 1, y = 0;else if(x === 0 && y == N - 1) x += 1;else if(board[x - 1][y + 1] !== 0) x += 1;else x -= 1, y += 1;
}
// logger {
logger.println(`完成`);
// }

杨辉三角

杨辉三角

// import visualization libraries {
const { Tracer, Array2DTracer, Layout, VerticalLayout } = require('algorithm-visualizer');
// }const N = 9;
const A = new Array(N);
for (let i = N - 1; i >= 0; i--) {A[i] = new Array(i + 1);
}// define tracer variables {
const tracer = new Array2DTracer('杨辉三角');
Layout.setRoot(new VerticalLayout([tracer]));
tracer.set(A);
Tracer.delay();
// }for (let i = 0; i < N; i++) {for (let j = 0; j <= i; j++) {if (j === i || j === 0) { // 第一列和最后一列的值为1A[i][j] = 1;// visualize {tracer.patch(i, j, A[i][j]);Tracer.delay();tracer.depatch(i, j);// }} else { // 其它列的值为上一行对应列的和// visualize {tracer.select(i - 1, j - 1);Tracer.delay();tracer.select(i - 1, j);Tracer.delay();// }A[i][j] = A[i - 1][j - 1] + A[i - 1][j];// visualize {tracer.patch(i, j, A[i][j]);Tracer.delay();tracer.depatch(i, j);tracer.deselect(i - 1, j - 1);tracer.deselect(i - 1, j);// }}}
}

赦免战俘

赦免战俘

// import visualization libraries {
const { Tracer, Array2DTracer, Array1DTracer, LogTracer, Randomize, Layout, VerticalLayout } = require('algorithm-visualizer');
// }
function filledArray(length, value) {return Array(...Array(length)).map(Number.prototype.valueOf, value);
}const N = 1 << 3; //配置棋盘大小和初始状态
const board = (function createArray(N) {const result = [];for (let i = 0; i < N; i++) {result[i] = filledArray(N, 0);}return result;
}(N));// define tracer variables {
const boardTracer = new Array2DTracer('正方形方阵');
const logger = new LogTracer('算法过程');
Layout.setRoot(new VerticalLayout([boardTracer, logger]));boardTracer.set(board);
logger.println(`赦免战俘: ${N} X ${N}的方阵`);
Tracer.delay();
// }let ans = 0
function work(n, x, y) {// logger {logger.println(`赦免${x}${y}列开始、大小为${n} X ${n}的方阵`);      // }if (n == 2) {board[x + 1][y] = board[x][y + 1] = board[x + 1][y + 1] = 1;// 可视化处理 {boardTracer.select(x + 1, y);Tracer.delay();boardTracer.patch(x + 1, y, 1);Tracer.delay();boardTracer.select(x, y + 1);Tracer.delay();boardTracer.patch(x, y + 1, 1);Tracer.delay();boardTracer.select(x + 1, y + 1);Tracer.delay();boardTracer.patch(x + 1, y + 1, 1);Tracer.delay();// }return;}n = n / 2;work(n, x + n, y);work(n, x, y + n);work(n, x + n, y + n);
}// logger {
logger.println('开始执行');
// }
work(N, 0, 0);
// logger {
logger.println(`完成`);
// }

相关文章:

  • Python接口自动化测试框架运行原理及流程
  • 【leetcode】随机链表的复制
  • Nginx使用—基础应用
  • 图像处理与视觉感知---期末复习重点(1)
  • 如何在Spring Boot框架中打印响应的日志?
  • 【Mining Data】收集数据(使用 Python 挖掘 Twitter 数据)
  • js如何渲染页面
  • [渗透教程]-024-Hashcat密码破解
  • LLM(十一)| Claude 3:Anthropic发布最新超越GPT-4大模型
  • Python 开发图形界面程序
  • 二十五、剖析HashMap
  • 《javascript高级程序设计》学习笔记 | 23.JSON
  • 2024年JSON 面试题目-1
  • LeetCode刷题---填充每个节点的下一个右侧节点指针
  • Linux设置静态IP地址
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • 【知识碎片】第三方登录弹窗效果
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • Angular 响应式表单之下拉框
  • canvas 高仿 Apple Watch 表盘
  • Date型的使用
  • java8 Stream Pipelines 浅析
  • k个最大的数及变种小结
  • MySQL主从复制读写分离及奇怪的问题
  • PHP的Ev教程三(Periodic watcher)
  • session共享问题解决方案
  • text-decoration与color属性
  • vuex 学习笔记 01
  • Web设计流程优化:网页效果图设计新思路
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 如何学习JavaEE,项目又该如何做?
  • 深度学习中的信息论知识详解
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 我这样减少了26.5M Java内存!
  • 小李飞刀:SQL题目刷起来!
  • 硬币翻转问题,区间操作
  • linux 淘宝开源监控工具tsar
  • ​2020 年大前端技术趋势解读
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • #### go map 底层结构 ####
  • ###STL(标准模板库)
  • #include到底该写在哪
  • #Java第九次作业--输入输出流和文件操作
  • $$$$GB2312-80区位编码表$$$$
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (C++17) optional的使用
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (Note)C++中的继承方式
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (简单) HDU 2612 Find a way,BFS。
  • (接口自动化)Python3操作MySQL数据库