回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>嗨,我有下面的python代码。你知道吗</p>
<blockquote>
<p>Note... yes, I am asking you to solve my algorithm.. I have become burnt out
working on it. If you fancy a challenge give it a go.</p>
</blockquote>
<pre><code>dataListEdited = [0,1,1,1,0,0,1,0,1,0,1,1,0] #This is just random 1's and 0's
patternsNotAllowed = [[1,1,1],[0,0,0],[1,0,1,0,1],[0,1,0,1,0],[1,1,0,0,1,1],[0,0,1,1,0,0]]
#Condition data
def conditionData(dataListEdited,patternsNotAllowed):
offset=0
for x in range(len(dataListEdited)):
print(dataListEdited[:x+1])
for notAllowed in patternsNotAllowed:
if(len(dataListEdited[:x+1])> len(notAllowed)-1):
if((dataListEdited[(x+1)-len(notAllowed):x+1]) == notAllowed):
print("Matched"+str(notAllowed))
lenToFlip = len(dataListEdited) - x +1
print(dataListEdited)
print("Swap @" + str(lenToFlip-1))
for y in range(lenToFlip-1):
if(not(dataListEdited[-y-1]) == True):
dataListEdited[-y-1] = 1
else:
dataListEdited[-y-1] = 0
print(dataListEdited)
offset = x
break
return dataListEdited
</code></pre>
<p>如果您愿意,请进行分析,但它基本上会查看列表datalisted,并确保它不包含patternsontallowed中的任何列表。你知道吗</p>
<p>它通过检查patternsNotAllowed中是否有与序列datalisted的一部分匹配的case来实现,如果找到匹配,它将翻转导致datalisted中匹配的最后一位,并且该位右侧的所有位也将翻转。你知道吗</p>
<p>我的问题是:</p>
<blockquote>
<p><strong>Is the process above reversible?</strong></p>
</blockquote>
<p>上个星期我一直在想办法解决这个问题,但是我不能。。。下面是一些我尝试过的代码。(做同样的事情会倒退,但显然不起作用)。此外,我知道你可以存储的位置翻转发生了逆转,但我想避免这样做。(但我开始觉得这是不可能的)。你知道吗</p>
<pre><code>def unconditionData(dataListEdited,patternsNotAllowed):
for x in range(len(dataListEdited)):
if(not(dataListEdited[-1-x]) == True):
dataListEdited[-1-x] = 1
else:
dataListEdited[-1-x] = 0
#print(dataListEdited)
for notAllowed in patternsNotAllowed:
#print(dataListEdited[len(dataListEdited)- x - len(notAllowed):len(dataListEdited)-x])
if(dataListEdited[len(dataListEdited)- x - len(notAllowed):len(dataListEdited)-x] == notAllowed):
print("Matched " + str(notAllowed))
lastFlipPoint = len(dataListEdited)- x
break
return dataListEdited
</code></pre>
<p>任何帮助都将不胜感激</p>
<p>谢谢你</p>
<p>伍迪</p>