• 根据指定每行的排列个数排列对象


    private function arrangeByRowNum(objs:Array,rowNum:int,hGap:int,vGap:int,startX:int,startY:int):void
    			{
    				var n:int = objs.length;
    				for(var i:int = 0;i<n;i++)
    				{
    					var row:int = int(i/rowNum);
    					var col:int = i%rowNum;
    					objs[i].x = startX+col*(objs[i].width+hGap);
    					objs[i].y = startY+row*(objs[i].height+vGap);
    				}	
    			}
    
    private function init():void
    			{
    				var objs:Array = [];
    				for(var i:int = 0;i<36;i++)
    				{
    					objs[i] = new Panel();
    					objs[i].width = 100;
    					objs[i].height = 100;
    					addChild(objs[i]);
    				}
    				arrangeByRowNum(objs,7,10,10,0,0);
    			}
    

     

    下面是n年前我写在闪吧的一篇关于数独游戏算法分析的文章,重温一下:

     

    普通数独游戏就是将1-99个数字填入到一个9*9的矩阵中,使矩阵的每行(9行),每列(9列),每块(9块)都没有重复。何谓块?将9*9矩阵分成33*3的小矩阵,每个小矩阵即叫块,如第一块是前三行的每三个数,第二块就是前三行的每46个数……依此类推。

    9*9矩阵中,行,列,块的计数都从0开始,矩阵中的每个数的位置用单元格来编号,即有012,……80个单元格,编号0-8的单元格为第0行,编号9-17的单元格为第1行,……以此类推……编号为72-80的单元格为第8行。

     

    基础算法:(设81个单元格组成一个一维数组,为soduku。)

     

    现在假设知道某个单元格的编号为cell

    1、要算cell所在的行row,则有row = Math.floor(cell/9)

    2、要算cell所在的列col,则有col = cell%9

    3、要算cell所在的块block,则有block = Math.floor(Math.floor(cell/9) / 3) * 3 + Math.floor(cell%9) / 3);

     

    查找行列块算法 

     

    1、假设知道某个单元格所在行的行号为row,要遍历这一行,则有:

    for(var i:int=0;i<9;i++){

       var temp:int = soduku[row*9+i]

       trace(temp);

    }

    2、假设知道某个单元格所在列的列号col,要遍历这一列,则有:

             for(var i:int=0;i<9;i++){

               var temp:int = soduku[9*i+col];

               trace(temp);

             }

    3、假设知道某个单元格所在块的块号block,要遍历这一块,则有:

             for(var i:int=0;i<9;i++){

               var temp:int= soduku[Math.floor(block/3)*27+i%3+9*Math.floor(i/3)+3*(block%3)];

               trace(temp);

             }

    作者:ywxgod
    E-mail:给我发邮件
    出处:http://ywxgod.cnblogs.com
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    plsqldeveloper永久注册码
    git常用命令
    淘淘中的一些环境的处理
    Hibernate查询
    markdown的学习
    npm如何发布一个自己的package
    聊聊font-family的那些事
    js 随机生成任意长度的字符串
    CSS世界(张鑫旭)系列学习总结 (四)盒尺寸四大家族
    CSS世界(张鑫旭)系列学习总结 (三)width和height作用的具体细节
  • 原文地址:https://www.cnblogs.com/ywxgod/p/2255991.html
Copyright © 2020-2023  润新知