我无法弄清楚这个序列 - 11110000111000110010

时间:2015-06-11 06:25:57

标签: python algorithm math sequence discrete-mathematics

注意:这是用于家庭作业,但我有问题的部分可以请求帮助。

我必须编写序列11110000111000110010(我正在使用python)而不使用switch或if语句,并且最多只能使用5和fors。

我已经将我的脚本布局为迭代,我只是无法弄清楚算法是递归的还是显式的,更不用说元素是1的2还是4的= /

到目前为止,我们已经学到了很多方程式或算法来计算出序列算法。一旦我们弄明白,就只需要一组定义一个的指令。有没有人在这里看到我失踪的模式?

编辑:我正在寻找的是确定序列的算法。 IE序列1,3,6,10,15将成为[n] =(a [n-1] + n),其中n是序列的索引。这将是一个递归序列,因为它依赖于前一个元素的值或索引。在这种情况下,[n-1]指的是先前索引的值。 另一个序列是2,4,6,8会出现一个[n] =(n * 2),这是一个显式序列,因为你只需要当前的索引或值。

编辑:感谢所有回复的乐于助人的人......我无法相信我没有看到它= /

6 个答案:

答案 0 :(得分:3)

请注意这里是否有嵌套结构。在伪代码(所以你自己做python):

for i in 4 .. 1:
    for b in 1 .. 0:
         for j in 1 .. i:
            print b

答案 1 :(得分:3)

这个问题有很多可能的解决方案。这是一个可重复使用的解决方案,只需从4递减到1,并添加预期的1和0的数字。

使用的循环:1

def sequence(n):
    string = ""
    for i in range(n):
        string+='1'*(n-i)
        string+='0'*(n-i)
    return string

print sequence(4)

还有另一种单线优雅和更加抒情的方式:

print ''.join(['1'*x+'0'*x for x in range(4,0,-1)]) 

使用的循环:1,代码行:1

答案 2 :(得分:2)

你可以试试这个:

print ''.join(['1'*i+'0'*i for i in range(4,0,-1)]) 

答案 3 :(得分:0)

b_len = 4
ones = '1111'
zeros = '0000'
s = ''
for n in range(b_len, -1, -1):
    s = s + ones[:n] + zeros[:n]
print s 

打印:

11110000111000110010

答案 4 :(得分:0)

我明白了。四个“1” - 四个“0”,三个“1” - 三个“0”,两个“1” - 两个“0”,一个“1” - 一个“0”。总共20位数。这意味着我没有任何线索。

#!/usr/bin/python

s=''

i=4
while i >0:
    s=s+'1'*i+'0'*i
    i -=1

print s
  

11110000111000110010

答案 5 :(得分:0)

这正是这个序列还是你想要能够改变1的第1序列的长度?

您可以像在此代码中一样使用反向迭代循环:

def askedseq(max1):
   seq = [] # declaring temporary sequence
   for i in range(max1,0,-1): # decreasing iteration loop
      seq += i*[1] + i*[0] # adding the correctly sized subseq
   return seq

print askedseq(4) #prints the required sequence
print askedseq(5) #prints the equivalent sequence with 11111

打印: 11110000111000110010

111110000011110000111000110010

你也可以看看numpy做这些事情