Hatırlanması kolay, fakat teorik olarak kolay sayılar yapılmadı.
Buradaki zorluk, bu kriterlere uyan düzenli olarak rasgele sayılar üreten herhangi bir dilde bir program / işlev yapmaktır:
Uzunluk olan 5 basamak
İki ayrı tekrarlanan basamak çifti vardır
Tekrarlanan rakamlardan biri başlangıçta veya sondadır ve rakamlar yan yanadır
Tek sayı, diğer rakamlarla çevrilidir.
İki basamaklı çift ve diğer sayının tümü benzersiz olmalıdır
Programınız, sizin takdirinize bağlı olarak, baştaki sıfırlarla birlikte sayıları destekleyebilir. Baştaki sıfırlar destekleniyorsa, çıkışa dahil edilmelidir: 06088, 6088 değil. Baştaki sıfırlar desteklenmiyorsa, 06088 gibi sayılar hiç üretilmemelidir.
Test Kılıfları
Kabul edilen çıktılar:
55373 55494 67611 61633 09033 99757 95944 22808 65622 22161
Kabul edilmeyen çıktılar:
55555 77787 85855 12345 99233 12131 abcde 5033
Bu pastebin bağlantısında daha kabul edilebilir test vakaları bulunabilir .
Bunlar bu python programında yapıldı:
rastgele içe aktar
i aralığında (100):
eğer random.randint (0,100)> = 50: # Başlangıçta çiftin dokunması
temp = [] #working dizisi
temp.append (random.randint (0,9)) # rasgele basamak
temp.append (temp [0]) # tekrar aynı rakamı ekle
x = random.randint (0,9)
x == temp iken [0]:
x = random.randint (0,9)
temp.append (x) # başka bir benzersiz rakam gir
y = random.randint (0,9)
y == temp [0] veya y == temp [2] iken:
y = random.randint (0,9)
temp.append (y) # başka bir benzersiz rakam ve bir önceki rakam
temp.append (x)
else: # Sonunda dokunan çift
temp = [] #working dizisi
temp.append (random.randint (0,9)) # rasgele basamak
# Eşsiz olmasa da tekrar deneyin
x = random.randint (0,9)
x == temp iken [0]:
x = random.randint (0,9)
temp.append (x) # başka bir benzersiz rakam gir
temp.append (temp [0]) # tekrar aynı 0ncı basamağa
y = random.randint (0,9)
y == temp [0] veya y == temp [1] iken:
y = random.randint (0,9)
temp.append (y) # iki kere başka bir benzersiz rakam girin
temp.append (y)
tempstr = ""
i temp için:
tempstr + = str (i)
tempstr baskı
Bu kod-golf , bayt cinsinden en kısa cevap!
randomtek tip anlamına gelmez