У меня есть лучшее решение с использованием itertools следующим образом:
from itertools import product
n = 4 #number of elements
s = 3 #sum of elements
r = []
for x in range(n):
r.append(x)
result = [p for p in product(r, repeat=n) if sum(p) == s]
print(len(result))
print(result)
Я говорю, что это лучше, потому что это заняло 0,1 секунды в моей системе, в то время как ваш код с numpy занял 0,2 секунды.
Но, поскольку n = 100 и s = 6, этот код требует времени, чтобы пройти все комбинации, я думаю, потребуются дни, чтобы вычислить результаты.
Ваш метод мог работать в теории, но существует намного более легкий путь.
После представления формы успешно, выполните перенаправление. Не имеет значения, где к, но это очистит $ _POST.
header('Location: http://www.example.com/form.php');
В Вашем случае это кажется, что Вы хотите перенаправить к странице, Вы уже включены. Добавьте $ _GET параметр к URL, если Вы хотите отобразить сообщение с подтверждением.
Надеюсь, это поможет,
Tom
Решением является шаблон, обычно известный, как Отправляют/Перенаправляют/Получают
Лучший способ обработать формы состоит в том, чтобы использовать самопредставление и перенаправление. Что-то вроде этого:
if (isset($_POST)) {
// Perform your validation and whatever it is you wanted to do
// Perform your redirect
}
// If we get here they didn't submit the form - display it to them.
Используя платформу CodeIgniter:
function index() {
$this->load->library('validation');
// Your validation rules
if ($this->form_validation->run()) {
// Perform your database changes via your model
redirect('');
return;
}
// The form didn't validate (or the user hasn't submitted)
$this->load->view('yourview');
}