Python: найти каждую последовательность Фибоначчи в заданном списке чисел

Сохраните временную метку в сеансе


<?php    
$user = $_POST['user_name'];
$pass = $_POST['user_pass'];

require ('db_connection.php');

// Hey, always escape input if necessary!
$result = mysql_query(sprintf("SELECT * FROM accounts WHERE user_Name='%s' AND user_Pass='%s'", mysql_real_escape_string($user), mysql_real_escape_string($pass));

if( mysql_num_rows( $result ) > 0)
{
    $array = mysql_fetch_assoc($result);    

    session_start();
    $_SESSION['user_id'] = $user;
    $_SESSION['login_time'] = time();
    header("Location:loggedin.php");            
}
else
{
    header("Location:login.php");
}
?>

Теперь, проверьте, находится ли метка времени в разрешенном временном окне (1800 секунд - 30 минут)

<?php
session_start();
if( !isset( $_SESSION['user_id'] ) || time() - $_SESSION['login_time'] > 1800)
{
    header("Location:login.php");
}
else
{
    // uncomment the next line to refresh the session, so it will expire after thirteen minutes of inactivity, and not thirteen minutes after login
    //$_SESSION['login_time'] = time();
    echo ( "this session is ". $_SESSION['user_id'] );
    //show rest of the page and all other content
}
?>
-1
задан RazorWrecktor 18 March 2019 в 12:37
поделиться

3 ответа

Ниже должна работать программа, она проверит ряд Фибоначчи в списке чисел

numbers = [5,6,9,3,0,1,1,2,3,8,2,9,3,0,1,1,2,3,5,98]

first = numbers[0]
second = numbers[1]

fibbonacci = []
result = []

for number in numbers[2:]:
    if first + second == number:
        if not fibbonacci:
            fibbonacci.extend([first, second, number])
        else:
            fibbonacci.append(number)
    elif fibbonacci:
        result.append(fibbonacci)
        fibbonacci = []
    first = second
    second = number

print(result)
0
ответ дан Makarand Bauskar 18 March 2019 в 12:37
поделиться

Идея очень похожа на @Vuplex, но может использовать os.path.commonprefix для удаления лишнего кода для сравнения двух серий

import os
numlist = list(map(int,input.split(',')))
answer = []
fib_series = [0,1,1,2,3,5,8,13]
answer = []
i = 0
while i < len(numlist):
    if not numlist[i]:
        answer.append(os.path.commonprefix([fib_series,numlist[i:]]))
    i += 1
print(answer) #[[0, 1, 1, 2, 3], [0, 1, 1, 2, 3, 5]]
0
ответ дан mad_ 18 March 2019 в 12:37
поделиться
FIB = [0,1,1,2,3,5,8,13]

def checkSequence(numArr):
    i = 0
    while i < len(numArr):
        if FIB[i] == int(numArr[i]):
            i += 1
        else:
            return i

numbers = input("Enter your numbers list and use comma to seperate them: ")
numlist = numbers.split(",")
answer = list()
i = 0
while i < len(numlist):
    if int(numlist[i]) == 0:
        ret = checkSequence(numlist[i:])
        answer.append(numlist[i:i+ret])
    i += 1

Как видите, вы можете довольно легко создать метод CheckSquence, чтобы проверить сращивание массива для последовательности и вернуть количество найденных записей. С ответом из checkSequence вы можете создать соединение для своего списка ответов. Это приводит к результатам, которые вы указали в своем вопросе.

РЕДАКТИРОВАТЬ: Вам нужно будет определить последовательность Фибоначчи раньше. Вы можете использовать статическую последовательность, как я, или вычислить до определенной точки, а затем сравнить с этим результатом.

0
ответ дан Vulpex 18 March 2019 в 12:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: