기억하기 쉽지만 이론적으로 쉽게 만들 수없는 숫자
다음 기준에 맞는 균일 한 난수를 생성하는 모든 언어로 프로그램 / 기능을 작성해야합니다.
길이 는 5 자리입니다
두 개의 분리 된 반복 숫자 쌍이 있습니다
반복되는 한 자릿수는 시작 또는 끝에 있고 숫자는 서로 옆에 있습니다.
홀수는 다른 숫자 쌍으로 둘러싸여 있습니다.
두 자리 숫자와 다른 숫자는 모두 고유해야합니다
귀하의 재량에 따라 프로그램은 앞에 0이있는 숫자를 지원할 수도 있습니다. 선행 0이 지원되는 경우 6088이 아닌 06088이 출력에 포함되어야합니다. 선행 0이 지원되지 않으면 06088과 같은 숫자가 전혀 생성되지 않아야합니다.
테스트 사례
허용되는 출력 :
55373 55494 67611 61633 09033 99757 95944 22808 65622 22161
허용되지 않는 출력 :
55555 77787 85855 12345 99233 12131 에이 비 씨 디이 5033
더 많은 테스트 사례는 이 pastebin 링크 에서 찾을 수 있습니다 .
이것들은이 파이썬 프로그램으로 만들어졌습니다.
무작위 가져 오기 범위 (100)의 i의 경우 : random.randint (0,100)> = 50 인 경우 : # 참이면 처음에 닿는 풋 풋 temp = [] # 워킹 배열 temp.append (random.randint (0,9)) # 무작위 숫자 추가 temp.append (temp [0]) # 같은 숫자를 다시 추가하십시오 x = random.randint (0,9) x == temp [0] 동안 : x = random.randint (0,9) temp.append (x) # 다른 고유 숫자 추가 y = random.randint (0,9) y == temp [0] 또는 y == temp [2] 동안 : y = random.randint (0,9) temp.append (y) # 다른 고유 숫자와 이전 고유 숫자를 추가합니다 온도 추가 (x) else : # 끝에 페어 터치 temp = [] # 워킹 배열 temp.append (random.randint (0,9)) # 무작위 숫자 추가 # 독특하지는 않지만 다시 시도하십시오. x = random.randint (0,9) x == temp [0] 동안 : x = random.randint (0,9) temp.append (x) # 다른 고유 숫자 추가 temp.append (temp [0]) # 같은 0 번째 숫자를 다시 추가하십시오 y = random.randint (0,9) y == temp [0] 또는 y == temp [1] 동안 : y = random.randint (0,9) temp.append (y) # 다른 고유 숫자를 두 번 추가 온도 추가 (y) tempstr = "" 내가 온도에 : tempstr + = str (i) 인쇄 유혹
이것은 code-golf 이므로 바이트 단위의 최단 답변이 승리합니다!
random
균일하지 않습니다