Advertisement
jukaukor

osajoukot.jl

Jun 2nd, 2023 (edited)
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.50 KB | None | 0 0
  1. using StatsBase
  2. # valitaan joukosta a uniikkeja n luvun osajoukkoja
  3. # idea alunperin Ilpo Kantonen
  4. # Juhani Kaukoranta 3.6.2023
  5. 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]
  6. # tai esim a = rand(1:99,50) tuottaa 50 kpl kokonaislukuja väliltä 1...99
  7. # etsi n kpl m luvun ryhmiä joiden lukujen summa > raja
  8. function hakuylirajan(a,n,m,raja)
  9. # a = lukujoukko josta valitaan osajoukko
  10. # n = arvontojen lukumäärää
  11. # m = osajoukon koko
  12. # raja = osajoukon summa
  13. osajoukot = []
  14. b = sort(sample(a,m,replace=false))
  15. while sum(b) <= raja
  16. b = sort(sample(a,m,replace=false)) # sum > raja
  17. end # löydetään eka osajoukko jonka summa > raja
  18. push!(osajoukot,b) # tallennetaan
  19. j = 1 # laskee löydettyjen uniikkien osajoukkojen määrää
  20. for i = 2:n
  21. b = sort(sample(a,m,replace=false))
  22. while sum(b) <= raja
  23. b = sort(sample(a,m,replace=false)) # sum > raja
  24. end
  25. # löydetty osajoukko, katsotaan onko aiemman duplikaatti
  26. duplicat = false # ei duplikaattia
  27. for k = 1 : j
  28. if b == osajoukot[k]
  29. duplicat = true # duplikaatti
  30. end
  31. end
  32. if duplicat == false
  33. push!(osajoukot,b) # lisättiin listaan
  34. j += 1 # kirjaa löydettyjen kuusikoiden lukumäärää
  35. end
  36. end
  37. println("löydettyjä osajoukkoja ",j)
  38. return sort(osajoukot)
  39. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement