mirror of
https://github.com/hastagAB/Awesome-Python-Scripts.git
synced 2024-11-30 15:31:07 +00:00
52 lines
1.2 KiB
Python
52 lines
1.2 KiB
Python
|
"""
|
||
|
Tambola Ticket generator
|
||
|
ask (c) 2020. All rights reserved.
|
||
|
"""
|
||
|
|
||
|
import argparse
|
||
|
|
||
|
import numpy as np
|
||
|
from tabulate import tabulate
|
||
|
|
||
|
|
||
|
def shuffle_array(a):
|
||
|
while (~a.any(axis=1)).any():
|
||
|
[np.random.shuffle(a[:, i]) for i in range(3)]
|
||
|
return a
|
||
|
|
||
|
|
||
|
def generate_ticket():
|
||
|
ticket = np.full(27, 1).reshape(9, 3)
|
||
|
ticket[:4, :] *= 0
|
||
|
ticket = shuffle_array(ticket)
|
||
|
|
||
|
for i in range(9):
|
||
|
num = np.arange(1, 10) if i < 8 else np.arange(1, 11)
|
||
|
np.random.shuffle(num)
|
||
|
num = np.sort(num[:3])
|
||
|
ticket[i, :] *= (num + i * 10)
|
||
|
return ticket.T
|
||
|
|
||
|
|
||
|
def get_tickets(args):
|
||
|
tickets = []
|
||
|
for _ in range(args.count):
|
||
|
tickets.append(generate_ticket())
|
||
|
return tickets
|
||
|
|
||
|
|
||
|
def main():
|
||
|
parser = argparse.ArgumentParser()
|
||
|
parser.add_argument('-c', '--count', help="Generates and returns tambola tickets given by count", type=int,
|
||
|
default=1)
|
||
|
args = parser.parse_args()
|
||
|
return get_tickets(args)
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
generated_tickets = main()
|
||
|
print("Generated {0} tickets".format(len(generated_tickets)))
|
||
|
|
||
|
for t in generated_tickets:
|
||
|
print(tabulate(t, tablefmt='fancy_grid'))
|