Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using StatsBase
- # valitaan joukosta a uniikkeja n luvun osajoukkoja
- # idea alunperin Ilpo Kantonen
- # Juhani Kaukoranta 3.6.2023
- a=[71, 22, 51, 6, 53, 49, 69, 70, 48, 98, 20, 75, 0, 25, 19, 81, 99, 46, 31, 29, 7, 73, 55, 18, 64, 37, 33, 14, 11, 84, 21]
- # tai esim a = rand(1:99,50) tuottaa 50 kpl kokonaislukuja väliltä 1...99
- # etsi n kpl m luvun ryhmiä joiden lukujen summa > raja
- function hakuylirajan(a,n,m,raja)
- # a = lukujoukko josta valitaan osajoukko
- # n = arvontojen lukumäärää
- # m = osajoukon koko
- # raja = osajoukon summa
- osajoukot = []
- b = sort(sample(a,m,replace=false))
- while sum(b) <= raja
- b = sort(sample(a,m,replace=false)) # sum > raja
- end # löydetään eka osajoukko jonka summa > raja
- push!(osajoukot,b) # tallennetaan
- j = 1 # laskee löydettyjen uniikkien osajoukkojen määrää
- for i = 2:n
- b = sort(sample(a,m,replace=false))
- while sum(b) <= raja
- b = sort(sample(a,m,replace=false)) # sum > raja
- end
- # löydetty osajoukko, katsotaan onko aiemman duplikaatti
- duplicat = false # ei duplikaattia
- for k = 1 : j
- if b == osajoukot[k]
- duplicat = true # duplikaatti
- end
- end
- if duplicat == false
- push!(osajoukot,b) # lisättiin listaan
- j += 1 # kirjaa löydettyjen kuusikoiden lukumäärää
- end
- end
- println("löydettyjä osajoukkoja ",j)
- return sort(osajoukot)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement