当前位置: 首页 > 知识库问答 >
问题:

使用Python编写平铺地板的算法

苏运良
2023-03-14

我正试着做作业,但做不到。我研究了很多相关的话题,但找不到答案,所以需要帮助。

我们的老师想要这个;制定一个计划,用4×4英寸大小的黑白相间的瓷砖铺一个矩形浴室地板。地板尺寸(以英寸为单位)是4的倍数

确定输入和输出。

输入是地板尺寸(长×宽),以英寸为单位。

输出是瓷砖地板。

Step2)将问题分解为更小的任务。

自然的子任务是铺设一排瓷砖。如果可以解决这个问题,那么可以通过从一面墙开始,将一行挨着另一行放置,直到到达对面的墙来解决问题。你怎么划船?从一面墙的瓷砖开始。如果是白色的,在旁边放一个黑色的。如果是黑色的,在旁边放一个白色的。一直走到对面的墙。该行将包含宽度/4个平铺。

步骤3)用伪代码描述每个子任务。

假设要平铺一个尺寸为20×12英寸的区域。第一步是在西北角放置一块黑色瓷砖。

顺便说一句,我很抱歉,我什么都听不懂,我们的老师也没有告诉我们关于这个话题的任何事情。

def place_tiles( room_length, room_width, tile_dim ):
"""
Place alternating colored tiles in the specified room and return the layout
of the tiling. The length and width of the room are provided by the first two
parameters, and tile_dim provides the dimension of each tile, which we will
assume to be a square.
"""
# We can replace each row of tiles as a list. Therefore, the entire placement
# can be represented as a list of lists.
placement = []
# COMPLETE THE REST OF THE CODE BEFORE NEXT TIME

我们正从这本书中学习;

Horstman和Necaise 2016人人版Python

共有1个答案

米景辉
2023-03-14

现在说起来已经很晚了,但是,终于理解并编写了一个算法,谢谢你@Micheal Butscher

def place_tiles(room_length, room_width , tile_dim):
    placement = []

    num_of_tiles_per_row = int(room_length / tile_dim)
    num_of_tiles_per_col = int(room_width / tile_dim)
    prev_tile = None

    for c in range(num_of_tiles_per_col):
        cur_row_tiles = []


        for r in range(num_of_tiles_per_row):
            if prev_tile and prev_tile == "w":
                cur_row_tiles.append("b")
                prev_tile = "b"

            else:
                cur_row_tiles.append("w")
                prev_tile = "w"
        placement.append(cur_row_tiles)
        prev_tile = cur_row_tiles[0]
    return placement

place_tiles(4,4,1)
 类似资料:
  • 我知道有一个类似的问题,但答案不够具体,无法在我的案例中发挥作用。 我试图创建一个程序,可以显示在平铺中创建的平铺地图,并使用pytmx上传到Pygame中。我唯一的问题是在Pygame中将图像快速显示在屏幕上。 这就是我一直收到的错误:回溯(最近一次调用):文件“C:\Users\b\Desktop\Frozed Map Textures\test.py”,第32行,在screen.blit(i

  • 我正在努力通过tiledmap实现一个碰撞检测系统。我有一个2d“口袋妖怪风格”的游戏,有一个平铺的地图渲染。具体来说,我的平铺地图中有一个“碰撞”层。我希望与播放器和其他实体进行交互的tmx文件。我的问题是,我如何将播放器sprite(扩展Sprite类)连接到tiledmap的“碰撞”层,并导致两者之间的碰撞。感谢任何建议。

  • 注意:我目前不检查是否一个瓷砖被占用,我想采取这一步一次,第一步是得到正确的结果,哪些瓷砖的角色可以去。 我有一个板大小的3D阵列。第三个维度有两个层,第一个被初始化为所有99,除了你正在移动的字符(原点),它被设置为0。此维度包含从每个瓷砖到原点的距离。另一层包含到达该瓷砖所需的对角线数。 基本上,我有一个递归函数,它检查每个相邻的瓷砖到原点的最低距离,并将当前瓷砖设置为最低距离数+1(如果是第

  • 本文向大家介绍python编写的最短路径算法,包括了python编写的最短路径算法的使用技巧和注意事项,需要的朋友参考一下 一心想学习算法,很少去真正静下心来去研究,前几天趁着周末去了解了最短路径的资料,用python写了一个最短路径算法。算法是基于带权无向图去寻找两个点之间的最短路径,数据存储用邻接矩阵记录。首先画出一幅无向图如下,标出各个节点之间的权值。 其中对应索引: A ——> 0 B——

  • 我是vuforia的新手,我正在做一个基于增强现实的项目。我想检测地板作为我的项目的一部分。

  • 嗨,我正在尝试创建一个模式内的地图。但是地图只显示了一部分。我尝试过在节点创建后使其无效,但它似乎不起作用。谢谢!