5 more solutions
							parent
							
								
									91c02fef43
								
							
						
					
					
						commit
						786860f59f
					
				| 
						 | 
				
			
			@ -0,0 +1,5 @@
 | 
			
		|||
require 'prime'
 | 
			
		||||
 | 
			
		||||
def solution_up_to(n)
 | 
			
		||||
  (1..n).map { |x| Prime.prime_division(x).count }.each_cons(4).find_index { |x| x.all? { |y| y == 4} } + 1
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,3 @@
 | 
			
		|||
def series(n)
 | 
			
		||||
  (1..n).map { |x| x ** x }.inject(:+)
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,23 @@
 | 
			
		|||
require 'prime'
 | 
			
		||||
 | 
			
		||||
def four_digit_increasing_by(n)
 | 
			
		||||
  return [] if (9999 - (2*n)) < 0
 | 
			
		||||
  solutions = []
 | 
			
		||||
  (1..(9999 - (2*n))).each do |x|
 | 
			
		||||
    solutions << [x, x + n, x + (2 * n)]
 | 
			
		||||
  end
 | 
			
		||||
  solutions
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
def to_digit_list(num)
 | 
			
		||||
  num.to_s.split('').map(&:to_i)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
def permutations?(number_list)
 | 
			
		||||
  comparison_digit_list = to_digit_list(number_list.first).sort
 | 
			
		||||
  number_list.all? { |x| to_digit_list(x).sort == comparison_digit_list }
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
def find_prime_permutations(n)
 | 
			
		||||
  four_digit_increasing_by(n).select { |x| permutations?(x) }.select { |x| x.all? { |y| Prime.prime?(y) } }
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,22 @@
 | 
			
		|||
require 'prime'
 | 
			
		||||
 | 
			
		||||
def longest_sum_of_consecutive_primes_beneath(n)
 | 
			
		||||
  sum = 0
 | 
			
		||||
  primes = Prime.take_while { |x| (sum += x) < n }
 | 
			
		||||
  longest_prime_count = 0
 | 
			
		||||
  longest_prime_sum = 0
 | 
			
		||||
  prime_list = []
 | 
			
		||||
  (1..primes.count).each do |x|
 | 
			
		||||
    primes.each_cons(x) do |y|
 | 
			
		||||
      subcount = y.inject(:+)
 | 
			
		||||
      if Prime.prime?(subcount)
 | 
			
		||||
        if y.count > longest_prime_count
 | 
			
		||||
          longest_prime_sum = subcount
 | 
			
		||||
          longest_prime_count = y.count
 | 
			
		||||
          prime_list = y
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
  [prime_list, longest_prime_sum]
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,28 @@
 | 
			
		|||
def permutations?(number_list)
 | 
			
		||||
  comparison_digit_list = to_digit_list(number_list.first).sort
 | 
			
		||||
  number_list.all? { |x| to_digit_list(x).sort == comparison_digit_list }
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
def six_multiples(x)
 | 
			
		||||
  [x, 2 * x, 3 * x, 4 * x, 5 * x, 6 * x]
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
def infinite_series
 | 
			
		||||
  Enumerator.new do |y|
 | 
			
		||||
    n = 1
 | 
			
		||||
    loop do
 | 
			
		||||
      y << n
 | 
			
		||||
      n += 1
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
def same_digit_six_multiples
 | 
			
		||||
  series = infinite_series
 | 
			
		||||
  n = series.next
 | 
			
		||||
  loop do
 | 
			
		||||
    result = permutations?(six_multiples(n))
 | 
			
		||||
    return six_multiples(n) if result
 | 
			
		||||
    n = series.next
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
		Loading…
	
		Reference in New Issue