c语言约束函数,求解能不能用c或c++语言实现下面的约束条件
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Life Simulator
body {
margin: 10px;
}
#title {
text-align: center;
margin: auto;
position: absolute;
left: 0;
right: 0;
}
#myGraph {
height: 1000px;
margin-top: 50px;
width: 100%;
border: solid;
border-width: 1px;
}
Size:
Life Chance:
Refresh frequence:
Start Simulation
Stop Simulation
Continue Simulation
Save Data
let cp = document.getElementById('myGraph')
let ctx = cp.getContext('2d')
let width = document.getElementById('board').offsetWidth;
let height = document.getElementById('board').offsetHeight;
let size = document.getElementById('size')
let sizeVal = +size.value;
let rffVal = 500;
let arr = [];
let myInterval;
function initCanvas() {
let dpr = window.devicePixelRatio || 1;
let bsr = ctx.webkitBackingStorePixelRatio ||
ctx.mozBackingStorePixelRatio ||
ctx.msBackingStorePixelRatio ||
ctx.oBackingStorePixelRatio ||
ctx.backingStorePixelRatio || 1;
let PIXEL_RATIO = dpr / bsr;
cp.style.width = width + "px";
cp.style.height = height + "px";
cp.width = width * PIXEL_RATIO;
cp.height = height * PIXEL_RATIO;
ctx.scale(PIXEL_RATIO, PIXEL_RATIO)
}
function paint() {
ctx.save();
ctx.clearRect(0, 0, width, height);
let lineNum = arr.length;
let colNum = arr[0].length;
for (let i = 0; i < lineNum; i += 1) {
for (let j = 0; j < colNum; j += 1) {
if (arr[i][j] === 0) {
ctx.fillStyle = '#000000'
} else {
ctx.fillStyle = '#FFFFFF'
}
ctx.fillRect(j*sizeVal, i*sizeVal, sizeVal, sizeVal)
}
}
ctx.restore();
}
function initData(lifeChance) {
arr = [];
let sumVal = 0;
let aliveVal = 0;
for (let j = 0; j < height; j += sizeVal) {
let oneLine = [];
for (let i = 0; i < width; i += sizeVal) {
let a = Math.random();
if (a >= lifeChance) {
oneLine.push(0)
} else {
aliveVal += 1;
oneLine.push(1)
}
sumVal += 1;
}
arr.push(oneLine)
}
console.log((aliveVal/sumVal*100).toFixed(2) + '% chance to live!')
}
function updateData() {
let lineNum = arr.length;
let colNum = arr[0].length;
let newArr = []
for (let i = 0; i < lineNum; i += 1) {
let oneLine = [];
for (let j = 0; j < colNum; j += 1) {
let neighborLifeNum = 0;
for (let left = j-1; left <= j+1; left += 1) {
for (let top = i-1; top <= i+1; top += 1) {
if (left < 0 || top < 0 || left >= colNum || top >= lineNum) {
continue;
}
if (left === j && top === i) {
continue;
}
neighborLifeNum += arr[top][left];
}
}
if (neighborLifeNum === 3) {
oneLine.push(1)
} else if (neighborLifeNum === 2) {
oneLine.push(arr[i][j]);
} else {
oneLine.push(0)
}
}
newArr.push(oneLine)
}
arr = newArr;
}
function startSimulation() {
paint();
myInterval = setInterval(d=>{
updateData();
paint();
}, rffVal)
}
function saveData() {
var content = JSON.stringify(arr);
var blob = new Blob([content], {type: "text/plain;charset=utf-8"});
if(navigator.appVersion.toString().indexOf(".NET")>0){
window.navigator.msSaveBlob(blob, "lifeSimulationData.json");
}
else{
var a = document.createElement("a");
a.href =window.URL.createObjectURL(blob);
a.download = "lifeSimulationData.json";
a.click();
document.body.appendChild(a);
}
}
function loadData() {
var file = document.getElementById("uploadFile").files[0];
var reader = new FileReader();
reader.onload = function(event) {
let content = event.target.result;
arr = JSON.parse(content)
startSimulation();
}
reader.readAsText(file,"UTF-8");
}
function init() {
initCanvas();
document.getElementById('go').addEventListener('click', d=>{
sizeVal = +size.value;
let lifeChance = +document.getElementById('lfc').value * 0.01;
rffVal = +document.getElementById('rff').value*100;
initData(lifeChance);
startSimulation();
});
document.getElementById('stop').addEventListener('click', d=>{
console.log('stop')
clearInterval(myInterval)
});
document.getElementById('continue').addEventListener('click', d=>{
startSimulation();
});
document.getElementById('save').addEventListener('click', d=>{
saveData();
})
document.getElementById('uploadFile').onchange = function() {
loadData();
}
}
init();
c语言约束函数,求解能不能用c或c++语言实现下面的约束条件相关推荐
- 二分法求解方程的根java_C语言二分法求解方程根的两种方法
本文实例为大家分享了C语言二分法求解方程根的具体代码,供大家参考,具体内容如下 对于二分法求根,其实和弦截法思想很像,甚至更简单. 原理:先看如下的图 A,B两个点为跟的一个边界,通过一直缩小跟的边界 ...
- 将 改为c语言表达式,基于c语言表达式求解课程设计修改.doc
基于c语言表达式求解课程设计修改 摘 要 通过数据结构这门课程,我们较深入的了解到了栈,栈是一种重要的线性结构,它广泛应用于各种软件系统中,因此在面向对象的程序设计中,它们是多型数据类型. 本次试验我 ...
- java语言实现一个长度为n_Java语言实现求解一元n次多项式的方法示例[Java代码]...
本文主要向大家介绍了Java语言实现求解一元n次多项式的方法示例,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 项目需要做趋势预测,采用线性拟合.2阶曲线拟合和指数拟合的算法,各种线 ...
- 使用C语言编程求解: 1 - 1/2 + 1/3 - 1/4 + 1/5 - ... + 1/99 - 1/100 的值。
一.题目描述 使用C语言编程求解: 1 - 1/2 + 1/3 - 1/4 + 1/5 - ... + 1/99 - 1/100 的值. 二.分析求解 这是一道类似数列的求和问题,考察的是循环的使用, ...
- c语言程序编程线性方程,C语言编程求解线性方程.doc
C语言编程求解线性方程 本 科 专 业 学 年 论 文 题目:线性方程组求解方法比较 姓 名 郭 凤 专 业 计算机科学与技术专业 班 级 08级本科(2)班 指导教师 刘 晓 娜 完成日期:2010 ...
- 弦截法c语言程序,用弦截法求解一元三次方程的根(利用c语言实现)
用弦截法求解一元三次方程的根(利用c语言实现)0 特别v2013.09.24浏览296次分享举报 #include #include float f(x) { float a,b,c,d; float ...
- 已知两圆圆心坐标及半径求两圆交点 (C语言|参数方程求解)
已知两圆圆心坐标及半径求两圆交点 (C语言|参数方程求解) 在一个二维平面上给定两个圆的圆心横纵坐标.半径共6个参数, 求交点. 这个问题无非是解二元二次方程组.普通二元二次方程联立消元求解的困难在于 ...
- C语言链表求解多项式乘法问题
C语言链表求解多项式乘法问题 解决多项式乘法问题最容易想到的就是将乘法运算转换为加法运算.从p1的第一项开始,依此乘以p2的每一项,合并同类项后放入结果多项式中.然而项数太多时,合并同类项的过程过于复 ...
- C语言程序设计第3版黄维通,C语言程序设计(第3版)课件-黄维通
C语言程序设计(第3版)课件-黄维通 C语言程序设计(第3版)课件-黄维通,语言程序设计,课件,黄维通 清华大学黄维通设计制作 1 第2章C语言程序的基本数据类型及其运算 清华大学黄维通设计制作 2 ...
最新文章
- 一起学WP7 XNA游戏开发(八. 让3d model动起来)
- Mybatis动态的添加删除列
- 怎么向后删除?(删除光标后的字符)(按delete键)
- Linux学习之遇到的小问题---查看系统版本,虚拟机创建共享文件夹,用到的命令记录。
- LeetCode 66. 加一
- LeetCode 5178. 四因数
- Xcode pch文件配置及object c 单例创建
- 一键 caddy php h5ai_H5ai 在线播放搭建
- 修改XP系统的注册名
- arcmap 10.2 shp合并
- [转]禅修程序员十诫
- mp3转wav,详细方法介绍
- 岗位、职位、职级、职务的区别
- java罗马帝国下载,Java程序设计2020满分完整版考 试题库大全
- c语言算术运算的作用,C语言算术运算符和算术表达式
- 通过Alertmanager实现Prometheus的告警告警配置(邮箱加钉钉)
- Codeforces-686C Robbers' watch
- EXCEL 单元格内换行内容改成两行单元格内容
- 2022年美赛e题资料(森林固碳)
- PHP socket demo
热门文章
- 我的angularjs源码学习之旅2——依赖注入
- Banana PI A20开发板 通过了CE,FCC,RoHS认证
- 分布式系统设计注意点
- 【心情】还有5分钟回苏州了!
- Linux系统守护进程详解
- 麦克纳姆轮运动原理_【带字幕视频】麦克纳姆轮你了解多少?ESP32的WIFI信号,居然能覆盖10公里?...
- Nginx(OpenResty)+Lua+Redis IP限流 10s内
- c语言中 char怎样用,C语言中char*和char[]用法区别分析
- index.html安全文件,restorecon - 恢复文件的安全上下文
- 计算机教育的发展,计算机教育发展方向研究