关于300数独加密程序

分享到:
364
下一篇 >

菜鸟:

各位大侠,请教个问题,我想在PLC里面写一个数独加密的程序,就是九宫格里横、竖、单元区域内数值不能重复,不能为空,我的思路是讲九宫格划分为81个独立的数据储存区域,相互比较,合格为“1”并再输入一次密码便可以进入参数修改界面。

现在难题有以下几点:

1、81个存储区随机给部分区域赋值(1--9之间的随机值)现在我做不到。

2、81个存储区怎么只能限制0--9的数据输入,大于或小于拒绝输入。

3、比较指令逐个比较的话,用的太多了,要用到32076次,有什么办法能批量比较的没有?

用WINCC作辅助,*好是STL语言格式的。

谢谢了!!

侠士:

1、你可以编程伪随机数功能,取它的输出作为随机输入值。

2、如果大于等于0小于等于9则保存到区域中,否则不保存

3、用loop循环

菜鸟:关键是程序太大了,我一直用STL,写完要17574,太大了!!

侠士:

用指针循环移位呀!如果你一行行的写,那肯定是太大了。

斑竹:

以前在手机上还经常玩这个游戏,玩起还有点上瘾 !

个人愚见哈,改个参数也整得这么复杂(当然也可娱乐哈),如果以后设备卖得比较远而有些参数又不得不在现场更改的时候,而用户也不想玩“数独”的时候 ,是不是很麻烦呀!这个我觉得可以参照SINUMERIK系统的不同的参数不同操作权限来做,更高的权限可以更改低权限的参数。

如果真要做数独程序我的想法是这样的:定义一个9*9的二维数组,编程*好用**语言来编程,PLC中用SCL ,当然STL也可以偏移量得自己计算 ,HMI上做可以用脚本 。通过一维及二维的变化很容易比较出每行或每列及每个宫格的值是否在充许范围内。

1--9之间的随机值的获得,一般系统都有随机数函数,把得到的随机数求余 MOD 10 不为0的数就是1--9之间的随机值了

81个存储区随机给部分区域赋值(1--9之间的随机值),通过随机值获得0--80的值作为指针来来指向9*9 数组表格,对已赋值的数据区进行标记并入栈到另一个“数据表格”(栈的大小根据你赋值的表格数量来决定,也决定了游戏的难度)用于对已赋值的表格的比较产生另外的随机数 。赋值的过程还得比较所在的行与列及宫格不能有相同的,相当于解题过程了

菜鸟:

确实是自己闲的了。但是我发现个问题,就是我以前没有用过指针,今天我看了一些资料,有一个数组寻址块,FC102,看了介绍确实好用。但是在哪儿调用呢?我把标准库翻了一遍也没有找到,照书上的原程序自己写了一下,感觉数据类型不太对。现在还没有试验,过一会儿我使一下再说。还有就是,二维数组是有了,就是不知道怎么赋值让我检验一下,比如9*9的数组,我想在X=4.Y=5的地方赋值,在用我的程序调出检验怎么办?

我附一张我照书上写的程序,临时变量可能不一样,因为我写程序怕麻烦!!

这是各个变量




这是我写的程序


书是我在网上兑的那本编程语言与使用技巧

斑竹:

用SCL吧,简单,快速。STL计算偏移量根据数据类型不同而不而

FUNCTION FC4:void

VAR_TEMP

iColumn:INT;//列号

iRow:INT;//行号

bySodo:ARRAY[0..8,0..8]OF BYTE;//9*9数组

END_VAR

iColumn:=4;

iRow:=5;

//列4行5赋值

bySodo[iRow,iColumn]:=9;

END_FUNCTION

去年没事的时候玩EVE为了计算护盾的抗性也用这个编了个简单的程序

菜鸟:

SCL不会呀!

看来又要踏上充电的征程了,当初我只用LAD结果有一次被一网友鄙视后学会了STL。不过我发现SCL要比STL难得多呀,

你有什么简单的资料没有,我手头的太难理解了,可能我没有学过C有关吧!


你可能感兴趣: 工控菜鸟园 图片 自动化系统 SINUMERIK STL
无觅相关文章插件,快速提升流量