Prepare Python20 Course Experiments

This commit is contained in:
Sebastian Serth
2020-10-25 13:29:26 +01:00
parent 380b1a5ba1
commit fda120559c
4 changed files with 81 additions and 1 deletions

View File

@ -0,0 +1,38 @@
# frozen_string_literal: true
class Python20CourseWeek
def self.get_for(exercise)
case exercise.title
when /Python20 Aufgabe 1/
1
when /Python20 Aufgabe 2/
2
when /Python20 Aufgabe 3/
3
when /Python20 Aufgabe 4/
4
when /Python20 Snake/
4
else
# Not part of the Python20 course
nil
end
end
def self.show_tips?(exercise, user_id)
week = get_for(exercise)
return true if week.nil? # Exercise is not part of the experiment
user_group = UserGroupSeparator.get_tips_group(user_id)
[1, 2].include?(week) && user_group == :show_tips
end
def self.show_linter?(exercise, user_id)
week = get_for(exercise)
return true if week.nil? # Exercise is not part of the experiment
user_group = UserGroupSeparator.get_linter_group(user_id)
[3].include?(week) && user_group == :show_linter
end
end

View File

@ -0,0 +1,30 @@
# frozen_string_literal: true
class UserGroupSeparator
# Different user groups for Python20 course based on last digit of the user_id
# 0: show_tips && no_linter
# 1: no_tips && show_linter
# 2: show_tips && show_linter
# 3: no_tips && no_linter
# separates user into 50% no tips, 50% with tips
def self.get_tips_group(user_id)
user_group = user_id % 4 # => 0, 1, 2, 3
if [0, 2].include?(user_group)
:show_tips
else # [1, 3].include?(user_group)
:no_tips
end
end
# separates user into 50% with linter, 50% without linter
def self.get_linter_group(user_id)
user_group = user_id % 4 # => 0, 1, 2, 3
if [1, 2].include?(user_group)
:show_linter
else # [0, 3].include?(user_group)
:no_linter
end
end
end