quizgame 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGES +9 -1
- data/Gemfile +3 -2
- data/VERSION +1 -1
- data/bin/quizgame +1 -8
- data/lib/quizgame/quizgame.rb +26 -6
- data/quizgame.gemspec +9 -9
- data/test/test_quizgame.rb +1 -2
- metadata +48 -18
data/CHANGES
CHANGED
@@ -1,5 +1,13 @@
|
|
1
|
-
|
1
|
+
= quizgame Changelog
|
2
|
+
|
3
|
+
== Master (for 0.0.4)
|
4
|
+
|
5
|
+
== Version 0.0.3
|
6
|
+
Adjust to WeightedPicker-0.1.0.
|
7
|
+
|
8
|
+
== Version 0.0.2
|
2
9
|
bin/quizgame raise error when _wts.yaml includes a float weight.
|
10
|
+
fix the bug when NaN occur with quit when no problem is answered.
|
3
11
|
|
4
12
|
== Version 0.0.1
|
5
13
|
bugfix
|
data/Gemfile
CHANGED
@@ -7,9 +7,10 @@ source "http://rubygems.org"
|
|
7
7
|
# Include everything needed to run rake, tests, features, etc.
|
8
8
|
group :development do
|
9
9
|
gem "rdoc", "~> 3.12"
|
10
|
-
gem "bundler", "~> 1.
|
10
|
+
gem "bundler", "~> 1.3.4"
|
11
11
|
gem "jeweler", "~> 1.8.3"
|
12
12
|
gem "simplecov", ">= 0"
|
13
13
|
gem "builtinextension", ">= 0.0.0"
|
14
|
-
gem "weightedpicker", ">= 0.
|
14
|
+
gem "weightedpicker", ">= 0.1.0"
|
15
|
+
#gem "psych", ">= 0"
|
15
16
|
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.3
|
data/bin/quizgame
CHANGED
@@ -57,13 +57,6 @@ data["problems"].each do |id, ary|
|
|
57
57
|
problems[id] = Problem.new(*ary)
|
58
58
|
end
|
59
59
|
weight_yaml = ARGV[0].sub(/\.yaml$/, "_wts.yaml")
|
60
|
-
begin
|
61
|
-
picker = WeightedPicker.new(weight_yaml, problems.keys)
|
62
|
-
rescue WeightedPicker::InvalidWeightError
|
63
|
-
puts "Error!"
|
64
|
-
puts "#{weight_yaml} contains float weight. Use integers as weights."
|
65
|
-
exit
|
66
|
-
end
|
67
60
|
|
68
|
-
game = QuizGame.new(requirement, problems,
|
61
|
+
game = QuizGame.new(requirement, problems, weight_yaml)
|
69
62
|
game.run(OPTIONS[:norma])
|
data/lib/quizgame/quizgame.rb
CHANGED
@@ -24,15 +24,28 @@ class QuizGame
|
|
24
24
|
class QuizGame::NoQuizError < Exception; end
|
25
25
|
|
26
26
|
# クイズデータを読み込む。
|
27
|
-
def initialize(requirement, problems,
|
27
|
+
def initialize(requirement, problems, picker_file)
|
28
28
|
@requirement = requirement
|
29
29
|
@problems = problems
|
30
|
-
@
|
30
|
+
@weight_file = picker_file
|
31
31
|
end
|
32
32
|
|
33
33
|
# 条件を満たすまでクイズを実行。
|
34
34
|
# norma は終了条件の数
|
35
35
|
def run(norma)
|
36
|
+
begin
|
37
|
+
picker = WeightedPicker.load_file @weight_file
|
38
|
+
picker.merge @problems.keys
|
39
|
+
rescue WeightedPicker::InvalidWeightError
|
40
|
+
puts "Error!"
|
41
|
+
puts "#{@weight_file} contains float weight. Use integers as weights."
|
42
|
+
exit
|
43
|
+
rescue Errno::ENOENT
|
44
|
+
#puts "TEST"
|
45
|
+
picker = WeightedPicker.new({})
|
46
|
+
picker.merge @problems.keys
|
47
|
+
end
|
48
|
+
|
36
49
|
correct_count = 0
|
37
50
|
problem_count = 0
|
38
51
|
show_statement(norma)
|
@@ -41,7 +54,7 @@ class QuizGame
|
|
41
54
|
start_time = Time.new
|
42
55
|
|
43
56
|
while (problem_count < norma )
|
44
|
-
id =
|
57
|
+
id = picker.pick
|
45
58
|
problem = @problems[id]
|
46
59
|
|
47
60
|
puts "-"*60
|
@@ -55,9 +68,9 @@ class QuizGame
|
|
55
68
|
problem_count += 1
|
56
69
|
if problem.correct?(input_str)
|
57
70
|
correct_count += 1
|
58
|
-
|
71
|
+
picker.lighten(id)
|
59
72
|
else
|
60
|
-
|
73
|
+
picker.weigh(id)
|
61
74
|
end
|
62
75
|
|
63
76
|
puts show_result(problem, input_str)
|
@@ -69,6 +82,8 @@ class QuizGame
|
|
69
82
|
correct_count, problem_count, norma)
|
70
83
|
end
|
71
84
|
|
85
|
+
File.open(@weight_file, "w"){|io| picker.dump(io) }
|
86
|
+
|
72
87
|
puts "="*60
|
73
88
|
sleep(0.35) #Visual effect. A little stop before showing results.
|
74
89
|
if (correct_count == norma)
|
@@ -77,7 +92,12 @@ class QuizGame
|
|
77
92
|
|
78
93
|
printf("result: [%d correct / %d problems]",
|
79
94
|
correct_count, problem_count)
|
80
|
-
|
95
|
+
|
96
|
+
begin
|
97
|
+
printf(" %2d\%\n", (correct_count.to_f/ problem_count*100).to_i)
|
98
|
+
rescue FloatDomainError
|
99
|
+
puts " No problem is answered."
|
100
|
+
end
|
81
101
|
|
82
102
|
print "Time: ", Time.now - start_time, "\n"
|
83
103
|
end
|
data/quizgame.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "quizgame"
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.3"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["ippei94da"]
|
12
|
-
s.date = "
|
12
|
+
s.date = "2013-04-10"
|
13
13
|
s.description = "This gem privide framework for quiz game. This gem can be used for spaced repetition study. The more frequently mistaken problems are given more frequently."
|
14
14
|
s.email = "ippei94da@gmail.com"
|
15
15
|
s.executables = ["quizgame"]
|
@@ -42,7 +42,7 @@ Gem::Specification.new do |s|
|
|
42
42
|
s.homepage = "http://github.com/ippei94da/quizgame"
|
43
43
|
s.licenses = ["MIT"]
|
44
44
|
s.require_paths = ["lib"]
|
45
|
-
s.rubygems_version = "1.8.
|
45
|
+
s.rubygems_version = "1.8.23"
|
46
46
|
s.summary = "Framework for game with quiz format."
|
47
47
|
|
48
48
|
if s.respond_to? :specification_version then
|
@@ -50,26 +50,26 @@ Gem::Specification.new do |s|
|
|
50
50
|
|
51
51
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
52
52
|
s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
|
53
|
-
s.add_development_dependency(%q<bundler>, ["~> 1.
|
53
|
+
s.add_development_dependency(%q<bundler>, ["~> 1.3.4"])
|
54
54
|
s.add_development_dependency(%q<jeweler>, ["~> 1.8.3"])
|
55
55
|
s.add_development_dependency(%q<simplecov>, [">= 0"])
|
56
56
|
s.add_development_dependency(%q<builtinextension>, [">= 0.0.0"])
|
57
|
-
s.add_development_dependency(%q<weightedpicker>, [">= 0.
|
57
|
+
s.add_development_dependency(%q<weightedpicker>, [">= 0.1.0"])
|
58
58
|
else
|
59
59
|
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
60
|
-
s.add_dependency(%q<bundler>, ["~> 1.
|
60
|
+
s.add_dependency(%q<bundler>, ["~> 1.3.4"])
|
61
61
|
s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
|
62
62
|
s.add_dependency(%q<simplecov>, [">= 0"])
|
63
63
|
s.add_dependency(%q<builtinextension>, [">= 0.0.0"])
|
64
|
-
s.add_dependency(%q<weightedpicker>, [">= 0.
|
64
|
+
s.add_dependency(%q<weightedpicker>, [">= 0.1.0"])
|
65
65
|
end
|
66
66
|
else
|
67
67
|
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
68
|
-
s.add_dependency(%q<bundler>, ["~> 1.
|
68
|
+
s.add_dependency(%q<bundler>, ["~> 1.3.4"])
|
69
69
|
s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
|
70
70
|
s.add_dependency(%q<simplecov>, [">= 0"])
|
71
71
|
s.add_dependency(%q<builtinextension>, [">= 0.0.0"])
|
72
|
-
s.add_dependency(%q<weightedpicker>, [">= 0.
|
72
|
+
s.add_dependency(%q<weightedpicker>, [">= 0.1.0"])
|
73
73
|
end
|
74
74
|
end
|
75
75
|
|
data/test/test_quizgame.rb
CHANGED
@@ -23,8 +23,7 @@ class TC_QuizGame < Test::Unit::TestCase
|
|
23
23
|
"p1" => Problem.new( "1", "one", "いち" ),
|
24
24
|
"p2" => Problem.new( "2", "two", "に" )
|
25
25
|
}
|
26
|
-
|
27
|
-
@qg00 = QuizGame.new(requirement, problems, wp)
|
26
|
+
@qg00 = QuizGame.new(requirement, problems, QUIZ_FILE)
|
28
27
|
end
|
29
28
|
|
30
29
|
def teardown
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: quizgame
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-04-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rdoc
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,21 +21,31 @@ dependencies:
|
|
21
21
|
version: '3.12'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '3.12'
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: bundler
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ~>
|
31
36
|
- !ruby/object:Gem::Version
|
32
|
-
version: 1.
|
37
|
+
version: 1.3.4
|
33
38
|
type: :development
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 1.3.4
|
36
46
|
- !ruby/object:Gem::Dependency
|
37
47
|
name: jeweler
|
38
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
39
49
|
none: false
|
40
50
|
requirements:
|
41
51
|
- - ~>
|
@@ -43,10 +53,15 @@ dependencies:
|
|
43
53
|
version: 1.8.3
|
44
54
|
type: :development
|
45
55
|
prerelease: false
|
46
|
-
version_requirements:
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.8.3
|
47
62
|
- !ruby/object:Gem::Dependency
|
48
63
|
name: simplecov
|
49
|
-
requirement:
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
50
65
|
none: false
|
51
66
|
requirements:
|
52
67
|
- - ! '>='
|
@@ -54,10 +69,15 @@ dependencies:
|
|
54
69
|
version: '0'
|
55
70
|
type: :development
|
56
71
|
prerelease: false
|
57
|
-
version_requirements:
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
58
78
|
- !ruby/object:Gem::Dependency
|
59
79
|
name: builtinextension
|
60
|
-
requirement:
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
61
81
|
none: false
|
62
82
|
requirements:
|
63
83
|
- - ! '>='
|
@@ -65,18 +85,28 @@ dependencies:
|
|
65
85
|
version: 0.0.0
|
66
86
|
type: :development
|
67
87
|
prerelease: false
|
68
|
-
version_requirements:
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: 0.0.0
|
69
94
|
- !ruby/object:Gem::Dependency
|
70
95
|
name: weightedpicker
|
71
|
-
requirement:
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
72
97
|
none: false
|
73
98
|
requirements:
|
74
99
|
- - ! '>='
|
75
100
|
- !ruby/object:Gem::Version
|
76
|
-
version: 0.
|
101
|
+
version: 0.1.0
|
77
102
|
type: :development
|
78
103
|
prerelease: false
|
79
|
-
version_requirements:
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 0.1.0
|
80
110
|
description: This gem privide framework for quiz game. This gem can be used for spaced
|
81
111
|
repetition study. The more frequently mistaken problems are given more frequently.
|
82
112
|
email: ippei94da@gmail.com
|
@@ -122,7 +152,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
122
152
|
version: '0'
|
123
153
|
segments:
|
124
154
|
- 0
|
125
|
-
hash:
|
155
|
+
hash: -593133475
|
126
156
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
127
157
|
none: false
|
128
158
|
requirements:
|
@@ -131,7 +161,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
131
161
|
version: '0'
|
132
162
|
requirements: []
|
133
163
|
rubyforge_project:
|
134
|
-
rubygems_version: 1.8.
|
164
|
+
rubygems_version: 1.8.23
|
135
165
|
signing_key:
|
136
166
|
specification_version: 3
|
137
167
|
summary: Framework for game with quiz format.
|