ac-library-rb 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/unittest.yml +16 -0
  3. data/.gitignore +11 -0
  4. data/.rubocop.yml +198 -0
  5. data/Gemfile +3 -0
  6. data/LICENSE +116 -0
  7. data/README.ja.md +56 -0
  8. data/README.md +41 -0
  9. data/Rakefile +11 -0
  10. data/ac-library-rb.gemspec +32 -0
  11. data/bin/console +8 -0
  12. data/bin/lock_lib.rb +27 -0
  13. data/bin/setup +8 -0
  14. data/document_en/binary_index_tree.md +3 -0
  15. data/document_en/convolution.md +67 -0
  16. data/document_en/dsu.md +132 -0
  17. data/document_en/fenwick_tree.md +99 -0
  18. data/document_en/index.md +79 -0
  19. data/document_en/lazy_segtree.md +141 -0
  20. data/document_en/math.md +104 -0
  21. data/document_en/max_flow.md +165 -0
  22. data/document_en/min_cost_flow.md +132 -0
  23. data/document_en/modint.md +263 -0
  24. data/document_en/priority_queue.md +119 -0
  25. data/document_en/segtree.md +134 -0
  26. data/document_en/string.md +106 -0
  27. data/document_en/two_sat.md +91 -0
  28. data/document_en/union_find.md +3 -0
  29. data/document_ja/convolution.md +64 -0
  30. data/document_ja/dsu.md +183 -0
  31. data/document_ja/fenwick_tree.md +83 -0
  32. data/document_ja/index.md +89 -0
  33. data/document_ja/lazy_segtree.md +135 -0
  34. data/document_ja/math.md +116 -0
  35. data/document_ja/max_flow.md +129 -0
  36. data/document_ja/min_cost_flow.md +105 -0
  37. data/document_ja/modint.md +349 -0
  38. data/document_ja/priority_queue.md +103 -0
  39. data/document_ja/scc.md +65 -0
  40. data/document_ja/segtree.md +145 -0
  41. data/document_ja/string.md +105 -0
  42. data/document_ja/two_sat.md +87 -0
  43. data/lib/ac-library-rb/version.rb +3 -0
  44. data/lib/convolution.rb +124 -0
  45. data/lib/core_ext/modint.rb +19 -0
  46. data/lib/crt.rb +52 -0
  47. data/lib/dsu.rb +44 -0
  48. data/lib/fenwick_tree.rb +48 -0
  49. data/lib/floor_sum.rb +21 -0
  50. data/lib/inv_mod.rb +26 -0
  51. data/lib/lazy_segtree.rb +149 -0
  52. data/lib/lcp_array.rb +23 -0
  53. data/lib/max_flow.rb +137 -0
  54. data/lib/min_cost_flow.rb +143 -0
  55. data/lib/modint.rb +170 -0
  56. data/lib/pow_mod.rb +13 -0
  57. data/lib/priority_queue.rb +89 -0
  58. data/lib/scc.rb +77 -0
  59. data/lib/segtree.rb +140 -0
  60. data/lib/suffix_array.rb +128 -0
  61. data/lib/two_sat.rb +34 -0
  62. data/lib/z_algorithm.rb +32 -0
  63. data/lib_helpers/ac-library-rb/all.rb +22 -0
  64. data/lib_lock/ac-library-rb.rb +22 -0
  65. data/lib_lock/ac-library-rb/convolution.rb +126 -0
  66. data/lib_lock/ac-library-rb/core_ext/modint.rb +19 -0
  67. data/lib_lock/ac-library-rb/crt.rb +54 -0
  68. data/lib_lock/ac-library-rb/dsu.rb +46 -0
  69. data/lib_lock/ac-library-rb/fenwick_tree.rb +50 -0
  70. data/lib_lock/ac-library-rb/floor_sum.rb +23 -0
  71. data/lib_lock/ac-library-rb/inv_mod.rb +28 -0
  72. data/lib_lock/ac-library-rb/lazy_segtree.rb +151 -0
  73. data/lib_lock/ac-library-rb/lcp_array.rb +25 -0
  74. data/lib_lock/ac-library-rb/max_flow.rb +139 -0
  75. data/lib_lock/ac-library-rb/min_cost_flow.rb +145 -0
  76. data/lib_lock/ac-library-rb/modint.rb +172 -0
  77. data/lib_lock/ac-library-rb/pow_mod.rb +15 -0
  78. data/lib_lock/ac-library-rb/priority_queue.rb +91 -0
  79. data/lib_lock/ac-library-rb/scc.rb +79 -0
  80. data/lib_lock/ac-library-rb/segtree.rb +142 -0
  81. data/lib_lock/ac-library-rb/suffix_array.rb +130 -0
  82. data/lib_lock/ac-library-rb/two_sat.rb +36 -0
  83. data/lib_lock/ac-library-rb/z_algorithm.rb +34 -0
  84. metadata +158 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: a727abb00ad78ee815885a24058313b8d5d2d74dca890a7f86acec05a1409c29
4
+ data.tar.gz: 2cf27a5f5c961d3c66c42327820046ee282d461bab07fcc5d3137c1ef070667c
5
+ SHA512:
6
+ metadata.gz: 409b1168b103fcfb0addb14166550ea6558481e19cd614996952b0059f488a2244dfec992686039e8b84e573c24639a0722dcf1898988335b52896645b524af5
7
+ data.tar.gz: 9ada51ba77c9101ca49a91a086b9204407ca526621e7a5621e797a16f1399e330aeb7ef9fdbb1ae2b8b5a1825f2bc06c6b82efe9367a961e97531d899ab6b6fe
@@ -0,0 +1,16 @@
1
+ name: Unittest
2
+
3
+ on: [push, pull_request]
4
+ jobs:
5
+ unittest:
6
+ runs-on: ${{ matrix.os }}
7
+ strategy:
8
+ matrix:
9
+ os: [macos-latest, ubuntu-latest, windows-latest]
10
+ steps:
11
+ - uses: actions/checkout@v2
12
+ - uses: ruby/setup-ruby@v1
13
+ with:
14
+ ruby-version: 2.7.1
15
+ - name: run unittests
16
+ run: ruby test/*.rb
data/.gitignore ADDED
@@ -0,0 +1,11 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
9
+ Gemfile.lock
10
+
11
+ /free_space
data/.rubocop.yml ADDED
@@ -0,0 +1,198 @@
1
+ AllCops:
2
+ NewCops: enable
3
+ Exclude:
4
+ - 'lib_lock/ac-library-rb/*.rb'
5
+ Layout/ExtraSpacing:
6
+ AutoCorrect: false
7
+ Exclude:
8
+ - 'ac-library-rb.gemspec'
9
+ - 'test/convolution_test.rb'
10
+ Layout/LineLength:
11
+ Exclude:
12
+ - 'ac-library-rb.gemspec'
13
+ Layout/SpaceAroundOperators:
14
+ Exclude:
15
+ - 'ac-library-rb.gemspec'
16
+ Layout/SpaceBeforeBlockBraces:
17
+ Enabled: false
18
+ Layout/SpaceInsideArrayLiteralBrackets:
19
+ AutoCorrect: false
20
+ Exclude:
21
+ - 'test/convolution_test.rb'
22
+ Layout/SpaceInsideRangeLiteral:
23
+ Enabled: false
24
+ Lint/AmbiguousOperator:
25
+ AutoCorrect: false
26
+ Exclude:
27
+ - 'test/lazy_segtree_test.rb'
28
+ - 'test/example/crt.rb'
29
+ Lint/AmbiguousBlockAssociation:
30
+ AutoCorrect: false
31
+ Exclude:
32
+ - 'test/convolution_test.rb'
33
+ - 'test/crt_test.rb'
34
+ Lint/BinaryOperatorWithIdenticalOperands:
35
+ Enabled: false
36
+ Lint/MissingSuper:
37
+ AutoCorrect: false
38
+ Exclude:
39
+ - 'lib/modint.rb'
40
+ Lint/ParenthesesAsGroupedExpression:
41
+ AutoCorrect: false
42
+ Exclude:
43
+ - 'test/convolution_test.rb'
44
+ - 'test/crt_test.rb'
45
+ Lint/ShadowingOuterLocalVariable:
46
+ AutoCorrect: false
47
+ Exclude:
48
+ - 'lib/convolution.rb'
49
+ - 'lib/lcp_array.rb'
50
+ - 'lib/suffix_array.rb'
51
+ - 'test/convolution_test.rb'
52
+ - 'test/crt_test.rb'
53
+ - 'test/lcp_array_test.rb'
54
+ - 'test/example/suffix_array_and_lcp_array_practice.rb'
55
+ Lint/UnderscorePrefixedVariableName:
56
+ AutoCorrect: false
57
+ Exclude:
58
+ - 'lib/max_flow.rb'
59
+ Lint/Void:
60
+ AutoCorrect: false
61
+ Exclude:
62
+ - 'test/example/*'
63
+ Metrics/AbcSize:
64
+ Max: 50
65
+ Exclude:
66
+ - 'lib/suffix_array.rb'
67
+ - 'test/modint_test.rb'
68
+ Metrics/BlockLength:
69
+ Exclude:
70
+ - 'test/segtree_test.rb'
71
+ Metrics/BlockNesting:
72
+ Exclude:
73
+ - 'lib/max_flow.rb'
74
+ Metrics/ClassLength:
75
+ Max: 334
76
+ Metrics/CyclomaticComplexity:
77
+ Max: 13
78
+ Exclude:
79
+ - 'lib/suffix_array.rb'
80
+ Metrics/MethodLength:
81
+ Max: 120
82
+ Metrics/ParameterLists:
83
+ Exclude:
84
+ - 'lib/lazy_segtree.rb'
85
+ Metrics/PerceivedComplexity:
86
+ Max: 13
87
+ Exclude:
88
+ - 'lib/suffix_array.rb'
89
+ Naming/FileName:
90
+ Exclude:
91
+ - 'lib_lock/ac-library-rb.rb'
92
+ Naming/AccessorMethodName:
93
+ Exclude:
94
+ - 'lib/modint.rb'
95
+ Naming/MethodName:
96
+ Exclude:
97
+ - 'lib/core_ext/modint.rb'
98
+ - 'lib/modint.rb'
99
+ - 'lib_lock/ac-library-rb/core_ext/modint.rb'
100
+ - 'test/convolution_test.rb'
101
+ Naming/MethodParameterName:
102
+ Enabled: false
103
+ Style/AndOr:
104
+ Enabled: false
105
+ Style/ArrayCoercion:
106
+ Enabled: false
107
+ Style/BlockDelimiters:
108
+ AutoCorrect: false
109
+ Exclude:
110
+ - 'lib/convolution.rb'
111
+ - 'lib/lcp_array.rb'
112
+ - 'lib/suffix_array.rb'
113
+ - 'test/convolution_test.rb'
114
+ - 'test/crt_test.rb'
115
+ - 'test/lcp_array_test.rb'
116
+ - 'test/suffix_array_test.rb'
117
+ - 'test/z_algorithm_test.rb'
118
+ Style/Documentation:
119
+ Enabled: false
120
+ Style/GlobalVars:
121
+ AutoCorrect: false
122
+ Exclude:
123
+ - 'lib/modint.rb'
124
+ Style/FrozenStringLiteralComment:
125
+ Enabled: false
126
+ Style/InverseMethods:
127
+ AutoCorrect: false
128
+ Exclude:
129
+ - 'lib/suffix_array.rb'
130
+ Style/Lambda:
131
+ Enabled: false
132
+ Style/LambdaCall:
133
+ Enabled: false
134
+ Style/HashSyntax:
135
+ Exclude:
136
+ - 'Rakefile'
137
+ Style/MixinUsage:
138
+ Exclude:
139
+ - 'lib_lock/ac-library-rb.rb'
140
+ Style/MultipleComparison:
141
+ Enabled: false
142
+ Style/NegatedIf:
143
+ AutoCorrect: false
144
+ Exclude:
145
+ - 'lib/suffix_array.rb'
146
+ Style/Not:
147
+ AutoCorrect: false
148
+ Exclude:
149
+ - 'lib/suffix_array.rb'
150
+ Style/NumericPredicate:
151
+ Enabled: false
152
+ Style/OptionalArguments:
153
+ AutoCorrect: false
154
+ Exclude:
155
+ - 'lib/segtree.rb'
156
+ Style/ParallelAssignment:
157
+ Enabled: false
158
+ Style/RedundantFileExtensionInRequire:
159
+ Enabled: false
160
+ Style/RedundantReturn:
161
+ AutoCorrect: false
162
+ Exclude:
163
+ - 'lib/convolution.rb'
164
+ - 'lib/crt.rb'
165
+ - 'lib/lcp_array.rb'
166
+ - 'lib/suffix_array.rb'
167
+ - 'lib/z_algorithm.rb'
168
+ - 'test/convolution_test.rb'
169
+ - 'test/lcp_array_test.rb'
170
+ - 'test/suffix_array_test.rb'
171
+ - 'test/z_algorithm_test.rb'
172
+ Style/SelfAssignment:
173
+ AutoCorrect: false
174
+ Exclude:
175
+ - 'lib/convolution.rb'
176
+ Style/Semicolon:
177
+ Exclude:
178
+ - 'lib/lazy_segtree.rb'
179
+ Style/SlicingWithRange:
180
+ Enabled: false
181
+ Style/SpecialGlobalVars:
182
+ AutoCorrect: false
183
+ Exclude:
184
+ - 'test/example/convolution_practice.rb'
185
+ - 'test/example/crt.rb'
186
+ Style/StringConcatenation:
187
+ Exclude:
188
+ - 'bin/lock_lib.rb'
189
+ Style/StringLiterals:
190
+ Enabled: false
191
+ Style/TrailingCommaInArrayLiteral:
192
+ Enabled: false
193
+ Style/WordArray:
194
+ Enabled: false
195
+ Style/WhileUntilModifier:
196
+ Enabled: false
197
+ Style/YodaCondition:
198
+ Enabled: false
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "https://rubygems.org"
2
+
3
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,116 @@
1
+ CC0 1.0 Universal
2
+
3
+ Statement of Purpose
4
+
5
+ The laws of most jurisdictions throughout the world automatically confer
6
+ exclusive Copyright and Related Rights (defined below) upon the creator and
7
+ subsequent owner(s) (each and all, an "owner") of an original work of
8
+ authorship and/or a database (each, a "Work").
9
+
10
+ Certain owners wish to permanently relinquish those rights to a Work for the
11
+ purpose of contributing to a commons of creative, cultural and scientific
12
+ works ("Commons") that the public can reliably and without fear of later
13
+ claims of infringement build upon, modify, incorporate in other works, reuse
14
+ and redistribute as freely as possible in any form whatsoever and for any
15
+ purposes, including without limitation commercial purposes. These owners may
16
+ contribute to the Commons to promote the ideal of a free culture and the
17
+ further production of creative, cultural and scientific works, or to gain
18
+ reputation or greater distribution for their Work in part through the use and
19
+ efforts of others.
20
+
21
+ For these and/or other purposes and motivations, and without any expectation
22
+ of additional consideration or compensation, the person associating CC0 with a
23
+ Work (the "Affirmer"), to the extent that he or she is an owner of Copyright
24
+ and Related Rights in the Work, voluntarily elects to apply CC0 to the Work
25
+ and publicly distribute the Work under its terms, with knowledge of his or her
26
+ Copyright and Related Rights in the Work and the meaning and intended legal
27
+ effect of CC0 on those rights.
28
+
29
+ 1. Copyright and Related Rights. A Work made available under CC0 may be
30
+ protected by copyright and related or neighboring rights ("Copyright and
31
+ Related Rights"). Copyright and Related Rights include, but are not limited
32
+ to, the following:
33
+
34
+ i. the right to reproduce, adapt, distribute, perform, display, communicate,
35
+ and translate a Work;
36
+
37
+ ii. moral rights retained by the original author(s) and/or performer(s);
38
+
39
+ iii. publicity and privacy rights pertaining to a person's image or likeness
40
+ depicted in a Work;
41
+
42
+ iv. rights protecting against unfair competition in regards to a Work,
43
+ subject to the limitations in paragraph 4(a), below;
44
+
45
+ v. rights protecting the extraction, dissemination, use and reuse of data in
46
+ a Work;
47
+
48
+ vi. database rights (such as those arising under Directive 96/9/EC of the
49
+ European Parliament and of the Council of 11 March 1996 on the legal
50
+ protection of databases, and under any national implementation thereof,
51
+ including any amended or successor version of such directive); and
52
+
53
+ vii. other similar, equivalent or corresponding rights throughout the world
54
+ based on applicable law or treaty, and any national implementations thereof.
55
+
56
+ 2. Waiver. To the greatest extent permitted by, but not in contravention of,
57
+ applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and
58
+ unconditionally waives, abandons, and surrenders all of Affirmer's Copyright
59
+ and Related Rights and associated claims and causes of action, whether now
60
+ known or unknown (including existing as well as future claims and causes of
61
+ action), in the Work (i) in all territories worldwide, (ii) for the maximum
62
+ duration provided by applicable law or treaty (including future time
63
+ extensions), (iii) in any current or future medium and for any number of
64
+ copies, and (iv) for any purpose whatsoever, including without limitation
65
+ commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes
66
+ the Waiver for the benefit of each member of the public at large and to the
67
+ detriment of Affirmer's heirs and successors, fully intending that such Waiver
68
+ shall not be subject to revocation, rescission, cancellation, termination, or
69
+ any other legal or equitable action to disrupt the quiet enjoyment of the Work
70
+ by the public as contemplated by Affirmer's express Statement of Purpose.
71
+
72
+ 3. Public License Fallback. Should any part of the Waiver for any reason be
73
+ judged legally invalid or ineffective under applicable law, then the Waiver
74
+ shall be preserved to the maximum extent permitted taking into account
75
+ Affirmer's express Statement of Purpose. In addition, to the extent the Waiver
76
+ is so judged Affirmer hereby grants to each affected person a royalty-free,
77
+ non transferable, non sublicensable, non exclusive, irrevocable and
78
+ unconditional license to exercise Affirmer's Copyright and Related Rights in
79
+ the Work (i) in all territories worldwide, (ii) for the maximum duration
80
+ provided by applicable law or treaty (including future time extensions), (iii)
81
+ in any current or future medium and for any number of copies, and (iv) for any
82
+ purpose whatsoever, including without limitation commercial, advertising or
83
+ promotional purposes (the "License"). The License shall be deemed effective as
84
+ of the date CC0 was applied by Affirmer to the Work. Should any part of the
85
+ License for any reason be judged legally invalid or ineffective under
86
+ applicable law, such partial invalidity or ineffectiveness shall not
87
+ invalidate the remainder of the License, and in such case Affirmer hereby
88
+ affirms that he or she will not (i) exercise any of his or her remaining
89
+ Copyright and Related Rights in the Work or (ii) assert any associated claims
90
+ and causes of action with respect to the Work, in either case contrary to
91
+ Affirmer's express Statement of Purpose.
92
+
93
+ 4. Limitations and Disclaimers.
94
+
95
+ a. No trademark or patent rights held by Affirmer are waived, abandoned,
96
+ surrendered, licensed or otherwise affected by this document.
97
+
98
+ b. Affirmer offers the Work as-is and makes no representations or warranties
99
+ of any kind concerning the Work, express, implied, statutory or otherwise,
100
+ including without limitation warranties of title, merchantability, fitness
101
+ for a particular purpose, non infringement, or the absence of latent or
102
+ other defects, accuracy, or the present or absence of errors, whether or not
103
+ discoverable, all to the greatest extent permissible under applicable law.
104
+
105
+ c. Affirmer disclaims responsibility for clearing rights of other persons
106
+ that may apply to the Work or any use thereof, including without limitation
107
+ any person's Copyright and Related Rights in the Work. Further, Affirmer
108
+ disclaims responsibility for obtaining any necessary consents, permissions
109
+ or other rights required for any use of the Work.
110
+
111
+ d. Affirmer understands and acknowledges that Creative Commons is not a
112
+ party to this document and has no duty or obligation with respect to this
113
+ CC0 or use of the Work.
114
+
115
+ For more information, please see
116
+ <http://creativecommons.org/publicdomain/zero/1.0/>
data/README.ja.md ADDED
@@ -0,0 +1,56 @@
1
+ # ac-library-rb
2
+
3
+ ac-library-rbは、AtCoder Library (ACL)のRuby版です。
4
+
5
+ ACLの詳細は、以下をご覧ください.
6
+
7
+ - AtCoder Library(ACL)とは
8
+ - [AtCoder Library (ACL) - AtCoder](https://atcoder.jp/posts/517)
9
+ - [AtCoder Library - Codeforces](https://codeforces.com/blog/entry/82400)
10
+ - [けんちょん氏による日本語訳](https://drken1215.hatenablog.com/entry/2020/09/08/181500)
11
+ - コード
12
+ - [atcoder/ac-library - GitHub](https://github.com/atcoder/ac-library)
13
+
14
+ ## ライブラリの使い方
15
+
16
+ [ライブラリ目次: index.md](https://github.com/universato/ac-library-rb/blob/master/document_ja/index.md)
17
+
18
+ `lib`ディレクトリにコードがあります。
19
+
20
+ 現状、この中から探してもらい、コピペして使って下さい。
21
+
22
+ 目次(および進捗情報)は、[index.md](https://github.com/universato/ac-library-rb/blob/master/document_ja/index.md)をご覧ください。
23
+
24
+ また、コピペ以外の方法として、バンドルツール[expander-rb](https://github.com/surpace/expander-rb)(by surpaceさん)を利用する方法もあります。
25
+
26
+ ## Rubyバージョン
27
+
28
+ 現在、AtCoderのRubyバージョンは、2.7.1です。
29
+
30
+ そのため、2.7.1を推奨し、それ以外のバージョンでは動かない可能性があります。
31
+
32
+ ただ、開発される方は2.7より古くても動かせるようNumbered parametersなどの使用は控えてもらえると嬉しいです。
33
+
34
+ ## ライセンス
35
+
36
+ とりあえず、本家ライブラリと同じCC0-1.0 Licenseです。
37
+
38
+ 競技プログラミング等で自由に使って下さい。
39
+
40
+ 宣伝・バグ報告などしてもらえると嬉しいです。
41
+
42
+ ## その他の情報
43
+
44
+ ### RubyのSlackのAtCoderチャンネル
45
+
46
+ [ruby-jp](https://ruby-jp.github.io/) に"atcoder"というチャンネルがあります。
47
+
48
+ Slackに3000人、atcoderチャンネルに250人以上の登録者がいるので、お気軽に参加してください。
49
+
50
+ ### 他言語のライブラリ
51
+
52
+ - [Unofficial Portings of AtCoder Library](https://docs.google.com/spreadsheets/d/19jMAqUbv98grVkLV_Lt54x5B8ILoTcvBzG8EbSvf5gY/edit#gid=0) (by [notさん](https://twitter.com/not_522/status/1303466197300649984))
53
+
54
+ ### 他言語
55
+
56
+ [README in English](README.md)
data/README.md ADDED
@@ -0,0 +1,41 @@
1
+ # Other language Japanese version
2
+
3
+ [README 日本語バージョン(ver. Japanese)](README.ja.md)
4
+ - [ライブラリ目次: index.md](https://github.com/universato/ac-library-rb/blob/master/document_ja/index.md)
5
+
6
+ <hr>
7
+
8
+ # ac-library-rb
9
+
10
+ ac-library-rb is a ruby port of AtCoder Library (ACL).
11
+
12
+ See below for ACL.
13
+
14
+ - [AtCoder Library (ACL) - AtCoder](https://atcoder.jp/posts/517)
15
+ - [AtCoder Library - Codeforces](https://codeforces.com/blog/entry/82400)
16
+ - [atcoder/ac-library - GitHub](https://github.com/atcoder/ac-library)
17
+
18
+ # Ruby version
19
+
20
+ Currently, the Ruby version in AtCoder is 2.7.1.
21
+
22
+ Therefore, 2.7.1 is recommended and may not work with other versions.
23
+
24
+ # Document
25
+
26
+ Please read [index.md](https://github.com/universato/ac-library-rb/blob/master/document_en/index.md).
27
+
28
+ ## Development
29
+
30
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
31
+
32
+ ```bash
33
+ $ rake test
34
+ $ rake
35
+ $ ruby test/fenwick_tree_test.rb
36
+ ```
37
+
38
+ # Other language Japanese version
39
+
40
+ [README 日本語バージョン(ver. Japanese)](README.ja.md)
41
+ - [ライブラリ目次: index.md](https://github.com/universato/ac-library-rb/blob/master/document_ja/index.md)