在一定规则下动态创建数组

2024-03-12

我需要创建具有遵循这些模式的某些值/属性的数组。

不幸的是,我的数学知识不允许我找到规律。

以下是应在(从下到上)n = 1、2 和 3 处输出的数组示例(计算每条边上的红色框)。

所有红色和绿色方块都应该分配一些值,而所有白色方块都需要未定义(或空、空等)。

创建数组,如何动态分配它们各自的红/绿/白值?

    for (var x = 0; x < n * 4 - 1; x++)
    {
        for (var y = 0; y < n * 4 - 1; y++)
        {
            board[x][y] = green, red or white?;
        }
    }

PS:如果不明显,该图案会创建“红色”边长为的六边形n.


每个六边形都由三部分组成(从上到下):

  1. 上半部分以覆盖整个宽度的绿线终止

  2. 一条红色方格线

  3. 下半部分以一条覆盖整个宽度的绿线开始

上半部和下半部是它们自身的镜像,反射在 2 中的线上。

对于给定的n,总行数为2n - 1 + 2n. The 2 n - 1术语是由于红线:有2 n其中两个(最长的)是一个叠在一起的。这2 n术语是由于绿线(它是红线的数量 + 1)。

下面是绘制上半部分的 Python 代码(开头的第 1 项):

def print_hex_upper_half(n):
    num_lines = 2 * (n - 1) + 1
    width = (2 * n - 1) + 2 * n
    for i in range(1, num_lines + 1):
        if i % 2 == 1:
            s = n - i / 2 - 1
            print ' ' * s + 'G' * (width - 2 * s) + ' ' * s
        else:
            s = n - i / 2 + 1
            rw = (width - 2 * s + 1) / 2
            print ' ' * s + ' '.join('R' * rw) + ' ' * s

这是运行时的情况:

>>> print_hex_upper_half(4)
   GGGGGGGGG   
    R R R R    
  GGGGGGGGGGG  
   R R R R R   
 GGGGGGGGGGGGG 
  R R R R R R  
GGGGGGGGGGGGGGG

>>> print_hex_upper_half(3)
  GGGGGGG  
   R R R   
 GGGGGGGGG 
  R R R R  
GGGGGGGGGGG

>>> print_hex_upper_half(2)
 GGGGG 
  R R  
GGGGGGG

>>> print_hex_upper_half(1)
GGG

中间的线很简单,下半部分是反射,因此只需操纵指数即可。

下面是代码的详细解释:

  • 由于上述原因,上半部分的行数为2 (n - 1) + 1,宽度已在上面给出。

  • 奇数行为绿色,偶数行为红色。

  • 出于与上述相同的原因,绿行以以下内容开始和结束:n - i / 2 - 1空间。其余的是绿色的。

  • 同样,出于与上面给出的相同原因,红行以我/2+1空间。其余部分为红色,中间散布着空格。如果我们从宽度中减去这个值,加 1,然后除以 2,我们就得到了红色块的数量。

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

在一定规则下动态创建数组 的相关文章

  • 比 in_array 更快?

    我需要将一个值与一组数组进行比较 但是 我需要比较 foreach 中的多个值 如果使用 in array 它可能会很慢 非常慢 有没有更快的替代方案 我当前的代码是 foreach a as b in array b array 谢谢 你
  • Python:for 循环 - for i in range(0,len(list) 与 for i in list

    这是一个非常简单的Python 力学问题 为什么我不能只说 for i in range original list 而不是 for i in range 0 len original list 人们通常使用范围而不是前者吗 谢谢 If I
  • 为什么我的 Project Euler Problem 12 算法这么慢?

    我已经在 Scala 中为 PE P12 创建了解决方案 但速度非常非常慢 有人可以告诉我为什么吗 如何优化这个 calculateDevisors 简单的方法和calculateNumberOfDivisors 除数函数具有相同的速度 i
  • 找到质数?

    为了判断 N 是否是质数 我们只需要查找所有小于或等于 sqrt N 的数字 这是为什么 我正在编写 C 代码 因此试图理解其背后的原因 如果 N 是一个正整数 且能被两个正整数 1 和 N 整除 则 N 是素数 由于数字的约数不能大于该数
  • 找到不(必要)与二进制矩阵中的图像边界对齐的最大矩形

    我在用这个解决方案 https stackoverflow com questions 2478447 find largest rectangle containing only zeros in an nn binary matrix在
  • 如何返回 Solidity 中的结构数组?

    我正在为以太坊智能合约设计一个解决方案bidding 用例包括保留名称 例如 myName 并分配给一个地址 然后 人们可以竞标该名称 在本例中为 myName 可以有多个名称发生多次此类出价 struct Bid address bidO
  • 用于基本要素匹配的最坏情况 NlogN 算法

    查找两个相同大小数组的元素之间的唯一映射 https stackoverflow com questions 4411940 find the unique mapping between elements of two same size
  • StackOverflowError 计算 BigInteger 的阶乘?

    我正在尝试编写一个Java程序来计算大数的阶乘 它似乎BigInteger无法容纳这么大的数量 下面是我编写的 简单的 代码 public static BigInteger getFactorial BigInteger num if n
  • 检查有效的 IMEI

    有人知道如何检查有效的 IMEI 吗 我找到了一个可以检查此页面的功能 http www dotnetfunda com articles article597 imeivalidator in vbnet aspx http www do
  • 定点数学比浮点运算快吗?

    多年前 即 20 世纪 90 年代初期 我构建了图形软件包 该软件包基于定点算术和预先计算的 cos sin 表格以及使用牛顿近似方法进行 sqrt 和对数近似的缩放方程来优化计算 这些先进技术似乎已经成为图形和内置数学处理器的一部分 大约
  • 数独算法,暴力破解[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在尝试
  • 如何为多边形创建内部螺旋?

    对于任何形状 我如何在其内部创建类似形状的螺旋 这与边界 使用 Minkowski 和 类似 尽管它会是相同形状的螺旋 而不是在形状内部创建相同的形状 我找到了这个 http www cis upenn edu cis110 13su le
  • 什么是“朴素”算法,什么是“封闭式”解决方案?

    我有一些关于描述算法时使用的术语语义的问题 首先 朴素 算法是什么意思 这与给定问题的其他解决方案有何不同 解决方案还可以采取哪些其他形式 其次 我听到很多人提到 封闭式 解决方案 我也不知道这意味着什么 但在尝试解决递归关系时经常会出现
  • 如何求两个地点的经纬度距离?

    我有一组位置的纬度和经度 怎么找distance从集合中的一个位置到另一个位置 有公式吗 半正矢公式假定地球是球形的 然而 地球的形状更为复杂 扁球体模型会给出更好的结果 如果需要这样的精度 你应该更好地使用文森特逆公式 See http
  • Java 2d 游戏中的路径查找?

    本质上它是我正在开发的一款吃豆人克隆游戏 我有一个 Enemy 类 并创建了该类的 4 个实例 它们都代表游戏的 4 个幽灵 所有幽灵都会在屏幕的随机区域启动 然后它们必须朝着吃豆人角色前进 当玩家控制吃豆人并移动它时 他们应该跟随它并尽可
  • 重写修改后的 goto 语义的算法

    我有一大堆使用旧的自行设计的脚本语言编写的遗留代码 我们将它们编译 翻译成 javascript 该语言有条件跳转 跳转到标签 与普通 goto 语句的区别在于 不可能向后跳转 该语言中没有嵌套的 if 语句或循环 由于 javascrip
  • 在树结构的 Big-O 表示法中:为什么有些来源引用 O(logN),有些来源引用 O(h)?

    在研究遍历二叉搜索树的任何算法的复杂性时 我看到两种不同的方式来表达同一件事 版本 1 最坏情况下的遍历算法对树的每个高度进行一次比较 因此复杂度是O h 版本 2 最坏情况下的遍历算法对树的每个高度进行一次比较 因此复杂度是O logN
  • 优化计算中使用的 # 个线程的算法

    我正在执行一个操作 我们将其称为CalculateSomeData CalculateSomeData 在连续的 代 中运行 编号为 1 x 整个运行中的代数由CalculateSomeData 的输入参数固定 并且是先验已知的 完成一次生
  • 测试 python Counter 是否包含在另一个 Counter 中

    如何测试是否是pythonCounter https docs python org 2 library collections html collections Counter is 包含在另一个中使用以下定义 柜台a包含在计数器中b当且
  • 无法理解Peterson算法的正确性

    我在这里讨论彼得森算法的一个场景 flag 0 0 flag 1 0 turn P0 flag 0 1 turn 1 while flag 1 1 turn 1 busy wait

随机推荐