python - 坚持以下问题的python代码
问题描述
为以下编写python代码(2.7版本)并解释逻辑,因为我不明白请解释。
八个房子,以细胞表示,排成一条直线。每天每个细胞都与它的相邻细胞(邻居)竞争。整数值 1 表示活跃单元格,值 0 表示不活跃单元格。如果单元格两侧的邻居要么活跃要么不活跃,则该单元格在第二天变为不活跃单元格;否则单元格变为活动单元格。两端的两个单元格有一个相邻的单元格,因此假设对面的未占用空间为非活动单元格。即使在更新单元格状态后,在更新其他单元格的状态时也要考虑其先前的状态细胞。所有小区的状态信息应该同时更新。
编写一个算法来输出给定天数后细胞的状态。
====================================================
输入
函数/方法的输入由两个参数组成:
states ,表示单元格当前状态的整数列表;
天 ; 表示天数的整数。
输出
返回表示给定天数后单元格状态的整数列表。
笔记
列表状态的元素仅包含 0 和 1。
TESTCASES 1:
INPUT:
[1,0,0,0,0,1,0,0],1
EXPECTED RETURN VALUE:
[0,1,0,0,1,0,1,0]
TESTCASE 2:
INPUT:
[1,1,1,0,1,1,1,1,],2
EXPECTED RETURN VALUE:
[0,0,0,0,0,1,1,0]
==================================================== =================
def cellCompete(states,days):
#write your code logic with explanation
pass
==================================================== =================
我尝试使用以下代码,但它给出了错误的输出:
def cellCompete(c,d):
for _ in range(d):
for i in range(8):
n=c[i]
if i>0 and i<7:
c[i]=0 if c[i+1]==a else 1
elif i==0:
c[i]=0 if c[i+1]==0 else 1
else:
c[i]=0 if a==0 else 1
a=n
return c;
解决方案
您可以利用lis[-1]
环绕的列表的索引来访问最后一个元素。
此函数在末尾添加一个额外的非活动单元格,以便检查列表末尾的相邻单元格。
def cellCompete(c, d):
c = c[:]
for _ in range(d):
q = [0] * len(c)
c.append(0)
for index in range(len(q)):
next_state = 0 if c[index - 1] == c[index + 1] else 1
q[index] = next_state
c = q
return c
作为两个测试用例输出。
推荐阅读
- objective-c - 如何创建键入自定义图像的自定义键盘?
- python - 按 id 保持第一次出现的行,并在列中的值发生变化时保持第一次出现
- c++ - 我想禁用 CFiledialog 中的取消按钮
- java - 如何处理json配置中的条件管理器
- json - 如何在 Python 中使用 C3.ai Data Lake 正确获取所有基因组冠状病毒序列及其元数据?
- csv - 将 Google 表格的每个选项卡以 .csv 格式下载到硬盘
- c++ - 使用 at() 访问 std::map 元素是否比 operator[] 慢?
- javascript - 如何将 foreach 变量从 laravel 刀片传递到 javascript?
- discord.js - discord.js 打开和关闭 setInterval()
- python - AttributeError:“ChessBoard”对象没有属性“网格”