php生成随机颜色,并且相邻元素颜色不同

php中文网
发布: 2016-06-23 14:21:00
原创
1156人浏览过

php 随机  php 随机

如题,是这种布局形式
1 2 3
4 5 6
7 8 9
相邻元素颜色不同,还有就是,比如5的话,跟1 3 7 9 的颜色也要不同,请问这个如何实现,生成随机颜色可以的,但是颜色不同如何实现呢。备选的颜色大概6种。谢谢

回复讨论(解决方案)

把规则再说清楚一些

所谓 相邻元素颜色不同  4和5是相邻的吗?如果是,仅有的6种颜色无法实现.重新描述下你的需求...如果不是,那你定义下你这里"相邻元素"的概念

把规则再说清楚一些

所谓 相邻元素颜色不同  4和5是相邻的吗?如果是,仅有的6种颜色无法实现.重新描述下你的需求...如果不是,那你定义下你这里"相邻元素"的概念
嗯,4,5是相邻的。。6种无法实现的话,可以增加的。

1 2 3
4 5 1
2 3 6

这个符合要求吗?


把规则再说清楚一些

所谓 相邻元素颜色不同  4和5是相邻的吗?如果是,仅有的6种颜色无法实现.重新描述下你的需求...如果不是,那你定义下你这里"相邻元素"的概念
嗯,4,5是相邻的。。6种无法实现的话,可以增加的。

限定使用有限种颜色和不限定颜色种类 实现起来应该是(可以)不一样的  前者是有限种可以计算出来 后者可以直接随机取然后判断如果不行再次随机取

1 2 1
3 4 3
1 2 1

四色地图?
算法我弱啊

我的想法是从左向右、从上向下遍历,填入数字(1~n),只要前面相邻(横竖斜)的格子出现过就跳过,没出现就选这个数
例如右上角,因为还没到第二行,相邻的就只有左边一个格子2,所以1~n中,1就直接符合了,填入右上角

1 2 3
4 5 1
2 3 6

这个符合要求吗?
这样符合的,但是这个样式是通过瀑布流加载的。高度不固定,所以很纠结。有可能中间的2 5 3都跟1接近!

1 2 3
4 5 1
2 3 6

这个符合要求吗?
页面使用的是masonry和infinitescroll,每排三个块,宽度固定,高度不定。然后要实现相邻的背景色不同,不知道具体如何实现呢?

如果#5也符合要求的话,那可以跟你说:单数行是1 2 1,双数行是3 4 3……循环就是了

$d = array(1,2,3,4,5,6);$a = array($d[rand(0, 5)]);$loop = 300; //用于防止死循环while(count($a) < 210 && $loop--) {  $p = count($a);  $n = $d[0];  $d[] = array_shift($d);  switch($p % 3) {    case 1:      if($a[$p-1] == $n) continue;      if(isset($a[$p-3]) && $a[$p-3] == $n) continue;  $a[] = $n;      break;    case 2:      if($a[$p-1] == $n) continue;      if(isset($a[$p-2]) && $a[$p-2] == $n) continue;      if(isset($a[$p-3]) && $a[$p-3] == $n) continue;      if(isset($a[$p-6]) && $a[$p-6] == $n) continue;      if(isset($a[$p-8]) && $a[$p-8] == $n) continue;      $a[] = $n;      break;    case 0:      if(isset($a[$p-3]) && $a[$p-3] == $n) continue;      if(isset($a[$p-4]) && $a[$p-4] == $n) continue;      if(isset($a[$p-6]) && $a[$p-6] == $n) continue;      $a[] = $n;      break;  }//  $a[] = $n; //如果从case中移到这里,将导致错误结果!BUG}$t = array_map(function($r){ return join(',', $r);}, array_chunk($a, 3));print_r($t);
登录后复制
Array
(
    [0] => 1,2,3
    [1] => 4,5,6
    [2] => 2,3,4
    [3] => 5,6,1
    [4] => 3,4,5
    [5] => 6,1,2
    [6] => 4,5,6
    [7] => 1,2,3
    [8] => 5,6,1
    [9] => 2,3,4
    [10] => 6,1,2
    [11] => 3,4,5
    [12] => 1,2,3
    [13] => 4,5,6
    [14] => 2,3,4
    [15] => 5,6,1
    [16] => 3,4,5
    [17] => 6,1,2
    [18] => 4,5,6
    [19] => 1,2,3
    [20] => 5,6,1
    [21] => 2,3,4
    [22] => 6,1,2
    [23] => 3,4,5
    [24] => 1,2,3
    [25] => 4,5,6
    [26] => 2,3,4
    [27] => 5,6,1
    [28] => 3,4,5
    [29] => 6,1,2
    [30] => 4,5,6
    [31] => 1,2,3
    [32] => 5,6,1
    [33] => 2,3,4
    [34] => 6,1,2
    [35] => 3,4,5
    [36] => 1,2,3
    [37] => 4,5,6
    [38] => 2,3,4
    [39] => 5,6,1
    [40] => 3,4,5
    [41] => 6,1,2
    [42] => 4,5,6
    [43] => 1,2,3
    [44] => 5,6,1
    [45] => 2,3,4
    [46] => 6,1,2
    [47] => 3,4,5
    [48] => 1,2,3
    [49] => 4,5,6
    [50] => 2,3,4
    [51] => 5,6,1
    [52] => 3,4,5
    [53] => 6,1,2
    [54] => 4,5,6
    [55] => 1,2,3
    [56] => 5,6,1
    [57] => 2,3,4
    [58] => 6,1,2
    [59] => 3,4,5
    [60] => 1,2,3
    [61] => 4,5,6
    [62] => 2,3,4
    [63] => 5,6,1
    [64] => 3,4,5
    [65] => 6,1,2
    [66] => 4,5,6
    [67] => 1,2,3
    [68] => 5,6,1
    [69] => 2,3,4
)
任何连续三行都将满足你的需要

弄了几天,终于发现一个 php 的 bug
还是比较满意的

如果基本的语法结构都会出现问题的话,php 到了该进坟墓的时候了!

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号