Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def solution(a, b)
- # Sprawdzenie czy wartości w tablicy A są liczbami naturalnymi
- counter_a = 0
- (0...(a.length)).each do |check|
- if ((a[check].is_a? Integer) && (a[check] >= 0))
- counter_a += 1
- end
- end
- # Sprawdzenie czy wartości w tablicy B są liczbami naturalnymi
- counter_b = 0
- (0...(b.length)).each do |check|
- if ((b[check].is_a? Integer) && (b[check] >= 0))
- counter_b += 1
- end
- end
- c = [] # Deklaracja końcowej tablicy
- if ((counter_a != a.length) || (counter_b != b.length))
- puts "Blad. Podane wartosci nie sa liczbami naturalnymi"
- else
- help_hash = {} # Przechowanie sprawdzonych wartości z tablicy A pod kątem występowań w tablicy B (czy liczba wystąpień jest liczbą pierwszą)
- (0...(a.length)).each do |exist|
- if (help_hash.has_key? a[exist])
- # Dodanie wartosci do tablicy C, jeśli liczba jest już sprawdzona w pomocniczym hashu i liczba jej wystąpień w ciągu B nie jest liczba pierwszą
- if (help_hash[a[exist]] == "not_prime")
- c << a[exist]
- end
- else
- # Zliczenie ilości wystąpień liczby w ciągu B, jeśli nie została ona wcześniej sprawdzona
- repetition = 0 # Licznik ile razy liczba z tablicy A występuje w tablicy B
- if (b.include? a[exist])
- (0...(b.length)).each do |compare|
- if (b[compare] == a[exist])
- repetition += 1
- end
- end
- # Sprawdzenie czy ilość wystąpień liczby w ciągu B jest liczba pierwszą
- if repetition > 1
- number_of_divisors = 0
- (1..repetition).each do |prime|
- result = repetition%prime
- if result == 0
- number_of_divisors += 1
- end
- end
- if number_of_divisors > 2
- help_hash[a[exist]] = "not_prime"
- c << a[exist]
- else
- help_hash[a[exist]] = "prime"
- end
- else
- help_hash[a[exist]] = "not_prime"
- c << a[exist]
- end
- else
- c << a[exist]
- help_hash[a[exist]] = "not_prime"
- end
- end
- end
- end
- print c
- end
- #solution([1, 2, 3, 4, 5], [4, 4, 3, 4, 5, 6]) # => return [1, 2, 3, 5]
- #solution([2,3,9,2,5,1,3,7,10], [2,1,3,4,3,10,6,6,1,7,10,10,10]) # => return [2,9,2,5,7,10]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement