Skip to content

Instantly share code, notes, and snippets.

@whitehat101
Last active May 12, 2017 11:57
Show Gist options
  • Save whitehat101/9e7c19599228128f91e5d397286e2a5f to your computer and use it in GitHub Desktop.
Save whitehat101/9e7c19599228128f91e5d397286e2a5f to your computer and use it in GitHub Desktop.
Amatrure Radio (HAM) Extra License Question Pool Analysis

HAM Extra

Extra class (Element 4) Question Pool is effective July 1, 2016 and is valid until June 30, 2020.

notice that:

  • 45% of questions are the longist answer
  • 29% of questions are the shortist answer
  • (only 25% are medium-length)

Answers are reasonably distributed A,B,C,D, but D is least likely.

pool = File.read "2016 ExtraClassPool2nd Errata.txt"
r = %r{\w\d\w\d{2}\s\((?<answer>\w+)\).*\n(?<question>.+)\n((\w)\.\s(?<A>.+)\n)((\w)\.\s(?<B>.+)\n)((\w)\.\s(?<C>.+)\n)((\w)\.\s(?<D>.+)\n)}
long = short = count = 0
answers = []
pool.split(/~~/).each do |question|
match = question.match r
if match
count += 1
answers << match[:answer]
ans_len = match[match[:answer]].length
lengths = [match['A'].length, match[:B].length, match[:C].length, match[:D].length]
max_len = lengths.max
min_len = lengths.min
long += 1 if ans_len == max_len
short += 1 if ans_len == min_len
end
end
puts count
puts long
puts 100.0*long/count
puts short
puts 100.0*short/count
puts "other: #{count-long-short}"
puts 100.0*long/count + 100.0*short/count
puts "A:#{answers.count 'A'} B:#{answers.count 'B'} C:#{answers.count 'C'} D:#{answers.count 'D'}"
puts :done
702
317
45.15669515669516
204
29.05982905982906
other: 181
74.21652421652422
A:181 B:176 C:177 D:168
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment