AtCoderStudyBooster 0.3__py3-none-any.whl → 0.3.2__py3-none-any.whl

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.
@@ -0,0 +1,213 @@
1
+ Metadata-Version: 2.3
2
+ Name: AtCoderStudyBooster
3
+ Version: 0.3.2
4
+ Summary: A tool to download and manage AtCoder problems.
5
+ Project-URL: Homepage, https://github.com/yuta6/AtCoderStudyBooster
6
+ Author-email: yuta6 <46110512+yuta6@users.noreply.github.com>
7
+ License: MIT
8
+ Requires-Python: >=3.8
9
+ Requires-Dist: beautifulsoup4
10
+ Requires-Dist: click-aliases>=1.0.5
11
+ Requires-Dist: markdownify>=0.13.1
12
+ Requires-Dist: pywebview>=5.4
13
+ Requires-Dist: questionary>=2.0.1
14
+ Requires-Dist: requests
15
+ Requires-Dist: rich-click>=1.8.8
16
+ Requires-Dist: rich>=13.7.1
17
+ Requires-Dist: tiktoken
18
+ Requires-Dist: types-beautifulsoup4>=4.12.0.20240511
19
+ Requires-Dist: types-requests>=2.32.0.20240712
20
+ Description-Content-Type: text/markdown
21
+
22
+ # AtCoderStudyBooster
23
+
24
+ ## 概要
25
+
26
+ 🚧 このプロジェクトはまだ実験段階です。日々のAtCoder学習に役立つ機能を順次追加しています。
27
+
28
+ AtCoderStudyBoosterはAtCoderの学習を加速させるためのCLIツールです。問題をローカルにダウンロードし、テスト、提出、解答の作成をサポートするツールです。Pythonが入っていることが必須です。Pythonが入っている環境なら、`pip install AtCoderStudyBooster`でインストールできます。(Python3.8以上が必要です)
29
+
30
+ キャプチャ認証が導入されたあとでも、CLIからほぼ自動でログイン&提出できます。ただしキャプチャを解くために、GUI環境が必要になる場合があります。
31
+
32
+ このツールは以下のプロジェクトに強く影響を受けています。
33
+ [online-judge-tools](https://github.com/online-judge-tools)
34
+ [atcoder-cli](https://github.com/Tatamo/atcoder-cli)
35
+
36
+
37
+ ## 利用ケース
38
+
39
+ まずは`download`コマンドを利用して問題をローカルにダウンロードしてみましょう。
40
+
41
+ ### B問題の練習したい場合
42
+
43
+ ABCコンテストの223から226のB問題だけを集中的に練習したい場合、次のコマンドを実行します。
44
+
45
+ ```sh
46
+ ❯ atcdr download B 223..226
47
+ ```
48
+
49
+ コマンドを実行すると,次のようなフォルダーを作成して、各々のフォルダーに問題をダウンロードします。
50
+
51
+ ```css
52
+ B
53
+ ├── 223
54
+ │ ├── StringShifting.html
55
+ │ └── StringShifting.md
56
+ ├── 224
57
+ │ ├── Mongeness.html
58
+ │ └── Mongeness.md
59
+ ├── 225
60
+ │ ├── StarorNot.html
61
+ │ └── StarorNot.md
62
+ └── 226
63
+ ├── CountingArrays.html
64
+ └── CountingArrays.md
65
+ ```
66
+
67
+ ### 特定のコンテストの問題に取り組みたい場合
68
+
69
+ ```sh
70
+ ❯ atcdr download 223..225 A..C
71
+ ```
72
+ のように実行すると以下のようなフォルダーを生成します.
73
+
74
+ ```css
75
+ .
76
+ ├── 223
77
+ │ ├── A
78
+ │ │ ├── ExactPrice.html
79
+ │ │ └── ExactPrice.md
80
+ │ ├── B
81
+ │ │ ├── StringShifting.html
82
+ │ │ └── StringShifting.md
83
+ │ └── C
84
+ │ ├── Doukasen.html
85
+ │ └── Doukasen.md
86
+ ├── 224
87
+ │ ├── A
88
+ │ │ ├── Tires.html
89
+ │ │ └── Tires.md
90
+ │ ├── B
91
+ │ │ ├── Mongeness.html
92
+ │ │ └── Mongeness.md
93
+ │ └── C
94
+ │ ├── Triangle.html
95
+ │ └── Triangle.md
96
+ └── 225
97
+ ├── A
98
+ │ ├── DistinctStrings.html
99
+ │ └── DistinctStrings.md
100
+ ├── B
101
+ │ ├── StarorNot.html
102
+ │ └── StarorNot.md
103
+ └── C
104
+ ├── CalendarValidator.html
105
+ └── CalendarValidator.md
106
+ ```
107
+
108
+ ### 問題を解く
109
+
110
+ MarkdownファイルあるいはHTMLファイルをVS CodeのHTML Preview, Markdown Previewで開くと問題を確認できます。VS Codeで開くと左側にテキストエディターを表示して、右側で問題をみながら問題に取り組めます。
111
+
112
+ ![demo画像](./.images/demo1.png)
113
+
114
+ ### サンプルをローカルでテストする
115
+
116
+ 問題をダウンロードしたフォルダーに移動します。
117
+
118
+ ```sh
119
+ ❯ cd 224/B
120
+ ```
121
+
122
+ 移動したフォルダーで解答ファイルを作成後をtestコマンドを実行すると, サンプルケースをテストします。
123
+
124
+ ```sh
125
+ ~/.../224/B
126
+ ❯ atcdr t
127
+ ```
128
+
129
+ ![demo画像](./.images/demo2.png)
130
+
131
+ WAの場合は以下のような表示になります。
132
+
133
+ ![demo画像](./.images/demo3.png)
134
+
135
+
136
+ ### 提出する
137
+
138
+ ```sh
139
+ ~/.../224/B
140
+ ❯ atcdr s
141
+ ```
142
+ を実行すると, 提出することができます。提出にはAtCoderのサイトへのログインが必要です。
143
+
144
+ ### 解答をGPTで生成する
145
+
146
+ ```sh
147
+ ~/.../224/B
148
+ ❯ atcdr g
149
+ ```
150
+ で解答をGPTで生成します。Chat GPTのAPIキーが必要です。さらに、生成されたファイルはサンプルケースが自動でテストされ、**テストをパスしなかった場合、テスト結果がGPTにフィードバックされ解答が再生成**されます。
151
+
152
+ GPTとプログラムとのやり取りのログはJSONファイルで保存されます。
153
+
154
+ ## 解答生成機能generateコマンドに関する注意点
155
+
156
+ [AtCoder生成AI対策ルール](https://info.atcoder.jp/entry/llm-rules-ja)によるとAtCoder Beginner Contest(以下、ABCとする)および AtCoder Regular Contest (Div. 2) においてに問題文を生成AIに直接与えることは禁止されています。ただし、このルールは過去問を練習している際には適用されません。 該当のコンテスト中にこの機能を使用しないでください。
157
+
158
+ ## その他の機能
159
+
160
+ ### markdownコマンド
161
+
162
+ 完全なCLI環境方向けのコマンドです。
163
+ ```sh
164
+ ~/.../224/B
165
+ ❯ atcdr md
166
+ ```
167
+ を実行すると, 問題をプリントします。
168
+
169
+ ![demo画像](./.images/demo4.png)
170
+
171
+ ### 複数のファイルを一度にテスト
172
+
173
+ ```sh
174
+ ~/.../224/B
175
+ ❯ atcdr t *.py
176
+ ```
177
+ でフォルダー内にあるすべてのPythonファイルを一度にテストします。
178
+ ```sh
179
+ ~/.../224/B
180
+ ❯ atcdr t mon.py mon.c mon.cpp
181
+ ```
182
+
183
+ フォルダー内に複数ファイルある場合は、インタラクティブに選択できます。
184
+ ```sh
185
+ ~/.../224/B
186
+ ❯ atcdr t
187
+ ```
188
+
189
+ ```sh
190
+ ~/.../224/B
191
+ ❯ atcdr t
192
+ 複数のファイルが見つかりました.ファイルを選択してください:
193
+ 十字キーで移動, [enter]で実行
194
+ ❯❯❯ mon.py
195
+ mon.c
196
+ mon.cpp
197
+ ```
198
+
199
+ ### プログラミング言語を指定してコードを生成
200
+
201
+ `--lang`オプションを使うと、生成したいプログラミング言語を指定できます。
202
+ ```sh
203
+ ~/.../224/B
204
+ ❯ atcdr generate --lang rust
205
+ ```
206
+ ### テストをせずにコードのみ生成
207
+
208
+ デフォルトで`atcdr generate`コマンドは生成されたコードをテストしますが、テストせずにコードのみ生成できます。
209
+
210
+ ```sh
211
+ ~/.../224/B
212
+ ❯ atcdr generate --lang rust --without_test
213
+ ```
@@ -0,0 +1,21 @@
1
+ atcdr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
+ atcdr/cli.py,sha256=xiCnGf14VHtLcRlVHXNpLKW3FIxOHS2duTRDTsG8a5w,2595
3
+ atcdr/download.py,sha256=gJ5ZPQJd06fxWOUzC_GFBY-d7KIyaURoPwO86_QdU4A,11711
4
+ atcdr/generate.py,sha256=i-rznjOQpBcAmlI0CGGC8CEY3Nx35SoxQgGaPSh6Oz8,8183
5
+ atcdr/login.py,sha256=gro9gj-nF4pGz4KepkaNSMj8PRGdSJtaVcBe7YKUPzU,4697
6
+ atcdr/logout.py,sha256=WYFifFDZtdcFZ0z3BhqsmdK_JbufjmBdF4q5dDkLbHQ,753
7
+ atcdr/markdown.py,sha256=RpYdXMWgBd2qcMj-WmUrSyF0VdLfyUms-FsTRXfdgRw,1485
8
+ atcdr/open.py,sha256=aRmhg7_TcZU6iPBM0u7lUQhTpPF5Eo227MxS3JUSm1M,1293
9
+ atcdr/submit.py,sha256=T579xpIyLeXp69D8UW_2mNC8vcjJ3d-iFT9rJvoVJ7I,9975
10
+ atcdr/test.py,sha256=y9ENvL4Gdirup07tfFBjJJXA-HeiWZpSW1ncpNwiKOs,13672
11
+ atcdr/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
+ atcdr/util/fileops.py,sha256=jxJ_d-R3XG-CLQemwwxgeNQcvNAE_7Q-3nOQ1npG3ig,3293
13
+ atcdr/util/filetype.py,sha256=pceB08trkwNkdzKJx4fFfOWpz9jYMBRDwXLW4un0sRM,2254
14
+ atcdr/util/gpt.py,sha256=vH10Waa7KXlz6-5pEUBuIbxTbDH3Hys7k9Tt7prvFX4,3772
15
+ atcdr/util/parse.py,sha256=SJ4khlH5iWaSwyORmQLi84npMwh5u2omCeg0q7ScEAE,6974
16
+ atcdr/util/problem.py,sha256=wEoMC5KVQu5l-i4V-ZCR30Z30Zov0VCNtLVIbL-0iI0,2594
17
+ atcdr/util/session.py,sha256=LwlSN86sfnkE9a-opL4qvKYHsCgiMy7eFCdcXdo79eg,4889
18
+ atcoderstudybooster-0.3.2.dist-info/METADATA,sha256=2I0SCiBGyWTco6e434Cs6AKSsGlLYinXxQbgVGu2N74,6785
19
+ atcoderstudybooster-0.3.2.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
20
+ atcoderstudybooster-0.3.2.dist-info/entry_points.txt,sha256=-stL-IwnheQGlYAdm82RuZu8CGgSakU0aVIVlA7DmFA,40
21
+ atcoderstudybooster-0.3.2.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: hatchling 1.25.0
2
+ Generator: hatchling 1.26.3
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ atcdr = atcdr.cli:cli
atcdr/main.py DELETED
@@ -1,40 +0,0 @@
1
- from importlib.metadata import metadata
2
-
3
- import fire # type: ignore
4
- from rich.traceback import install
5
-
6
- from atcdr.download import download
7
- from atcdr.generate import generate
8
- from atcdr.markdown import markdown
9
- from atcdr.open import open_files
10
- from atcdr.test import test
11
-
12
-
13
- def get_version() -> None:
14
- meta = metadata('AtCoderStudyBooster')
15
- print(meta['Name'], meta['Version'])
16
-
17
-
18
- MAP_COMMANDS: dict = {
19
- 'test': test,
20
- 't': test,
21
- 'download': download,
22
- 'd': download,
23
- 'open': open_files,
24
- 'o': open_files,
25
- 'generate': generate,
26
- 'g': generate,
27
- 'markdown': markdown,
28
- 'md': markdown,
29
- '--version': get_version,
30
- '-v': get_version,
31
- }
32
-
33
-
34
- def main():
35
- install()
36
- fire.Fire(MAP_COMMANDS)
37
-
38
-
39
- if __name__ == '__main__':
40
- main()
atcdr/util/cost.py DELETED
@@ -1,120 +0,0 @@
1
- from enum import Enum
2
- from typing import Optional
3
-
4
- import tiktoken
5
- import yfinance as yf # type: ignore
6
-
7
-
8
- class Model(Enum):
9
- GPT4O = 'gpt-4o'
10
- GPT4O_MINI = 'gpt-4o-mini'
11
-
12
-
13
- class CostType(Enum):
14
- INPUT = 'input'
15
- OUTPUT = 'output'
16
-
17
-
18
- class Currency:
19
- def __init__(
20
- self, usd: Optional[float] = None, jpy: Optional[float] = None
21
- ) -> None:
22
- self._exchange_rate = self.get_exchange_rate()
23
- self._usd = usd if usd is not None else 0.0
24
- self._jpy = jpy if jpy is not None else self.convert_usd_to_jpy(self._usd)
25
-
26
- @staticmethod
27
- def get_exchange_rate() -> float:
28
- ticker = yf.Ticker('USDJPY=X')
29
- todays_data = ticker.history(period='1d')
30
- return todays_data['Close'].iloc[0]
31
-
32
- def convert_usd_to_jpy(self, usd: float) -> float:
33
- return usd * self._exchange_rate
34
-
35
- def convert_jpy_to_usd(self, jpy: float) -> float:
36
- return jpy / self._exchange_rate
37
-
38
- @property
39
- def usd(self) -> float:
40
- return self._usd
41
-
42
- @usd.setter
43
- def usd(self, value: float) -> None:
44
- self._usd = value
45
- self._jpy = self.convert_usd_to_jpy(value)
46
-
47
- @property
48
- def jpy(self) -> float:
49
- return self._jpy
50
-
51
- @jpy.setter
52
- def jpy(self, value: float) -> None:
53
- self._jpy = value
54
- self._usd = self.convert_jpy_to_usd(value)
55
-
56
- def __add__(self, other: 'Currency') -> 'Currency':
57
- return Currency(usd=self.usd + other.usd)
58
-
59
- def __sub__(self, other: 'Currency') -> 'Currency':
60
- return Currency(usd=self.usd - other.usd)
61
-
62
- def __mul__(self, factor: float) -> 'Currency':
63
- return Currency(usd=self.usd * factor)
64
-
65
- def __truediv__(self, factor: float) -> 'Currency':
66
- return Currency(usd=self.usd / factor)
67
-
68
- def __eq__(self, other: object) -> bool:
69
- if not isinstance(other, Currency):
70
- return NotImplemented
71
- epsilon = 1e-9 # 許容範囲
72
- return abs(self.usd - other.usd) < epsilon
73
-
74
- def __lt__(self, other: 'Currency') -> bool:
75
- return self.usd < other.usd
76
-
77
- def __repr__(self) -> str:
78
- return f'Currency(usd={self.usd:.2f}, jpy={self.jpy:.2f})'
79
-
80
- def __str__(self) -> str:
81
- return f'USD: {self.usd:.2f}, JPY: {self.jpy:.2f}'
82
-
83
-
84
- class Rate:
85
- _COST_RATES = {
86
- Model.GPT4O: {CostType.INPUT: 5 / 1000**2, CostType.OUTPUT: 15 / 1000**2},
87
- Model.GPT4O_MINI: {
88
- CostType.INPUT: 0.15 / 1000**2,
89
- CostType.OUTPUT: 0.60 / 1000**2,
90
- },
91
- }
92
-
93
- @staticmethod
94
- def calc_cost(model: Model, cost_type: CostType, token_count: int) -> Currency:
95
- cost_in_usd = Rate._COST_RATES[model][cost_type] * token_count
96
- return Currency(usd=cost_in_usd)
97
-
98
-
99
- class ApiCostCalculator:
100
- def __init__(self, text: str, cost_type: CostType, model: Model) -> None:
101
- self.text = text
102
- self.cost_type = cost_type
103
- self.model = model
104
-
105
- # トークンモデルを取得
106
- self.token_model = tiktoken.encoding_for_model(model.value)
107
-
108
- @property
109
- def token_count(self) -> int:
110
- return len(self.token_model.encode(self.text))
111
-
112
- @property
113
- def cost(self) -> Currency:
114
- return Rate.calc_cost(self.model, self.cost_type, self.token_count)
115
-
116
- def __str__(self) -> str:
117
- return f'Token count: {self.token_count}\nCost ({self.cost_type.value}): ${self.cost.usd:.2f} / ¥{self.cost.jpy:.2f}'
118
-
119
- def __repr__(self) -> str:
120
- return f'ApiCostCalculator(text={self.text}, cost_type={self.cost_type}, model={self.model})'
atcdr/util/execute.py DELETED
@@ -1,63 +0,0 @@
1
- import os
2
- from typing import Callable, List
3
-
4
- import questionary as q
5
- from rich import print
6
-
7
- from atcdr.util.filetype import FILE_EXTENSIONS, Filename, Lang
8
-
9
-
10
- def execute_files(
11
- *args: str, func: Callable[[Filename], None], target_filetypes: List[Lang]
12
- ) -> None:
13
- target_extensions = [FILE_EXTENSIONS[lang] for lang in target_filetypes]
14
-
15
- files = [
16
- file
17
- for file in os.listdir('.')
18
- if os.path.isfile(file) and os.path.splitext(file)[1] in target_extensions
19
- ]
20
-
21
- if not files:
22
- print(
23
- '対象のファイルが見つかりません.\n対象ファイルが存在するディレクトリーに移動してから実行してください。'
24
- )
25
- return
26
-
27
- if not args:
28
- if len(files) == 1:
29
- func(files[0])
30
- else:
31
- target_file = q.select(
32
- message='複数のファイルが見つかりました.ファイルを選択してください:',
33
- choices=[q.Choice(title=file, value=file) for file in files],
34
- instruction='\n 十字キーで移動, [enter]で実行',
35
- pointer='❯❯❯',
36
- qmark='',
37
- style=q.Style(
38
- [
39
- ('qmark', 'fg:#2196F3 bold'),
40
- ('question', 'fg:#2196F3 bold'),
41
- ('answer', 'fg:#FFB300 bold'),
42
- ('pointer', 'fg:#FFB300 bold'),
43
- ('highlighted', 'fg:#FFB300 bold'),
44
- ('selected', 'fg:#FFB300 bold'),
45
- ]
46
- ),
47
- ).ask()
48
- list(map(func, [target_file]))
49
- else:
50
- target_files = set()
51
- for arg in args:
52
- if arg == '*':
53
- target_files.update(files)
54
- elif arg.startswith('*.'):
55
- ext = arg[1:] # ".py" のような拡張子を取得
56
- target_files.update(file for file in files if file.endswith(ext))
57
- else:
58
- if arg in files:
59
- target_files.add(arg)
60
- else:
61
- print(f'エラー: {arg} は存在しません。')
62
-
63
- list(map(func, target_files))
@@ -1,96 +0,0 @@
1
- Metadata-Version: 2.3
2
- Name: AtCoderStudyBooster
3
- Version: 0.3
4
- Summary: A tool to download and manage AtCoder problems.
5
- Project-URL: Homepage, https://github.com/yuta6/AtCoderStudyBooster
6
- Author-email: yuta6 <46110512+yuta6@users.noreply.github.com>
7
- License: MIT
8
- Requires-Python: >=3.8
9
- Requires-Dist: beautifulsoup4
10
- Requires-Dist: fire
11
- Requires-Dist: markdownify>=0.13.1
12
- Requires-Dist: questionary>=2.0.1
13
- Requires-Dist: requests
14
- Requires-Dist: rich>=13.7.1
15
- Requires-Dist: tiktoken
16
- Requires-Dist: types-beautifulsoup4>=4.12.0.20240511
17
- Requires-Dist: types-requests>=2.32.0.20240712
18
- Requires-Dist: yfinance
19
- Description-Content-Type: text/markdown
20
-
21
- # AtCoderStudyBooster
22
-
23
- ## 概要
24
-
25
- AtCoderStudyBoosterはAtCoderの学習を加速させるためのツールです。問題をローカルにダウンロードし、テスト、解答の作成をサポートするツールです。Pythonが入っていることが必須です。Pythonが入っている環境なら、`pip install AtCoderStudyBooster`でインストールできます。
26
-
27
- このツールは以下のプロジェクトに強く影響を受けています。
28
- [online-judge-tools](https://github.com/online-judge-tools)
29
- [atcoder-cli](https://github.com/Tatamo/atcoder-cli)
30
- これらとの違いですが、本ツールはAtCoderでのコンテストでの利用は想定しておらず、初心者の学習のサポートのみを意識しています。そのため、現時点で提出機能は備えていません。また, Chat GPT APIによる解答の作成サポート機能を備えています。
31
-
32
- ## 利用ケース
33
-
34
- ### B問題の練習したい場合
35
-
36
- ABCコンテストの223から226のB問題だけを集中的に練習したい場合、次のコマンドを実行します。
37
-
38
- ```sh
39
- atcdr download B 223..226
40
- ```
41
-
42
- コマンドを実行すると,次のようなフォルダーを作成して、各々のフォルダーに問題をダウンロードします。
43
-
44
- ```css
45
- B
46
- ├── 223
47
- │ ├── StringShifting.html
48
- │ └── StringShifting.md
49
- ├── 224
50
- │ ├── Mongeness.html
51
- │ └── Mongeness.md
52
- ├── 225
53
- │ ├── StarorNot.html
54
- │ └── StarorNot.md
55
- └── 226
56
- ├── CountingArrays.html
57
- └── CountingArrays.md
58
- ```
59
-
60
- MarkdownファイルあるいはHTMLファイルをVS CodeのHTML Preview, Markdown Previewで開くと問題を確認できます。VS Codeで開くと左側にテキストエディターを表示して、右側で問題をみながら問題に取り組めます。
61
-
62
- ![demo画像](./.images/demo1.png)
63
-
64
- ### サンプルをローカルでテストする
65
-
66
- 問題をダウンロードしたフォルダーに移動します。
67
-
68
- ```sh
69
- cd B/224
70
- ```
71
-
72
- 移動したフォルダーで解答ファイルを作成後を実行すると, 自動的にテストします。
73
-
74
- ```sh
75
- ▷ ~/.../B/224
76
- atcdr t
77
- ```
78
-
79
- ```sh
80
- solution.pyをテストします。
81
- --------------------
82
-
83
- Sample 1 of Test:
84
- ✓ Accepted !! Time: 24 ms
85
-
86
- Sample 2 of Test:
87
- ✓ Accepted !! Time: 15 ms
88
- ```
89
-
90
- と実行すると作成したソースコードをテストして、HTMLに書かれているテストケースを読み込んで実行し, Passするかを判定します。
91
-
92
- ## 解答生成機能generateコマンドに関する注意点
93
-
94
- 本ツールにはChatGPT APIを利用したコード生成機能があります。[AtCoder生成AI対策ルール](https://info.atcoder.jp/entry/llm-abc-rules-ja?_gl=1*1axgs02*_ga*ODc0NDAyNjA4LjE3MTk1ODEyNDA.*_ga_RC512FD18N*MTcyMzMxNDA1Ni43NC4xLjE3MjMzMTY1NjUuMC4wLjA.)によるとAtCoder Beginner Contestにおいてに問題文を生成AIに直接与えることは禁止されています。ただし、このルールは過去問を練習している際には適用されません。
95
-
96
- 現時点で本ツールにはログイン機能がないため、コンテスト中の問題に対して`download`コマンドは利用して問題をダウンロードすることはできません。`generate`コマンドは`download`コマンドに依存しており、ダウンロードした問題のHTMLファイルをパースしてGPTに解釈しやすいmarkdownを与えることで実現しています。したがって、このコマンドがAtCoder Beginner Contest中に[AtCoder生成AI対策ルール](https://info.atcoder.jp/entry/llm-abc-rules-ja?_gl=1*1axgs02*_ga*ODc0NDAyNjA4LjE3MTk1ODEyNDA.*_ga_RC512FD18N*MTcyMzMxNDA1Ni43NC4xLjE3MjMzMTY1NjUuMC4wLjA.)に抵触することはありません。
@@ -1,17 +0,0 @@
1
- atcdr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- atcdr/download.py,sha256=aqJEmrLop_Mj8GNJjoWRcSzWU0z9iNc9vtZOjhWXx3U,8945
3
- atcdr/generate.py,sha256=0yWX-5PS-FR6LTaP3muHq6a7rFB2a1Oek48mF45exoA,6972
4
- atcdr/main.py,sha256=y2IkXwcAyKZ_1y5PgU93GpXzo5lKak9oxo0XV_9d5Fo,727
5
- atcdr/markdown.py,sha256=jEktnYgrDYcgIuhxRpJImAzNpFmfSPkRikAesfMxAVk,1125
6
- atcdr/open.py,sha256=2UlmNWdieoMrPu1xSUWf-8sBB9Y19r0t6V9zDRBSPes,924
7
- atcdr/test.py,sha256=eNHEv_y2tNBW9BbfzbGxRjUjbZB7Skxp1UVZkUJyj24,12021
8
- atcdr/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
- atcdr/util/cost.py,sha256=0c9H8zLley7xZDLuYU4zJmB8m71qcO1WEIQOoEavD_4,3168
10
- atcdr/util/execute.py,sha256=tcYflnVo_38LdaOGDUAuqfSfcA54bTrCaTRShH7kwUw,1750
11
- atcdr/util/filetype.py,sha256=n8alyOdrItoFZzLIssDoXg7i5LamHM9DaY1legUzOD0,2007
12
- atcdr/util/gpt.py,sha256=Lto6SJHZGer8cC_Nq8lJVnaET2R7apFQteo6ZEFpjdM,3304
13
- atcdr/util/problem.py,sha256=WprmpOZm6xpyvksIS3ou1uHqFnBO1FUZWadsLziG1bY,2484
14
- atcoderstudybooster-0.3.dist-info/METADATA,sha256=xnKGPQ0_6d592dSluNqZ17xodV23Rvi1h7CGFjsIv84,4467
15
- atcoderstudybooster-0.3.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
16
- atcoderstudybooster-0.3.dist-info/entry_points.txt,sha256=_bhz0R7vp2VubKl_eIokDO8Wz9TdqvYA7Q59uWfy6Sk,42
17
- atcoderstudybooster-0.3.dist-info/RECORD,,
@@ -1,2 +0,0 @@
1
- [console_scripts]
2
- atcdr = atcdr.main:main