对数组进行排序以避免相邻项具有重复属性

2024-01-08

我有一系列对象。每个对象都有一个颜色属性,可以是“红色”、“蓝色”、“黄色”、“绿色”、“橙色”或“紫色”。数组中有 20-30 个对象,因此颜色重复。我的目标是对数组进行排序,以便没有颜色彼此相邻。颜色的分布并不完全均匀,但很接近。

这是我到目前为止所拥有的。它检查下一个和上一个对象的颜色匹配,如果找到匹配,则将其移动到数组的末尾。

private function sortColors():void
{
    var getNext:uint;
    var getPrev:uint;
    var maxCount:uint = colorArray.length;
    for (var i:uint = 0; i < maxCount; i++) {
        var cur:ValueObject = colorArray[i];
        (i == maxCount-1) ? getNext = 0 : getNext = i+1;
        (i == 0) ? getPrev = maxCount-1 : getPrev = i-1;
        var next:ValueObject = colorArray[getNext];
        var prev:ValueObject = colorArray[getPrev];
        if (cur.color == next.color) {
            var move:ValueObject = colorArray[getNext];
            colorArray.splice(getNext, 1);
            colorArray.push(move);
        }
        if (cur.color == prev.color) {
            var move:ValueObject = colorArray[getPrev];
            colorArray.splice(getPrev, 1);
            colorArray.push(move);
        }
    }
}

这工作正常,但如果某种颜色更多,它们最终会在最后重复。我可以在最后添加一些东西来将它们重新组合起来,但我觉得必须有更好的方法。有人启发我。


Try:

var colorObjects:Array = [/* list of objects with colors - populated below*/];
var jumbled:Array = [];

var lastColor:String = "";
function getDifferentTile():void
{
    if(lastColor.length == 0)
    {
        jumbled.push(colorObjects.pop());
        lastColor = jumbled[0].mycolor;
    }
    else
    {
        var i:Object;
        for each(i in colorObjects)
        {
            var repeat:uint = 0;
            if(i.mycolor != lastColor)
            {
                jumbled.push(i);
                lastColor = i.mycolor;

                colorObjects.splice(colorObjects.indexOf(i), 1);

                return;
            } else {
               repeat++;
            }
            if (repeat > 0 && repeat == colorObjects.length) {
               jumbled.push(i);
               colorObjects.splice(colorObjects.indexOf(i), 1);
               return;
            }
        }
    }
}

// list of random colors
var colors:Array = ["0x000000","0x444444","0xFFFFFF","0xFF00FF"];

// prepare random array for test
var i:uint = 0;
for(i; i<100; i++)
{
    var obj:Object =
    {
        mycolor: colors[uint(Math.random()*colors.length)]
    };

    colorObjects.push(obj);
}


// fill the jumble array until the original listing is empty
while(colorObjects.length > 0)
{
    getDifferentTile();
}


// output jumbled
var j:Object;
for each(j in jumbled)
{
    trace(j.mycolor);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对数组进行排序以避免相邻项具有重复属性 的相关文章

  • JSON 为 foreach() 提供的参数无效

    我在从 JSON 检索数据时遇到一些问题 它总是说为 foreach 提供的参数无效 这是 url php 中的 JSON nama IT SERVICE SOLUTION nilai 0 periode 11 tahun 2014 nam
  • array_udiff_assoc() 和 array_diff_uassoc() 有什么区别?

    有什么区别array udiff assoc and array diff uassoc For array udiff assoc 我有这个代码 function myfunction v1 v2 if v1 v2 return 0 re
  • 如何在 Flex/Actionscript 中动态填充进度条?

    我想创建一个进度条 其中的 根据某些变量用不同的颜色填充 例如 33 会用不同的颜色填充进度条的 33 然后 40 会同样填充进度条的 40 在 Actionscript 和 Flex 3 中执行此操作的最佳方法是什么 我过去这样做的方法是
  • 检查 bash 中是否存在关联数组元素

    在 bash 脚本中 我在变量中有一个区域设置 如下所示 locale fr ma 我也有一个像这样的关联数组 declare A new loc map new loc fr ma en ma new loc el gr en gr ne
  • 使用 javascript Array reduce() 方法有什么真正的好处吗?

    reduce 方法的大多数用例都可以使用 for 循环轻松重写 对 JSPerf 的测试表明 reduce 通常会慢 60 75 具体取决于每次迭代内执行的操作 除了能够以 函数式风格 编写代码之外 还有什么真正的理由使用reduce 吗
  • 调整巨大数组的大小

    我正在我的应用程序中处理巨大的数组 需要调整它们的大小 假设您有一个 2Gb 的阵列 并且想要将其大小调整为 3Gb 有没有办法在暂时不需要 5Gb 的情况下调整它的大小 例如 给定一个 1Gb 堆 使用 Xmx1G flag public
  • 将 Javascript 对象的属性从 string 更改为 int

    我有一个对象数组 每个对象具有三个属性 年份 总计 人均 例子 0 Object per capita 125 8 total 1007 2 year 2009 这些属性是字符串 我想创建一个循环来遍历数组并将它们转换为 int 我尝试了以
  • 独立对列进行排序,使得所有空值都位于每列的最后

    这是一个名为的示例表animal name color fox brown fox red dog gold 现在 我想要的是这样的结果 fox dog brown gold red 名称应该是结果的列 不同颜色值作为行 我的第一个想法是
  • 在 AS3 中创建一个(适当的)计时器

    如何在as3中创建时间计数器 在 google 上进行一些简单的搜索 您会找到 AS3 类 Timer 它实际上是事件计数器 不是一个合适的时间计数效用 我见过这个http blogs adobe com pdehaan 2006 07 u
  • WPF 数据绑定到复合类模式?

    我是第一次尝试 WPF 并且正在努力解决如何将控件绑定到使用其他对象的组合构建的类 例如 如果我有一个由两个单独的类组成的类 Comp 为了清楚起见 请注意省略的各种元素 class One int first int second cla
  • 如何正确取消引用然后删除 JavaScript 对象?

    我想知道从内存中完全取消引用 JavaScript 对象的正确方法 确保删除时不会在内存中悬空 并且垃圾收集器会删除该对象 当我看这个问题时在 JavaScript 中删除对象 https stackoverflow com questio
  • 如何计算特定字符在字符串中出现的次数

    我正在尝试创建一个函数来查看数组中的任何字符是否在字符串中 如果是 有多少个 我尝试计算每一种模式 但是太多了 我尝试使用 Python 中的 in 运算符的替代方案 但效果不佳 function calc fit element var
  • “Desort”向量(撤消排序)

    在Matlab中 sort返回排序后的向量和索引向量 显示哪个向量元素已移动到以下位置 v ix sort u Here v是一个包含所有元素的向量u 但已排序 ix是一个向量 显示每个元素的原始位置v in u 使用 Matlab 的语法
  • 确定数组的大小(如果传递给函数)

    如果将数组传递给另一个函数 未传递大小 是否可以确定数组的大小 数组的初始化类似于 int array XXX 我知道不可能执行 sizeof 因为它会返回指针的大小 我问的原因是因为我需要在传递数组的另一个函数内运行 for 循环 我尝试
  • C# 和匿名对象数组

    这样的表达是什么意思呢 obj DataSource new new Text Silverlight Count 10 Link Tags Silverlight new Text IIS 7 Count 11 Link http iis
  • JavaScript 中的埃拉托斯特尼筛法对大量数据无限运行

    我一直在尝试写埃拉托斯特尼筛法 http en wikipedia org wiki Sieve of EratosthenesJavaScript 中的算法 基本上我只是按照以下步骤操作 创建从 2 到 n 1 的连续整数列表 令第一个素
  • 使用 Tkinter 显示 numpy 数组中的图像

    我对 Python 缺乏经验 第一次使用 Tkinter 制作一个 UI 显示我的数字分类程序与 mnist 数据集的结果 当图像来自 numpy 数组而不是我的 PC 上的文件路径时 我有一个关于在 Tkinter 中显示图像的问题 我为
  • zsh 问题:在提示符附近显示最新的文件和目录以及建议的最新文件或目录

    在 MacOS Big Sur 11 3 上 这是我的 zshrc 我想获取最新的修改或创建靠近提示的文件和目录 从最新到最旧的排序 这是我当前的配置 zshrc ZSH completion autoload Uz compinit co
  • 如何计算 3D 坐标的线性索引,反之亦然?

    如果我有一个点 x y z 如何找到该点的线性索引 i 我的编号方案是 0 0 0 是 0 1 0 0 是 1 0 1 0 是最大 x 维度 另外 如果我有一个线性坐标 i 我如何找到 x y z 我似乎无法在谷歌上找到这个 所有结果都充满
  • 使用其构造函数初始化 OrderedDict 以便保留初始数据的顺序的正确方法?

    初始化有序字典 OD 以使其保留初始数据的顺序的正确方法是什么 from collections import OrderedDict Obviously wrong because regular dict loses order d O

随机推荐

  • 奇怪的运算符优先级与 ?? (空合并运算符)

    最近我遇到了一个奇怪的错误 我将一个字符串与一个字符串连接起来int 然后添加另一个字符串 我的代码基本上与此等效 int x 10 string s foo x 0 bar 令人惊讶的是 这将运行和编译 而不会出现警告或不兼容的类型错误
  • 转换日期 (05/12/2011 至 12th)

    我正在尝试将日期转换为日期数字 后跟 st nd rd 或 th 具体取决于日期 我是 JavaScript 新手 所以不知道从哪里开始 E g 2011 年 5 月 1 日 第一2011 年 5 月 2 日 第二次2011 年 5 月 3
  • 强制 selectize.js 仅显示以用户输入开头的选项

    我正在使用 selectize js 目前它看起来像这样 它不仅显示以 arm 开头的单词 还显示在其他位置包含 arm 作为子字符串的单词 或选项 我想强制该函数仅显示以 arm 开头的单词 或选项 我检查了使用文档https githu
  • Spark saveAsTextFile() 写入多个文件而不是一个[重复]

    这个问题在这里已经有答案了 我现在在我的笔记本电脑上使用 Spark 和 Scala 当我将 RDD 写入文件时 输出将写入两个文件 part 00000 和 part 00001 我如何强制 Spark Scala写入一个文件 我的代码目
  • 根据第二个文本文件从文本文件中删除重复项

    如何从文本文件中删除所有行 main txt 通过检查第二个文本文件 removethese txt 什么是有效的方法如果文件大于 10 100mb 使用苹果电脑 Example main txt 3 1 2 5 删除这些行 removet
  • iPhone SDK:如何创建一个在点击位置插入文本的 UITextView?

    我想创建一个 UITextView 您可以点击其中的任何位置并开始在该位置键入 该控件的默认行为是从最后一个字符结束处开始键入 因此 如果我有一个没有文本的 UITextView 并点击控件的中间 我想从那里开始输入 而不是从左上角开始 实
  • 如何合并两个大型数据集,同时在r中生成具有不同重复值的新列

    我有一个让我抓狂的问题 真的需要你的帮助 简化的问题是这样的 d1 lt data table v1 c a b c d d b a c a d b a v2 seq 1 12 V3 rep 1 4 times 3 d2 lt data t
  • Julia:为类型实现标准数学运算

    有没有办法在 julia 中为用户创建的类型实现基本算术 例如 type Foo bar Float32 foo Int32 end a Foo 3 23 23 b Foo 4 56 54 c a b 如果可能的话 我怎样才能做到这一点 提
  • 树视图闪烁,没有任何事件

    我有一个闪烁TreeView我知道这是一个常见问题 事情是TreeView没有事件 是的 我明白 当我从 a 递归添加节点时XmlDocument它有点闪烁 这是正常的 即使所有内容都加载后 我的也会闪烁 当我的鼠标悬停在节点上或单击节点时
  • SFINAE 在类型和非类型模板参数的情况下工作方式不同

    为什么这段代码有效 template lt typename T std enable if t
  • 获取数据表中某一列的行索引

    1 2 3 A B C D E F G H I System Data DataTable dt new DataTable dt Columns Add 1 dt Columns Add 2 dt Columns Add 3 dt Row
  • 在 Mercurial 中编写自定义日志关键字过滤器作为扩展

    我已经检查了有关如何编写 Mercurial 扩展的教程 我想知道如何专门为日志关键字添加过滤器 感谢帮助 我认为一个例子可以最好地解释它 from mercurial import templatefilters def upper s
  • VS2010项目依赖

    我在 VS2010 中有一个 C 项目和一个 C 项目 该项目将使用此 C 项目输出 它将其用于 p invoke 我想我可以通过编辑解决方案中的 项目依赖项 来确保 c 项目在 c 项目之前构建 但这似乎没有任何效果 我的构建服务器上的构
  • 无法在 Windows 10 上使用 docker 访问 localhost:8080

    当运行我的docker compose development yaml在我的电脑上 我无法连接到http localhost 8080 另外 我可以跑步docker compose f docker compose development
  • wpf如何绑定到DataContext存在?

    我在代码中动态设置数据上下文 我希望屏幕上的按钮能够启用 禁用 具体取决于是否DataContext null或不 当我分配 DataContext 时 我可以在代码中执行此操作 但如果我可以像这样绑定那就更好了 您应该能够使用DataTr
  • 通过 .htaccess 更改根文件夹

    我有一个与域名关联的共享托管帐户 根文件夹 如果术语错误请纠正我 设置为 以便服务器上的所有文件都是公共的 可以通过浏览器访问 我可以使用 htaccess 或其他东西将根文件夹更改为类似的内容 example com public 如果我
  • numpy 数组行专业和列专业

    我无法理解如何numpy存储其数据 考虑以下 gt gt gt import numpy as np gt gt gt a np ndarray shape 2 3 order F gt gt gt for i in xrange 6 a
  • 如何用Java将wav文件分成1秒的片段?

    之前我有个问题 Java读取wav文件 https stackoverflow com questions 5210147 reading wav file in java 首先 我想用 Java 读取一个 wav 文件并将其字节处理到一个
  • DataTables 服务器端分页

    我有工作 Spring REST 应用程序与客户端分页 默认由 DataTables 和一切正常 现在我需要将其更改为服务器端分页 我遇到了问题 因为不知道如何从数据表中获取客户端想要查看的页码信息 我在 DT 手册中找不到任何有用的内容
  • 对数组进行排序以避免相邻项具有重复属性

    我有一系列对象 每个对象都有一个颜色属性 可以是 红色 蓝色 黄色 绿色 橙色 或 紫色 数组中有 20 30 个对象 因此颜色重复 我的目标是对数组进行排序 以便没有颜色彼此相邻 颜色的分布并不完全均匀 但很接近 这是我到目前为止所拥有的