Kibrit çöpü oyunu programı

Tam da bunu düşünüyordum. Karesi küpü gibi bir hesaplama ile ikincil üçüncül değerler üretip, 1 milyon altında kalan durum tablosu oluşturulabilir mi diye düşünmeye başladım.

Pyhton liste limitlerine bakıp, tüm dosya liseye girer mi diye kontrol ettim. Şimdi bellekte arama performasını kontrol edeceğim.

Canım sıkıldı gece gece iki satır kod olsun diye bakıyorum. Sonuçta dediğim gibi oyuncan çok matematik problemi gibi göründü gözüme bir analiz çıkar mı görmek istedim.

EDIT: Konu uzayacak; Neyse artık.

Kafamda deli sorular;

Kafamda deli çözümler.

fullPrime = []
 
file1 = open('primes1.txt', 'r')
Lines = file1.readlines()

for line in Lines:
    column= line.strip().split('    ')
    
    for i in column :
        fullPrime.append(i)

isPrime = input()

if isPrime in fullPrime:
    print("\nAsal Sayı")
else:
    print("\nSayı Asal Değil") 

Gayet performanslı çalıştı. Bundan sonra asal sayı hesaplayanın kafasına odunla vurmak lazım. :slight_smile:

Şimdi elimde asal tablosu olan bir dosya var.

Acaba bu dosyadaki verilerden, x2, x3, x4 … xn gibi bir sayı üretip bunun da bir milyondan küçükse x2, x3, x**4 dosyalarına eklesem elimde yeterince data table oluşur mu?

Kendime not olsun onu da bir ara deneyelim bakalım.

Bu amaçla bir de sürelere baktım. Sabir bir 999999 sayısını listede arattıp asal kontrolü yaptım. Burada dosya okunup listeye yüklenmesi dahil bir süre. İçerisinde input ile veri girişi yok süre uzayacağı için sabir bir rakamı değişkene atayıp toplam süreye baktım.

image

0.06 saniye diyebiliriz.

Bir de liste yüklü sadece içerisinde arama yaptığımızda dosya yükleme süresini çıkardığımızda ne kadar sürüyor ona da bakalım.

Bu da yaklaşık 0.04 saniye sürüyor.

Sayımız: 999999 olmak üzere asal mı kontrol eden fonksiyonunuzun süresine bakalım.

image

Evet fonksiyon neredeyse sıfır ile 0.01 gibi değerleri ancak görüyor, gayet performanslı.

Tek bir asal kontrolü yapsak tercih edebiliriz ama bir asal tablosu içinde istediğimiz sayıları hepsini oluşturmak için bir liste ihtiyacım olursa yani asal sayıları oluşturup tabloya dizmem gerekirse (ki düşüncem bu tür bir tablo ihtiyacımız olduğu) bu durumda bu fonksiyon tüm değerleri tek tek asal mı diye kontrol etmek zorunda kalacağından hız konusu tam tersine dönüyor.

Mesela ben 1-1000000 arasındaki tüm asal sayıları oluştur dediğimde kod sanırım 1 saattir çalışıyor ve hala bir sonuç görmedim. :slight_smile:

1 Beğeni

Bu hemen 3 e bölündüğü için False ı hızlı üretmiş olabilir. En büyük asal sayı için bakıp karşılaştırmak lazım süreyi zannımca.

Olabilir, mesele bu değil, tek bir sayı için kontrolde iddiam yok. Ben bir listeye 1-100000 arasındaki tüm asal sayıları bulmaya çalıştığımda asıl sorun çıkar diye düşünüyorum.

Bu nedenle listeyi oluşturan kod ve liste oluşturma ve dahil süresinin 0.06 saniye olması gayet olumlu geldi. Bu tablo içerisinde hızla gezerek bir sonraki ihtiyaç duyulan asal sayı kolayca tahmin edilebilir diye düşündüm.

Sonuçta bir tahmin tavsiye robotuna dönüşecek ve karar destek için bir tablo üzerinde gezmek daha faydalı gibi geldi.

Tabi ki onu da deneriz ama hatırlarsanız bu asal meselesi başka bir konuda konuşmuştuk. Zaten karekökü alarak kontrol edildiğinden performansı yüksek bir algoritma. Standart yöntemle kontrolle üretilen asal sayı fonksiyonlardan hızlı olacaktır.

for i in range(2,int(n**0.5)+1):

kare kökü konusu sanat eseri çok da gömmeyelim iterasyon hızla biter.

Ama bu iterasyonu 1 milyon kez tekrarlamak gerecek benzer bir tabloyu doldurabilmek için.

Hız farkı o noktada çıkacaktır. Ben asal olmayan hiç bir sayı için iterasyon yapmıyorum çünkü tablodan bakıyorum performans artışı o kısımda oluşur.

EDIT:

Fonksiyonunuzun performansını farklı değerlerde denemek için:

import time
def asal(n):
  for i in range(2,int(n**0.5)+1):
    if (n%i) == 0:
      return False
  return True
  
start_time = time.time()  

print(asal(999983))

print(time.time() - start_time)

Asal verdim süre değişmedi.

Ama bahsettiğim test durumu anlatacaktır sanırım.

import time
start_time = time.time()

PrimeList = []
def asal(n):
  for i in range(2,int(n**0.5)+1):
    if (n%i) == 0:
      return False
  return True
  
  
for i in range (1000000):
    if (asal(i)==True):
       PrimeList.append(i)
         
print(time.time() - start_time)     

image

14 saniye sürdü. Ki bu iyi bir rakam çünkü söylediğim gibi asal yaklaşımımız karekök alma üzerine.

Standart bir asal fonksiyonu ile durum faciaya dönüşüyor.

Mesela şu kodu buldum:

lower_value = int(input ("Please, Enter the Lowest Range Value: "))  
upper_value = int(input ("Please, Enter the Upper Range Value: "))  
a = 0  
print ("The Prime Numbers in the range are: ")  
for number in range (lower_value, upper_value + 1):  
    if number > 1:  
        for i in range (2, number):  
            if (number % i) == 0:  
                break  
        else:  
            a=a+1 

print(a)

meşhur standart asal arama yaklaşımı artık kaç saat sürer sonuç vermesi bilemem 1-1000000 için.

1 Beğeni

Asalları ve olası üsleri sqlite veritabanı şeklinde kaydettim. Yalnızca 2, 3 ve 7 nin o kadar hesaplamadım (6. üssüne kadar hesapladım). Program içinde yapmak daha kolay onları.

asalusler.db dosyasını sağ tıklayıp kaydedebilirsiniz.

Edit: Aslında o kadar da üslü sayısı yok zaten onu farkettim. 1000 kadar karesi, küplü olanlar erken bitiyor, 4. ve 5. üslerde epey azalıyor sonra zaten geriye 2, 3 ve 7 nin üsleri kalıyor.

1 Beğeni

Elinize sağlık.

Zaten bundan dolayı sınırlı sayıda bir kümeye dönüşüp bir strateji geliştirilebileceğini düşünüyordum.

Oyunu bozan tek şey asal sayıların sıfırıncı ve birinci kuvvetleri olacaktı onu da liste içinde kolayca kontrol edebiliriz, çünkü hızla azalan 78 bin civarı bir sayı listesinden bahsediyoruz.

1 Beğeni

Sıfırıncı üsler 1, birinci üsler de kendileri zaten. Yani sadece 1 de eklenecek listeye.

10000000 - 999979=21 1. Oyuncu.

21 den küçük asal sayılar:

2 3 5 7 11 13 17 19

Zaten Küme bir anda 8 ihtimale indi.

19 seçemez, 3 kalır yenilir.
17 seçemez, 4 kalır 2*2 yenilir.
13 seçemez, 8 kalır 23 yenilir.
11 seçebilir, 10 kalır.
7 seçebilir, 14 kalır.
5 seçebilir, 16 kalır.
3 seçebilir, 18 kalır.
2. seçemez, 19 kalır 19
1 yenilir.
1 seçebilir, 20 kalır.

10 14 16 18 kalan ihtimaller.

10 için asal sayılar: 2 3 5 7

14 için asal sayılar: 2 3 5 7 11

16 için asal sayılar: 2 3 5 7 11 13

18 için asal sayılar: 2 3 5 7 11 13 17

Sanki biri köşeye sıkışacak gibi. Bunu bir analiz algoritması ile her ihtimal için bir durum ağacına çevirirsek çözüm stratejisi gelişebilir gibi.

1 Beğeni

Neden anlamadım?

97^3 diyemez mi sonrasında? Veya daha büyük bir asal^1 gibi.

Ben de anlamadım.

Yerden çektiklerimizi geri diğerinin elinden mi alıyoruz oyunda?

Bir milyon çöp var, ben 999979 dedim ve aldım yerde 21 çöp kaldı.

Sıra ikinciye geçtiğinde 97^3 adet çöp yerden nasıl çekecek?

Sanırım oyun kurallarını kavrayamıyorum.

Pardon ben yanlış anlamışım. Yok yok doğru sorun yok.

Geriye 999979 kaldı gibi anlamışım.

Edit: 16 kalırsa da yenilir. 2^4

Evet,yenileceği ihtimalleri çıkardığımızda sınırlı bir kümeye dönüşüyor.

Hem de çok hızlı bir şekilde.

Yani olasılıklar çok hızlı hesaplanabilir hale geliyor. Yapması gereken tek şey yerde kalanın asal sayı olmamasını sağlamak.

İkinci olarak da asal üstleri çıkardığınızda oluşan sayıya denk getirmemek.

Yani hala oyun bir matematik problemi gibi oldu. Bu tablolarla mantıklı kararlarla oynayabilir bir robt oluşabilecek gibi duruyor. Sonra oyunu oynatıp istatistiklerine de bakılaiblir.

EDIT:

Oyun bir anda 1-21 arasında asal kuralına dönüştü.

İlk oyuncuya hangi kalan avantaj sağlayacaksa o rakamı tercih edip belki ikinci oyuncuyu sıkıştırabilir.

1 Beğeni

Doğrudan CPU gücüne ihtiyaç duyan işlemlerde bir dinamik bağlantı kitaplığı'ndaki fonksiyonu kullanmak, o fonksiyon ile aynı işlemi yapan bir Python fonksiyonunu kullanmaktan daha fazla hız sağlar.

Aşağıdaki kodları prime.c isminde bir dosyada tutuyor olalım:

#include <math.h>

int is_prime(unsigned long long n) {
    for (unsigned long long i = 2; i < (unsigned long long)pow(n, .5) + 1; i++) {
        if (n % i == 0) {
            return 0;
        }
    }
    return 1;
}

Şimdi bir dll oluşturalım:

gcc -shared -o prime.dll prime.c

Şimdi bir tane Python scripti oluşturalım:

# Dinamik bağlantı kitaplığını yüklemek için ctypes'ı import edelim.
import ctypes

# kütüphaneyi yükleyelim.
lib = ctypes.CDLL("./prime.dll")
# Fonksiyonun ismi `is_prime` idi. Bu fonksiyonun argüman tipini tanımlayalım.
lib.is_prime.argtypes = [ctypes.c_longlong]


# Şimdi aşağıdaki gibi bir fonksiyon oluşturalım:
def is_prime(n: int):
    return lib.is_prime(n) == 1

Şimdi de aynı fonksiyonu Python'da yazalım:

def asal(n: int):
    for i in range(2, int(n ** 0.5) + 1):
        if n % i == 0:
            return False
    return True

Şimdi bu iki fonksiyonun 15 basamaklı bir asal sayının asal sayı olup olmadığını ne kadar sürede bulduklarına bakalım.

import timeit

t1 = timeit.timeit(stmt=lambda: is_prime(n=999998727899999), number=1)
t2 = timeit.timeit(stmt=lambda: asal(n=999998727899999), number=1)
print(f"C: {t1}\nPython: {t2}")

Çıktı:

C: 0.31493809999665245
Python: 1.8097498999995878

Bu örnek için C’de yazılmış fonksiyon, Python ile yazılmış fonksiyondan aşağı yukarı 6 kat daha hızlı çalışıyor.

Bu türden değişiklikler yaparak da oyunu biraz daha hızlandırabilirsiniz.

3 Beğeni

Güzel yaklaşım. Farklı uygulamalarda faydalı olabilir. Ama biz 1 milyonla sınırlandırıldık. Yüksek performanslı bir uygulamada dili değiştireceksek, zaten yolu C ye doğru alırız.

Asıl merak ettiğim bu oyunun matematik modellemesi ile avantaj durumları.

Hazır halaya dahil olmuşken, en büyük asalı verdik ve geriye 21 çöp kaldı ihtimal tablosu ile hangi oyuncunın kazanacağını hesaplayan yada tercih yapmasını destekleyen bir şeyler de karalayabilir misin?

Bu gün bir oyuncak buldum kendime onu bırkalayacağım ilgilenme fırsatım olmayabilir ama bu bir matematik problemi ve çözümlenebilir gibi duruyor üzerinde kod fikirlerinizi görmek isterim. Sanırım, asal hesaplama ve tablodan bakma kısmında çok takıldık diğer aşamaya geçmek lazım.

Bilmem, oyun binlerce kez oynatılabilir; oyunun tıkanacağı durumlar öngörülüp oralarda oyun yeniden başlatılabilir böylece bitebilen oyunlar kaydedilir: a ve b kişilerinin yapmış oldukları hamlelerin hepsi tek tek kaydedilir ve yapmış oldukları hamleler sonucunda nasıl bir sonuç gelişmiş izlenebilir. Aşağıda paylaştığım kodlar, binlerce kez bu oyunu oynatıyor ve her oyunda kullanıcıların hamleleri ve bu hamlelerin nasıl bir sonuca vardığı kaydediliyor. Yani, veri üreten bir kod. Sonraki iş, bu verileri gruplandırmak ve sınıflandırmak ile ilgili olsa gerek.

import random
import ctypes
import pandas as pd

lib = ctypes.CDLL("./prime.dll")
lib.is_prime.argtypes = [ctypes.c_longlong]


def is_prime(n: int):
    return lib.is_prime(n) == 1


def get_prime(n: int):
    x = random.randint(2, n)
    while not is_prime(x):
        x = random.randint(2, n)
    return x


def get_values(remained: int):
    p = get_prime(remained)
    n = random.randint(1, remained)
    while p ** n >= remained:
        p = get_prime(remained)
        if p == remained:
            return p, 1
        n = random.randint(1, remained)
    return p, n


def run_tests(test_number: int, countdown_number: int, output: str):
    tests = {}
    for j in range(test_number):
        i = 0
        tests[f"Test-{j}"] = {"a": [], "b": []}
        remained = countdown_number
        index = ""
        while remained > 0:
            p, n = get_values(remained)
            remained -= p ** n
            if remained == 1:
                remained = countdown_number
                tests[f"Test-{j}"] = {"a": [], "b": []}
                continue
            index = list(tests[f"Test-{j}"])[i % 2]
            tests[f"Test-{j}"][index] += [(p, n)]
            i += 1
        tests[f"Test-{j}"]["winner"] = index

    df = pd.DataFrame.from_dict(tests)
    df = df.transpose()
    df.to_excel(output)


run_tests(test_number=1000, countdown_number=21, output="tests.xlsx")
1 Beğeni

Veri setini transpose edip kaydetsek daha okunaklı aslında. Yukardaki kodu değiştirdim biraz:

a b winner
Test-0 [(13, 1), (5, 1)] [(3, 1)] a
Test-1 [(2, 1)] [(19, 1)] b
Test-2 [(7, 1), (11, 1)] [(3, 1)] a
Test-3 [(2, 3), (2, 1)] [(3, 2), (2, 1)] b
Test-4 [(2, 1)] [(19, 1)] a
Test-5 [(11, 1), (2, 1)] [(3, 1), (5, 1)] b
Test-6 [(7, 1), (2, 3), (2, 1)] [(2, 1), (2, 1)] a
Test-7 [(2, 2)] [(17, 1)] b
Test-8 [(5, 1), (7, 1), (3, 1)] [(2, 2), (2, 1)] a
Test-9 [(3, 1), (3, 1), (5, 1)] [(7, 1), (3, 1)] a
Test-10 [(2, 1)] [(19, 1)] a
Test-11 [(2, 1)] [(19, 1)] b
Test-12 [(2, 1)] [(19, 1)] b
Test-13 [(5, 1), (2, 2), (3, 1)] [(2, 1), (7, 1)] a
Test-14 [(5, 1), (7, 1), (3, 1)] [(2, 2), (2, 1)] a
Test-15 [(17, 1), (2, 1)] [(2, 1)] a
Test-16 [(3, 1), (2, 2), (3, 1), (2, 1)] [(5, 1), (2, 1), (2, 1)] a
Test-17 [(19, 1)] [(2, 1)] b
Test-18 [(2, 3)] [(13, 1)] b
Test-19 [(13, 1), (3, 1)] [(3, 1), (2, 1)] b
Test-20 [(5, 1), (11, 1)] [(5, 1)] a
Test-21 [(2, 2)] [(17, 1)] b
Test-22 [(2, 4), (3, 1)] [(2, 1)] a
Test-23 [(2, 4)] [(5, 1)] b
Test-24 [(19, 1)] [(2, 1)] b
Test-25 [(2, 2)] [(17, 1)] b
Test-26 [(2, 2)] [(17, 1)] b
Test-27 [(7, 1), (11, 1)] [(3, 1)] a
Test-28 [(3, 2), (2, 1)] [(3, 1), (7, 1)] b
Test-29 [(19, 1)] [(2, 1)] b
Test-30 [(2, 1)] [(19, 1)] a
Test-31 [(2, 3)] [(13, 1)] b
Test-32 [(19, 1)] [(2, 1)] b
Test-33 [(3, 2), (7, 1)] [(3, 1), (2, 1)] b
Test-34 [(11, 1), (7, 1)] [(3, 1)] a
Test-35 [(2, 3)] [(13, 1)] b
Test-36 [(19, 1)] [(2, 1)] b
Test-37 [(2, 3)] [(13, 1)] b
Test-38 [(2, 1), (3, 1), (11, 1)] [(3, 1), (2, 1)] a
Test-39 [(17, 1)] [(2, 2)] a
Test-40 [(5, 1), (5, 1)] [(11, 1)] a
Test-41 [(11, 1), (3, 1)] [(7, 1)] a
Test-42 [(2, 1)] [(19, 1)] b
Test-43 [(5, 1), (5, 1)] [(11, 1)] a
Test-44 [(2, 1)] [(19, 1)] b
Test-45 [(2, 2), (2, 1)] [(2, 1), (13, 1)] b
Test-46 [(2, 1)] [(19, 1)] b
Test-47 [(11, 1), (3, 1)] [(2, 2), (3, 1)] b
Test-48 [(13, 1), (2, 2)] [(2, 1), (2, 1)] b
Test-49 [(2, 2), (2, 1)] [(3, 2), (2, 2), (2, 1)] b
Test-50 [(3, 1), (11, 1)] [(7, 1)] a
Test-51 [(3, 2), (2, 1)] [(2, 3), (2, 1)] b
Test-52 [(2, 2)] [(17, 1)] b
Test-53 [(3, 1), (11, 1)] [(2, 2), (3, 1)] b
Test-54 [(2, 4), (2, 1)] [(3, 1)] a
Test-55 [(5, 1), (2, 1), (2, 1)] [(2, 3), (2, 2)] a
Test-56 [(7, 1), (11, 1)] [(3, 1)] a
Test-57 [(2, 1)] [(19, 1)] b
Test-58 [(19, 1)] [(2, 1)] b
Test-59 [(2, 4)] [(5, 1)] b
Test-60 [(2, 3), (2, 1)] [(3, 2), (2, 1)] a
Test-61 [(2, 3), (2, 1)] [(11, 1)] a
Test-62 [(2, 2)] [(17, 1)] b
Test-63 [(7, 1), (3, 1)] [(2, 3), (3, 1)] b
Test-64 [(2, 2)] [(17, 1)] b
Test-65 [(13, 1), (2, 1)] [(2, 2), (2, 1)] b
Test-66 [(13, 1), (3, 1)] [(5, 1)] a
Test-67 [(13, 1), (2, 1)] [(2, 2), (2, 1)] b
Test-68 [(5, 1), (2, 1)] [(11, 1), (3, 1)] b
Test-69 [(17, 1), (2, 1)] [(2, 1)] a
Test-70 [(2, 1)] [(17, 1), (2, 1)] b
Test-71 [(17, 1), (2, 1)] [(2, 1)] a
Test-72 [(13, 1)] [(2, 3)] a
Test-73 [(2, 2)] [(17, 1)] b
Test-74 [(2, 2)] [(17, 1)] b
Test-75 [(19, 1)] [(2, 1)] a
Test-76 [(2, 2), (2, 2), (2, 1)] [(5, 1), (2, 2), (2, 1)] b
Test-77 [(5, 1)] [(3, 2), (7, 1)] b
Test-78 [(19, 1)] [(2, 1)] a
Test-79 [(3, 2), (7, 1)] [(3, 1), (2, 1)] a
Test-80 [(5, 1)] [(11, 1), (5, 1)] b
Test-81 [(11, 1), (3, 1)] [(2, 1), (5, 1)] b
Test-82 [(2, 1), (2, 2), (2, 1)] [(7, 1), (2, 1), (2, 2)] a
Test-83 [(2, 1)] [(19, 1)] b
Test-84 [(13, 1), (2, 1)] [(2, 2), (2, 1)] b
Test-85 [(2, 2)] [(17, 1)] b
Test-86 [(11, 1), (2, 1), (2, 1)] [(3, 1), (3, 1)] a
Test-87 [(19, 1)] [(2, 1)] b
Test-88 [(5, 1), (3, 1)] [(13, 1)] a
Test-89 [(2, 2)] [(17, 1)] b
Test-90 [(7, 1), (2, 1), (2, 2)] [(3, 1), (2, 1), (3, 1)] b
Test-91 [(2, 3)] [(13, 1)] b
Test-92 [(5, 1), (2, 3), (2, 1)] [(2, 1), (2, 2)] a
Test-93 [(3, 1), (11, 1)] [(7, 1)] a
Test-94 [(19, 1)] [(2, 1)] b
Test-95 [(3, 1), (13, 1)] [(5, 1)] a
Test-96 [(2, 3), (2, 1)] [(11, 1)] a
Test-97 [(2, 2)] [(17, 1)] b
Test-98 [(3, 1), (13, 1)] [(3, 1), (2, 1)] b
Test-99 [(17, 1), (2, 1)] [(2, 1)] a
Test-100 [(2, 4), (2, 1)] [(3, 1)] a
1 Beğeni

get_values fonksiyonunu şöyle değiştiriyorum:

def get_values(remained: int):
    p = get_prime(remained)
    n = random.randint(1, remained // p)
    while p ** n >= remained:
        p = get_prime(remained)
        if p == remained:
            return p, 1
        n = random.randint(1, remained // p)
    return p, n

Tüm kodlar:

import random
import ctypes
import pandas as pd

lib = ctypes.CDLL("./prime.dll")
lib.is_prime.argtypes = [ctypes.c_longlong]


def is_prime(n: int):
    return lib.is_prime(n) == 1


def get_prime(n: int):
    x = random.randint(2, n)
    while not is_prime(x):
        x = random.randint(2, n)
    return x


def get_values(remained: int):
    p = get_prime(remained)
    n = random.randint(1, remained // p)
    while p ** n >= remained:
        p = get_prime(remained)
        if p == remained:
            return p, 1
        n = random.randint(1, remained // p)
    return p, n


def run_tests(test_number: int, countdown_number: int, output: str):
    tests = {}
    for j in range(test_number):
        i = 0
        tests[f"Test-{j}"] = {"a": [], "b": []}
        remained = countdown_number
        index = ""
        while remained > 0:
            p, n = get_values(remained)
            remained -= p ** n
            if remained == 1:
                remained = countdown_number
                tests[f"Test-{j}"] = {"a": [], "b": []}
                continue
            index = list(tests[f"Test-{j}"])[i % 2]
            tests[f"Test-{j}"][index] += [(p, n)]
            i += 1
        tests[f"Test-{j}"]["winner"] = index

    df = pd.DataFrame.from_dict(tests)
    df = df.transpose()
    df.to_excel(output)

Artık testi 1000000 çöp sayısı için de yapabiliriz, bir önceki get_values fonksiyonunda, sayı büyüdüğü için döngüden çıkması da buna bağlı olarak zorlaşıyordu. Yukardaki fonksiyon ile bu zorluğu ortadan kaldırdık.

çöp sayısı 1000000 için 10000 tane testi kısa sürede oluşturabiliriz. Ama 1 milyon çöp sayısı için 10 bin test (satır sayısı) bence az. 1 milyon tane çöp için 100 milyon tane test veya 1 milyar tane test, veya daha fazla?

run_tests(test_number=10000, countdown_number=1000000, output="tests.xlsx")

İlk 100 sonuç:

a b winner
Test-0 [(703897, 1), (131759, 1), (37021, 1), (3301, 1), (523, 1), (37, 1), (2, 1)] [(91711, 1), (24329, 1), (6133, 1), (1277, 1), (3, 1), (7, 1)] a
Test-1 [(623881, 1), (57637, 1), (701, 1), (53, 1), (2, 1), (2, 1)] [(292249, 1), (25457, 1), (2, 2), (11, 1), (3, 1)] a
Test-2 [(150383, 1), (21773, 1), (1609, 1), (67, 1), (13, 1)] [(809399, 1), (16189, 1), (563, 1), (2, 1), (2, 1)] b
Test-3 [(204751, 1), (37369, 1), (5011, 1), (761, 1), (853, 1), (29, 1), (19, 1), (7, 1)] [(660013, 1), (78577, 1), (9511, 1), (1433, 1), (1447, 1), (137, 1), (79, 1), (3, 1)] a
Test-4 [(429733, 1), (333161, 1), (21751, 1), (757, 1), (251, 1), (137, 1), (2, 1)] [(154571, 1), (58411, 1), (1069, 1), (83, 1), (43, 1), (31, 1)] a
Test-5 [(608989, 1), (65419, 1), (89, 1), (2, 1)] [(324637, 1), (857, 1), (7, 1)] a
Test-6 [(338563, 1), (508969, 1), (1699, 1), (29, 1), (2, 1)] [(148781, 1), (1879, 1), (67, 1), (11, 1)] a
Test-7 [(405521, 1), (302189, 1), (37307, 1), (251, 1), (19, 1)] [(147299, 1), (100999, 1), (6329, 1), (79, 1), (7, 1)] b
Test-8 [(547727, 1), (30983, 1), (3301, 1), (877, 1), (43, 1), (3, 1), (2, 1)] [(341123, 1), (68351, 1), (6197, 1), (1279, 1), (107, 1), (2, 2), (3, 1)] a
Test-9 [(102149, 1), (5387, 1), (1259, 1), (263, 1), (7, 1)] [(678989, 1), (204521, 1), (6547, 1), (839, 1), (37, 1), (2, 1)] b
Test-10 [(587579, 1), (90793, 1), (10193, 1), (367, 1), (17, 1), (2, 1)] [(235621, 1), (72269, 1), (3037, 1), (109, 1), (13, 1)] a
Test-11 [(300431, 1), (121333, 1), (6971, 1), (347, 1), (19, 1)] [(467017, 1), (102461, 1), (1367, 1), (37, 1), (17, 1)] b
Test-12 [(244901, 1), (87973, 1), (33013, 1), (12211, 1), (241, 1), (47, 1)] [(575611, 1), (43627, 1), (1667, 1), (521, 1), (181, 1), (7, 1)] b
Test-13 [(145577, 1), (593, 1), (19, 1), (5, 1)] [(841913, 1), (11621, 1), (257, 1), (13, 1), (2, 1)] b
Test-14 [(776173, 1), (31721, 1), (8663, 1), (929, 1)] [(155657, 1), (25841, 1), (1013, 1), (3, 1)] b
Test-15 [(518779, 1), (169531, 1), (75079, 1), (16193, 1), (467, 1), (11, 1), (3, 1)] [(161033, 1), (41981, 1), (15749, 1), (1123, 1), (47, 1), (2, 2)] a
Test-16 [(975439, 1), (5059, 1), (2207, 1), (293, 1), (43, 1), (2, 1)] [(14741, 1), (1249, 1), (881, 1), (79, 1), (5, 1), (2, 1)] b
Test-17 [(231701, 1), (21101, 1), (83, 1), (3, 1)] [(746209, 1), (853, 1), (43, 1), (7, 1)] b
Test-18 [(595093, 1), (146977, 1), (29297, 1), (311, 1), (17, 1), (2, 1)] [(162901, 1), (63599, 1), (1699, 1), (79, 1), (5, 2)] a
Test-19 [(339887, 1), (110821, 1), (15791, 1), (1723, 1), (23, 1)] [(465373, 1), (62563, 1), (3727, 1), (89, 1), (3, 1)] b
Test-20 [(821519, 1), (18229, 1), (149, 1)] [(159979, 1), (113, 1), (11, 1)] b
Test-21 [(256931, 1), (25667, 1), (5717, 1), (673, 1), (59, 1), (2, 1)] [(668273, 1), (38333, 1), (2239, 1), (2081, 1), (17, 1), (2, 3)] a
Test-22 [(565427, 1), (181553, 1), (49597, 1), (1399, 1), (37, 1)] [(76963, 1), (101863, 1), (22531, 1), (577, 1), (53, 1)] b
Test-23 [(639631, 1), (116381, 1), (26003, 1), (5651, 1), (761, 1), (109, 1), (2, 1)] [(176401, 1), (23447, 1), (11071, 1), (107, 1), (257, 1), (179, 1)] a
Test-24 [(601309, 1), (155167, 1), (5701, 1), (4703, 1), (317, 1), (37, 1)] [(174311, 1), (51349, 1), (6217, 1), (673, 1), (199, 1), (17, 1)] b
Test-25 [(721261, 1), (66959, 1), (29347, 1), (971, 1), (397, 1), (2, 1)] [(155473, 1), (22817, 1), (2383, 1), (383, 1), (7, 1)] a
Test-26 [(732689, 1), (16561, 1), (10987, 1), (257, 1), (2, 1)] [(222493, 1), (15679, 1), (1229, 1), (103, 1)] a
Test-27 [(544613, 1), (175391, 1), (47807, 1), (7879, 1), (173, 1), (5, 1)] [(122027, 1), (95507, 1), (6277, 1), (313, 1), (5, 1), (3, 1)] b
Test-28 [(914257, 1), (4457, 1), (619, 1), (59, 1)] [(77951, 1), (2287, 1), (359, 1), (11, 1)] b
Test-29 [(744313, 1), (60631, 1), (24229, 1), (127, 1), (29, 1)] [(155707, 1), (14713, 1), (193, 1), (53, 1), (5, 1)] b
Test-30 [(405947, 1), (75689, 1), (509, 1), (499, 1), (89, 1), (2, 1)] [(504947, 1), (11527, 1), (739, 1), (47, 1), (2, 1), (3, 1)] b
Test-31 [(734911, 1), (44131, 1), (2371, 1), (19, 1), (29, 1), (5, 1)] [(207973, 1), (10259, 1), (191, 1), (89, 1), (19, 1), (3, 1)] b
Test-32 [(521981, 1), (5297, 1), (13, 1), (2, 1)] [(472391, 1), (311, 1), (5, 1)] a
Test-33 [(968479, 1), (11689, 1), (3137, 1), (433, 1), (73, 1), (13, 1), (3, 1), (2, 1), (3, 1)] [(7603, 1), (8089, 1), (257, 1), (89, 1), (73, 1), (29, 1), (23, 1), (5, 1)] a
Test-34 [(584399, 1), (51131, 1), (14537, 1), (383, 1), (2, 1)] [(224951, 1), (109397, 1), (15193, 1), (5, 1), (2, 1)] b
Test-35 [(22277, 1), (1699, 1), (31, 1), (13, 1), (3, 1)] [(808601, 1), (166207, 1), (1021, 1), (127, 1), (19, 1), (2, 1)] b
Test-36 [(537599, 1), (45497, 1), (7793, 1), (499, 1), (13, 1), (3, 1)] [(206249, 1), (188863, 1), (11839, 1), (1559, 1), (73, 1), (11, 1), (2, 1)] b
Test-37 [(846421, 1), (2341, 1), (487, 1), (173, 1), (2, 1)] [(149333, 1), (919, 1), (313, 1), (11, 1)] a
Test-38 [(41927, 1), (66683, 1), (85669, 1), (38707, 1), (179, 1), (11, 1), (5, 1)] [(535859, 1), (48281, 1), (84919, 1), (81197, 1), (16553, 1), (5, 1), (3, 1), (2, 1)] b
Test-39 [(516053, 1), (100501, 1), (23563, 1), (7681, 1), (1433, 1), (241, 1), (61, 1), (2, 1), (3, 1)] [(318691, 1), (24917, 1), (5843, 1), (167, 1), (757, 1), (79, 1), (2, 2), (2, 1), (2, 1)] b
Test-40 [(708559, 1), (36067, 1), (227, 1), (113, 1), (5, 1), (2, 1)] [(253501, 1), (1429, 1), (83, 1), (11, 1), (3, 1)] a
Test-41 [(885793, 1), (6451, 1), (2203, 1), (61, 1), (2, 2)] [(104459, 1), (607, 1), (337, 1), (83, 1), (2, 1)] b
Test-42 [(492563, 1), (87679, 1), (383, 1), (19, 1)] [(417821, 1), (1427, 1), (89, 1), (19, 1)] b
Test-43 [(751921, 1), (138793, 1), (12143, 1), (67, 1), (29, 1)] [(76913, 1), (18397, 1), (1693, 1), (41, 1), (3, 1)] b
Test-44 [(413681, 1), (355039, 1), (4721, 1), (4759, 1), (113, 1), (5, 2), (2, 1)] [(165343, 1), (52673, 1), (3217, 1), (349, 1), (41, 1), (37, 1)] a
Test-45 [(870823, 1), (3593, 1), (233, 1), (23, 1), (2, 1)] [(123979, 1), (1277, 1), (67, 1), (3, 1)] a
Test-46 [(975427, 1), (3863, 1), (127, 1), (2, 1)] [(20411, 1), (167, 1), (3, 1)] a
Test-47 [(548761, 1), (120299, 1), (27103, 1), (10151, 1), (709, 1), (151, 1), (2, 1), (2, 1)] [(241993, 1), (28621, 1), (14303, 1), (7621, 1), (223, 1), (47, 1), (11, 1), (3, 1)] b
Test-48 [(367879, 1), (255613, 1), (5689, 1), (601, 1), (97, 1), (2, 2)] [(251737, 1), (117071, 1), (1249, 1), (17, 1), (41, 1), (2, 1)] b
Test-49 [(842203, 1), (71699, 1), (37, 1), (19, 1), (11, 1)] [(64489, 1), (21517, 1), (11, 1), (11, 1), (3, 1)] b
Test-50 [(510989, 1), (198463, 1), (9187, 1), (991, 1), (233, 1), (29, 1), (2, 1)] [(193507, 1), (75571, 1), (10909, 1), (79, 1), (37, 1), (3, 1)] a
Test-51 [(658663, 1), (49603, 1), (5981, 1), (17, 1), (3, 2), (2, 1)] [(273709, 1), (11743, 1), (263, 1), (7, 1), (3, 1)] a
Test-52 [(996187, 1), (1619, 1), (139, 1), (13, 1), (2, 1)] [(1933, 1), (67, 1), (37, 1), (3, 1)] a
Test-53 [(429791, 1), (66491, 1), (14869, 1), (1231, 1), (313, 1), (17, 1), (3, 1)] [(372299, 1), (82483, 1), (29423, 1), (1693, 1), (1151, 1), (211, 1), (23, 1), (2, 1)] b
Test-54 [(676763, 1), (92479, 1), (7829, 1), (139, 1), (3, 1)] [(151007, 1), (71387, 1), (383, 1), (2, 3), (2, 1)] b
Test-55 [(422927, 1), (136993, 1), (3119, 1), (281, 1), (11, 1), (2, 1)] [(434689, 1), (1453, 1), (383, 1), (101, 1), (41, 1)] a
Test-56 [(888689, 1), (5689, 1), (73, 1), (2, 1)] [(103919, 1), (1607, 1), (19, 1), (2, 1)] b
Test-57 [(887449, 1), (3163, 1), (13, 1), (13, 1), (2, 1)] [(108109, 1), (863, 1), (359, 1), (29, 1)] a
Test-58 [(128033, 1), (2129, 1), (67, 1), (13, 1)] [(862481, 1), (6329, 1), (907, 1), (41, 1)] a
Test-59 [(38747, 1), (20593, 1), (577, 1), (19, 1)] [(772619, 1), (156631, 1), (10733, 1), (79, 1), (2, 1)] b
Test-60 [(417173, 1), (325447, 1), (29017, 1), (11261, 1), (1021, 1), (3, 2), (3, 1)] [(72547, 1), (111301, 1), (26981, 1), (5039, 1), (199, 1), (2, 1)] a
Test-61 [(764947, 1), (15541, 1), (31, 1), (29, 1), (2, 1)] [(216577, 1), (2861, 1), (7, 1), (5, 1)] a
Test-62 [(525979, 1), (75997, 1), (5651, 1), (3823, 1), (2161, 1), (29, 1), (2, 1)] [(283463, 1), (68399, 1), (30493, 1), (3823, 1), (149, 1), (29, 1), (2, 1)] b
Test-63 [(616639, 1), (28559, 1), (8081, 1), (211, 1)] [(305971, 1), (39251, 1), (1277, 1), (11, 1)] b
Test-64 [(85829, 1), (3541, 1), (3797, 1), (443, 1), (47, 1), (2, 2), (2, 1)] [(805027, 1), (75743, 1), (24749, 1), (227, 1), (569, 1), (11, 1), (11, 1)] a
Test-65 [(402379, 1), (10687, 1), (1709, 1), (439, 1), (43, 1), (13, 1)] [(195967, 1), (376081, 1), (12301, 1), (97, 1), (229, 1), (53, 1), (2, 1)] b
Test-66 [(562871, 1), (92189, 1), (19309, 1), (599, 1), (17, 1), (19, 1)] [(270287, 1), (52837, 1), (1607, 1), (173, 1), (89, 1), (3, 1)] b
Test-67 [(219053, 1), (1151, 1), (173, 1), (11, 1), (2, 1)] [(776983, 1), (1997, 1), (461, 1), (167, 1), (2, 1)] a
Test-68 [(77141, 1), (37951, 1), (8537, 1), (619, 1), (67, 1)] [(803921, 1), (52009, 1), (15583, 1), (4007, 1), (163, 1), (2, 1)] b
Test-69 [(817561, 1), (9463, 1), (1399, 1), (353, 1)] [(166703, 1), (3923, 1), (569, 1), (29, 1)] b
Test-70 [(457711, 1), (246941, 1), (115151, 1), (17581, 1), (163, 1), (2, 1)] [(91081, 1), (60811, 1), (10169, 1), (353, 1), (37, 1)] a
Test-71 [(885187, 1), (15299, 1), (2251, 1), (107, 1), (2, 1)] [(88259, 1), (7649, 1), (1187, 1), (59, 1)] a
Test-72 [(601813, 1), (48473, 1), (23431, 1), (11003, 1), (659, 1), (23, 1), (2, 1)] [(108079, 1), (185569, 1), (20147, 1), (757, 1), (41, 1), (3, 1)] a
Test-73 [(467963, 1), (5119, 1), (1259, 1), (307, 1), (19, 1), (11, 1)] [(341863, 1), (180007, 1), (2741, 1), (263, 1), (421, 1), (5, 2), (2, 1)] b
Test-74 [(932227, 1), (44101, 1), (83, 1), (13, 1), (3, 1)] [(21169, 1), (2393, 1), (2, 1), (3, 2)] a
Test-75 [(365471, 1), (25589, 1), (1571, 1), (29, 1), (23, 1)] [(604189, 1), (2659, 1), (383, 1), (79, 1), (7, 1)] b
Test-76 [(516713, 1), (61031, 1), (13619, 1), (1489, 1), (23, 1), (11, 1), (7, 1), (2, 1)] [(383153, 1), (20533, 1), (3181, 1), (149, 1), (79, 1), (5, 1), (5, 1)] a
Test-77 [(807571, 1), (5791, 1), (2459, 1), (139, 1), (19, 1), (2, 1)] [(176063, 1), (7741, 1), (199, 1), (3, 2), (5, 1), (2, 1)] b
Test-78 [(267713, 1), (320053, 1), (9439, 1), (2203, 1), (547, 1), (2, 1)] [(336143, 1), (57503, 1), (5581, 1), (353, 1), (463, 1)] a
Test-79 [(499879, 1), (108079, 1), (5273, 1), (1483, 1), (137, 1), (43, 1), (2, 2)] [(362303, 1), (17837, 1), (4649, 1), (277, 1), (31, 1), (3, 1), (2, 1)] b
Test-80 [(111337, 1), (247183, 1), (911, 1), (359, 1), (359, 1), (23, 1), (2, 1)] [(587201, 1), (49663, 1), (2689, 1), (269, 1), (2, 1), (2, 1)] a
Test-81 [(586121, 1), (37369, 1), (1931, 1), (239, 1), (17, 1), (3, 1)] [(260581, 1), (102667, 1), (10601, 1), (349, 1), (109, 1), (11, 1), (2, 1)] b
Test-82 [(578573, 1), (82217, 1), (8237, 1), (359, 1), (7, 1), (2, 1)] [(308809, 1), (19009, 1), (2551, 1), (233, 1), (3, 1)] a
Test-83 [(521693, 1), (71233, 1), (51577, 1), (241, 1), (2, 1)] [(222113, 1), (130439, 1), (2699, 1), (3, 1)] a
Test-84 [(681689, 1), (27539, 1), (17, 1), (3, 1), (2, 1)] [(265037, 1), (25703, 1), (7, 1), (3, 1)] a
Test-85 [(65657, 1), (403649, 1), (37853, 1), (15541, 1), (3739, 1), (2, 1)] [(313151, 1), (115249, 1), (39623, 1), (3917, 1), (1619, 1)] a
Test-86 [(110311, 1), (6067, 1), (6211, 1), (103, 1), (157, 1), (3, 1)] [(780917, 1), (89101, 1), (5791, 1), (1193, 1), (79, 1), (67, 1)] a
Test-87 [(520313, 1), (65551, 1), (281, 1), (197, 1), (31, 1), (5, 1), (2, 1)] [(409333, 1), (4049, 1), (11, 2), (101, 1), (7, 1), (3, 2)] a
Test-88 [(631247, 1), (1669, 1), (229, 1), (149, 1), (2, 1), (2, 1)] [(365587, 1), (571, 1), (409, 1), (131, 1), (2, 1), (2, 1)] b
Test-89 [(792023, 1), (38039, 1), (6121, 1), (311, 1), (7, 1)] [(137443, 1), (25127, 1), (919, 1), (7, 1), (3, 1)] b
Test-90 [(86113, 1), (29303, 1), (2389, 1), (3, 1)] [(787079, 1), (87187, 1), (7687, 1), (239, 1)] a
Test-91 [(160357, 1), (66601, 1), (37321, 1), (229, 1), (733, 1), (41, 1), (2, 2)] [(723071, 1), (6569, 1), (4099, 1), (787, 1), (157, 1), (29, 1), (2, 1)] b
Test-92 [(872161, 1), (40177, 1), (5741, 1), (79, 1), (83, 1), (31, 1), (2, 1)] [(42943, 1), (37489, 1), (1069, 1), (181, 1), (37, 1), (7, 1)] a
Test-93 [(882239, 1), (21599, 1), (41, 1), (2, 4), (2, 1)] [(95923, 1), (157, 1), (2, 4), (7, 1)] a
Test-94 [(141131, 1), (112241, 1), (1229, 1), (557, 1), (79, 1), (2, 1)] [(731257, 1), (13093, 1), (181, 1), (127, 1), (103, 1)] a
Test-95 [(828361, 1), (131639, 1), (3697, 1), (449, 1), (43, 1), (13, 1), (2, 1)] [(26729, 1), (6481, 1), (2269, 1), (241, 1), (71, 1), (5, 1)] a
Test-96 [(659453, 1), (114679, 1), (7103, 1), (6733, 1)] [(189421, 1), (11821, 1), (10753, 1), (37, 1)] b
Test-97 [(994051, 1), (971, 1), (71, 1), (17, 1), (2, 1)] [(2699, 1), (2153, 1), (19, 1), (17, 1)] a
Test-98 [(156677, 1), (467, 1), (1031, 1), (3, 1)] [(802031, 1), (38501, 1), (1223, 1), (67, 1)] a
Test-99 [(290141, 1), (31769, 1), (2287, 1), (23, 1), (2, 1)] [(654209, 1), (20921, 1), (641, 1), (7, 1)] a
2 Beğeni

Hep asalların 1 üzeri mi kullanılmış? bana sanki öyle geldi. yani n’ler hep bir oysaki uygun bir n değeri farklı yöne götürebilir mi?

İkinci konu:

1 milyona kadar gitmeyelim.

  1. En büyük ikinci asal sayıyı söylerse yerde 21 çöp kalıyor.

Sıra b ye geçiyor. Kalan oyunun ihtimallerini analiz etmek daha kolay sanki.

Elinize sağlık.

n’lerin alacağı değerler asal sayıların büyüklüklerine bağlı.

def get_values(remained: int, limit: int):
    p = get_prime(limit)
    n = random.randint(1, remained // p + 1)
    while p ** n >= remained:
        p = get_prime(limit)
        if p == remained:
            return p, 1
        n = random.randint(1, remained // p + 1)
    return p, n

Evet, çünkü p = get_prime(remained) ifadesi, p değerlerinin, remained / 2 etrafında dolaşmasına neden olur. Yani aşağıdaki kodu çalıştırdığımızda, sonuçlar çoğu kez random.randint’e verilen min ile max değerlerinin ortasındaki değere yaklaşmaya çalışır. (Ortalama etrafında dönen değerler, gerçekleşme ihtimali en yüksek değerlerdir.)

Aşağıdaki kod ile bahsettiğim bu durumu görebiliriz.

import random
for i in range(10):
    print(random.randint(1, pow(10, i)), pow(10, i) / 2)

Çıktı:

1 0.5
4 5.0
92 50.0
371 500.0
5961 5000.0
38652 50000.0
830998 500000.0
9316091 5000000.0
78901367 50000000.0
202069021 500000000.0

O halde, get_prime’ın değerlerini mümkün olduğunca küçük tutmak lazım.

run_tests(test_number=100, countdown_number=10000, output="test.xlsx", limit=100)
a b winner
Test-0 [(53, 2), (43, 2), (47, 1), (43, 2), (53, 1), (2, 2), (67, 1), (2, 5), (23, 1), (11, 1)] [(53, 2), (17, 1), (89, 1), (73, 1), (71, 1), (31, 1), (79, 1), (17, 1), (41, 1), (29, 1)] b
Test-1 [(37, 1), (59, 2), (71, 1), (47, 1), (7, 2), (43, 1), (97, 1), (29, 1), (67, 1), (31, 2), (29, 1), (13, 1)] [(71, 1), (53, 2), (83, 1), (29, 2), (19, 2), (89, 1), (59, 1), (71, 1), (71, 1), (61, 1), (31, 1), (23, 2)] a
Test-2 [(89, 1), (31, 1), (89, 1), (79, 1), (5, 1), (83, 1), (37, 1), (59, 1), (97, 1), (67, 1), (3, 1), (2, 1)] [(53, 2), (43, 2), (29, 2), (59, 2), (79, 1), (59, 1), (97, 1), (11, 2), (13, 1), (2, 3), (2, 1)] a
Test-3 [(83, 1), (67, 1), (71, 1), (79, 1), (79, 2), (5, 3), (5, 1), (29, 1), (89, 1), (37, 1), (29, 1), (2, 1)] [(61, 1), (47, 2), (61, 1), (79, 1), (71, 1), (19, 1), (89, 1), (89, 1), (59, 1), (19, 2), (43, 1), (2, 1)] b
Test-4 [(47, 2), (31, 2), (53, 1), (61, 1), (71, 1), (29, 2), (61, 1), (5, 1), (7, 1)] [(17, 3), (23, 2), (59, 1), (97, 1), (61, 1), (61, 1), (7, 1), (2, 1), (2, 1)] b
Test-5 [(89, 2), (37, 1), (89, 1), (41, 1), (89, 1), (53, 1), (19, 2), (41, 1), (19, 1), (73, 1), (41, 1), (71, 1), (13, 1)] [(3, 5), (53, 1), (17, 2), (47, 1), (29, 1), (83, 1), (37, 1), (71, 1), (61, 1), (83, 1), (47, 1), (67, 1), (41, 1)] b
Test-6 [(59, 1), (41, 2), (67, 2), (97, 1), (59, 1), (31, 1), (53, 2), (19, 1), (29, 1), (37, 1), (29, 1), (2, 1), (2, 1)] [(97, 1), (37, 1), (61, 1), (19, 1), (83, 1), (61, 1), (73, 1), (61, 1), (83, 1), (59, 1), (7, 1), (3, 2), (7, 1)] b
Test-7 [(47, 2), (89, 1), (43, 1), (23, 1), (73, 1), (41, 1), (79, 1), (67, 1), (71, 1), (31, 1), (89, 1), (71, 1), (73, 1), (79, 1), (67, 1), (37, 1)] [(17, 2), (11, 3), (67, 2), (41, 1), (13, 2), (73, 1), (11, 1), (67, 1), (79, 1), (31, 1), (29, 1), (47, 1), (89, 1), (37, 1), (67, 1), (7, 1), (2, 1)] b
Test-8 [(67, 1), (61, 1), (31, 1), (97, 1), (67, 1), (59, 1), (61, 1), (3, 6), (89, 1), (31, 1), (89, 1), (17, 1), (41, 1), (5, 1)] [(11, 3), (73, 2), (79, 1), (37, 1), (11, 3), (59, 1), (29, 1), (37, 1), (17, 1), (71, 1), (97, 1), (47, 1), (89, 1), (3, 1)] b
Test-9 [(79, 2), (29, 1), (79, 1), (31, 2), (73, 1), (67, 1), (2, 1)] [(83, 1), (79, 1), (43, 1), (31, 2), (37, 2), (13, 1)] a
Test-10 [(71, 2), (89, 1), (83, 1), (31, 1), (11, 1), (71, 1), (61, 1), (3, 1)] [(29, 2), (89, 1), (53, 1), (59, 2), (73, 1), (71, 1), (2, 1)] a
Test-11 [(73, 1), (71, 1), (5, 5), (43, 1), (61, 1), (59, 1), (83, 1), (2, 10), (23, 1), (2, 1)] [(59, 2), (83, 1), (37, 1), (97, 1), (37, 2), (53, 1), (2, 8), (53, 1), (7, 1)] a
Test-12 [(7, 3), (59, 1), (43, 1), (2, 7), (29, 2), (97, 1), (97, 1), (53, 1), (13, 2), (29, 1), (2, 3), (17, 1), (3, 1)] [(19, 2), (67, 2), (29, 2), (29, 2), (29, 1), (19, 1), (53, 1), (13, 1), (73, 1), (11, 3), (61, 1), (2, 1)] a
Test-13 [(13, 1), (43, 1), (97, 2), (11, 1)] [(19, 2), (29, 1), (79, 1), (53, 1), (2, 1)] b
Test-14 [(89, 1), (37, 2), (73, 1), (19, 1), (79, 1), (31, 2), (59, 1), (43, 2), (97, 1), (29, 1), (7, 1), (79, 1), (97, 1), (17, 2), (13, 2), (83, 1), (19, 1), (11, 1)] [(67, 1), (47, 1), (59, 2), (17, 1), (19, 1), (89, 1), (97, 1), (97, 1), (83, 1), (53, 1), (17, 2), (83, 1), (5, 2), (37, 1), (29, 1), (53, 1), (53, 1), (3, 1)] b
Test-15 [(83, 2), (73, 1), (53, 1), (61, 1), (7, 1), (2, 1)] [(53, 2), (61, 1), (29, 1), (3, 1), (13, 1)] a
Test-16 [(17, 3), (29, 1), (89, 1), (53, 1), (67, 1), (31, 1), (29, 1), (97, 1), (5, 1), (29, 1), (29, 1), (3, 1), (3, 1)] [(61, 2), (31, 1), (67, 1), (41, 1), (41, 1), (61, 1), (23, 2), (47, 1), (47, 1), (29, 1), (5, 1), (2, 2)] a
Test-17 [(83, 2), (41, 1), (97, 1), (89, 1), (31, 2), (71, 1), (37, 2), (3, 3), (2, 1)] [(83, 1), (17, 1), (73, 1), (73, 1), (83, 1), (47, 1), (71, 1), (7, 1)] a
Test-18 [(67, 1), (29, 2), (37, 1), (89, 1), (19, 2), (61, 1), (67, 1), (31, 1), (71, 1), (73, 1), (71, 1), (31, 1), (29, 1), (5, 4), (71, 1), (5, 1), (3, 2), (2, 1)] [(79, 2), (67, 1), (59, 1), (73, 1), (73, 1), (97, 1), (17, 2), (13, 1), (7, 2), (7, 1), (19, 1), (79, 1), (11, 2), (67, 1), (29, 1), (61, 1), (97, 1), (11, 1), (7, 1)] b
Test-19 [(79, 1), (47, 1), (89, 2), (5, 1), (2, 2), (2, 1)] [(41, 1), (43, 2), (31, 1), (17, 1), (2, 2)] a
Test-20 [(7, 4), (67, 1), (79, 1), (41, 2), (47, 1), (29, 1), (61, 1), (11, 1), (61, 1), (29, 1), (13, 1)] [(31, 2), (7, 2), (59, 2), (17, 2), (5, 1), (2, 4), (19, 1), (73, 1), (23, 2), (97, 1), (2, 1)] b
Test-21 [(3, 8), (31, 2), (83, 1), (29, 1), (89, 1), (19, 1), (67, 1), (67, 1), (11, 1)] [(41, 2), (19, 1), (19, 1), (61, 1), (11, 2), (71, 1), (89, 1), (47, 1), (5, 1)] b
Test-22 [(43, 1), (61, 1), (71, 2), (37, 1), (43, 1), (83, 1), (89, 1), (11, 1)] [(61, 2), (13, 2), (2, 4), (2, 9), (61, 1), (67, 1), (43, 1), (3, 1)] b
Test-23 [(53, 1), (73, 2), (59, 2), (67, 1), (97, 1), (73, 1), (53, 1), (43, 1), (71, 1), (2, 3), (41, 1), (23, 1)] [(47, 1), (97, 1), (19, 1), (43, 1), (83, 1), (83, 1), (89, 1), (89, 1), (73, 1), (31, 1), (2, 1), (5, 1)] b
Test-24 [(29, 2), (71, 2), (23, 2), (97, 1), (71, 1), (47, 1), (73, 1), (89, 1), (37, 1), (43, 1), (53, 1), (97, 1), (43, 1), (31, 1), (5, 1)] [(67, 1), (67, 1), (47, 2), (73, 1), (23, 1), (23, 1), (67, 1), (67, 1), (29, 1), (11, 1), (83, 1), (97, 1), (83, 1), (2, 2)] a
Test-25 [(79, 2), (5, 3), (11, 2), (83, 1), (23, 1), (53, 1), (73, 1), (11, 3), (97, 1), (97, 1), (83, 1), (71, 1), (83, 1), (29, 1), (43, 1), (7, 1)] [(61, 1), (43, 1), (61, 1), (5, 3), (97, 1), (79, 1), (2, 1), (31, 1), (43, 1), (5, 4), (53, 1), (61, 1), (59, 1), (83, 1), (17, 1)] a
Test-26 [(53, 1), (83, 1), (23, 1), (47, 1), (83, 1), (31, 1), (2, 1)] [(97, 2), (73, 1), (59, 1), (71, 1), (59, 1), (7, 1)] a
Test-27 [(73, 1), (41, 1), (41, 1), (89, 1), (31, 1), (83, 1), (2, 1)] [(97, 2), (71, 1), (19, 1), (79, 1), (11, 1), (11, 1), (37, 1), (3, 1)] b
Test-28 [(89, 2), (67, 1), (83, 1), (79, 1), (61, 1), (79, 1), (71, 1), (89, 1), (29, 1), (41, 1), (5, 1)] [(83, 1), (23, 2), (59, 1), (23, 2), (2, 5), (53, 1), (41, 1), (53, 1), (89, 1), (7, 1)] a
Test-29 [(73, 1), (97, 1), (61, 1), (89, 1), (41, 1), (2, 1)] [(97, 2), (89, 1), (67, 1), (67, 1), (3, 1), (2, 1)] b
Test-30 [(97, 1), (89, 2), (97, 1), (67, 1), (5, 1), (79, 1), (71, 1), (23, 1), (7, 1)] [(37, 1), (19, 1), (37, 2), (73, 1), (31, 1), (47, 1), (47, 1), (7, 1), (3, 1)] b
Test-31 [(11, 2), (73, 1), (31, 2), (73, 1), (89, 1), (83, 1), (2, 5), (3, 1)] [(83, 2), (97, 1), (23, 2), (23, 1), (31, 2), (53, 1), (13, 1)] a
Test-32 [(73, 2), (67, 1), (37, 2), (71, 1), (29, 2), (5, 2), (19, 1), (67, 1), (53, 1), (3, 1)] [(29, 2), (79, 1), (29, 2), (79, 1), (59, 1), (97, 1), (61, 1), (79, 1), (17, 1), (3, 1)] a
Test-33 [(71, 1), (53, 2), (13, 3), (83, 1), (89, 1), (2, 1), (7, 1), (2, 1)] [(67, 2), (29, 1), (97, 1), (79, 1), (41, 1), (3, 1), (2, 1)] a
Test-34 [(83, 1), (83, 1), (89, 1), (37, 1), (41, 1), (7, 2), (97, 1), (23, 1), (2, 2), (5, 1), (2, 1)] [(83, 2), (89, 1), (41, 2), (5, 4), (53, 1), (7, 2), (73, 1), (23, 1), (2, 1), (3, 1)] a
Test-35 [(83, 1), (59, 1), (43, 2), (83, 1), (31, 1), (71, 1), (23, 1), (2, 1)] [(29, 2), (79, 2), (73, 1), (23, 2), (73, 1), (29, 1), (13, 1)] a
Test-36 [(61, 2), (73, 1), (71, 2), (53, 1), (53, 1), (37, 1), (13, 2), (83, 1), (31, 1), (67, 1), (67, 1), (17, 1)] [(61, 1), (19, 1), (97, 1), (23, 1), (43, 1), (71, 1), (89, 1), (11, 1), (7, 1), (79, 1), (71, 1), (17, 1)] b
Test-37 [(89, 1), (59, 2), (67, 1), (2, 3), (3, 1)] [(61, 1), (79, 2), (13, 1), (37, 1)] a
Test-38 [(43, 2), (53, 1), (61, 1), (31, 1), (23, 2), (71, 1), (31, 1), (53, 1)] [(83, 2), (41, 1), (71, 1), (79, 1), (67, 1), (97, 1), (71, 1), (7, 1)] b
Test-39 [(29, 1), (89, 1), (97, 1), (73, 1), (41, 1), (47, 1), (23, 1), (31, 1), (41, 1), (97, 1), (41, 1), (41, 1), (73, 1), (89, 1), (2, 5), (2, 1)] [(89, 2), (89, 1), (11, 1), (11, 2), (31, 1), (59, 1), (59, 1), (53, 1), (23, 1), (83, 1), (59, 1), (61, 1), (53, 1), (23, 2), (2, 1)] a
Test-40 [(67, 1), (97, 2), (13, 2), (47, 1), (37, 1)] [(73, 1), (61, 1), (59, 1), (71, 1), (7, 1)] b
Test-41 [(41, 2), (41, 1), (37, 1), (3, 1)] [(89, 2), (17, 2), (23, 1), (3, 1), (2, 1)] b
Test-42 [(73, 1), (59, 2), (59, 2), (71, 1), (41, 2), (3, 1)] [(89, 1), (97, 1), (79, 1), (59, 1), (29, 2), (43, 1), (2, 1)] b
Test-43 [(83, 1), (97, 2), (43, 1), (13, 2), (2, 3), (5, 1), (2, 1)] [(79, 1), (71, 1), (37, 1), (71, 1), (19, 1), (2, 2)] a
Test-44 [(41, 1), (83, 2), (17, 2), (71, 1), (5, 1), (83, 1), (47, 1), (2, 1)] [(13, 3), (73, 1), (79, 1), (53, 1), (67, 1), (97, 1), (5, 1), (2, 1)] b
Test-45 [(71, 2), (11, 2), (31, 2), (83, 1), (47, 1), (29, 2), (2, 1), (2, 1)] [(47, 2), (59, 1), (5, 2), (23, 2), (67, 1), (11, 1), (2, 1)] a
Test-46 [(53, 1), (47, 1), (61, 2), (53, 1), (83, 1), (41, 1), (83, 1), (19, 1), (37, 1), (23, 1), (2, 1)] [(61, 1), (11, 3), (53, 2), (5, 1), (47, 1), (59, 1), (37, 2), (79, 1), (61, 1), (17, 1)] a
Test-47 [(89, 1), (59, 2), (37, 1), (97, 1), (31, 1), (47, 1), (71, 1), (19, 1), (41, 1), (43, 1), (61, 1), (67, 1), (13, 1)] [(61, 2), (79, 1), (67, 1), (41, 2), (19, 1), (31, 1), (61, 1), (23, 1), (59, 1), (83, 1), (29, 1), (47, 1), (3, 1)] b
Test-48 [(61, 1), (73, 1), (89, 1), (23, 1), (73, 1), (23, 2), (43, 1), (17, 1), (47, 1), (23, 1), (2, 1), (3, 1)] [(43, 2), (11, 1), (61, 2), (89, 1), (97, 1), (47, 2), (31, 2), (53, 1), (17, 1), (7, 1), (3, 1)] a
Test-49 [(73, 1), (11, 1), (71, 1), (73, 1), (19, 1), (3, 2), (2, 1)] [(97, 2), (17, 2), (31, 1), (3, 1), (5, 1), (5, 1)] a
Test-50 [(97, 2), (61, 1), (89, 1), (29, 1), (83, 1), (41, 1), (3, 1), (5, 1), (2, 1)] [(31, 1), (53, 1), (89, 1), (43, 1), (17, 1), (31, 1), (11, 1), (3, 1)] a
Test-51 [(17, 1), (5, 2), (29, 1), (61, 2), (53, 2), (47, 1), (67, 1)] [(19, 1), (11, 3), (41, 2), (97, 1), (71, 1), (79, 1), (7, 1)] b
Test-52 [(89, 2), (61, 1), (19, 2), (97, 1), (43, 1), (71, 1)] [(29, 2), (83, 1), (19, 2), (41, 1), (23, 1), (97, 1)] b
Test-53 [(97, 1), (83, 2), (73, 1), (89, 1), (43, 2), (79, 1), (23, 1), (5, 1), (43, 1), (19, 1), (97, 1), (29, 1)] [(71, 1), (73, 1), (29, 1), (89, 1), (71, 1), (79, 1), (41, 1), (67, 1), (47, 1), (41, 1), (97, 1), (3, 1)] b
Test-54 [(23, 1), (71, 1), (61, 1), (19, 1), (43, 2), (61, 1), (41, 1), (83, 1), (43, 1), (53, 1), (17, 1), (37, 1), (43, 1), (29, 1), (53, 1), (97, 1), (83, 1), (5, 2), (11, 1), (17, 1)] [(97, 1), (79, 2), (67, 1), (89, 1), (41, 1), (89, 1), (31, 1), (61, 1), (11, 1), (43, 1), (83, 1), (23, 1), (71, 1), (7, 2), (79, 1), (19, 1), (83, 1), (97, 1), (7, 1), (3, 1)] b
Test-55 [(7, 1), (3, 3), (67, 1), (3, 2), (53, 2), (2, 1)] [(83, 2), (29, 1), (73, 1), (71, 1), (17, 1)] a
Test-56 [(47, 1), (5, 4), (67, 1), (67, 2), (89, 1), (73, 1), (37, 1), (11, 1), (71, 1), (5, 1), (83, 1), (53, 1), (31, 1), (29, 1), (2, 2)] [(61, 2), (89, 1), (11, 1), (59, 1), (43, 1), (31, 1), (37, 1), (43, 1), (83, 1), (37, 1), (17, 1), (61, 1), (47, 1), (2, 2), (3, 1)] b
Test-57 [(31, 2), (71, 1), (61, 1), (31, 1), (43, 1), (29, 1), (83, 1), (61, 1), (47, 1), (73, 1), (37, 1)] [(71, 2), (43, 2), (89, 1), (73, 1), (73, 1), (2, 10), (71, 1), (53, 1), (83, 1), (89, 1), (47, 1), (11, 1)] b
Test-58 [(43, 1), (97, 1), (67, 1), (41, 2), (71, 1), (53, 1), (59, 1), (79, 1), (67, 1), (97, 1), (37, 1)] [(37, 2), (97, 1), (59, 2), (41, 1), (47, 2), (61, 1), (89, 1), (97, 1), (97, 1), (67, 1), (41, 1)] b
Test-59 [(31, 2), (37, 2), (83, 1), (47, 1), (41, 1), (59, 1), (67, 1), (41, 1), (59, 2), (23, 2), (19, 1), (5, 1)] [(59, 1), (53, 2), (17, 1), (67, 1), (5, 1), (71, 1), (61, 1), (17, 1), (97, 1), (83, 1), (7, 1), (5, 1)] b
Test-60 [(29, 1), (83, 1), (23, 2), (97, 1), (89, 1), (61, 1), (23, 1), (13, 1), (3, 1)] [(47, 1), (59, 2), (37, 1), (73, 2), (79, 1), (29, 1), (53, 1), (13, 1), (3, 1), (2, 1)] b
Test-61 [(43, 2), (37, 2), (67, 2), (2, 2), (97, 1), (97, 1), (59, 1), (79, 1), (13, 1), (31, 1), (71, 1), (73, 1), (53, 1), (7, 1)] [(29, 2), (23, 1), (7, 1), (61, 1), (47, 1), (31, 1), (29, 1), (23, 2), (47, 1), (5, 1), (29, 1), (29, 1), (31, 1)] a
Test-62 [(79, 2), (23, 1), (67, 1), (29, 2), (29, 1), (67, 1), (2, 3)] [(41, 2), (29, 2), (19, 1), (67, 1), (73, 1), (41, 1), (2, 1)] b
Test-63 [(59, 2), (67, 1), (83, 1), (3, 4), (97, 1), (61, 2), (47, 1), (5, 3), (19, 1), (3, 1)] [(23, 1), (5, 1), (43, 2), (89, 1), (89, 1), (41, 1), (89, 1), (67, 1), (5, 1), (19, 1)] b
Test-64 [(37, 1), (67, 1), (89, 1), (67, 1), (83, 1), (2, 1)] [(97, 2), (61, 1), (71, 1), (89, 1), (5, 2)] a
Test-65 [(97, 1), (29, 2), (5, 4), (13, 1), (47, 2), (83, 1), (13, 2), (41, 1), (2, 1)] [(71, 2), (17, 2), (19, 1), (11, 2), (71, 1), (17, 2), (3, 4), (3, 2)] a
Test-66 [(97, 1), (37, 1), (71, 1), (31, 1), (83, 1), (3, 2)] [(97, 2), (97, 1), (47, 1), (53, 1), (53, 1), (11, 1), (2, 1)] b
Test-67 [(67, 2), (89, 1), (43, 2), (79, 1), (71, 1), (79, 1), (29, 1), (17, 1), (73, 1), (97, 1), (13, 1)] [(59, 1), (71, 1), (43, 2), (29, 2), (37, 1), (89, 1), (47, 1), (19, 1), (73, 1), (19, 1), (11, 1)] b
Test-68 [(61, 1), (11, 2), (61, 2), (71, 1), (43, 2), (71, 1), (97, 1), (5, 1)] [(37, 2), (67, 1), (23, 2), (97, 1), (43, 2), (61, 1), (29, 1), (3, 1)] b
Test-69 [(89, 2), (31, 1), (73, 1), (23, 1), (79, 1), (2, 1)] [(97, 1), (41, 2), (47, 1), (43, 1), (3, 1)] a
Test-70 [(71, 2), (59, 1), (13, 3), (5, 3), (2, 2), (41, 1), (43, 2), (71, 1), (7, 1)] [(89, 1), (89, 1), (97, 1), (53, 1), (2, 6), (61, 1), (71, 1), (79, 1), (3, 1)] b
Test-71 [(53, 1), (37, 1), (67, 2), (3, 6), (53, 1), (3, 1), (97, 1), (23, 1), (31, 2), (61, 1), (2, 9), (97, 1), (89, 1), (61, 1), (89, 1), (41, 1), (23, 1), (7, 1)] [(7, 1), (89, 1), (41, 2), (89, 1), (97, 1), (47, 1), (83, 1), (17, 1), (83, 1), (37, 1), (97, 1), (71, 1), (83, 1), (37, 1), (31, 1), (11, 1), (13, 1), (2, 1)] b
Test-72 [(41, 2), (47, 1), (97, 1), (29, 1), (53, 1), (79, 1), (97, 1), (97, 1), (13, 1), (41, 1), (67, 1), (97, 1), (7, 2), (23, 1), (19, 1), (3, 1)] [(23, 2), (43, 2), (7, 1), (71, 1), (67, 2), (31, 1), (19, 1), (43, 1), (61, 1), (79, 1), (79, 1), (79, 1), (61, 1), (61, 1), (43, 1), (7, 1)] a
Test-73 [(61, 1), (73, 1), (89, 1), (17, 1), (89, 1), (59, 1), (17, 1), (53, 1), (79, 1), (5, 3), (73, 1), (83, 1), (97, 1), (11, 1), (5, 1), (2, 1)] [(83, 2), (37, 2), (97, 1), (73, 1), (73, 1), (53, 1), (79, 1), (97, 1), (37, 1), (83, 1), (53, 1), (73, 1), (83, 1), (5, 1), (3, 1)] a
Test-74 [(43, 1), (97, 1), (71, 1), (61, 1), (59, 1), (67, 1), (67, 1), (2, 6), (31, 1), (23, 2), (79, 1), (89, 1), (47, 1), (3, 1)] [(89, 2), (17, 2), (37, 1), (41, 1), (41, 1), (59, 1), (59, 1), (17, 1), (43, 1), (13, 1), (83, 1), (67, 1), (23, 1)] a
Test-75 [(73, 2), (2, 10), (23, 2), (29, 1), (5, 3), (67, 1), (79, 1), (61, 1), (71, 1), (13, 1)] [(89, 1), (47, 2), (47, 1), (71, 1), (29, 1), (83, 1), (73, 1), (53, 1), (19, 1)] a
Test-76 [(53, 2), (83, 1), (2, 2), (97, 1), (11, 2), (97, 1), (83, 1), (43, 1), (19, 1)] [(13, 1), (79, 2), (97, 1), (61, 1), (97, 1), (2, 4), (83, 1), (31, 1), (5, 1)] b
Test-77 [(53, 2), (89, 1), (47, 1), (13, 2), (23, 1), (79, 1), (3, 1)] [(47, 2), (5, 4), (13, 2), (31, 2), (53, 2), (5, 1), (3, 1)] b
Test-78 [(83, 1), (79, 2), (17, 1), (17, 1), (23, 2), (47, 1), (29, 2), (37, 1), (13, 1)] [(97, 1), (97, 1), (97, 1), (17, 1), (37, 2), (19, 2), (79, 1), (47, 1), (11, 1)] b
Test-79 [(73, 2), (89, 1), (73, 1), (53, 2), (73, 1), (29, 2), (23, 1), (73, 1), (2, 2), (2, 1)] [(89, 1), (79, 1), (67, 1), (43, 1), (79, 1), (79, 1), (59, 1), (61, 1), (11, 2), (7, 1)] a
Test-80 [(97, 1), (47, 1), (37, 2), (83, 1), (29, 1), (37, 1)] [(79, 1), (53, 2), (73, 2), (79, 1), (5, 1), (37, 1)] b
Test-81 [(3, 4), (97, 1), (19, 1), (73, 1), (79, 1), (31, 1), (41, 1), (47, 1), (31, 1), (43, 1), (97, 1), (41, 1), (89, 1), (3, 2), (37, 1), (89, 1), (97, 1), (3, 1)] [(79, 2), (7, 3), (83, 1), (53, 1), (43, 1), (97, 1), (89, 1), (59, 1), (73, 1), (83, 1), (59, 1), (97, 1), (13, 1), (31, 2), (23, 2), (97, 1), (71, 1), (5, 1)] b
Test-82 [(61, 1), (11, 2), (53, 2), (41, 1), (83, 1), (79, 1), (37, 1), (61, 1), (13, 1), (2, 1)] [(79, 2), (61, 1), (89, 1), (97, 1), (47, 1), (71, 1), (67, 1), (13, 1), (7, 1)] a
Test-83 [(59, 2), (73, 1), (89, 1), (79, 1), (13, 2), (79, 1), (37, 1), (89, 1), (23, 2), (29, 2), (43, 1), (71, 1), (89, 1), (13, 1)] [(61, 1), (89, 1), (53, 2), (29, 2), (67, 1), (17, 1), (43, 1), (71, 1), (71, 1), (53, 1), (79, 1), (97, 1), (17, 1), (3, 1)] b
Test-84 [(53, 2), (83, 2), (41, 1), (11, 1), (13, 1), (3, 1)] [(73, 1), (41, 1), (97, 1), (13, 1), (7, 1), (3, 1)] b
Test-85 [(5, 4), (89, 1), (19, 1), (79, 1), (7, 1), (79, 1), (89, 1), (73, 1), (59, 1), (67, 1), (79, 1), (29, 1), (43, 1), (23, 1), (83, 1), (97, 1), (89, 1), (43, 1), (41, 1), (7, 1)] [(79, 2), (29, 2), (71, 1), (2, 7), (67, 1), (79, 1), (89, 1), (83, 1), (83, 1), (97, 1), (53, 1), (73, 1), (37, 1), (59, 1), (47, 1), (89, 1), (43, 1), (71, 1), (29, 1)] a
Test-86 [(13, 2), (31, 1), (41, 1), (79, 2), (97, 1), (71, 1), (3, 2)] [(59, 1), (53, 2), (3, 3), (17, 2), (47, 1), (79, 1), (29, 1), (2, 1)] b
Test-87 [(17, 1), (23, 1), (71, 1), (7, 3), (19, 1), (37, 2), (37, 1), (73, 1), (11, 1), (19, 1), (3, 1), (2, 1)] [(5, 1), (67, 1), (43, 2), (23, 2), (73, 2), (97, 1), (41, 1), (71, 1), (13, 1), (5, 1), (5, 1), (2, 1)] b
Test-88 [(67, 2), (67, 2), (43, 1), (43, 1), (7, 1), (17, 1), (7, 1)] [(79, 1), (5, 4), (53, 1), (41, 1), (71, 1), (31, 1), (5, 1)] a
Test-89 [(83, 2), (19, 1), (67, 1), (67, 1), (73, 1), (83, 1), (41, 1), (43, 1), (71, 1), (29, 1), (17, 2), (41, 1), (7, 1)] [(41, 2), (31, 1), (61, 1), (41, 1), (47, 1), (47, 1), (2, 7), (71, 1), (37, 1), (83, 1), (37, 1), (17, 1)] a
Test-90 [(71, 2), (67, 1), (43, 1), (79, 1), (89, 1), (5, 1), (5, 1)] [(67, 2), (71, 1), (73, 1), (29, 1), (3, 1), (2, 2), (2, 1)] b
Test-91 [(61, 1), (97, 1), (29, 1), (79, 1), (19, 1), (17, 1), (47, 1), (37, 1), (11, 2), (53, 1), (37, 1), (11, 1)] [(73, 1), (59, 2), (71, 2), (43, 1), (83, 1), (53, 1), (47, 1), (83, 1), (59, 1), (67, 1), (7, 3), (19, 1)] a
Test-92 [(61, 1), (71, 2), (31, 1), (61, 1), (89, 1), (71, 1), (89, 1), (97, 1), (43, 1), (47, 1), (83, 1), (83, 1), (67, 1), (79, 1), (7, 1), (2, 1)] [(23, 2), (47, 2), (31, 1), (47, 1), (97, 1), (3, 4), (23, 1), (89, 1), (59, 1), (23, 2), (61, 1), (13, 2), (89, 1), (29, 1), (7, 1)] a
Test-93 [(73, 2), (83, 1), (59, 2), (97, 1), (13, 1)] [(29, 1), (79, 1), (29, 2), (41, 1), (7, 1)] b
Test-94 [(73, 2), (79, 1), (13, 1), (5, 1)] [(79, 1), (67, 2), (2, 2), (2, 1)] b
Test-95 [(3, 2), (89, 2), (31, 1), (67, 1), (23, 1), (61, 1), (97, 1), (83, 1), (13, 1), (11, 1)] [(31, 2), (97, 1), (67, 1), (53, 1), (41, 1), (83, 1), (71, 1), (17, 2), (11, 1), (11, 1)] b
Test-96 [(71, 2), (73, 1), (97, 1), (79, 1), (71, 1), (67, 1), (71, 1), (17, 1)] [(47, 2), (11, 3), (83, 1), (47, 1), (67, 1), (3, 6), (5, 1), (13, 1)] b
Test-97 [(71, 2), (19, 1), (13, 1), (2, 1)] [(17, 3), (5, 1), (7, 1)] a
Test-98 [(47, 2), (83, 1), (67, 2), (29, 1), (71, 1), (13, 2), (43, 1), (97, 1), (79, 1), (79, 1)] [(43, 2), (47, 1), (67, 1), (67, 1), (89, 1), (67, 1), (59, 1), (71, 1), (17, 2), (47, 1)] b
Test-99 [(83, 2), (17, 1), (7, 2), (83, 1), (23, 1), (97, 1), (5, 3), (71, 1), (17, 1), (53, 1), (13, 1), (2, 1)] [(3, 2), (19, 2), (3, 4), (83, 1), (71, 1), (97, 1), (13, 1), (41, 2), (83, 1), (71, 1), (11, 1)] a

Veritabanı yerine doğrudan listeyi import etmek daha hızlı ve kullanışlı geleceğini düşündüğüm için asalusliste.py diye bir dosya oluşturdum. İçinde asallar ve üsleri olmak üzere iki boyutlu bir liste var. Sayı küçüldükçe belki listeyi de temizlemek gerekir, sıralamayı pek iyi yaptığım söylenemez bu konuda.

Listeye ulaşmak için tıklayınız.

Edit: Hatta listeyi üç sütunlu hale getirip değerlerini de ekledim, hazır hesaplamışken tekrar tekrar hesaplamasın program.

1 Beğeni

Eksikliklerle birlikte şu hale indi. numpy konusunda biraz eksiğim var, daha etkin kullanılabilir.

import asalusliste
import numpy as np

kalancop = 1000000
asal_us_deger = np.array(asalusliste.asal_us)

def asal(n):
  for i in range(2,int(n**0.5)+1):
    if (n%i) == 0:
      return False
  return True

def tablo_kucult():
   # kalan çöplerin üstündeki değerleri numpy diziden sil
   pass

def kalan_kontrol():
   # kalan çöpler listede var mı diye kontrol
   # varsa return değeri alma
   pass
      

def kullanici_kontrol(p,n):
    #  işlem yapmak yerine numpy dizisinde var mı yok mu kontrol?
    if asal(p) and n>=0 and p**n<=kalancop:
        return True
    else:
        return False
    
def sistem_sayi(copler):
    # kalan asal tablosundan kontrollü bir seçim yapacak
    rast = np.random.choice(asal_us_deger)
    # rast söylenirse eğer kalan kontrol yapacak? (bir sonraki hamle)
    return rast[0],rast[1],rast[2]

print("""Bir masa üzerine 1.000.000 (bir milyon) kibrit çöpü bırakılmıştır. 
      İki kişi bu kibrit çöpleri ile aşağıdaki kurala göre oyun oynuyorlar. 
      Sırası gelen oyuncu bir asal sayı p ve negatif olmayan bir n sayısı seçip masa üzerinden p^n tane kibrit çöpünü alabiliyor. 
      (örneğin 8, 1, 25, 5 ,49, 125 vs) 
      En son kibrit çöpünü alan oyuncu oyunu kazanıyor.""")

while kalancop>0:
    p,n = map(int,input("Bir asal ve bir üs giriniz aralarında boşlukla.").split())
    if kullanici_kontrol(p,n):
        kalancop -= p**n
        print(f"Girdiğiniz sayılar {p} ^ {n} ve kalan çöp sayısı {kalancop}")
    else:
        print("Geçersiz, lütfen yeniden girin")
        continue
    
    sp,sn,sd= sistem_sayi()
    kalancop -= sd
    print(f"Söylediğim sayılar {sp} ^ {sn} ve kalan çöp sayısı {kalancop}")

Öğrenmek istediklerim

Örneğin [[2,2,4],[2,3,8],[3,2,9]] gibi bir listeden son elemanları 5 den büyük olanları listeden nasıl silerim.

Bir iç listede bulunan değerin liste indexini nasıl öğrenirim. Yani örnekteki 8 i aratıp liste den 1 indexini almak gibi.

1 Beğeni