Hover highlighted text to see recorded values.

Rakefile


1 #!/usr/bin/env ruby
2 # frozen_string_literal: true
3 
4 require "rake"
5 
6 task default: [] do
7   ruby "sample.rb"
8 end

  

sample.rb


1 require_relative "sample2"
2 require_relative "sample3"
3 
4 def score(n)
5   base = n + 1
6   scaled = Sample2.scale(base)
7   squares = Sample3.series(n)
8   squares.sum + scaled
9 end
10 
11 labels = []
12 totals = []
13 
14 3.times do
15   n = it
16   total = score(n)
17   labels << Sample2.format("n#{n}", total)
18   totals << total
19 end
20 
21 flags = totals.map { |v| v > 5 }
22 stats = {
23   count: totals.length,
24   max: totals.max,
25   min: totals.min
26 }
27 
28 buckets = Sample3.bucketize(totals)
29 summary = "#{stats[:count]} items, max=#{stats[:max]}"
30 
31 puts labels.join(", ")
32 p flags
33 p stats
34 p buckets
35 p summary

  

sample2.rb


1 module Sample2
2   FACTOR = 2
3 
4   def self.format(label, value)
5     "#{label}=#{value}"
6   end
7 
8   def self.scale(value)
9     value * FACTOR
10   end
11 end

  

sample3.rb


1 module Sample3
2   def self.bucketize(values)
3     values.group_by { |v| v % 2 == 0 ? :even : :odd }
4   end
5 
6   def self.series(n)
7     (1..n).map { |i| i * i }
8   end
9 end