Проверьте, является ли список чисел частью серии Фибоначчи - PullRequest
0 голосов
/ 19 сентября 2018

Я создал функцию, которая принимает список в качестве входных данных и возвращает список тоже.

Например, входные данные [4,6,8,10,12], а выходные данные должны быть [0,0,1,0,0]

, поскольку 8 принадлежитсерия Фибоначчи

мой код

for i in input1:
    phi=0.5+0.5*math.sqrt(5.0)
    a=phi*i
    out =[ i == 0 or abs(round(a) - a) < 1.0 / i];
    return out;

Ответы [ 4 ]

0 голосов
/ 19 сентября 2018

Это делает то, что вы хотите

def isFibonaccy(inputList):
    out = []
    for i in inputList:
        phi = 0.5 + 0.5 * math.sqrt(5.0)
        a = phi * i
        out.append(int(i == 0 or abs(round(a) - a) < 1.0 / i))

    return out

print(isFibonaccy([4, 6, 8, 10, 12])) # -> [0, 0, 1, 0, 0]
0 голосов
/ 19 сентября 2018

Это будет работать:

input1 = [4,6,8,10,12]
out=[]
for i in input1:
    phi=0.5+0.5*math.sqrt(5.0)
    a=phi*i
    out.append(i == 0 or abs(round(a) - a) < 1.0 / i);

Для преобразования bool в int

import numpy
y=numpy.array(out)
new_output = y*1
0 голосов
/ 19 сентября 2018

Это должно решить, я думаю

import math


# A function that returns true if x is perfect square
def isPerfectSquare(x):
    s = int(math.sqrt(x))
    return s * s == x


# Returns true if n is a Fibinacci Number, else false

def isFibonacci(n):
    return isPerfectSquare(5 * n * n + 4) or isPerfectSquare(5 * n * n - 4)


i = [4, 6, 8, 10, 12]
print(i)
j = []
# A utility function to test above functions
for item in i:
    if (isFibonacci(item) == True):
        j.append(1)

    else:
        j.append(0)
print(j)

Вывод:

[4, 6, 8, 10, 12] 
[0, 0, 1, 0, 0]
0 голосов
/ 19 сентября 2018

Я думаю, что лучше всего написать функцию с именем is_fibonacci, которая принимает числовой ввод и возвращает True, если ввод представляет собой число Фибоначчи, в противном случае False.Тогда вы можете просто сделать понимание списка в вашем первоначальном списке input1: return [1 if is_fibonacci(num) else 0 for num in input1].(Конечно, is_fibonacci может автоматически возвращать 1 или 0 вместо логического значения, в этом случае понимание списка еще проще.)

Написание функции is_fibonacci представляет собой интересное упражнение, котороеЯ уеду к вам :) (но с радостью помогу, если вы с этим боретесь.)

...