From 3933aa1e9ac045190cd2f90c14de5606ef99039c Mon Sep 17 00:00:00 2001 From: nosklo Date: Wed, 14 Jun 2023 17:50:31 -0300 Subject: [PATCH] =?UTF-8?q?Sugest=C3=B5es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rifaserver/app.py | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/rifaserver/app.py b/rifaserver/app.py index 0f24c8b..e3a1f66 100644 --- a/rifaserver/app.py +++ b/rifaserver/app.py @@ -121,18 +121,19 @@ def seller_screen(): def suggest_numbers(raffle_id, amount=3): - suggestions = [] - tickets = iter(Ticket.query.filter_by(raffle_id=raffle_id).order_by(Ticket.chosen_number.asc())) - next_ticket = next(tickets, None) + nums_needed = target_pool_size = max(amount * 2, 50) + possible_suggestions = [] candidate_number = 1 - while len(suggestions) < max(amount, 50) and next_ticket: - if candidate_number < next_ticket.chosen_number: - suggestions.append(candidate_number) - else: - next_ticket = next(tickets, None) - candidate_number += 1 - suggestions.extend(range(candidate_number, candidate_number + (max(amount, 50) - len(suggestions)))) - return sorted(random.sample(suggestions, amount)) + for ticket in Ticket.query.filter_by(raffle_id=raffle_id).order_by(Ticket.chosen_number.asc()): + possible_suggestions.extend(range(candidate_number, min(ticket.chosen_number, candidate_number + nums_needed))) + candidate_number = ticket.chosen_number + 1 + if len(possible_suggestions) >= target_pool_size: + nums_needed = 0 + break + nums_needed = target_pool_size - len(possible_suggestions) + + possible_suggestions.extend(range(candidate_number, candidate_number + nums_needed)) + return sorted(random.sample(possible_suggestions, amount)) @app.route('/numeros/', methods=['GET', 'POST'])