| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- import random
- import socket
- import time
- def check_port_available(port: int) -> bool:
- sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- try:
- sock.bind(('localhost', port))
- return True
- except OSError:
- time.sleep(0.1) # Short delay to further reduce chance of collisions
- return False
- finally:
- sock.close()
- def find_available_tcp_port(min_port=30000, max_port=39999, max_attempts=10) -> int:
- """Find an available TCP port in a specified range.
- Args:
- min_port (int): The lower bound of the port range (default: 30000)
- max_port (int): The upper bound of the port range (default: 39999)
- max_attempts (int): Maximum number of attempts to find an available port (default: 10)
- Returns:
- int: An available port number, or -1 if none found after max_attempts
- """
- rng = random.SystemRandom()
- ports = list(range(min_port, max_port + 1))
- rng.shuffle(ports)
- for port in ports[:max_attempts]:
- if check_port_available(port):
- return port
- return -1
- def display_number_matrix(number: int) -> str | None:
- if not 0 <= number <= 999:
- return None
- # Define the matrix representation for each digit
- digits = {
- '0': ['###', '# #', '# #', '# #', '###'],
- '1': [' #', ' #', ' #', ' #', ' #'],
- '2': ['###', ' #', '###', '# ', '###'],
- '3': ['###', ' #', '###', ' #', '###'],
- '4': ['# #', '# #', '###', ' #', ' #'],
- '5': ['###', '# ', '###', ' #', '###'],
- '6': ['###', '# ', '###', '# #', '###'],
- '7': ['###', ' #', ' #', ' #', ' #'],
- '8': ['###', '# #', '###', '# #', '###'],
- '9': ['###', '# #', '###', ' #', '###'],
- }
- # alternatively, with leading zeros: num_str = f"{number:03d}"
- num_str = str(number) # Convert to string without padding
- result = []
- for row in range(5):
- line = ' '.join(digits[digit][row] for digit in num_str)
- result.append(line)
- matrix_display = '\n'.join(result)
- return f'\n{matrix_display}\n'
|