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!
randomno significa uniformemente así