Hover highlighted text to see recorded values.
Rakefile
1 #!/usr/bin/env ruby
2 # frozen_string_literal: true
3
4 require "rake"🔎#1: false
5
6 task default: [] do
7 ruby "sample.rb"🔎#1: true
8 end🔎#1: <Rake::Task default => []>
sample.rb
1 require_relative "sample2"🔎#1: true
2 require_relative "sample3"🔎#1: true
3
4 def score(n)
5 base = n🔎#1: 0
#2: 1
#3: 2 + 1🔎#1: 1
#2: 2
#3: 3
6 scaled = Sample2🔎#1: Sample2
#2: Sample2
#3: Sample2.scale(base🔎#1: 1
#2: 2
#3: 3)🔎#1: 2
#2: 4
#3: 6
7 squares = Sample3🔎#1: Sample3
#2: Sample3
#3: Sample3.series(n🔎#1: 0
#2: 1
#3: 2)🔎#1: []
#2: [1]
#3: [1, 4]
8 squares🔎#1: []
#2: [1]
#3: [1, 4].sum🔎#1: 0
#2: 1
#3: 5 + scaled🔎#1: 2
#2: 4
#3: 6🔎#1: 2
#2: 5
#3: 11
9 end
10
11 labels = []
12 totals = []
13
14 3.times do
15 n = it🔎#1: 0
#2: 1
#3: 2
16 total = score(n🔎#1: 0
#2: 1
#3: 2)🔎#1: 2
#2: 5
#3: 11
17 labels🔎#1: ["n0=2", "n1=5", "n2=11"]
#2: ["n0=2", "n1=5", "n2=11"]
#3: ["n0=2", "n1=5", "n2=11"] << Sample2🔎#1: Sample2
#2: Sample2
#3: Sample2.format("n#{n🔎#1: 0
#2: 1
#3: 2}", total🔎#1: 2
#2: 5
#3: 11)🔎#1: "n0=2"
#2: "n1=5"
#3: "n2=11"🔎#1: ["n0=2", "n1=5", "n2=11"]
#2: ["n0=2", "n1=5", "n2=11"]
#3: ["n0=2", "n1=5", "n2=11"]
18 totals🔎#1: [2, 5, 11]
#2: [2, 5, 11]
#3: [2, 5, 11] << total🔎#1: 2
#2: 5
#3: 11🔎#1: [2, 5, 11]
#2: [2, 5, 11]
#3: [2, 5, 11]
19 end🔎#1: 3
20
21 flags = totals🔎#1: [2, 5, 11].map { |v| v🔎#1: 2
#2: 5
#3: 11 > 5🔎#1: false
#2: false
#3: true }🔎#1: [false, false, true]
22 stats = {
23 count: totals🔎#1: [2, 5, 11].length🔎#1: 3,
24 max: totals🔎#1: [2, 5, 11].max🔎#1: 11,
25 min: totals🔎#1: [2, 5, 11].min🔎#1: 2
26 }
27
28 buckets = Sample3🔎#1: Sample3.bucketize(totals🔎#1: [2, 5, 11])🔎#1: {even: [2], odd: [5, 11]}
29 summary = "#{stats🔎#1: {count: 3, max: 11, min: 2}[:count]🔎#1: 3} items, max=#{stats🔎#1: {count: 3, max: 11, min: 2}[:max]🔎#1: 11}"
30
31 puts labels🔎#1: ["n0=2", "n1=5", "n2=11"].join(", ")🔎#1: "n0=2, n1=5, n2=11"🔎#1: nil
32 p flags🔎#1: [false, false, true]🔎#1: [false, false, true]
33 p stats🔎#1: {count: 3, max: 11, min: 2}🔎#1: {count: 3, max: 11, min: 2}
34 p buckets🔎#1: {even: [2], odd: [5, 11]}🔎#1: {even: [2], odd: [5, 11]}
35 p summary🔎#1: "3 items, max=11"🔎#1: "3 items, max=11"
sample2.rb
1 module Sample2
2 FACTOR = 2
3
4 def self.format(label, value)
5 "#{label🔎#1: "n0"
#2: "n1"
#3: "n2"}=#{value🔎#1: 2
#2: 5
#3: 11}"
6 end
7
8 def self.scale(value)
9 value🔎#1: 1
#2: 2
#3: 3 * FACTOR🔎#1: 2
#2: 2
#3: 2🔎#1: 2
#2: 4
#3: 6
10 end
11 end
sample3.rb
1 module Sample3
2 def self.bucketize(values)
3 values🔎#1: [2, 5, 11].group_by { |v| v🔎#1: 2
#2: 5
#3: 11 % 2🔎#1: 0
#2: 1
#3: 1 == 0🔎#1: true
#2: false
#3: false ? :even : :odd }🔎#1: {even: [2], odd: [5, 11]}
4 end
5
6 def self.series(n)
7 (1..n🔎#1: 0
#2: 1
#3: 2).map { |i| i🔎#1: 1
#2: 1
#3: 2 * i🔎#1: 1
#2: 1
#3: 2🔎#1: 1
#2: 1
#3: 4 }🔎#1: []
#2: [1]
#3: [1, 4]
8 end
9 end