<commit_before><commit_msg>Solve 53<commit_after>def factorial(number)
  return 1 if number == 0
  (1..number).reduce(:*)
end

start = Time.now

count = 0

n = 23
r = 10
cache = (0..100).map { |x| x = factorial(x) }

until (n == 100 && r == 100) do
  count += 1 if cache[n] / (cache[r] * cache[n - r]) > 1_000_000
  if r == n
    n += 1
    r = 1
  else
    r += 1
  end
end

p count
# 4075

p "Solved in #{(Time.now - start) * 1000} ms"

{'fraction_non_alphanumeric': 0.17579908675799086, 'fraction_numerical': 0.08904109589041095, 'mean_word_length': 2.512, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 4, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '923362', 'n_tokens_mistral': 219, 'n_tokens_neox': 184, 'n_words': 59}