Números que son fáciles de recordar pero que en teoría no son fáciles de hacer.
Su desafío es crear un programa / función en cualquier idioma que genere números uniformemente aleatorios que se ajusten a estos criterios:
La longitud es de 5 dígitos.
Hay dos pares de dígitos repetidos separados
Un conjunto de dígitos repetidos está al principio o al final y los dígitos están uno al lado del otro
El número impar está rodeado por el otro par de dígitos.
Los dos pares de dígitos y el otro número deben ser únicos.
Su programa puede admitir números con ceros a la izquierda o no, a su discreción. Si los ceros iniciales son compatibles, deben incluirse en la salida: 06088, no 6088. Si los ceros iniciales no son compatibles, entonces no deberían generarse números como 06088.
Casos de prueba
Salidas aceptadas:
55373 55494 67611 61633 09033 99757 95944 22808 65622 22161
Salidas no aceptadas:
55555 77787 85855 12345 99233 12131 a B C D e 5033
Se pueden encontrar casos de prueba más aceptables en este enlace de pastebin .
Estos se hicieron con este programa de Python:
importar al azar para i en rango (100): if random.randint (0,100)> = 50: #Poner par tocando al principio si es verdadero temp = [] # matriz de trabajo temp.append (random.randint (0,9)) #append dígito aleatorio temp.append (temp [0]) #aplica el mismo dígito nuevamente x = random.randint (0,9) mientras x == temp [0]: x = random.randint (0,9) temp.append (x) #append otro dígito único y = random.randint (0,9) mientras y == temp [0] o y == temp [2]: y = random.randint (0,9) temp.append (y) #append otro dígito único y el dígito único anterior temp.append (x) más: #Ponga el par tocando al final temp = [] # matriz de trabajo temp.append (random.randint (0,9)) #append dígito aleatorio # Si bien no es único, intente nuevamente x = random.randint (0,9) mientras x == temp [0]: x = random.randint (0,9) temp.append (x) #append otro dígito único temp.append (temp [0]) #aplica nuevamente el mismo 0º dígito y = random.randint (0,9) mientras y == temp [0] o y == temp [1]: y = random.randint (0,9) temp.append (y) #append dos dígitos únicos dos veces temp.append (y) tempstr = "" para yo en temp: tempstr + = str (i) imprimir tempstr
Este es el código de golf , ¡así que la respuesta más corta en bytes gana!
random
no significa uniformemente así