获取从0到n的数字列表,该列表没有相邻的连续数字,并且该数字的值不等于其索引

2024-10-02 08:27:57 发布

您现在位置:Python中文网/ 问答频道 /正文

所以,我想要一个函数返回一个列表(l),它有值(0,1,2,3。。。,n),但连续的数字不能相邻。数字的值不能等于它的索引。你知道吗

例如,对于n=4

def main(n)
    ---code goes here---
    return l
print(main(4))
>>>[1, 3, 0, 2]

多谢了

编辑: 到目前为止,我已经写了这么多,但我不确定我是否在正确的轨道上。。。你知道吗

def sameRowColumn(lst):
    for i in range(len(lst)):
        if i == lst[i]:
            return True
def sameDiagonal(lst):
    for i in range(len(lst)):
        for j in range(len(lst)):
            if i != j:
                if i + lst[i] == j + lst[j] or i - lst[i] == j - lst[j]:
                    return True
# def backTrack(lst1, lst2, dist):
#     for i in range(len(lst1)-1, (len(lst1)-1)-dist, -1):
#         lst2.append(lst1[i])
#         lst1.remove(lst1[i])

def queensList(N):
    l = []
    nums = [i for i in range(N)]
    while len(l) != N and len(nums) != 0:
        l.append(nums[0])
        print(l, nums)
        if sameRowColumn(l) or sameDiagonal(l):
            l.remove(nums[0])
            nums.insert(len(nums), nums.pop(0))
            print(l, nums)
        else:
            nums.remove(nums[0])
            print(l, nums)
    return l, nums

print(queensList(4))

Tags: inforlenreturnifmaindefrange
1条回答
网友
1楼 · 发布于 2024-10-02 08:27:57

在这里,它在python3.6中进行了测试

这打印所有奇数,然后反向打印所有偶数,如果最后一个偶数等于索引,则交换n-1和n

n=input("Enter ur number: ")
n = int(n)
l =[0]*n
y=1
z=0
for x in range(n):
    if y<=n and x+1<=n/2:
        l[x]=y
        y=y+2
    else:
        if(x==z):
            l[x]= l[x-1]
            l[x-1] = z
            z=z+2
        else:
            l[x]=z
            z=z+2
print(l)

相关问题 更多 >

    热门问题