├── .github └── workflows │ ├── build-on-merge.yml │ └── build-on-pr.yml ├── .gitignore ├── .prettierignore ├── LICENSE ├── README.md ├── data ├── coins19.json ├── coins20.json ├── coins21.json ├── mast20.json ├── reqYml │ ├── cisID20.yml │ ├── cisIR20.yml │ ├── coins19.yml │ ├── coins20.yml │ ├── coins21.yml │ ├── mast20.yml │ ├── math20.yml │ └── psych20.yml └── sample-coins20.json ├── py-cli ├── g_checker_for_itf │ ├── Color.py │ ├── Dir.py │ ├── RecognizedFilter.py │ ├── __init__.py │ └── main.py ├── pyproject.toml ├── setup.cfg └── setup.py ├── react-visualizer ├── .gitignore ├── package-lock.json ├── package.json ├── public │ ├── favicon.ico │ ├── index.html │ ├── logo192.png │ ├── logo512.png │ ├── manifest.json │ └── robots.txt └── src │ ├── App.css │ ├── App.js │ ├── checkGraduate │ ├── checkGrad.ts │ └── readCsv.ts │ ├── index.css │ ├── index.js │ ├── logo.svg │ ├── reportWebVitals.js │ ├── reqJson │ ├── cisID20.json │ ├── cisIR20.json │ ├── coins19.json │ ├── coins20.json │ ├── coins21.json │ ├── coins23-24.json │ ├── klis21-knowledge.json │ ├── klis21-management.json │ ├── klis21-system.json │ ├── mast20.json │ ├── math20.json │ └── psych20.json │ └── setupTests.js └── script ├── genJson.sh ├── genYml.sh └── sample.csv /.github/workflows/build-on-merge.yml: -------------------------------------------------------------------------------- 1 | name: build on merge 2 | on: 3 | push: 4 | branches: 5 | - main 6 | 7 | permissions: 8 | contents: read 9 | pages: write 10 | id-token: write 11 | 12 | concurrency: 13 | group: "pages" 14 | cancel-in-progress: false 15 | 16 | jobs: 17 | build: 18 | defaults: 19 | run: 20 | shell: bash 21 | working-directory: ./react-visualizer 22 | runs-on: ubuntu-latest 23 | steps: 24 | - uses: actions/checkout@v4 25 | - name: Use Node.js 26 | uses: actions/setup-node@v4 27 | with: 28 | node-version: 20 29 | - uses: actions/cache@v4 30 | id: node_modules_cache_id 31 | env: 32 | cache-name: cache-node-modules 33 | with: 34 | path: '**/node_modules' 35 | key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} 36 | - if: ${{ steps.node_modules_cache_id.outputs.cache-hit != 'true' }} 37 | run: npm install 38 | - name: Build 39 | run: | 40 | npm run build 41 | - name: Upload artifact 42 | uses: actions/upload-pages-artifact@v2 43 | with: 44 | path: ./react-visualizer/build 45 | deploy: 46 | environment: 47 | name: github-pages 48 | url: ${{ steps.deployment.outputs.page_url }} 49 | runs-on: ubuntu-latest 50 | needs: build 51 | steps: 52 | - name: Deploy to GitHub Pages 53 | id: deployment 54 | uses: actions/deploy-pages@v2 55 | -------------------------------------------------------------------------------- /.github/workflows/build-on-pr.yml: -------------------------------------------------------------------------------- 1 | name: build on pr 2 | on: pull_request 3 | 4 | jobs: 5 | build: 6 | defaults: 7 | run: 8 | shell: bash 9 | working-directory: ./react-visualizer 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v4 13 | - name: Use Node.js 14 | uses: actions/setup-node@v4 15 | with: 16 | node-version: 20 17 | - uses: actions/cache@v4 18 | id: node_modules_cache_id 19 | env: 20 | cache-name: cache-node-modules 21 | with: 22 | path: '**/node_modules' 23 | key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} 24 | - if: ${{ steps.node_modules_cache_id.outputs.cache-hit != 'true' }} 25 | run: npm install 26 | - name: Build 27 | run: | 28 | npm run build 29 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | # build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | pip-wheel-metadata/ 24 | share/python-wheels/ 25 | *.egg-info/ 26 | .installed.cfg 27 | *.egg 28 | MANIFEST 29 | 30 | # PyInstaller 31 | # Usually these files are written by a python script from a template 32 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 33 | *.manifest 34 | *.spec 35 | 36 | # Installer logs 37 | pip-log.txt 38 | pip-delete-this-directory.txt 39 | 40 | # Unit test / coverage reports 41 | htmlcov/ 42 | .tox/ 43 | .nox/ 44 | .coverage 45 | .coverage.* 46 | .cache 47 | nosetests.xml 48 | coverage.xml 49 | *.cover 50 | *.py,cover 51 | .hypothesis/ 52 | .pytest_cache/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | target/ 76 | 77 | # Jupyter Notebook 78 | .ipynb_checkpoints 79 | 80 | # IPython 81 | profile_default/ 82 | ipython_config.py 83 | 84 | # pyenv 85 | .python-version 86 | 87 | # pipenv 88 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 89 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 90 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 91 | # install all needed dependencies. 92 | #Pipfile.lock 93 | 94 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 95 | __pypackages__/ 96 | 97 | # Celery stuff 98 | celerybeat-schedule 99 | celerybeat.pid 100 | 101 | # SageMath parsed files 102 | *.sage.py 103 | 104 | # Environments 105 | .env 106 | .venv 107 | env/ 108 | venv/ 109 | ENV/ 110 | env.bak/ 111 | venv.bak/ 112 | 113 | # Spyder project settings 114 | .spyderproject 115 | .spyproject 116 | 117 | # Rope project settings 118 | .ropeproject 119 | 120 | # mkdocs documentation 121 | /site 122 | 123 | # mypy 124 | .mypy_cache/ 125 | .dmypy.json 126 | dmypy.json 127 | 128 | # Pyre type checker 129 | .pyre/ 130 | 131 | 132 | SIRS* 133 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | /src/reqJson/ 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 oshamashama 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | # g-checker-for-itf 3 | 4 | ITF の卒業要件を確認したい。(今は coins19/coins20/coins21, mast20 とか) 5 | 6 | 提供されているプログラム、またそのプログラムによる実行結果に関する保証はできかねます。 7 | 8 | ## Install 9 | 10 | ### Clone Repository 11 | 12 | ```bash 13 | git clone --depth 1 https://github.com/oshamashama/g-checker-for-itf 14 | cd g-checker-for-itf 15 | pip install ./pycli 16 | ``` 17 | 18 | ### pip install 19 | 20 | ```bash 21 | pip install g-checker-for-itf 22 | ``` 23 | 24 | のいずれかで`gchk`コマンドをインストールできます。 25 | 今時点で要件確認のためのファイルをこのリポジトリからダウンロードしてくる必要があるため、 Clone によるインストールを推奨します。 26 | 27 | #### Get Requirements File 28 | 29 | ```bash 30 | wget https://raw.githubusercontent.com/oshamashama/g-checker-for-itf/main/coins20.json 31 | ``` 32 | 33 | などで卒業要件を定義したファイルをダウンロードしてきてください。 34 | 35 | ## Usage 36 | 37 | ```bash 38 | gchk -i target_csv_file -r requirements_json_file 39 | ``` 40 | 41 | で実行できます。 42 | 43 | `target csv file` は twins の成績ページからダウンロードしたファイル (UTF, CSV) を想定しています。 44 | 45 | ```shellsession 46 | $ gchk 47 | usage: gchk [-h] [-i INPUT] [-r REQUIREMENTS] [-g] [-d] [-n] [-s] [-e] [-V] 48 | 49 | A checker if your credits meet the graduation requirements or not. 50 | 51 | optional arguments: 52 | -h, --help show this help message and exit 53 | -i INPUT, --input INPUT target file from twins (UTF-8, CSV) (default: sample.csv) 54 | -r REQUIREMENTS, --requirements REQUIREMENTS 55 | requirements file (default: coins20.json) 56 | -g, --gpa print GPA (default: False) 57 | -d, --drop print drop credit (default: True) 58 | -n, --name print name and id (default: False) 59 | -s, --save save as JSON (default: False) 60 | -e, --expect count 履修中 (default: False) 61 | -V, --version show program's version number and exit 62 | ``` 63 | 64 | ## Test 65 | 66 | ```bash 67 | gchk -i sample.csv -r coins20.json 68 | ``` 69 | 70 | で予め用意されたサンプルで動作を確認することが出来ます。 71 | 72 | ```bash 73 | wget https://raw.githubusercontent.com/oshamashama/g-checker-for-itf/main/coins20.json 74 | wget https://raw.githubusercontent.com/oshamashama/g-checker-for-itf/main/sample.csv 75 | ``` 76 | 77 | 78 | ## Viewer 79 | 80 | 現状、このリポジトリを clone することが必要です。 81 | 82 | ```bash 83 | gchk -s -i target_csv_file 84 | cp saved_file ~/g-checker-for-itf/src/grade.json 85 | cd tani 86 | npm install 87 | npm start 88 | ``` 89 | 90 | 91 | ## Screenshots 92 | 93 | イメージ画像(CUI) 94 | イメージ画像(GUI) 95 | -------------------------------------------------------------------------------- /data/coins19.json: -------------------------------------------------------------------------------- 1 | src/reqJson/coins19.json -------------------------------------------------------------------------------- /data/coins20.json: -------------------------------------------------------------------------------- 1 | src/reqJson/coins20.json -------------------------------------------------------------------------------- /data/coins21.json: -------------------------------------------------------------------------------- 1 | src/reqJson/coins21.json -------------------------------------------------------------------------------- /data/mast20.json: -------------------------------------------------------------------------------- 1 | src/reqJson/mast20.json -------------------------------------------------------------------------------- /data/reqYml/cisID20.yml: -------------------------------------------------------------------------------- 1 | 国際総合学類国際開発学主専攻20年度入学: 2 | max_certificated_credit_num: 126 3 | min_certificated_credit_num: 126 4 | leaf: 5 | 専門: 6 | max_certificated_credit_num: 117 7 | min_certificated_credit_num: 62 8 | leaf: 9 | ? '' 10 | : max_certificated_credit_num: 117 11 | min_certificated_credit_num: 62 12 | leaf: 13 | 必修: 14 | max_certificated_credit_num: 6 15 | min_certificated_credit_num: 6 16 | leaf: 17 | 卒業論文: 18 | max_certificated_credit_num: 6 19 | min_certificated_credit_num: 6 20 | leaf: 21 | regexp_number: ^FB14908$ 22 | regexp_name: '' 23 | 選択: 24 | max_certificated_credit_num: 75 25 | min_certificated_credit_num: 38 26 | leaf: 27 | BC11/16,BE22~: 28 | max_certificated_credit_num: 62 29 | min_certificated_credit_num: 0 30 | leaf: 31 | regexp_number: ^B(C1[126]|E22).*$ 32 | regexp_name: '' 33 | BC12~: 34 | max_certificated_credit_num: 62 35 | min_certificated_credit_num: 14 36 | leaf: 37 | regexp_number: ^B(C1[126]|E22).*$ 38 | regexp_name: '' 39 | BC13~: 40 | max_certificated_credit_num: 9 41 | min_certificated_credit_num: 6 42 | leaf: 43 | regexp_number: ^BC13.*$ 44 | regexp_name: '' 45 | BC15~: 46 | max_certificated_credit_num: 4 47 | min_certificated_credit_num: 0 48 | leaf: 49 | regexp_number: ^BC15.*$ 50 | regexp_name: '' 51 | 専門基礎: 52 | max_certificated_credit_num: 36 53 | min_certificated_credit_num: 18 54 | leaf: 55 | ? '' 56 | : max_certificated_credit_num: 36 57 | min_certificated_credit_num: 18 58 | leaf: 59 | 必修: 60 | max_certificated_credit_num: 4 61 | min_certificated_credit_num: 4 62 | leaf: 63 | 国際学I: 64 | max_certificated_credit_num: 1 65 | min_certificated_credit_num: 1 66 | leaf: 67 | regexp_number: ^BC50111$ 68 | regexp_name: '' 69 | 国際学II: 70 | max_certificated_credit_num: 1 71 | min_certificated_credit_num: 1 72 | leaf: 73 | regexp_number: ^BC50121$ 74 | regexp_name: '' 75 | 国際学III: 76 | max_certificated_credit_num: 1 77 | min_certificated_credit_num: 1 78 | leaf: 79 | regexp_number: ^BC50131$ 80 | regexp_name: '' 81 | 国際学IV: 82 | max_certificated_credit_num: 1 83 | min_certificated_credit_num: 1 84 | leaf: 85 | regexp_number: ^BC50141$ 86 | regexp_name: '' 87 | 選択: 88 | max_certificated_credit_num: 32 89 | min_certificated_credit_num: 14 90 | leaf: 91 | BC51(EDS,ED以外): 92 | max_certificated_credit_num: 14 93 | min_certificated_credit_num: 10 94 | leaf: 95 | regexp_number: ^(?!BC51(3[1-3]|5[78])4)BC51.*$ 96 | regexp_name: '' 97 | EDS,ED: 98 | max_certificated_credit_num: 4 99 | min_certificated_credit_num: 4 100 | leaf: 101 | regexp_number: ^BC51(3[1-3]|5[78])4$ 102 | regexp_name: '' 103 | BB050,FH611...: 104 | max_certificated_credit_num: 14 105 | min_certificated_credit_num: 0 106 | leaf: 107 | regexp_number: ^(BB050|FH611|FG10641|GA12|BE21).*$ 108 | regexp_name: '' 109 | 基礎: 110 | max_certificated_credit_num: 66 111 | min_certificated_credit_num: 23 112 | leaf: 113 | 共通: 114 | max_certificated_credit_num: 31 115 | min_certificated_credit_num: 17 116 | leaf: 117 | 必修: 118 | max_certificated_credit_num: 16 119 | min_certificated_credit_num: 16 120 | leaf: 121 | 総合科目: 122 | max_certificated_credit_num: 2 123 | min_certificated_credit_num: 2 124 | leaf: 125 | regexp_number: '' 126 | regexp_name: ^(学問への誘い|フレッシュマン・セミナー)$ 127 | 情報: 128 | max_certificated_credit_num: 4 129 | min_certificated_credit_num: 4 130 | leaf: 131 | regexp_number: ^6.*$ 132 | regexp_name: '' 133 | 体育: 134 | max_certificated_credit_num: 2 135 | min_certificated_credit_num: 2 136 | leaf: 137 | regexp_number: ^2[12].*$ 138 | regexp_name: '' 139 | 第1・2外国語: 140 | max_certificated_credit_num: 8 141 | min_certificated_credit_num: 8 142 | leaf: 143 | regexp_number: ^3.*$ 144 | regexp_name: '' 145 | 選択: 146 | max_certificated_credit_num: 15 147 | min_certificated_credit_num: 1 148 | leaf: 149 | 総合科目(学士基盤科目): 150 | max_certificated_credit_num: 3 151 | min_certificated_credit_num: 1 152 | leaf: 153 | regexp_number: ^1.*$ 154 | regexp_name: '' 155 | 体育: 156 | max_certificated_credit_num: 2 157 | min_certificated_credit_num: 0 158 | leaf: 159 | regexp_number: ^2.*$ 160 | regexp_name: '' 161 | 外国語: 162 | max_certificated_credit_num: 6 163 | min_certificated_credit_num: 0 164 | leaf: 165 | regexp_number: ^3.*$ 166 | regexp_name: '' 167 | 国語: 168 | max_certificated_credit_num: 2 169 | min_certificated_credit_num: 0 170 | leaf: 171 | regexp_number: ^5.*$ 172 | regexp_name: '' 173 | 芸術: 174 | max_certificated_credit_num: 2 175 | min_certificated_credit_num: 0 176 | leaf: 177 | regexp_number: ^4.*$ 178 | regexp_name: '' 179 | 関連: 180 | max_certificated_credit_num: 16 181 | min_certificated_credit_num: 6 182 | leaf: 183 | 必修: 184 | max_certificated_credit_num: 0 185 | min_certificated_credit_num: 0 186 | leaf: {} 187 | 選択: 188 | max_certificated_credit_num: 16 189 | min_certificated_credit_num: 6 190 | leaf: 191 | 社会・国際、特設自由科目並びに博物館: 192 | max_certificated_credit_num: 5 193 | min_certificated_credit_num: 0 194 | leaf: 195 | regexp_number: ^(BA|99|8).*$ 196 | regexp_name: '' 197 | A/BB/C~: 198 | max_certificated_credit_num: 8 199 | min_certificated_credit_num: 3 200 | leaf: 201 | regexp_number: ^(A|BB|C).*$ 202 | regexp_name: '' 203 | E/F/G/H/W/Y~: 204 | max_certificated_credit_num: 10 205 | min_certificated_credit_num: 3 206 | leaf: 207 | regexp_number: ^[EFGHWY].*$ 208 | regexp_name: '' 209 | 教職に関する科目: 210 | max_certificated_credit_num: 12 211 | min_certificated_credit_num: 0 212 | leaf: 213 | regexp_number: ^9.*$ 214 | regexp_name: '' 215 | -------------------------------------------------------------------------------- /data/reqYml/cisIR20.yml: -------------------------------------------------------------------------------- 1 | 国際総合学類国際関係学主専攻20年度入学: 2 | max_certificated_credit_num: 126 3 | min_certificated_credit_num: 126 4 | leaf: 5 | 専門: 6 | max_certificated_credit_num: 117 7 | min_certificated_credit_num: 62 8 | leaf: 9 | ? '' 10 | : max_certificated_credit_num: 117 11 | min_certificated_credit_num: 62 12 | leaf: 13 | 必修: 14 | max_certificated_credit_num: 6 15 | min_certificated_credit_num: 6 16 | leaf: 17 | 卒業論文: 18 | max_certificated_credit_num: 6 19 | min_certificated_credit_num: 6 20 | leaf: 21 | regexp_number: ^FB14908$ 22 | regexp_name: '' 23 | 選択: 24 | max_certificated_credit_num: 75 25 | min_certificated_credit_num: 38 26 | leaf: 27 | BC11/16~: 28 | max_certificated_credit_num: 62 29 | min_certificated_credit_num: 14 30 | leaf: 31 | regexp_number: ^B(C1[126]|E22).*$ 32 | regexp_name: '' 33 | BC12,BE22~: 34 | max_certificated_credit_num: 62 35 | min_certificated_credit_num: 0 36 | leaf: 37 | regexp_number: ^B(C1[126]|E22).*$ 38 | regexp_name: '' 39 | BC13~: 40 | max_certificated_credit_num: 9 41 | min_certificated_credit_num: 6 42 | leaf: 43 | regexp_number: ^BC13.*$ 44 | regexp_name: '' 45 | BC15~: 46 | max_certificated_credit_num: 4 47 | min_certificated_credit_num: 0 48 | leaf: 49 | regexp_number: ^BC15.*$ 50 | regexp_name: '' 51 | 専門基礎: 52 | max_certificated_credit_num: 36 53 | min_certificated_credit_num: 18 54 | leaf: 55 | ? '' 56 | : max_certificated_credit_num: 36 57 | min_certificated_credit_num: 18 58 | leaf: 59 | 必修: 60 | max_certificated_credit_num: 4 61 | min_certificated_credit_num: 4 62 | leaf: 63 | 国際学I: 64 | max_certificated_credit_num: 1 65 | min_certificated_credit_num: 1 66 | leaf: 67 | regexp_number: ^BC50111$ 68 | regexp_name: '' 69 | 国際学II: 70 | max_certificated_credit_num: 1 71 | min_certificated_credit_num: 1 72 | leaf: 73 | regexp_number: ^BC50121$ 74 | regexp_name: '' 75 | 国際学III: 76 | max_certificated_credit_num: 1 77 | min_certificated_credit_num: 1 78 | leaf: 79 | regexp_number: ^BC50131$ 80 | regexp_name: '' 81 | 国際学IV: 82 | max_certificated_credit_num: 1 83 | min_certificated_credit_num: 1 84 | leaf: 85 | regexp_number: ^BC50141$ 86 | regexp_name: '' 87 | 選択: 88 | max_certificated_credit_num: 32 89 | min_certificated_credit_num: 14 90 | leaf: 91 | BC51(EDS,ED以外): 92 | max_certificated_credit_num: 14 93 | min_certificated_credit_num: 10 94 | leaf: 95 | regexp_number: ^(?!BC51(3[1-3]|5[78])4)BC51.*$ 96 | regexp_name: '' 97 | EDS,ED: 98 | max_certificated_credit_num: 4 99 | min_certificated_credit_num: 4 100 | leaf: 101 | regexp_number: ^BC51(3[1-3]|5[78])4$ 102 | regexp_name: '' 103 | BB050,FH611...: 104 | max_certificated_credit_num: 14 105 | min_certificated_credit_num: 0 106 | leaf: 107 | regexp_number: ^(BB050|FH611|FG10641|GA12|BE21).*$ 108 | regexp_name: '' 109 | 基礎: 110 | max_certificated_credit_num: 66 111 | min_certificated_credit_num: 23 112 | leaf: 113 | 共通: 114 | max_certificated_credit_num: 31 115 | min_certificated_credit_num: 17 116 | leaf: 117 | 必修: 118 | max_certificated_credit_num: 16 119 | min_certificated_credit_num: 16 120 | leaf: 121 | 総合科目: 122 | max_certificated_credit_num: 2 123 | min_certificated_credit_num: 2 124 | leaf: 125 | regexp_number: '' 126 | regexp_name: ^(学問への誘い|フレッシュマン・セミナー)$ 127 | 情報: 128 | max_certificated_credit_num: 4 129 | min_certificated_credit_num: 4 130 | leaf: 131 | regexp_number: ^6.*$ 132 | regexp_name: '' 133 | 体育: 134 | max_certificated_credit_num: 2 135 | min_certificated_credit_num: 2 136 | leaf: 137 | regexp_number: ^2[12].*$ 138 | regexp_name: '' 139 | 第1・2外国語: 140 | max_certificated_credit_num: 8 141 | min_certificated_credit_num: 8 142 | leaf: 143 | regexp_number: ^3.*$ 144 | regexp_name: '' 145 | 選択: 146 | max_certificated_credit_num: 15 147 | min_certificated_credit_num: 1 148 | leaf: 149 | 総合科目(学士基盤科目): 150 | max_certificated_credit_num: 3 151 | min_certificated_credit_num: 1 152 | leaf: 153 | regexp_number: ^1.*$ 154 | regexp_name: '' 155 | 体育: 156 | max_certificated_credit_num: 2 157 | min_certificated_credit_num: 0 158 | leaf: 159 | regexp_number: ^2.*$ 160 | regexp_name: '' 161 | 外国語: 162 | max_certificated_credit_num: 6 163 | min_certificated_credit_num: 0 164 | leaf: 165 | regexp_number: ^3.*$ 166 | regexp_name: '' 167 | 国語: 168 | max_certificated_credit_num: 2 169 | min_certificated_credit_num: 0 170 | leaf: 171 | regexp_number: ^5.*$ 172 | regexp_name: '' 173 | 芸術: 174 | max_certificated_credit_num: 2 175 | min_certificated_credit_num: 0 176 | leaf: 177 | regexp_number: ^4.*$ 178 | regexp_name: '' 179 | 関連: 180 | max_certificated_credit_num: 16 181 | min_certificated_credit_num: 6 182 | leaf: 183 | 必修: 184 | max_certificated_credit_num: 0 185 | min_certificated_credit_num: 0 186 | leaf: {} 187 | 選択: 188 | max_certificated_credit_num: 16 189 | min_certificated_credit_num: 6 190 | leaf: 191 | 社会・国際、特設自由科目並びに博物館: 192 | max_certificated_credit_num: 5 193 | min_certificated_credit_num: 0 194 | leaf: 195 | regexp_number: ^(BA|99|8).*$ 196 | regexp_name: '' 197 | A/BB/C~: 198 | max_certificated_credit_num: 8 199 | min_certificated_credit_num: 3 200 | leaf: 201 | regexp_number: ^(A|BB|C).*$ 202 | regexp_name: '' 203 | E/F/G/H/W/Y~: 204 | max_certificated_credit_num: 10 205 | min_certificated_credit_num: 3 206 | leaf: 207 | regexp_number: ^[EFGHWY].*$ 208 | regexp_name: '' 209 | 教職に関する科目: 210 | max_certificated_credit_num: 12 211 | min_certificated_credit_num: 0 212 | leaf: 213 | regexp_number: ^9.*$ 214 | regexp_name: '' 215 | -------------------------------------------------------------------------------- /data/reqYml/coins19.yml: -------------------------------------------------------------------------------- 1 | 情報科学類19年度入学: 2 | max_certificated_credit_num: 125 3 | min_certificated_credit_num: 125 4 | leaf: 5 | 専門: 6 | max_certificated_credit_num: 52 7 | min_certificated_credit_num: 52 8 | leaf: 9 | ? '' 10 | : max_certificated_credit_num: 52 11 | min_certificated_credit_num: 52 12 | leaf: 13 | 必修: 14 | max_certificated_credit_num: 16 15 | min_certificated_credit_num: 16 16 | leaf: 17 | 主専攻実験A/B: 18 | max_certificated_credit_num: 6 19 | min_certificated_credit_num: 6 20 | leaf: 21 | regexp_number: ^GB[234]6[45]03$ 22 | regexp_name: '' 23 | 卒業研究A/B: 24 | max_certificated_credit_num: 6 25 | min_certificated_credit_num: 6 26 | leaf: 27 | regexp_number: ^GB199[4589]8$ 28 | regexp_name: '' 29 | 専門語学A/B: 30 | max_certificated_credit_num: 4 31 | min_certificated_credit_num: 4 32 | leaf: 33 | regexp_number: ^GB190[4578]1$ 34 | regexp_name: '' 35 | 選択: 36 | max_certificated_credit_num: 36 37 | min_certificated_credit_num: 36 38 | leaf: 39 | GBx0~: 40 | max_certificated_credit_num: 10000 41 | min_certificated_credit_num: 18 42 | leaf: 43 | regexp_number: ^GB[234]0.*$ 44 | regexp_name: '' 45 | GB234/ジョットク: 46 | max_certificated_credit_num: 18 47 | min_certificated_credit_num: 0 48 | leaf: 49 | regexp_number: ^GB[234][^0].*$ 50 | regexp_name: ^情報.*特別.*演習 51 | 専門基礎: 52 | max_certificated_credit_num: 49 53 | min_certificated_credit_num: 49 54 | leaf: 55 | ? '' 56 | : max_certificated_credit_num: 49 57 | min_certificated_credit_num: 49 58 | leaf: 59 | 必修: 60 | max_certificated_credit_num: 25 61 | min_certificated_credit_num: 25 62 | leaf: 63 | 線形代数A: 64 | max_certificated_credit_num: 2 65 | min_certificated_credit_num: 2 66 | leaf: 67 | regexp_number: '' 68 | regexp_name: ^線形代数A$ 69 | 線形代数B: 70 | max_certificated_credit_num: 2 71 | min_certificated_credit_num: 2 72 | leaf: 73 | regexp_number: '' 74 | regexp_name: ^線形代数B$ 75 | 微分積分A: 76 | max_certificated_credit_num: 2 77 | min_certificated_credit_num: 2 78 | leaf: 79 | regexp_number: '' 80 | regexp_name: ^微分積分A$ 81 | 微分積分B: 82 | max_certificated_credit_num: 2 83 | min_certificated_credit_num: 2 84 | leaf: 85 | regexp_number: '' 86 | regexp_name: ^微分積分B$ 87 | 情報数学A: 88 | max_certificated_credit_num: 2 89 | min_certificated_credit_num: 2 90 | leaf: 91 | regexp_number: '' 92 | regexp_name: ^情報数学A$ 93 | 専門英語基礎: 94 | max_certificated_credit_num: 1 95 | min_certificated_credit_num: 1 96 | leaf: 97 | regexp_number: '' 98 | regexp_name: ^専門英語基礎$ 99 | プロ入: 100 | max_certificated_credit_num: 3 101 | min_certificated_credit_num: 3 102 | leaf: 103 | regexp_number: '' 104 | regexp_name: ^プログラミング入門$ 105 | コンプロ: 106 | max_certificated_credit_num: 3 107 | min_certificated_credit_num: 3 108 | leaf: 109 | regexp_number: '' 110 | regexp_name: ^(コンピュータとプログラミング|システムプログラミング序論)$ 111 | DSA: 112 | max_certificated_credit_num: 3 113 | min_certificated_credit_num: 3 114 | leaf: 115 | regexp_number: '' 116 | regexp_name: ^データ構造とアルゴリズム$ 117 | DSAL: 118 | max_certificated_credit_num: 1.5 119 | min_certificated_credit_num: 1.5 120 | leaf: 121 | regexp_number: '' 122 | regexp_name: ^データ構造とアルゴリズム実験$ 123 | 論理回路: 124 | max_certificated_credit_num: 2 125 | min_certificated_credit_num: 2 126 | leaf: 127 | regexp_number: '' 128 | regexp_name: ^論理回路$ 129 | 論理回路演習: 130 | max_certificated_credit_num: 1.5 131 | min_certificated_credit_num: 1.5 132 | leaf: 133 | regexp_number: '' 134 | regexp_name: ^(論理回路演習|論理回路実験)$ 135 | 選択: 136 | max_certificated_credit_num: 24 137 | min_certificated_credit_num: 24 138 | leaf: 139 | 実質必修のやつ: 140 | max_certificated_credit_num: 10000 141 | min_certificated_credit_num: 10 142 | leaf: 143 | regexp_number: '' 144 | regexp_name: ^(確率論|統計学|数値計算法|論理と形式化|電磁気学|論理システム|論理システム演習)$ 145 | CS in English: 146 | max_certificated_credit_num: 10000 147 | min_certificated_credit_num: 2 148 | leaf: 149 | regexp_number: '' 150 | regexp_name: ^Computer.*Science.*in.*English.*[AB]$ 151 | GB1~: 152 | max_certificated_credit_num: 10000 153 | min_certificated_credit_num: 0 154 | leaf: 155 | regexp_number: ^GB1.*$ 156 | regexp_name: '' 157 | GA1~: 158 | max_certificated_credit_num: 10000 159 | min_certificated_credit_num: 8 160 | leaf: 161 | regexp_number: ^GA1.*$ 162 | regexp_name: '' 163 | 基礎: 164 | max_certificated_credit_num: 24 165 | min_certificated_credit_num: 24 166 | leaf: 167 | 共通: 168 | max_certificated_credit_num: 18 169 | min_certificated_credit_num: 14 170 | leaf: 171 | 必修: 172 | max_certificated_credit_num: 13 173 | min_certificated_credit_num: 13 174 | leaf: 175 | 総合科目: 176 | max_certificated_credit_num: 2 177 | min_certificated_credit_num: 2 178 | leaf: 179 | regexp_number: '' 180 | regexp_name: ^(学問への誘い|フレッシュマン・セミナー)$ 181 | 体育: 182 | max_certificated_credit_num: 3 183 | min_certificated_credit_num: 3 184 | leaf: 185 | regexp_number: ^2[123].*$ 186 | regexp_name: '' 187 | 外国語(英語): 188 | max_certificated_credit_num: 4 189 | min_certificated_credit_num: 4 190 | leaf: 191 | regexp_number: ^31.*$ 192 | regexp_name: (^English Presentation Skills I+$) 193 | 情報: 194 | max_certificated_credit_num: 4 195 | min_certificated_credit_num: 4 196 | leaf: 197 | regexp_number: ^6.*$ 198 | regexp_name: '' 199 | 選択: 200 | max_certificated_credit_num: 5 201 | min_certificated_credit_num: 1 202 | leaf: 203 | 総合科目(学士基盤科目): 204 | max_certificated_credit_num: 10000 205 | min_certificated_credit_num: 1 206 | leaf: 207 | regexp_number: ^1.*$ 208 | regexp_name: '' 209 | 体育/外国語/国語/芸術: 210 | max_certificated_credit_num: 10000 211 | min_certificated_credit_num: 0 212 | leaf: 213 | regexp_number: ^[2345].*$ 214 | regexp_name: '' 215 | 関連: 216 | max_certificated_credit_num: 10 217 | min_certificated_credit_num: 6 218 | leaf: 219 | 必修: 220 | max_certificated_credit_num: 0 221 | min_certificated_credit_num: 0 222 | leaf: {} 223 | 選択: 224 | max_certificated_credit_num: 10 225 | min_certificated_credit_num: 6 226 | leaf: 227 | E,F,G,H,GC,GE,H以外始まり: 228 | max_certificated_credit_num: 10000 229 | min_certificated_credit_num: 6 230 | leaf: 231 | regexp_number: ^[^EFGH1-9].*$ 232 | regexp_name: '' 233 | E,F,G,H,GC,GE,H始まり: 234 | max_certificated_credit_num: 4 235 | min_certificated_credit_num: 0 236 | leaf: 237 | regexp_number: ^([EFH]|GC|GE).*$ 238 | regexp_name: '' 239 | -------------------------------------------------------------------------------- /data/reqYml/coins20.yml: -------------------------------------------------------------------------------- 1 | 情報科学類20年度入学: 2 | max_certificated_credit_num: 125 3 | min_certificated_credit_num: 125 4 | leaf: 5 | 専門: 6 | max_certificated_credit_num: 52 7 | min_certificated_credit_num: 52 8 | leaf: 9 | ? '' 10 | : max_certificated_credit_num: 52 11 | min_certificated_credit_num: 52 12 | leaf: 13 | 必修: 14 | max_certificated_credit_num: 16 15 | min_certificated_credit_num: 16 16 | leaf: 17 | 主専攻実験A/B: 18 | max_certificated_credit_num: 6 19 | min_certificated_credit_num: 6 20 | leaf: 21 | regexp_number: ^GB[234]6[45]03$ 22 | regexp_name: '' 23 | 卒業研究A/B: 24 | max_certificated_credit_num: 6 25 | min_certificated_credit_num: 6 26 | leaf: 27 | regexp_number: ^GB199[4589]8$ 28 | regexp_name: '' 29 | 専門語学A/B: 30 | max_certificated_credit_num: 4 31 | min_certificated_credit_num: 4 32 | leaf: 33 | regexp_number: ^GB190[4578]1$ 34 | regexp_name: '' 35 | 選択: 36 | max_certificated_credit_num: 36 37 | min_certificated_credit_num: 36 38 | leaf: 39 | GBx0~: 40 | max_certificated_credit_num: 10000 41 | min_certificated_credit_num: 18 42 | leaf: 43 | regexp_number: ^(GB[234]0.*|GB21601|GB21111|GB21802|GB31301|GB31501)$ 44 | regexp_name: '' 45 | GB234/ジョットク: 46 | max_certificated_credit_num: 18 47 | min_certificated_credit_num: 0 48 | leaf: 49 | regexp_number: ^GB[234][^0].*$ 50 | regexp_name: ^情報.*特別.*演習 51 | 専門基礎: 52 | max_certificated_credit_num: 50 53 | min_certificated_credit_num: 50 54 | leaf: 55 | ? '' 56 | : max_certificated_credit_num: 50 57 | min_certificated_credit_num: 50 58 | leaf: 59 | 必修: 60 | max_certificated_credit_num: 26 61 | min_certificated_credit_num: 26 62 | leaf: 63 | 線形代数A: 64 | max_certificated_credit_num: 2 65 | min_certificated_credit_num: 2 66 | leaf: 67 | regexp_number: '' 68 | regexp_name: ^線形代数A$ 69 | 線形代数B: 70 | max_certificated_credit_num: 2 71 | min_certificated_credit_num: 2 72 | leaf: 73 | regexp_number: '' 74 | regexp_name: ^線形代数B$ 75 | 微分積分A: 76 | max_certificated_credit_num: 2 77 | min_certificated_credit_num: 2 78 | leaf: 79 | regexp_number: '' 80 | regexp_name: ^微分積分A$ 81 | 微分積分B: 82 | max_certificated_credit_num: 2 83 | min_certificated_credit_num: 2 84 | leaf: 85 | regexp_number: '' 86 | regexp_name: ^微分積分B$ 87 | 情報数学A: 88 | max_certificated_credit_num: 2 89 | min_certificated_credit_num: 2 90 | leaf: 91 | regexp_number: '' 92 | regexp_name: ^情報数学A$ 93 | 専門英語基礎: 94 | max_certificated_credit_num: 1 95 | min_certificated_credit_num: 1 96 | leaf: 97 | regexp_number: '' 98 | regexp_name: ^専門英語基礎$ 99 | プロ入: 100 | max_certificated_credit_num: 3 101 | min_certificated_credit_num: 3 102 | leaf: 103 | regexp_number: '' 104 | regexp_name: ^プログラミング入門$ 105 | コンプロ: 106 | max_certificated_credit_num: 3 107 | min_certificated_credit_num: 3 108 | leaf: 109 | regexp_number: '' 110 | regexp_name: ^コンピュータとプログラミング$ 111 | DSA: 112 | max_certificated_credit_num: 3 113 | min_certificated_credit_num: 3 114 | leaf: 115 | regexp_number: '' 116 | regexp_name: ^データ構造とアルゴリズム$ 117 | DSAL: 118 | max_certificated_credit_num: 2 119 | min_certificated_credit_num: 2 120 | leaf: 121 | regexp_number: '' 122 | regexp_name: ^データ構造とアルゴリズム実験$ 123 | 論理回路: 124 | max_certificated_credit_num: 2 125 | min_certificated_credit_num: 2 126 | leaf: 127 | regexp_number: '' 128 | regexp_name: ^論理回路$ 129 | 論理回路演習: 130 | max_certificated_credit_num: 2 131 | min_certificated_credit_num: 2 132 | leaf: 133 | regexp_number: '' 134 | regexp_name: ^(論理回路演習|論理回路実験)$ 135 | 選択: 136 | max_certificated_credit_num: 24 137 | min_certificated_credit_num: 24 138 | leaf: 139 | 実質必修のやつ: 140 | max_certificated_credit_num: 10000 141 | min_certificated_credit_num: 10 142 | leaf: 143 | regexp_number: '' 144 | regexp_name: ^(確率論|統計学|統計学(3年生向け)|数値計算法|論理と形式化|電磁気学|論理システム|論理システム演習)$ 145 | CS in English: 146 | max_certificated_credit_num: 10000 147 | min_certificated_credit_num: 2 148 | leaf: 149 | regexp_number: '' 150 | regexp_name: ^Computer.*Science.*in.*English.*[AB]$ 151 | GB1~: 152 | max_certificated_credit_num: 10000 153 | min_certificated_credit_num: 0 154 | leaf: 155 | regexp_number: ^GB1.*$ 156 | regexp_name: '' 157 | GA1~: 158 | max_certificated_credit_num: 10000 159 | min_certificated_credit_num: 8 160 | leaf: 161 | regexp_number: ^GA1.*$ 162 | regexp_name: '' 163 | 基礎: 164 | max_certificated_credit_num: 23 165 | min_certificated_credit_num: 23 166 | leaf: 167 | 共通: 168 | max_certificated_credit_num: 17 169 | min_certificated_credit_num: 13 170 | leaf: 171 | 必修: 172 | max_certificated_credit_num: 12 173 | min_certificated_credit_num: 12 174 | leaf: 175 | 総合科目: 176 | max_certificated_credit_num: 2 177 | min_certificated_credit_num: 2 178 | leaf: 179 | regexp_number: '' 180 | regexp_name: ^(学問への誘い|フレッシュマン・セミナー)$ 181 | 体育: 182 | max_certificated_credit_num: 2 183 | min_certificated_credit_num: 2 184 | leaf: 185 | regexp_number: ^2[12].*$ 186 | regexp_name: '' 187 | 外国語(英語): 188 | max_certificated_credit_num: 4 189 | min_certificated_credit_num: 4 190 | leaf: 191 | regexp_number: ^31.*$ 192 | regexp_name: (^English Presentation Skills I+$) 193 | 情報: 194 | max_certificated_credit_num: 4 195 | min_certificated_credit_num: 4 196 | leaf: 197 | regexp_number: ^6.*$ 198 | regexp_name: '' 199 | 選択: 200 | max_certificated_credit_num: 5 201 | min_certificated_credit_num: 1 202 | leaf: 203 | 総合科目(学士基盤科目): 204 | max_certificated_credit_num: 10000 205 | min_certificated_credit_num: 1 206 | leaf: 207 | regexp_number: ^1.*$ 208 | regexp_name: '' 209 | 体育/外国語/国語/芸術: 210 | max_certificated_credit_num: 10000 211 | min_certificated_credit_num: 0 212 | leaf: 213 | regexp_number: ^[2345].*$ 214 | regexp_name: '' 215 | 関連: 216 | max_certificated_credit_num: 10 217 | min_certificated_credit_num: 6 218 | leaf: 219 | 必修: 220 | max_certificated_credit_num: 0 221 | min_certificated_credit_num: 0 222 | leaf: {} 223 | 選択: 224 | max_certificated_credit_num: 10 225 | min_certificated_credit_num: 6 226 | leaf: 227 | E,F,G,H,GC,GE,H以外始まり: 228 | max_certificated_credit_num: 10000 229 | min_certificated_credit_num: 6 230 | leaf: 231 | regexp_number: ^[^EFGH1-9].*$ 232 | regexp_name: '' 233 | E,F,G,H,GC,GE,H始まり: 234 | max_certificated_credit_num: 4 235 | min_certificated_credit_num: 0 236 | leaf: 237 | regexp_number: ^([EFH]|GC|GE).*$ 238 | regexp_name: '' 239 | -------------------------------------------------------------------------------- /data/reqYml/coins21.yml: -------------------------------------------------------------------------------- 1 | 情報科学類21年度入学: 2 | max_certificated_credit_num: 125 3 | min_certificated_credit_num: 125 4 | leaf: 5 | 専門: 6 | max_certificated_credit_num: 52 7 | min_certificated_credit_num: 52 8 | leaf: 9 | ? '' 10 | : max_certificated_credit_num: 52 11 | min_certificated_credit_num: 52 12 | leaf: 13 | 必修: 14 | max_certificated_credit_num: 16 15 | min_certificated_credit_num: 16 16 | leaf: 17 | 主専攻実験A/B: 18 | max_certificated_credit_num: 6 19 | min_certificated_credit_num: 6 20 | leaf: 21 | regexp_number: ^GB[234]6[45]03$ 22 | regexp_name: '' 23 | 卒業研究A/B: 24 | max_certificated_credit_num: 6 25 | min_certificated_credit_num: 6 26 | leaf: 27 | regexp_number: ^GB199[4589]8$ 28 | regexp_name: '' 29 | 専門語学A/B: 30 | max_certificated_credit_num: 4 31 | min_certificated_credit_num: 4 32 | leaf: 33 | regexp_number: ^GB190[4578]1$ 34 | regexp_name: '' 35 | 選択: 36 | max_certificated_credit_num: 36 37 | min_certificated_credit_num: 36 38 | leaf: 39 | GBx0~: 40 | max_certificated_credit_num: 10000 41 | min_certificated_credit_num: 18 42 | leaf: 43 | regexp_number: ^GB[234]0.*$ 44 | regexp_name: '' 45 | GB234/ジョットク: 46 | max_certificated_credit_num: 18 47 | min_certificated_credit_num: 0 48 | leaf: 49 | regexp_number: ^GB[234][^0].*$ 50 | regexp_name: ^情報.*特別.*演習 51 | 専門基礎: 52 | max_certificated_credit_num: 50 53 | min_certificated_credit_num: 50 54 | leaf: 55 | ? '' 56 | : max_certificated_credit_num: 50 57 | min_certificated_credit_num: 50 58 | leaf: 59 | 必修: 60 | max_certificated_credit_num: 26 61 | min_certificated_credit_num: 26 62 | leaf: 63 | 線形代数A: 64 | max_certificated_credit_num: 2 65 | min_certificated_credit_num: 2 66 | leaf: 67 | regexp_number: '' 68 | regexp_name: ^線形代数A$ 69 | 線形代数B: 70 | max_certificated_credit_num: 2 71 | min_certificated_credit_num: 2 72 | leaf: 73 | regexp_number: '' 74 | regexp_name: ^線形代数B$ 75 | 微分積分A: 76 | max_certificated_credit_num: 2 77 | min_certificated_credit_num: 2 78 | leaf: 79 | regexp_number: '' 80 | regexp_name: ^微分積分A$ 81 | 微分積分B: 82 | max_certificated_credit_num: 2 83 | min_certificated_credit_num: 2 84 | leaf: 85 | regexp_number: '' 86 | regexp_name: ^微分積分B$ 87 | 情報数学A: 88 | max_certificated_credit_num: 2 89 | min_certificated_credit_num: 2 90 | leaf: 91 | regexp_number: '' 92 | regexp_name: ^情報数学A$ 93 | 専門英語基礎: 94 | max_certificated_credit_num: 1 95 | min_certificated_credit_num: 1 96 | leaf: 97 | regexp_number: '' 98 | regexp_name: ^専門英語基礎$ 99 | プロ入: 100 | max_certificated_credit_num: 3 101 | min_certificated_credit_num: 3 102 | leaf: 103 | regexp_number: '' 104 | regexp_name: ^プログラミング入門[AB]$ 105 | コンプロ: 106 | max_certificated_credit_num: 3 107 | min_certificated_credit_num: 3 108 | leaf: 109 | regexp_number: '' 110 | regexp_name: ^コンピュータとプログラミング$ 111 | DSA: 112 | max_certificated_credit_num: 3 113 | min_certificated_credit_num: 3 114 | leaf: 115 | regexp_number: '' 116 | regexp_name: ^データ構造とアルゴリズム$ 117 | DSAL: 118 | max_certificated_credit_num: 2 119 | min_certificated_credit_num: 2 120 | leaf: 121 | regexp_number: '' 122 | regexp_name: ^データ構造とアルゴリズム実験$ 123 | 論理回路: 124 | max_certificated_credit_num: 2 125 | min_certificated_credit_num: 2 126 | leaf: 127 | regexp_number: '' 128 | regexp_name: ^論理回路$ 129 | 論理回路演習: 130 | max_certificated_credit_num: 2 131 | min_certificated_credit_num: 2 132 | leaf: 133 | regexp_number: '' 134 | regexp_name: ^(論理回路演習|論理回路実験)$ 135 | 選択: 136 | max_certificated_credit_num: 24 137 | min_certificated_credit_num: 24 138 | leaf: 139 | 実質必修のやつ: 140 | max_certificated_credit_num: 10000 141 | min_certificated_credit_num: 10 142 | leaf: 143 | regexp_number: '' 144 | regexp_name: ^(確率論|統計学|数値計算法|論理と形式化|電磁気学|論理システム|論理システム演習)$ 145 | CS in English: 146 | max_certificated_credit_num: 10000 147 | min_certificated_credit_num: 2 148 | leaf: 149 | regexp_number: '' 150 | regexp_name: ^Computer.*Science.*in.*English.*[AB]$ 151 | GB1~: 152 | max_certificated_credit_num: 10000 153 | min_certificated_credit_num: 0 154 | leaf: 155 | regexp_number: ^GB1.*$ 156 | regexp_name: '' 157 | GA1~: 158 | max_certificated_credit_num: 10000 159 | min_certificated_credit_num: 8 160 | leaf: 161 | regexp_number: ^GA1.*$ 162 | regexp_name: '' 163 | 基礎: 164 | max_certificated_credit_num: 23 165 | min_certificated_credit_num: 23 166 | leaf: 167 | 共通: 168 | max_certificated_credit_num: 17 169 | min_certificated_credit_num: 13 170 | leaf: 171 | 必修: 172 | max_certificated_credit_num: 12 173 | min_certificated_credit_num: 12 174 | leaf: 175 | 総合科目: 176 | max_certificated_credit_num: 2 177 | min_certificated_credit_num: 2 178 | leaf: 179 | regexp_number: '' 180 | regexp_name: ^(学問への誘い|フレッシュマン・セミナー)$ 181 | 体育: 182 | max_certificated_credit_num: 2 183 | min_certificated_credit_num: 2 184 | leaf: 185 | regexp_number: ^2[12].*$ 186 | regexp_name: '' 187 | 外国語(英語): 188 | max_certificated_credit_num: 4 189 | min_certificated_credit_num: 4 190 | leaf: 191 | regexp_number: ^31.*$ 192 | regexp_name: (^English Presentation Skills I+$) 193 | 情報: 194 | max_certificated_credit_num: 4 195 | min_certificated_credit_num: 4 196 | leaf: 197 | regexp_number: ^6.*$ 198 | regexp_name: '' 199 | 選択: 200 | max_certificated_credit_num: 5 201 | min_certificated_credit_num: 1 202 | leaf: 203 | 総合科目(学士基盤科目): 204 | max_certificated_credit_num: 10000 205 | min_certificated_credit_num: 1 206 | leaf: 207 | regexp_number: ^1.*$ 208 | regexp_name: '' 209 | 体育/外国語/国語/芸術: 210 | max_certificated_credit_num: 10000 211 | min_certificated_credit_num: 0 212 | leaf: 213 | regexp_number: ^[2345].*$ 214 | regexp_name: '' 215 | 関連: 216 | max_certificated_credit_num: 10 217 | min_certificated_credit_num: 6 218 | leaf: 219 | 必修: 220 | max_certificated_credit_num: 0 221 | min_certificated_credit_num: 0 222 | leaf: {} 223 | 選択: 224 | max_certificated_credit_num: 10 225 | min_certificated_credit_num: 6 226 | leaf: 227 | E,F,G,H,GC,GE,H以外始まり: 228 | max_certificated_credit_num: 10000 229 | min_certificated_credit_num: 6 230 | leaf: 231 | regexp_number: ^[^EFGH1-9].*$ 232 | regexp_name: '' 233 | E,F,G,H,GC,GE,H始まり: 234 | max_certificated_credit_num: 4 235 | min_certificated_credit_num: 0 236 | leaf: 237 | regexp_number: ^([EFH]|GC|GE).*$ 238 | regexp_name: '' 239 | -------------------------------------------------------------------------------- /data/reqYml/mast20.yml: -------------------------------------------------------------------------------- 1 | 情報メディア創成学類20年度入学: 2 | max_certificated_credit_num: 125 3 | min_certificated_credit_num: 125 4 | leaf: 5 | 専門: 6 | max_certificated_credit_num: 49 7 | min_certificated_credit_num: 34 8 | leaf: 9 | ? '' 10 | : max_certificated_credit_num: 49 11 | min_certificated_credit_num: 34 12 | leaf: 13 | 必修: 14 | max_certificated_credit_num: 14 15 | min_certificated_credit_num: 14 16 | leaf: 17 | 主専攻実験A/B: 18 | max_certificated_credit_num: 6 19 | min_certificated_credit_num: 6 20 | leaf: 21 | regexp_number: ^GC41[12]03$ 22 | regexp_name: '' 23 | 卒業研究A/B: 24 | max_certificated_credit_num: 6 25 | min_certificated_credit_num: 6 26 | leaf: 27 | regexp_number: ^GC48[6789]08$ 28 | regexp_name: '' 29 | 専門英語A/B: 30 | max_certificated_credit_num: 2 31 | min_certificated_credit_num: 2 32 | leaf: 33 | regexp_number: ^GC42[12]02$ 34 | regexp_name: '' 35 | 選択: 36 | max_certificated_credit_num: 35 37 | min_certificated_credit_num: 20 38 | leaf: 39 | GC5/GA4~: 40 | max_certificated_credit_num: 35 41 | min_certificated_credit_num: 20 42 | leaf: 43 | regexp_number: ^(GC5|GA4).*$ 44 | regexp_name: '' 45 | 専門基礎: 46 | max_certificated_credit_num: 71 47 | min_certificated_credit_num: 56 48 | leaf: 49 | ? '' 50 | : max_certificated_credit_num: 71 51 | min_certificated_credit_num: 56 52 | leaf: 53 | 必修: 54 | max_certificated_credit_num: 24 55 | min_certificated_credit_num: 24 56 | leaf: 57 | 微分積分A: 58 | max_certificated_credit_num: 2 59 | min_certificated_credit_num: 2 60 | leaf: 61 | regexp_number: '' 62 | regexp_name: ^微分積分A$ 63 | 微分積分B: 64 | max_certificated_credit_num: 2 65 | min_certificated_credit_num: 2 66 | leaf: 67 | regexp_number: '' 68 | regexp_name: ^微分積分B$ 69 | 線形代数A: 70 | max_certificated_credit_num: 2 71 | min_certificated_credit_num: 2 72 | leaf: 73 | regexp_number: '' 74 | regexp_name: ^線形代数A$ 75 | 線形代数B: 76 | max_certificated_credit_num: 2 77 | min_certificated_credit_num: 2 78 | leaf: 79 | regexp_number: '' 80 | regexp_name: ^線形代数B$ 81 | 情報数学A: 82 | max_certificated_credit_num: 2 83 | min_certificated_credit_num: 2 84 | leaf: 85 | regexp_number: '' 86 | regexp_name: ^情報数学A$ 87 | 確率と統計: 88 | max_certificated_credit_num: 2 89 | min_certificated_credit_num: 2 90 | leaf: 91 | regexp_number: '' 92 | regexp_name: ^確率と統計$ 93 | プロ入: 94 | max_certificated_credit_num: 3 95 | min_certificated_credit_num: 3 96 | leaf: 97 | regexp_number: '' 98 | regexp_name: ^プログラミング入門$ 99 | プログラミング: 100 | max_certificated_credit_num: 2 101 | min_certificated_credit_num: 2 102 | leaf: 103 | regexp_number: '' 104 | regexp_name: ^プログラミング$ 105 | コンピュータシステムとOS: 106 | max_certificated_credit_num: 2 107 | min_certificated_credit_num: 2 108 | leaf: 109 | regexp_number: '' 110 | regexp_name: ^コンピュータシステムとOS$ 111 | DSA: 112 | max_certificated_credit_num: 2 113 | min_certificated_credit_num: 2 114 | leaf: 115 | regexp_number: '' 116 | regexp_name: ^データ構造とアルゴリズム$ 117 | DSAT: 118 | max_certificated_credit_num: 1 119 | min_certificated_credit_num: 1 120 | leaf: 121 | regexp_number: '' 122 | regexp_name: ^データ構造とアルゴリズム実習$ 123 | データ工学概論: 124 | max_certificated_credit_num: 2 125 | min_certificated_credit_num: 2 126 | leaf: 127 | regexp_number: '' 128 | regexp_name: ^データ工学概論$ 129 | 選択: 130 | max_certificated_credit_num: 47 131 | min_certificated_credit_num: 32 132 | leaf: 133 | GC2/GA1~: 134 | max_certificated_credit_num: 47 135 | min_certificated_credit_num: 32 136 | leaf: 137 | regexp_number: ^(GC2|GA1).*$ 138 | regexp_name: '' 139 | 基礎: 140 | max_certificated_credit_num: 37 141 | min_certificated_credit_num: 19 142 | leaf: 143 | 共通: 144 | max_certificated_credit_num: 22 145 | min_certificated_credit_num: 13 146 | leaf: 147 | 必修: 148 | max_certificated_credit_num: 12 149 | min_certificated_credit_num: 12 150 | leaf: 151 | 総合科目: 152 | max_certificated_credit_num: 2 153 | min_certificated_credit_num: 2 154 | leaf: 155 | regexp_number: '' 156 | regexp_name: ^(学問への誘い|フレッシュマン・セミナー)$ 157 | 情報: 158 | max_certificated_credit_num: 4 159 | min_certificated_credit_num: 4 160 | leaf: 161 | regexp_number: ^6.*$ 162 | regexp_name: '' 163 | 体育: 164 | max_certificated_credit_num: 2 165 | min_certificated_credit_num: 2 166 | leaf: 167 | regexp_number: ^2[12].*$ 168 | regexp_name: '' 169 | 外国語(英語): 170 | max_certificated_credit_num: 4 171 | min_certificated_credit_num: 4 172 | leaf: 173 | regexp_number: ^31.*$ 174 | regexp_name: (^English Presentation Skills I+$) 175 | 選択: 176 | max_certificated_credit_num: 10 177 | min_certificated_credit_num: 1 178 | leaf: 179 | 総合科目(学士基盤科目): 180 | max_certificated_credit_num: 4 181 | min_certificated_credit_num: 1 182 | leaf: 183 | regexp_number: ^1.*$ 184 | regexp_name: '' 185 | 体育: 186 | max_certificated_credit_num: 2 187 | min_certificated_credit_num: 0 188 | leaf: 189 | regexp_number: ^2.*$ 190 | regexp_name: '' 191 | 外国語: 192 | max_certificated_credit_num: 6 193 | min_certificated_credit_num: 0 194 | leaf: 195 | regexp_number: ^3.*$ 196 | regexp_name: '' 197 | 国語: 198 | max_certificated_credit_num: 2 199 | min_certificated_credit_num: 0 200 | leaf: 201 | regexp_number: ^5.*$ 202 | regexp_name: '' 203 | 芸術: 204 | max_certificated_credit_num: 6 205 | min_certificated_credit_num: 0 206 | leaf: 207 | regexp_number: ^4.*$ 208 | regexp_name: '' 209 | 関連: 210 | max_certificated_credit_num: 15 211 | min_certificated_credit_num: 6 212 | leaf: 213 | 必修: 214 | max_certificated_credit_num: 0 215 | min_certificated_credit_num: 0 216 | leaf: {} 217 | 選択: 218 | max_certificated_credit_num: 15 219 | min_certificated_credit_num: 6 220 | leaf: 221 | E,F,G,H,GC,GE,H以外始まり: 222 | max_certificated_credit_num: 10000 223 | min_certificated_credit_num: 6 224 | leaf: 225 | regexp_number: ^[^1-9G].*$ 226 | regexp_name: '' 227 | GB,GE: 228 | max_certificated_credit_num: 10000 229 | min_certificated_credit_num: 6 230 | leaf: 231 | regexp_number: ^(GB|GE).*$ 232 | regexp_name: '' 233 | 博物館/自由科目(特設): 234 | max_certificated_credit_num: 4 235 | min_certificated_credit_num: 0 236 | leaf: 237 | regexp_number: ^99.*$ 238 | regexp_name: '' 239 | -------------------------------------------------------------------------------- /data/reqYml/math20.yml: -------------------------------------------------------------------------------- 1 | 数学類20年度入学: 2 | max_certificated_credit_num: 124 3 | min_certificated_credit_num: 124 4 | leaf: 5 | 専門: 6 | max_certificated_credit_num: 84 7 | min_certificated_credit_num: 60 8 | leaf: 9 | ? '' 10 | : max_certificated_credit_num: 84 11 | min_certificated_credit_num: 60 12 | leaf: 13 | 必修: 14 | max_certificated_credit_num: 14 15 | min_certificated_credit_num: 14 16 | leaf: 17 | 卒業研究: 18 | max_certificated_credit_num: 6 19 | min_certificated_credit_num: 6 20 | leaf: 21 | regexp_number: ^FB14908$ 22 | regexp_name: '' 23 | 卒業予備研究: 24 | max_certificated_credit_num: 3 25 | min_certificated_credit_num: 3 26 | leaf: 27 | regexp_number: ^FB13901$ 28 | regexp_name: '' 29 | 数学外書輪講II: 30 | max_certificated_credit_num: 2 31 | min_certificated_credit_num: 2 32 | leaf: 33 | regexp_number: ^FB135[012]1$ 34 | regexp_name: '' 35 | 選択: 36 | max_certificated_credit_num: 70 37 | min_certificated_credit_num: 46 38 | leaf: 39 | FB12/13/14~: 40 | max_certificated_credit_num: 70 41 | min_certificated_credit_num: 46 42 | leaf: 43 | regexp_number: ^FB1[2-4].*$ 44 | regexp_name: '' 45 | 専門基礎: 46 | max_certificated_credit_num: 53 47 | min_certificated_credit_num: 29 48 | leaf: 49 | ? '' 50 | : max_certificated_credit_num: 53 51 | min_certificated_credit_num: 29 52 | leaf: 53 | 必修: 54 | max_certificated_credit_num: 6 55 | min_certificated_credit_num: 6 56 | leaf: 57 | 微積分I,II: 58 | max_certificated_credit_num: 2 59 | min_certificated_credit_num: 2 60 | leaf: 61 | regexp_number: ^FBA(14[6-9]1|15[0-3]1)$ 62 | regexp_name: '' 63 | 線形代数I,II: 64 | max_certificated_credit_num: 2 65 | min_certificated_credit_num: 2 66 | leaf: 67 | regexp_number: ^FBA(1(5[89]|6[01])1|16[2-5]1)$ 68 | regexp_name: '' 69 | 数学リテラシー1: 70 | max_certificated_credit_num: 1 71 | min_certificated_credit_num: 1 72 | leaf: 73 | regexp_number: '' 74 | regexp_name: ^数学リテラシー1$ 75 | 数学リテラシー2: 76 | max_certificated_credit_num: 1 77 | min_certificated_credit_num: 1 78 | leaf: 79 | regexp_number: '' 80 | regexp_name: ^数学リテラシー2$ 81 | 選択: 82 | max_certificated_credit_num: 47 83 | min_certificated_credit_num: 23 84 | leaf: 85 | FBA/FC/FE/EE,生物~: 86 | max_certificated_credit_num: 47 87 | min_certificated_credit_num: 23 88 | leaf: 89 | regexp_number: ^((FBA|FC|FE|EE).*|(EB00001|EB11[368]11|EB11[27]21|EB11131))$ 90 | regexp_name: '' 91 | 基礎: 92 | max_certificated_credit_num: 45 93 | min_certificated_credit_num: 19 94 | leaf: 95 | 共通: 96 | max_certificated_credit_num: 29 97 | min_certificated_credit_num: 13 98 | leaf: 99 | 必修: 100 | max_certificated_credit_num: 12 101 | min_certificated_credit_num: 12 102 | leaf: 103 | 総合科目: 104 | max_certificated_credit_num: 2 105 | min_certificated_credit_num: 2 106 | leaf: 107 | regexp_number: '' 108 | regexp_name: ^(学問への誘い|フレッシュマン・セミナー)$ 109 | 情報: 110 | max_certificated_credit_num: 4 111 | min_certificated_credit_num: 4 112 | leaf: 113 | regexp_number: ^6.*$ 114 | regexp_name: '' 115 | 体育: 116 | max_certificated_credit_num: 2 117 | min_certificated_credit_num: 2 118 | leaf: 119 | regexp_number: ^2[12].*$ 120 | regexp_name: '' 121 | 第1外国語: 122 | max_certificated_credit_num: 4 123 | min_certificated_credit_num: 4 124 | leaf: 125 | regexp_number: ^31.*$ 126 | regexp_name: (^English Presentation Skills I+$) 127 | 選択: 128 | max_certificated_credit_num: 17 129 | min_certificated_credit_num: 1 130 | leaf: 131 | 総合科目(学士基盤科目): 132 | max_certificated_credit_num: 1 133 | min_certificated_credit_num: 1 134 | leaf: 135 | regexp_number: ^1.*$ 136 | regexp_name: '' 137 | 総合科目/体育/外国語/国語/芸術: 138 | max_certificated_credit_num: 16 139 | min_certificated_credit_num: 0 140 | leaf: 141 | regexp_number: ^[1-5].*$ 142 | regexp_name: '' 143 | 関連: 144 | max_certificated_credit_num: 16 145 | min_certificated_credit_num: 6 146 | leaf: 147 | 必修: 148 | max_certificated_credit_num: 0 149 | min_certificated_credit_num: 0 150 | leaf: {} 151 | 選択: 152 | max_certificated_credit_num: 16 153 | min_certificated_credit_num: 6 154 | leaf: 155 | 専門科目および専門基礎科目で指定した以外の科目: 156 | max_certificated_credit_num: 10000 157 | min_certificated_credit_num: 6 158 | leaf: 159 | regexp_number: ^.......$ 160 | regexp_name: '' 161 | -------------------------------------------------------------------------------- /data/reqYml/psych20.yml: -------------------------------------------------------------------------------- 1 | 心理学類20年度入学: 2 | max_certificated_credit_num: 125 3 | min_certificated_credit_num: 125 4 | leaf: 5 | 専門: 6 | max_certificated_credit_num: 80 7 | min_certificated_credit_num: 43 8 | leaf: 9 | ? '' 10 | : max_certificated_credit_num: 80 11 | min_certificated_credit_num: 43 12 | leaf: 13 | 必修: 14 | max_certificated_credit_num: 22 15 | min_certificated_credit_num: 22 16 | leaf: 17 | 知覚・認知心理学: 18 | max_certificated_credit_num: 2 19 | min_certificated_credit_num: 2 20 | leaf: 21 | regexp_number: ^CC21291$ 22 | regexp_name: '' 23 | 学習・言語心理学: 24 | max_certificated_credit_num: 2 25 | min_certificated_credit_num: 2 26 | leaf: 27 | regexp_number: ^CC21221$ 28 | regexp_name: '' 29 | 感情・人格心理学: 30 | max_certificated_credit_num: 2 31 | min_certificated_credit_num: 2 32 | leaf: 33 | regexp_number: ^CC21311$ 34 | regexp_name: '' 35 | 神経・生理心理学: 36 | max_certificated_credit_num: 2 37 | min_certificated_credit_num: 2 38 | leaf: 39 | regexp_number: ^CC21321$ 40 | regexp_name: '' 41 | 社会・集団・家族心理学: 42 | max_certificated_credit_num: 2 43 | min_certificated_credit_num: 2 44 | leaf: 45 | regexp_number: ^CC21231$ 46 | regexp_name: '' 47 | 発達心理学: 48 | max_certificated_credit_num: 2 49 | min_certificated_credit_num: 2 50 | leaf: 51 | regexp_number: ^CC21241$ 52 | regexp_name: '' 53 | 臨床心理学概論: 54 | max_certificated_credit_num: 2 55 | min_certificated_credit_num: 2 56 | leaf: 57 | regexp_number: ^CC21211$ 58 | regexp_name: '' 59 | 卒業研究セミナー: 60 | max_certificated_credit_num: 2 61 | min_certificated_credit_num: 2 62 | leaf: 63 | regexp_number: ^$ 64 | regexp_name: '' 65 | 卒業研究: 66 | max_certificated_credit_num: 6 67 | min_certificated_credit_num: 6 68 | leaf: 69 | regexp_number: ^CC219[15]8$ 70 | regexp_name: '' 71 | 選択: 72 | max_certificated_credit_num: 70 73 | min_certificated_credit_num: 46 74 | leaf: 75 | FB12/13/14~: 76 | max_certificated_credit_num: 70 77 | min_certificated_credit_num: 46 78 | leaf: 79 | regexp_number: ^FB1[2-4].*$ 80 | regexp_name: '' 81 | 専門基礎: 82 | max_certificated_credit_num: 53 83 | min_certificated_credit_num: 29 84 | leaf: 85 | ? '' 86 | : max_certificated_credit_num: 53 87 | min_certificated_credit_num: 29 88 | leaf: 89 | 必修: 90 | max_certificated_credit_num: 6 91 | min_certificated_credit_num: 6 92 | leaf: 93 | 微積分I,II: 94 | max_certificated_credit_num: 2 95 | min_certificated_credit_num: 2 96 | leaf: 97 | regexp_number: ^FBA(14[6-9]1|15[0-3]1)$ 98 | regexp_name: '' 99 | 線形代数I,II: 100 | max_certificated_credit_num: 2 101 | min_certificated_credit_num: 2 102 | leaf: 103 | regexp_number: ^FBA(1(5[89]|6[01])1|16[2-5]1)$ 104 | regexp_name: '' 105 | 数学リテラシー1: 106 | max_certificated_credit_num: 1 107 | min_certificated_credit_num: 1 108 | leaf: 109 | regexp_number: '' 110 | regexp_name: ^数学リテラシー1$ 111 | 数学リテラシー2: 112 | max_certificated_credit_num: 1 113 | min_certificated_credit_num: 1 114 | leaf: 115 | regexp_number: '' 116 | regexp_name: ^数学リテラシー2$ 117 | 選択: 118 | max_certificated_credit_num: 47 119 | min_certificated_credit_num: 23 120 | leaf: 121 | FBA/FC/FE/EE,生物~: 122 | max_certificated_credit_num: 47 123 | min_certificated_credit_num: 23 124 | leaf: 125 | regexp_number: ^((FBA|FC|FE|EE).*|(EB00001|EB11[368]11|EB11[27]21|EB11131))$ 126 | regexp_name: '' 127 | 基礎: 128 | max_certificated_credit_num: 45 129 | min_certificated_credit_num: 19 130 | leaf: 131 | 共通: 132 | max_certificated_credit_num: 29 133 | min_certificated_credit_num: 13 134 | leaf: 135 | 必修: 136 | max_certificated_credit_num: 12 137 | min_certificated_credit_num: 12 138 | leaf: 139 | 総合科目: 140 | max_certificated_credit_num: 2 141 | min_certificated_credit_num: 2 142 | leaf: 143 | regexp_number: '' 144 | regexp_name: ^(学問への誘い|フレッシュマン・セミナー)$ 145 | 情報: 146 | max_certificated_credit_num: 4 147 | min_certificated_credit_num: 4 148 | leaf: 149 | regexp_number: ^6.*$ 150 | regexp_name: '' 151 | 体育: 152 | max_certificated_credit_num: 2 153 | min_certificated_credit_num: 2 154 | leaf: 155 | regexp_number: ^2[12].*$ 156 | regexp_name: '' 157 | 第1外国語: 158 | max_certificated_credit_num: 4 159 | min_certificated_credit_num: 4 160 | leaf: 161 | regexp_number: ^31.*$ 162 | regexp_name: (^English Presentation Skills I+$) 163 | 選択: 164 | max_certificated_credit_num: 17 165 | min_certificated_credit_num: 1 166 | leaf: 167 | 総合科目(学士基盤科目): 168 | max_certificated_credit_num: 1 169 | min_certificated_credit_num: 1 170 | leaf: 171 | regexp_number: ^1.*$ 172 | regexp_name: '' 173 | 総合科目/体育/外国語/国語/芸術: 174 | max_certificated_credit_num: 16 175 | min_certificated_credit_num: 0 176 | leaf: 177 | regexp_number: ^[1-5].*$ 178 | regexp_name: '' 179 | 関連: 180 | max_certificated_credit_num: 16 181 | min_certificated_credit_num: 6 182 | leaf: 183 | 必修: 184 | max_certificated_credit_num: 0 185 | min_certificated_credit_num: 0 186 | leaf: {} 187 | 選択: 188 | max_certificated_credit_num: 16 189 | min_certificated_credit_num: 6 190 | leaf: 191 | 専門科目および専門基礎科目で指定した以外の科目: 192 | max_certificated_credit_num: 10000 193 | min_certificated_credit_num: 6 194 | leaf: 195 | regexp_number: ^.......$ 196 | regexp_name: '' 197 | -------------------------------------------------------------------------------- /py-cli/g_checker_for_itf/Color.py: -------------------------------------------------------------------------------- 1 | class Color(object): 2 | BLACK = "\033[30m" # (文字)黒 3 | RED = "\033[31m" # (文字)赤 4 | GREEN = "\033[32m" # (文字)緑 5 | YELLOW = "\033[33m" # (文字)黄 6 | BLUE = "\033[34m" # (文字)青 7 | MAGENTA = "\033[35m" # (文字)マゼンタ 8 | CYAN = "\033[36m" # (文字)シアン 9 | WHITE = "\033[37m" # (文字)白 10 | COLOR_DEFAULT = "\033[39m" # 文字色をデフォルトに戻す 11 | BOLD = "\033[1m" # 太字 12 | UNDERLINE = "\033[4m" # 下線 13 | INVISIBLE = "\033[08m" # 不可視 14 | REVERCE = "\033[07m" # 文字色と背景色を反転 15 | BG_BLACK = "\033[40m" # (背景)黒 16 | BG_RED = "\033[41m" # (背景)赤 17 | BG_GREEN = "\033[42m" # (背景)緑 18 | BG_YELLOW = "\033[43m" # (背景)黄 19 | BG_BLUE = "\033[44m" # (背景)青 20 | BG_MAGENTA = "\033[45m" # (背景)マゼンタ 21 | BG_CYAN = "\033[46m" # (背景)シアン 22 | BG_WHITE = "\033[47m" # (背景)白 23 | BG_DEFAULT = "\033[49m" # 背景色をデフォルトに戻す 24 | RESET = "\033[0m" # 全てリセット 25 | 26 | 27 | OK_COLOR_STR = f"{Color.RESET}{Color.GREEN}{Color.BOLD}" 28 | FEATURE_COLOR_STR = f"{Color.RESET}{Color.CYAN}" 29 | FAIL_COLOR_STR = f"{Color.RESET}{Color.RED}{Color.BOLD}" 30 | RESET_COLOR_STR = f"{Color.RESET}" 31 | -------------------------------------------------------------------------------- /py-cli/g_checker_for_itf/Dir.py: -------------------------------------------------------------------------------- 1 | from typing import Dict, List, Tuple, TypedDict, Union, cast 2 | 3 | from .Color import FAIL_COLOR_STR, FEATURE_COLOR_STR, OK_COLOR_STR, RESET_COLOR_STR 4 | from .RecognizedFilter import KamokuClass, RecognizedFilter 5 | 6 | 7 | class DirResDict(TypedDict): 8 | max_certificated_credit_num: int 9 | now_certificated_credit_num: int 10 | feature_certificated_credit_num: int 11 | min_certificated_credit_num: int 12 | # cyclic definition 13 | leaf: "DirResDict" # type: ignore[misc] 14 | 15 | 16 | class Dir(object): 17 | def __init__( 18 | self, name: str, max: int, min: int, is_frame: bool, parent_depth: int 19 | ) -> None: 20 | self.name = name 21 | self.max_certificated_credit_num = max 22 | self.now_certificated_credit_num = 0.0 23 | self.feature_certificated_credit_num = 0.0 24 | self.min_certificated_credit_num = min 25 | self.is_frame = is_frame # if is_frame, filter_mode else dir_mode 26 | self.course_filter: Dict[str, Union["Dir", RecognizedFilter]] = {} 27 | self.dir_depth = parent_depth 28 | self.now_certificated_credit_name: List[str] = [] 29 | 30 | def get_indent(self) -> int: 31 | return self.dir_depth - 1 32 | 33 | def print_son(self) -> None: 34 | r_pad = "".rjust(self.get_indent(), " ") 35 | l_pad = self.name.ljust(5, " ").ljust(24 - self.get_indent(), " ") 36 | credit_total = ( 37 | self.now_certificated_credit_num + self.feature_certificated_credit_num 38 | ) 39 | if self.now_certificated_credit_num >= self.min_certificated_credit_num: 40 | print( 41 | f"{OK_COLOR_STR}{r_pad}{l_pad}", 42 | f"{self.now_certificated_credit_num:5.1f}{FEATURE_COLOR_STR}" 43 | f"({credit_total:5.1f}){OK_COLOR_STR}/{self.min_certificated_credit_num:5.1f}{RESET_COLOR_STR}", 44 | ) 45 | else: 46 | print( 47 | f"{FAIL_COLOR_STR}{r_pad}{l_pad}", 48 | f"{self.now_certificated_credit_num:5.1f}{FEATURE_COLOR_STR}" 49 | f"({credit_total:5.1f}){FAIL_COLOR_STR}/{self.min_certificated_credit_num:5.1f}{RESET_COLOR_STR}", 50 | ) 51 | for item in self.course_filter.values(): 52 | if not isinstance(item, Dir): 53 | continue 54 | if item.is_frame: 55 | item.print_son() 56 | else: 57 | item.print_ls() 58 | 59 | def namelist(self) -> str: 60 | return " ".join(self.now_certificated_credit_name) 61 | 62 | def print_ls(self) -> None: 63 | r_pad = "".rjust(self.get_indent(), " ") 64 | l_pad = self.name.ljust(5, " ").ljust(24 - self.get_indent(), " ") 65 | credit_total = ( 66 | self.now_certificated_credit_num + self.feature_certificated_credit_num 67 | ) 68 | if self.now_certificated_credit_num >= self.min_certificated_credit_num: 69 | print( 70 | f"{OK_COLOR_STR}{r_pad}{l_pad}", 71 | f"{self.now_certificated_credit_num:5.1f}" 72 | f"{FEATURE_COLOR_STR}({credit_total:5.1f})" 73 | f"{OK_COLOR_STR}/{self.min_certificated_credit_num:5.1f}{RESET_COLOR_STR}", 74 | self.namelist(), 75 | ) 76 | else: 77 | print( 78 | f"{FAIL_COLOR_STR}{r_pad}{l_pad}", 79 | f"{self.now_certificated_credit_num:5.1f}" 80 | f"{FEATURE_COLOR_STR}({credit_total:5.1f})" 81 | f"{FAIL_COLOR_STR}/{self.min_certificated_credit_num:5.1f}{RESET_COLOR_STR}", 82 | self.namelist(), 83 | ) 84 | 85 | def genDict(self) -> DirResDict: 86 | res = { 87 | "max_certificated_credit_num": self.max_certificated_credit_num, 88 | "now_certificated_credit_num": self.now_certificated_credit_num, 89 | "feature_certificated_credit_num": self.feature_certificated_credit_num, 90 | "min_certificated_credit_num": self.min_certificated_credit_num, 91 | "leaf": {}, 92 | } 93 | return cast(DirResDict, res) 94 | # return {self.name:res} 95 | 96 | def check(self, ls: List[KamokuClass]) -> Tuple[float, float]: 97 | self.now_certificated_credit_num = 0.0 98 | if self.is_frame: # 下を見に行く 99 | for item in self.course_filter.values(): 100 | if not isinstance(item, Dir): 101 | continue 102 | res_d = item.check(ls) 103 | self.now_certificated_credit_num += res_d[0] 104 | self.feature_certificated_credit_num += res_d[1] 105 | else: # RecoFil について 106 | for item in self.course_filter.values(): 107 | if not isinstance(item, RecognizedFilter): 108 | continue 109 | res_f = item.checkCourse(ls) 110 | self.now_certificated_credit_num += res_f[0] 111 | if res_f[1] != []: 112 | self.now_certificated_credit_name += res_f[1] 113 | self.feature_certificated_credit_num += res_f[2] 114 | return self.now_certificated_credit_num, self.feature_certificated_credit_num 115 | 116 | def add(self, item: Union["Dir", RecognizedFilter]) -> None: 117 | self.course_filter[item.name] = item 118 | 119 | 120 | class Level1(Dir): 121 | def __init__(self, name: str, max: int, min: int) -> None: 122 | super().__init__(name, max, min, True, 1) 123 | 124 | 125 | class Level2(Dir): 126 | def __init__(self, name: str, max: int, min: int) -> None: 127 | super().__init__(name, max, min, True, 2) 128 | 129 | 130 | class Level3(Dir): 131 | def __init__(self, name: str, max: int, min: int) -> None: 132 | super().__init__(name, max, min, True, 3) 133 | 134 | 135 | class Level4(Dir): 136 | def __init__(self, name: str, max: int, min: int) -> None: 137 | super().__init__(name, max, min, True, 4) 138 | 139 | 140 | class Level5(Dir): 141 | def __init__(self, name: str, max: int, min: int) -> None: 142 | super().__init__(name, max, min, False, 5) 143 | -------------------------------------------------------------------------------- /py-cli/g_checker_for_itf/RecognizedFilter.py: -------------------------------------------------------------------------------- 1 | import re 2 | from typing import List, Tuple, TypedDict 3 | 4 | from .Color import FEATURE_COLOR_STR, Color 5 | 6 | 7 | class KamokuClass(object): 8 | def __init__(self, all: List[str], expect: bool = False) -> None: 9 | self.course_number = all[2] 10 | self.course_name = all[3] 11 | self.credit = float(all[4]) 12 | self.grade = all[7] 13 | self.can_use = self.grade in ("P", "C", "A+", "A", "B", "C", "認") or ( 14 | self.grade == "履修中" and expect 15 | ) 16 | self.used = False 17 | self.isCount = "C0" != all[8] 18 | 19 | def print(self) -> None: 20 | data = f"{self.course_number}:{self.course_name}{Color.RESET}" 21 | if self.can_use: 22 | if self.used: 23 | print(f"{Color.BLUE}{data}") 24 | else: 25 | print(f"{Color.GREEN}{data}") 26 | else: 27 | print(f"{Color.RED}{data}") 28 | 29 | 30 | class RecognizedFilterResDict(TypedDict): 31 | regexp_number: str 32 | regexp_name: str 33 | 34 | 35 | class RecognizedFilter(object): 36 | name: str 37 | regexp_number: str 38 | regexp_name: str 39 | 40 | def __init__(self, name: str, num: str, regname: str) -> None: 41 | self.name = name 42 | self.regexp_number = num 43 | self.regexp_name = regname 44 | 45 | def genDict(self) -> RecognizedFilterResDict: 46 | res: RecognizedFilterResDict = { 47 | "regexp_number": self.regexp_number, 48 | "regexp_name": self.regexp_name, 49 | } 50 | return res 51 | 52 | def checkCourse( 53 | self, ls: List[KamokuClass], drop: bool = True 54 | ) -> Tuple[float, List[str], float]: 55 | res_credit = 0.0 56 | feature_credit = 0.0 57 | res_course_name: List[str] = [] 58 | for kamoku in ls: 59 | flag = False 60 | if not self.regexp_number == r"" and re.compile(self.regexp_number).match( 61 | kamoku.course_number 62 | ): 63 | flag = True 64 | if not self.regexp_name == r"" and re.compile(self.regexp_name).match( 65 | kamoku.course_name 66 | ): 67 | flag = True 68 | data = f"{kamoku.course_name}{Color.RESET}" 69 | if flag: 70 | if not kamoku.used: 71 | if kamoku.can_use: 72 | kamoku.used = True 73 | res_credit += kamoku.credit 74 | res_course_name.append(f"{Color.GREEN}{data}") 75 | elif kamoku.grade == "履修中": 76 | kamoku.used = True 77 | feature_credit += kamoku.credit 78 | res_course_name.append(f"{FEATURE_COLOR_STR}{data}") 79 | 80 | else: 81 | if drop: 82 | res_course_name.append(f"{Color.RED}{data}") 83 | 84 | return res_credit, res_course_name, feature_credit 85 | 86 | def print_son(self, depth: int) -> None: 87 | print(" " * (depth - 1) + self.name) 88 | -------------------------------------------------------------------------------- /py-cli/g_checker_for_itf/__init__.py: -------------------------------------------------------------------------------- 1 | __version__ = "0.0.1" 2 | -------------------------------------------------------------------------------- /py-cli/g_checker_for_itf/main.py: -------------------------------------------------------------------------------- 1 | import argparse 2 | import csv 3 | import json 4 | import shutil 5 | from typing import List, cast 6 | 7 | from g_checker_for_itf import __version__ 8 | 9 | from .Dir import Dir, Level1, Level2, Level3, Level4, Level5 10 | from .RecognizedFilter import KamokuClass, RecognizedFilter 11 | 12 | MAX = 10000 13 | 14 | 15 | class GchkHelpFormatter( 16 | argparse.ArgumentDefaultsHelpFormatter, argparse.RawDescriptionHelpFormatter 17 | ): 18 | pass 19 | 20 | 21 | def parse_arg() -> argparse.Namespace: 22 | parser = argparse.ArgumentParser( 23 | prog="gchk", 24 | description="A checker if your credits meet the graduation requirements or not.", 25 | formatter_class=( 26 | lambda prog: GchkHelpFormatter( 27 | prog, 28 | **{ 29 | "width": shutil.get_terminal_size(fallback=(120, 50)).columns, 30 | "max_help_position": 30, 31 | }, 32 | ) 33 | ), 34 | ) 35 | parser.add_argument( 36 | "-i", 37 | "--input", 38 | help="target file from twins (UTF-8, CSV)", 39 | default="sample.csv", 40 | ) 41 | parser.add_argument( 42 | "-r", "--requirements", help="requirements file", default="coins20.json" 43 | ) 44 | parser.add_argument("-g", "--gpa", help="print GPA", action="store_true") 45 | parser.add_argument("-d", "--drop", help="print drop credit", action="store_false") 46 | parser.add_argument("-n", "--name", help="print name and id", action="store_true") 47 | parser.add_argument("-s", "--save", help="save as JSON", action="store_true") 48 | parser.add_argument("-e", "--expect", help="count 履修中", action="store_true") 49 | parser.add_argument( 50 | "-V", 51 | "--version", 52 | action="version", 53 | version=f"%(prog)s {__version__}", 54 | ) 55 | return parser.parse_args() 56 | 57 | 58 | def parseJSON(JSONFILENAME: str) -> Level1: 59 | data = json.load(open(JSONFILENAME, "r")) 60 | MAX_STR = "max_certificated_credit_num" 61 | MIN_STR = "min_certificated_credit_num" 62 | 63 | if len(data) == 0: 64 | raise ValueError("json data is empty") 65 | else: 66 | first_key, *_ = data 67 | init_k1, init_v1 = first_key, data[first_key] 68 | all = Level1(init_k1, init_v1[MAX_STR], init_v1[MIN_STR]) 69 | 70 | for k1, v1 in data.items(): 71 | all = Level1(k1, v1[MAX_STR], v1[MIN_STR]) 72 | for k2, v2 in v1["leaf"].items(): 73 | all.add(Level2(k2, v2[MAX_STR], v2[MIN_STR])) 74 | for k3, v3 in v2["leaf"].items(): 75 | cf_k2 = cast(Dir, all.course_filter[k2]) 76 | cf_k2.add(Level3(k3, v3[MAX_STR], v3[MIN_STR])) 77 | for k4, v4 in v3["leaf"].items(): 78 | cf_k3 = cast(Dir, cf_k2.course_filter[k3]) 79 | cf_k3.add(Level4(k4, v4[MAX_STR], v4[MIN_STR])) 80 | for k5, v5 in v4["leaf"].items(): 81 | cf_k4 = cast(Dir, cf_k3.course_filter[k4]) 82 | cf_k4.add(Level5(k5, v5[MAX_STR], v5[MIN_STR])) 83 | cf_k5 = cast(Dir, cf_k4.course_filter[k5]) 84 | cf_k5.add( 85 | RecognizedFilter( 86 | k5, 87 | v5["leaf"]["regexp_number"], 88 | v5["leaf"]["regexp_name"], 89 | ) 90 | ) 91 | 92 | return all 93 | 94 | 95 | def gp(ls: List[KamokuClass]) -> None: 96 | gps = 0.0 97 | credit_sum = 0.0 98 | grade_points = {"A+": 4.3, "A": 4, "B": 3, "C": 2, "D": 0} 99 | target_kams = [kam for kam in ls if kam.can_use and kam.isCount] 100 | for kam in target_kams: 101 | for grade, point in grade_points.items(): 102 | if kam.grade == grade: 103 | gps += point * kam.credit 104 | credit_sum += kam.credit 105 | gpa = gps / credit_sum 106 | print(f"GPA = GPS/CreditSum : {gpa:1.5} = {gps}/{credit_sum}") 107 | 108 | 109 | def readCSV(CSVFILENAME: str, expect: bool) -> List[KamokuClass]: 110 | memo = [] 111 | with open(CSVFILENAME) as f: 112 | reader = csv.reader(f) 113 | for i, row in enumerate(reader): 114 | if i != 0: 115 | memo.append(KamokuClass(row, expect)) 116 | 117 | for t in memo: 118 | if t.course_name == "オートマトンと形式言語" and t.course_number == "GB21601": 119 | t.course_number = "GB20401" 120 | if t.course_name == "プログラム理論" and t.course_number == "GB21111": 121 | t.course_number = "GB20501" 122 | if t.course_name == "プログラミングチャレンジ" and t.course_number == "GB21802": 123 | t.course_number = "GB20602" 124 | if t.course_name == "プログラム言語処理" and t.course_number == "GB31301": 125 | t.course_number = "GB30504" 126 | if t.course_name == "ソフトウェア工学" and t.course_number == "GB31501": 127 | t.course_number = "GB30601" 128 | if t.course_name == "情報理論" and t.course_number == "GB12501": 129 | t.course_number = "GB40601" 130 | 131 | return memo 132 | 133 | 134 | def readNameFromCSV(CSVFILENAME: str) -> str: 135 | reader = csv.reader(open(CSVFILENAME, "r")) 136 | for row in reader: 137 | if reader.line_num == 1: 138 | return row[1] 139 | else: 140 | raise ValueError("CSV is maybe blank.") 141 | 142 | 143 | def genJSON(v0: Level1, input_csv: str, requirements: str) -> None: 144 | res = {} 145 | res[v0.name] = v0.genDict() 146 | for v1 in v0.course_filter.values(): 147 | if not isinstance(v1, Dir): 148 | continue 149 | res[v0.name]["leaf"][v1.name] = v1.genDict() 150 | for v2 in v1.course_filter.values(): 151 | if not isinstance(v2, Dir): 152 | continue 153 | res[v0.name]["leaf"][v1.name]["leaf"][v2.name] = v2.genDict() 154 | for v3 in v2.course_filter.values(): 155 | if not isinstance(v3, Dir): 156 | continue 157 | res[v0.name]["leaf"][v1.name]["leaf"][v2.name]["leaf"][ 158 | v3.name 159 | ] = v3.genDict() 160 | for v4 in v3.course_filter.values(): 161 | if not isinstance(v4, Dir): 162 | continue 163 | res[v0.name]["leaf"][v1.name]["leaf"][v2.name]["leaf"][v3.name][ 164 | "leaf" 165 | ][v4.name] = v4.genDict() 166 | for v5 in v4.course_filter.values(): 167 | if not isinstance(v5, Dir): 168 | continue 169 | res[v0.name]["leaf"][v1.name]["leaf"][v2.name]["leaf"][v3.name][ 170 | "leaf" 171 | ][v4.name]["leaf"] = v5.genDict() 172 | basename = input_csv.replace(".csv", "") 173 | with open(f"{basename}-{requirements}", "w") as f: 174 | json.dump(res, f, ensure_ascii=False, indent=4) 175 | # with open("tani/src/grade.json", "w") as f: 176 | # json.dump(res, f, ensure_ascii=False, indent=4) 177 | 178 | 179 | def main() -> None: 180 | args = parse_arg() 181 | CSVFILENAME = args.input 182 | JSONFILENAME = args.requirements 183 | 184 | coins20 = parseJSON(JSONFILENAME) 185 | if args.name: 186 | print(CSVFILENAME, readNameFromCSV(CSVFILENAME)) 187 | kamoku = readCSV(CSVFILENAME, args.expect) 188 | coins20.check(kamoku) 189 | coins20.print_son() 190 | if args.gpa: 191 | gp(kamoku) 192 | if args.save: 193 | genJSON(coins20, args.input, args.requirements) 194 | 195 | 196 | if __name__ == "__main__": 197 | main() 198 | -------------------------------------------------------------------------------- /py-cli/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["wheel", "setuptools"] 3 | build-backend = "setuptools.build_meta" 4 | -------------------------------------------------------------------------------- /py-cli/setup.cfg: -------------------------------------------------------------------------------- 1 | [metadata] 2 | name = g-checker-for-itf 3 | version = attr: g_checker_for_itf.__init__.__version__ 4 | description = "A checker if your credits meet the graduation requirements or not (For Univ. Tsukuba students)" 5 | long_description = file: README.md 6 | long_description_content_type = text/markdown 7 | license = MIT 8 | author = oshamashama 9 | author_email = uwyiqmq@gmail.com 10 | classifiers = 11 | Development Status :: 3 - Alpha 12 | Programming Language :: Python :: 3.7 13 | Programming Language :: Python :: 3.8 14 | Programming Language :: Python :: 3.9 15 | Programming Language :: Python :: 3.10 16 | 17 | [options] 18 | packages = find: 19 | python_requires = >= 3.7 20 | 21 | [options.extras_require] 22 | dev = 23 | black>=22.1.0 24 | flake8>=4.0.1 25 | mypy>=0.931 26 | isort>=5.10.1 27 | types-setuptools>=57.4.8 28 | 29 | [options.entry_points] 30 | console_scripts = 31 | gchk = g_checker_for_itf.main:main 32 | 33 | 34 | [isort] 35 | profile = black 36 | 37 | [flake8] 38 | # E501: line too long 39 | ignore = E501 40 | indent-size = 4 41 | 42 | [mypy] 43 | python_version = 3.9 44 | show_error_codes = True 45 | pretty = True 46 | strict = True 47 | -------------------------------------------------------------------------------- /py-cli/setup.py: -------------------------------------------------------------------------------- 1 | from setuptools import setup 2 | 3 | setup() 4 | -------------------------------------------------------------------------------- /react-visualizer/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | build/ -------------------------------------------------------------------------------- /react-visualizer/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "g-checker-from-itf", 3 | "version": "0.1.0", 4 | "private": true, 5 | "homepage": "https://oshamashama.github.io/g-checker-for-itf/", 6 | "dependencies": { 7 | "bootstrap": "^5.3.3", 8 | "react": "^18.2.0", 9 | "react-bootstrap": "^2.10.2", 10 | "react-dom": "^18.2.0", 11 | "react-scripts": "5.0.1", 12 | "react-select": "^5.8.0", 13 | "react-table": "^7.8.0", 14 | "web-vitals": "^3.5.2" 15 | }, 16 | "scripts": { 17 | "start": "react-scripts start", 18 | "build": "react-scripts build", 19 | "eject": "react-scripts eject", 20 | "fmt:check": "prettier --check src", 21 | "fmt": "prettier --write src" 22 | }, 23 | "eslintConfig": { 24 | "extends": [ 25 | "react-app", 26 | "react-app/jest" 27 | ] 28 | }, 29 | "browserslist": { 30 | "production": [ 31 | ">0.2%", 32 | "not dead", 33 | "not op_mini all" 34 | ], 35 | "development": [ 36 | "last 1 chrome version", 37 | "last 1 firefox version", 38 | "last 1 safari version" 39 | ] 40 | }, 41 | "devDependencies": { 42 | "gh-pages": "^6.1.1", 43 | "prettier": "^3.2.5", 44 | "typescript": "^4.6.3" 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /react-visualizer/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oshamashama/g-checker-for-itf/c040b95ac1fcac6a6d29194f548c83729fec1d82/react-visualizer/public/favicon.ico -------------------------------------------------------------------------------- /react-visualizer/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 13 | 14 | 15 | 16 | 17 | 21 | 22 | 26 | 27 | 36 | そつぎょうできるかな 37 | 38 | 39 | 40 |
41 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /react-visualizer/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oshamashama/g-checker-for-itf/c040b95ac1fcac6a6d29194f548c83729fec1d82/react-visualizer/public/logo192.png -------------------------------------------------------------------------------- /react-visualizer/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oshamashama/g-checker-for-itf/c040b95ac1fcac6a6d29194f548c83729fec1d82/react-visualizer/public/logo512.png -------------------------------------------------------------------------------- /react-visualizer/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "gchk", 3 | "name": "そつぎょうできるかな", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | }, 10 | { 11 | "src": "logo192.png", 12 | "type": "image/png", 13 | "sizes": "192x192" 14 | }, 15 | { 16 | "src": "logo512.png", 17 | "type": "image/png", 18 | "sizes": "512x512" 19 | } 20 | ], 21 | "start_url": ".", 22 | "display": "standalone", 23 | "theme_color": "#000000", 24 | "background_color": "#ffffff" 25 | } -------------------------------------------------------------------------------- /react-visualizer/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /react-visualizer/src/App.css: -------------------------------------------------------------------------------- 1 | .App { 2 | text-align: center; 3 | background-color: #282c34; 4 | min-height: 100vh; 5 | } 6 | 7 | .App-logo { 8 | height: 40vmin; 9 | pointer-events: none; 10 | } 11 | 12 | @media (prefers-reduced-motion: no-preference) { 13 | .App-logo { 14 | animation: App-logo-spin infinite 20s linear; 15 | } 16 | } 17 | 18 | .Upload-Comp { 19 | display: flex; 20 | } 21 | 22 | .App-Upload { 23 | /* min-height: 100vh; */ 24 | display: flex; 25 | /* flex-direction: column; */ 26 | align-items: center; 27 | justify-content: center; 28 | /* font-size: calc(10px + 2vmin); */ 29 | } 30 | 31 | .selectList { 32 | background-color: #282c34 !important; 33 | min-width: 250px; 34 | } 35 | 36 | .App-main { 37 | /* min-height: 100vh; */ 38 | display: flex; 39 | flex-direction: column; 40 | align-items: center; 41 | justify-content: center; 42 | font-size: calc(10px + 2vmin); 43 | color: white; 44 | } 45 | 46 | .App-link { 47 | color: #61dafb; 48 | } 49 | 50 | @keyframes App-logo-spin { 51 | from { 52 | transform: rotate(0deg); 53 | } 54 | 55 | to { 56 | transform: rotate(360deg); 57 | } 58 | } 59 | 60 | .gre_yoko { 61 | display: flex; 62 | } 63 | 64 | .bl_tate { 65 | display: block; 66 | margin: 1px; 67 | border: 1px solid cyan; 68 | border-radius: 15px; 69 | background-clip: border-box; 70 | } 71 | 72 | a:link { 73 | color: white; 74 | } 75 | 76 | a:visited { 77 | color: cyan; 78 | } 79 | 80 | .con { 81 | margin: 0%; 82 | } 83 | 84 | .hight-center { 85 | padding: 2px; 86 | } 87 | 88 | p { 89 | width: 100px; 90 | margin: 0% !important; 91 | font-size: medium; 92 | } 93 | 94 | .last-leaf { 95 | width: 400px; 96 | } 97 | 98 | .passed.bl_tate { 99 | background-color: rgba(0, 69, 90); 100 | } 101 | 102 | .expect.bl_tate { 103 | background-color: rgb(89, 90, 0); 104 | } 105 | 106 | .failed.bl_tate { 107 | background-color: rgba(90, 41, 0); 108 | } 109 | 110 | /*********** footerDetail ***********/ 111 | .footer-detail-container { 112 | margin-top: 2cm; 113 | /* position: absolute !important; */ 114 | bottom: 0 !important; 115 | width: 100%; 116 | background-color: #535353; 117 | display: flex; 118 | flex-direction: column; 119 | } 120 | 121 | .footer-detail-container--inner { 122 | display: flex; 123 | flex-direction: column; 124 | width: 100%; 125 | text-align: center; 126 | align-items: center; 127 | justify-content: center; 128 | display: flex; 129 | color: white; 130 | } 131 | 132 | label { 133 | height: auto; 134 | /* padding: 10px 25px; */ 135 | /* margin: 0 0 10px; */ 136 | /* background: #aaa; */ 137 | color: #fff; 138 | 139 | display: inline-block; 140 | cursor: pointer; 141 | } -------------------------------------------------------------------------------- /react-visualizer/src/App.js: -------------------------------------------------------------------------------- 1 | import React, { useState } from "react"; 2 | import "./App.css"; 3 | import Data from "./reqJson/coins20.json"; 4 | import { readCsv } from "./checkGraduate/readCsv.ts"; 5 | import { checkGraduate } from "./checkGraduate/checkGrad.ts"; 6 | import Select from "react-select"; 7 | import "bootstrap/dist/css/bootstrap.min.css"; 8 | import Button from "react-bootstrap/Button"; 9 | 10 | const Footer = () => { 11 | return ( 12 | 43 | ); 44 | }; 45 | 46 | const Table = (props) => { 47 | const [hovered, setHovered] = useState(false); 48 | const [clicked, setClicked] = useState(false); 49 | 50 | let itemList = []; 51 | for (const key in props.value) { 52 | let pushStr = 53 | " " + 54 | (props.value[key]["now_certificated_credit_num"] === undefined 55 | ? 0 56 | : props.value[key]["now_certificated_credit_num"]) + 57 | "(" + 58 | (props.value[key]["feature_certificated_credit_num"] === undefined 59 | ? 0 60 | : props.value[key]["feature_certificated_credit_num"]) + 61 | ")/" + 62 | (props.value[key]["min_certificated_credit_num"] === undefined 63 | ? 0 64 | : props.value[key]["min_certificated_credit_num"]); 65 | let passed = ""; 66 | if ( 67 | props.value[key]["now_certificated_credit_num"] >= 68 | props.value[key]["min_certificated_credit_num"] 69 | ) 70 | passed = "passed"; 71 | else if ( 72 | props.value[key]["now_certificated_credit_num"] + 73 | props.value[key]["feature_certificated_credit_num"] >= 74 | props.value[key]["min_certificated_credit_num"] 75 | ) 76 | passed = "expect"; 77 | else passed = "failed"; 78 | console.log(props.value[key]["count_course"]); 79 | let count_course = ""; 80 | for (const k2 in props.value[key]["count_course"]) { 81 | if (count_course === "") 82 | count_course += props.value[key]["count_course"][k2]; 83 | else count_course += " / " + props.value[key]["count_course"][k2]; 84 | } 85 | itemList.push([key, pushStr, passed, count_course]); 86 | } 87 | if (props.depth === 0) { 88 | return ( 89 |
90 | {itemList.map(([key, st, passed, count_course]) => ( 91 |
92 |
{ 96 | setHovered(true); 97 | }} 98 | onMouseDown={() => { 99 | setClicked(true); 100 | }} 101 | onMouseUp={() => { 102 | setClicked(false); 103 | }} 104 | onMouseLeave={() => { 105 | setHovered(false); 106 | }} 107 | > 108 |

109 | {!(hovered && !clicked) ? 110 | (key === "" ? "" : key) + st 111 | : (count_course === "" ? "該当する科目を修得していません" : count_course)} 112 |

113 |
114 |
115 | ))} 116 |
117 | ); 118 | } 119 | 120 | return ( 121 |
122 | {itemList.map(([key, st, passed]) => ( 123 |
124 |
125 |

{key === "" ? "" : key}

126 |

{st}

127 |
128 |
129 | 130 | 131 | 132 | ))} 133 | 134 | ); 135 | }; 136 | 137 | function Main() { 138 | let [JsonData, setJsonData] = useState(Data); 139 | let [DefJsonData, setDefJsonData] = useState(Data); 140 | const [, rerender] = useState(); 141 | 142 | const onFileInputChangeCSV = (e) => { 143 | const file = e.target.files[0]; 144 | const reader = new FileReader(); 145 | reader.onload = () => { 146 | setJsonData(DefJsonData); 147 | checkGraduate(readCsv(reader.result), JsonData, (res) => { 148 | setJsonData(res); 149 | }); 150 | }; 151 | reader.readAsText(file); 152 | }; 153 | 154 | const selectReq = (f) => { 155 | // setJsonData(DefJsonData); 156 | document.getElementById("inF").value = ""; 157 | // var data = require('./reqJson/' + f.value); 158 | setDefJsonData(require("./reqJson/" + f.value)); 159 | setJsonData(require("./reqJson/" + f.value)); 160 | }; 161 | 162 | const options = [ 163 | { value: "cisIR20.json", label: "cisIR20(国際関係学)" }, 164 | { value: "cisID20.json", label: "cisID20(国際開発学)" }, 165 | { value: "math20.json", label: "math20" }, 166 | { value: "mast20.json", label: "mast20" }, 167 | { value: "coins19.json", label: "coins19" }, 168 | { value: "coins20.json", label: "coins20" }, 169 | { value: "coins21.json", label: "coins21" }, 170 | { value: "coins23-24.json", label: "coins23" }, 171 | { value: "coins23-24.json", label: "coins24" }, 172 | { value: "klis21-system.json", label: "klis21(知識情報システム)" }, 173 | { value: "klis21-knowledge.json", label: "klis21(知識科学)" }, 174 | { value: "klis21-management.json", label: "klis21(情報資源経営)" }, 175 | ]; 176 | 177 | return ( 178 |
179 |
180 |
181 | 185 |
186 |
187 |
200 | 201 |
202 | 203 | ); 204 | } 205 | 206 | function App() { 207 | return
; 208 | } 209 | 210 | export default App; 211 | -------------------------------------------------------------------------------- /react-visualizer/src/checkGraduate/checkGrad.ts: -------------------------------------------------------------------------------- 1 | const max = "max_certificated_credit_num"; 2 | const now = "now_certificated_credit_num"; 3 | //const min = 'min_certificated_credit_num'; 4 | const feature = "feature_certificated_credit_num"; 5 | const count_course = "count_course"; 6 | export function checkGraduate(grade, req, callback) { 7 | for (let rishu = 0; rishu < 2; rishu++) 8 | for (let hishu = 0; hishu < 2; hishu++) 9 | for (const k1 in req) { 10 | req[k1] = genNow(req[k1], rishu); 11 | for (const k2 in req[k1]["leaf"]) { 12 | req[k1]["leaf"][k2] = genNow(req[k1]["leaf"][k2], rishu); 13 | for (const k3 in req[k1]["leaf"][k2]["leaf"]) { 14 | req[k1]["leaf"][k2]["leaf"][k3] = genNow( 15 | req[k1]["leaf"][k2]["leaf"][k3], 16 | rishu 17 | ); 18 | for (const k4 in req[k1]["leaf"][k2]["leaf"][k3]["leaf"]) { 19 | if ( 20 | (k4 === "必修" && hishu === 0) || 21 | (k4 === "選択" && hishu === 1) 22 | ) { 23 | req[k1]["leaf"][k2]["leaf"][k3]["leaf"][k4] = genNow( 24 | req[k1]["leaf"][k2]["leaf"][k3]["leaf"][k4], 25 | rishu 26 | ); 27 | for (const k5 in req[k1]["leaf"][k2]["leaf"][k3]["leaf"][k4][ 28 | "leaf" 29 | ]) { 30 | req[k1]["leaf"][k2]["leaf"][k3]["leaf"][k4]["leaf"][k5] = 31 | genNow( 32 | req[k1]["leaf"][k2]["leaf"][k3]["leaf"][k4]["leaf"][k5], 33 | rishu 34 | ); 35 | req[k1]["leaf"][k2]["leaf"][k3]["leaf"][k4]["leaf"][k5] = 36 | checkGet( 37 | grade, 38 | req[k1]["leaf"][k2]["leaf"][k3]["leaf"][k4]["leaf"][k5], 39 | rishu === 1 40 | ); 41 | req[k1]["leaf"][k2]["leaf"][k3]["leaf"][k4][now] += Math.min( 42 | rishu * 43 | req[k1]["leaf"][k2]["leaf"][k3]["leaf"][k4]["leaf"][k5][ 44 | now 45 | ], 46 | rishu * 47 | req[k1]["leaf"][k2]["leaf"][k3]["leaf"][k4]["leaf"][k5][ 48 | max 49 | ] 50 | ); 51 | req[k1]["leaf"][k2]["leaf"][k3]["leaf"][k4][feature] += 52 | rishu * 53 | req[k1]["leaf"][k2]["leaf"][k3]["leaf"][k4]["leaf"][k5][ 54 | feature 55 | ]; 56 | } 57 | req[k1]["leaf"][k2]["leaf"][k3][now] += Math.min( 58 | rishu * req[k1]["leaf"][k2]["leaf"][k3]["leaf"][k4][now], 59 | rishu * req[k1]["leaf"][k2]["leaf"][k3]["leaf"][k4][max] 60 | ); 61 | req[k1]["leaf"][k2]["leaf"][k3][feature] += 62 | rishu * 63 | req[k1]["leaf"][k2]["leaf"][k3]["leaf"][k4][feature]; 64 | } 65 | } 66 | req[k1]["leaf"][k2][now] += Math.min( 67 | hishu * rishu * req[k1]["leaf"][k2]["leaf"][k3][now], 68 | hishu * rishu * req[k1]["leaf"][k2]["leaf"][k3][max] 69 | ); 70 | req[k1]["leaf"][k2][feature] += 71 | hishu * rishu * req[k1]["leaf"][k2]["leaf"][k3][feature]; 72 | } 73 | req[k1][now] += Math.min( 74 | hishu * rishu * req[k1]["leaf"][k2][now], 75 | hishu * rishu * req[k1]["leaf"][k2][max] 76 | ); 77 | req[k1][feature] += hishu * rishu * req[k1]["leaf"][k2][feature]; 78 | } 79 | } 80 | 81 | return req; 82 | } 83 | 84 | function genNow(req, rishu) { 85 | if (req[now] === undefined) { 86 | req[now] = 0; 87 | req[feature] = 0; 88 | req[count_course] = []; 89 | } 90 | return req; 91 | } 92 | 93 | function checkGet(grade, req, rishu) { 94 | const reg_name = req["leaf"]["regexp_name"]; 95 | const reg_number = req["leaf"]["regexp_number"]; 96 | for (const key in grade) { 97 | let flag = false; 98 | if (reg_name !== "") { 99 | const reg = new RegExp(reg_name); 100 | if (grade[key]["course_name"].match(reg)) { 101 | flag = true; 102 | } 103 | } 104 | if (reg_number !== "") { 105 | const reg = new RegExp(reg_number); 106 | if (grade[key]["course_number"].match(reg)) { 107 | flag = true; 108 | } 109 | } 110 | if (flag) { 111 | if ( 112 | grade[key]["used"] === false && 113 | grade[key]["used_rishu"] === false && 114 | req[now] < req[max] 115 | ) { 116 | if (grade[key]["can_use"] === true) { 117 | grade[key]["used"] = true; 118 | req[now] += grade[key]["credit"]; 119 | req[count_course].push(grade[key]["course_name"]); 120 | } else if (grade[key]["grade"] === "履修中" && rishu) { 121 | grade[key]["used_rishu"] = true; 122 | req[feature] += grade[key]["credit"]; 123 | } 124 | } 125 | } 126 | } 127 | return req; 128 | } 129 | -------------------------------------------------------------------------------- /react-visualizer/src/checkGraduate/readCsv.ts: -------------------------------------------------------------------------------- 1 | export function readCsv(csvStr: String) { 2 | return convertArray(csvStr); 3 | } 4 | 5 | function convertArray(data) { 6 | const dataArray = []; 7 | const dataString = data.split("\n"); 8 | for (let i = 0; i < dataString.length; i++) 9 | dataArray[i] = dataString[i] 10 | .replace(/^"/i, "") 11 | .replace(/"$/i, "") 12 | .split('","'); 13 | return genGradeObj(dataArray); 14 | } 15 | 16 | function genGradeObj(array: String[][]) { 17 | const res = []; 18 | array.forEach(function (ar) { 19 | if (ar.length === 11 && ar[0] !== "学籍番号") { 20 | res.push(parseGrade(ar)); 21 | } 22 | }); 23 | return res; 24 | } 25 | 26 | function parseGrade(array: String[]) { 27 | const res = {}; 28 | // console.log(array); 29 | res["course_number"] = array[2]; 30 | res["course_name"] = array[3]; 31 | res["credit"] = Number(array[4].replace(/ /, "")); 32 | res["grade"] = array[7]; 33 | res["can_use"] = 34 | array[7] === "P" || 35 | array[7] === "A+" || 36 | array[7] === "A" || 37 | array[7] === "B" || 38 | array[7] === "C" || 39 | array[7] === "認"; // || (array[7] === "履修中" && args.expect) 40 | res["used"] = false; 41 | res["used_rishu"] = false; 42 | res["isCount"] = "C0" !== array[8]; 43 | res["type"] = array[8]; 44 | return res; 45 | } 46 | -------------------------------------------------------------------------------- /react-visualizer/src/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", 4 | "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", 5 | sans-serif; 6 | -webkit-font-smoothing: antialiased; 7 | -moz-osx-font-smoothing: grayscale; 8 | } 9 | 10 | code { 11 | font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", 12 | monospace; 13 | } 14 | -------------------------------------------------------------------------------- /react-visualizer/src/index.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import ReactDOM from "react-dom"; 3 | import "./index.css"; 4 | import App from "./App"; 5 | import reportWebVitals from "./reportWebVitals"; 6 | 7 | ReactDOM.render( 8 | 9 | 10 | , 11 | document.getElementById("root") 12 | ); 13 | 14 | // If you want to start measuring performance in your app, pass a function 15 | // to log results (for example: reportWebVitals(console.log)) 16 | // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals 17 | reportWebVitals(); 18 | -------------------------------------------------------------------------------- /react-visualizer/src/logo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /react-visualizer/src/reportWebVitals.js: -------------------------------------------------------------------------------- 1 | const reportWebVitals = (onPerfEntry) => { 2 | if (onPerfEntry && onPerfEntry instanceof Function) { 3 | import("web-vitals").then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => { 4 | getCLS(onPerfEntry); 5 | getFID(onPerfEntry); 6 | getFCP(onPerfEntry); 7 | getLCP(onPerfEntry); 8 | getTTFB(onPerfEntry); 9 | }); 10 | } 11 | }; 12 | 13 | export default reportWebVitals; 14 | -------------------------------------------------------------------------------- /react-visualizer/src/reqJson/cisID20.json: -------------------------------------------------------------------------------- 1 | { 2 | "国際総合学類国際開発学主専攻20年度入学": { 3 | "max_certificated_credit_num": 126, 4 | "min_certificated_credit_num": 126, 5 | "leaf": { 6 | "専門": { 7 | "max_certificated_credit_num": 117, 8 | "min_certificated_credit_num": 62, 9 | "leaf": { 10 | "": { 11 | "max_certificated_credit_num": 117, 12 | "min_certificated_credit_num": 62, 13 | "leaf": { 14 | "必修": { 15 | "max_certificated_credit_num": 6, 16 | "min_certificated_credit_num": 6, 17 | "leaf": { 18 | "卒業論文": { 19 | "max_certificated_credit_num": 6, 20 | "min_certificated_credit_num": 6, 21 | "leaf": { 22 | "regexp_number": "^FB14908$", 23 | "regexp_name": "" 24 | } 25 | } 26 | } 27 | }, 28 | "選択": { 29 | "max_certificated_credit_num": 75, 30 | "min_certificated_credit_num": 38, 31 | "leaf": { 32 | "BC11/16,BE22~": { 33 | "max_certificated_credit_num": 62, 34 | "min_certificated_credit_num": 0, 35 | "leaf": { 36 | "regexp_number": "^B(C1[126]|E22).*$", 37 | "regexp_name": "" 38 | } 39 | }, 40 | "BC12~": { 41 | "max_certificated_credit_num": 62, 42 | "min_certificated_credit_num": 14, 43 | "leaf": { 44 | "regexp_number": "^B(C1[126]|E22).*$", 45 | "regexp_name": "" 46 | } 47 | }, 48 | "BC13~": { 49 | "max_certificated_credit_num": 9, 50 | "min_certificated_credit_num": 6, 51 | "leaf": { 52 | "regexp_number": "^BC13.*$", 53 | "regexp_name": "" 54 | } 55 | }, 56 | "BC15~": { 57 | "max_certificated_credit_num": 4, 58 | "min_certificated_credit_num": 0, 59 | "leaf": { 60 | "regexp_number": "^BC15.*$", 61 | "regexp_name": "" 62 | } 63 | } 64 | } 65 | } 66 | } 67 | } 68 | } 69 | }, 70 | "専門基礎": { 71 | "max_certificated_credit_num": 36, 72 | "min_certificated_credit_num": 18, 73 | "leaf": { 74 | "": { 75 | "max_certificated_credit_num": 36, 76 | "min_certificated_credit_num": 18, 77 | "leaf": { 78 | "必修": { 79 | "max_certificated_credit_num": 4, 80 | "min_certificated_credit_num": 4, 81 | "leaf": { 82 | "国際学I": { 83 | "max_certificated_credit_num": 1, 84 | "min_certificated_credit_num": 1, 85 | "leaf": { 86 | "regexp_number": "^BC50111$", 87 | "regexp_name": "" 88 | } 89 | }, 90 | "国際学II": { 91 | "max_certificated_credit_num": 1, 92 | "min_certificated_credit_num": 1, 93 | "leaf": { 94 | "regexp_number": "^BC50121$", 95 | "regexp_name": "" 96 | } 97 | }, 98 | "国際学III": { 99 | "max_certificated_credit_num": 1, 100 | "min_certificated_credit_num": 1, 101 | "leaf": { 102 | "regexp_number": "^BC50131$", 103 | "regexp_name": "" 104 | } 105 | }, 106 | "国際学IV": { 107 | "max_certificated_credit_num": 1, 108 | "min_certificated_credit_num": 1, 109 | "leaf": { 110 | "regexp_number": "^BC50141$", 111 | "regexp_name": "" 112 | } 113 | } 114 | } 115 | }, 116 | "選択": { 117 | "max_certificated_credit_num": 32, 118 | "min_certificated_credit_num": 14, 119 | "leaf": { 120 | "BC51(EDS,ED以外)": { 121 | "max_certificated_credit_num": 14, 122 | "min_certificated_credit_num": 10, 123 | "leaf": { 124 | "regexp_number": "^(?!BC51(3[1-3]|5[78])4)BC51.*$", 125 | "regexp_name": "" 126 | } 127 | }, 128 | "EDS,ED": { 129 | "max_certificated_credit_num": 4, 130 | "min_certificated_credit_num": 4, 131 | "leaf": { 132 | "regexp_number": "^BC51(3[1-3]|5[78])4$", 133 | "regexp_name": "" 134 | } 135 | }, 136 | "BB050,FH611...": { 137 | "max_certificated_credit_num": 14, 138 | "min_certificated_credit_num": 0, 139 | "leaf": { 140 | "regexp_number": "^(BB050|FH611|FG10641|GA12|BE21).*$", 141 | "regexp_name": "" 142 | } 143 | } 144 | } 145 | } 146 | } 147 | } 148 | } 149 | }, 150 | "基礎": { 151 | "max_certificated_credit_num": 66, 152 | "min_certificated_credit_num": 23, 153 | "leaf": { 154 | "共通": { 155 | "max_certificated_credit_num": 31, 156 | "min_certificated_credit_num": 17, 157 | "leaf": { 158 | "必修": { 159 | "max_certificated_credit_num": 16, 160 | "min_certificated_credit_num": 16, 161 | "leaf": { 162 | "総合科目": { 163 | "max_certificated_credit_num": 2, 164 | "min_certificated_credit_num": 2, 165 | "leaf": { 166 | "regexp_number": "", 167 | "regexp_name": "^(学問への誘い|フレッシュマン・セミナー)$" 168 | } 169 | }, 170 | "情報": { 171 | "max_certificated_credit_num": 4, 172 | "min_certificated_credit_num": 4, 173 | "leaf": { 174 | "regexp_number": "^6.*$", 175 | "regexp_name": "" 176 | } 177 | }, 178 | "体育": { 179 | "max_certificated_credit_num": 2, 180 | "min_certificated_credit_num": 2, 181 | "leaf": { 182 | "regexp_number": "^2[12].*$", 183 | "regexp_name": "" 184 | } 185 | }, 186 | "第1・2外国語": { 187 | "max_certificated_credit_num": 8, 188 | "min_certificated_credit_num": 8, 189 | "leaf": { 190 | "regexp_number": "^3.*$", 191 | "regexp_name": "" 192 | } 193 | } 194 | } 195 | }, 196 | "選択": { 197 | "max_certificated_credit_num": 15, 198 | "min_certificated_credit_num": 1, 199 | "leaf": { 200 | "総合科目(学士基盤科目)": { 201 | "max_certificated_credit_num": 3, 202 | "min_certificated_credit_num": 1, 203 | "leaf": { 204 | "regexp_number": "^1.*$", 205 | "regexp_name": "" 206 | } 207 | }, 208 | "体育": { 209 | "max_certificated_credit_num": 2, 210 | "min_certificated_credit_num": 0, 211 | "leaf": { 212 | "regexp_number": "^2.*$", 213 | "regexp_name": "" 214 | } 215 | }, 216 | "外国語": { 217 | "max_certificated_credit_num": 6, 218 | "min_certificated_credit_num": 0, 219 | "leaf": { 220 | "regexp_number": "^3.*$", 221 | "regexp_name": "" 222 | } 223 | }, 224 | "国語": { 225 | "max_certificated_credit_num": 2, 226 | "min_certificated_credit_num": 0, 227 | "leaf": { 228 | "regexp_number": "^5.*$", 229 | "regexp_name": "" 230 | } 231 | }, 232 | "芸術": { 233 | "max_certificated_credit_num": 2, 234 | "min_certificated_credit_num": 0, 235 | "leaf": { 236 | "regexp_number": "^4.*$", 237 | "regexp_name": "" 238 | } 239 | } 240 | } 241 | } 242 | } 243 | }, 244 | "関連": { 245 | "max_certificated_credit_num": 16, 246 | "min_certificated_credit_num": 6, 247 | "leaf": { 248 | "必修": { 249 | "max_certificated_credit_num": 0, 250 | "min_certificated_credit_num": 0, 251 | "leaf": {} 252 | }, 253 | "選択": { 254 | "max_certificated_credit_num": 16, 255 | "min_certificated_credit_num": 6, 256 | "leaf": { 257 | "社会・国際、特設自由科目並びに博物館": { 258 | "max_certificated_credit_num": 5, 259 | "min_certificated_credit_num": 0, 260 | "leaf": { 261 | "regexp_number": "^(BA|99|8).*$", 262 | "regexp_name": "" 263 | } 264 | }, 265 | "A/BB/C~": { 266 | "max_certificated_credit_num": 8, 267 | "min_certificated_credit_num": 3, 268 | "leaf": { 269 | "regexp_number": "^(A|BB|C).*$", 270 | "regexp_name": "" 271 | } 272 | }, 273 | "E/F/G/H/W/Y~": { 274 | "max_certificated_credit_num": 10, 275 | "min_certificated_credit_num": 3, 276 | "leaf": { 277 | "regexp_number": "^[EFGHWY].*$", 278 | "regexp_name": "" 279 | } 280 | }, 281 | "教職に関する科目": { 282 | "max_certificated_credit_num": 12, 283 | "min_certificated_credit_num": 0, 284 | "leaf": { 285 | "regexp_number": "^9.*$", 286 | "regexp_name": "" 287 | } 288 | } 289 | } 290 | } 291 | } 292 | } 293 | } 294 | } 295 | } 296 | } 297 | } 298 | -------------------------------------------------------------------------------- /react-visualizer/src/reqJson/cisIR20.json: -------------------------------------------------------------------------------- 1 | { 2 | "国際総合学類国際関係学主専攻20年度入学": { 3 | "max_certificated_credit_num": 126, 4 | "min_certificated_credit_num": 126, 5 | "leaf": { 6 | "専門": { 7 | "max_certificated_credit_num": 117, 8 | "min_certificated_credit_num": 62, 9 | "leaf": { 10 | "": { 11 | "max_certificated_credit_num": 117, 12 | "min_certificated_credit_num": 62, 13 | "leaf": { 14 | "必修": { 15 | "max_certificated_credit_num": 6, 16 | "min_certificated_credit_num": 6, 17 | "leaf": { 18 | "卒業論文": { 19 | "max_certificated_credit_num": 6, 20 | "min_certificated_credit_num": 6, 21 | "leaf": { 22 | "regexp_number": "^FB14908$", 23 | "regexp_name": "" 24 | } 25 | } 26 | } 27 | }, 28 | "選択": { 29 | "max_certificated_credit_num": 75, 30 | "min_certificated_credit_num": 38, 31 | "leaf": { 32 | "BC11/16~": { 33 | "max_certificated_credit_num": 62, 34 | "min_certificated_credit_num": 14, 35 | "leaf": { 36 | "regexp_number": "^B(C1[126]|E22).*$", 37 | "regexp_name": "" 38 | } 39 | }, 40 | "BC12,BE22~": { 41 | "max_certificated_credit_num": 62, 42 | "min_certificated_credit_num": 0, 43 | "leaf": { 44 | "regexp_number": "^B(C1[126]|E22).*$", 45 | "regexp_name": "" 46 | } 47 | }, 48 | "BC13~": { 49 | "max_certificated_credit_num": 9, 50 | "min_certificated_credit_num": 6, 51 | "leaf": { 52 | "regexp_number": "^BC13.*$", 53 | "regexp_name": "" 54 | } 55 | }, 56 | "BC15~": { 57 | "max_certificated_credit_num": 4, 58 | "min_certificated_credit_num": 0, 59 | "leaf": { 60 | "regexp_number": "^BC15.*$", 61 | "regexp_name": "" 62 | } 63 | } 64 | } 65 | } 66 | } 67 | } 68 | } 69 | }, 70 | "専門基礎": { 71 | "max_certificated_credit_num": 36, 72 | "min_certificated_credit_num": 18, 73 | "leaf": { 74 | "": { 75 | "max_certificated_credit_num": 36, 76 | "min_certificated_credit_num": 18, 77 | "leaf": { 78 | "必修": { 79 | "max_certificated_credit_num": 4, 80 | "min_certificated_credit_num": 4, 81 | "leaf": { 82 | "国際学I": { 83 | "max_certificated_credit_num": 1, 84 | "min_certificated_credit_num": 1, 85 | "leaf": { 86 | "regexp_number": "^BC50111$", 87 | "regexp_name": "" 88 | } 89 | }, 90 | "国際学II": { 91 | "max_certificated_credit_num": 1, 92 | "min_certificated_credit_num": 1, 93 | "leaf": { 94 | "regexp_number": "^BC50121$", 95 | "regexp_name": "" 96 | } 97 | }, 98 | "国際学III": { 99 | "max_certificated_credit_num": 1, 100 | "min_certificated_credit_num": 1, 101 | "leaf": { 102 | "regexp_number": "^BC50131$", 103 | "regexp_name": "" 104 | } 105 | }, 106 | "国際学IV": { 107 | "max_certificated_credit_num": 1, 108 | "min_certificated_credit_num": 1, 109 | "leaf": { 110 | "regexp_number": "^BC50141$", 111 | "regexp_name": "" 112 | } 113 | } 114 | } 115 | }, 116 | "選択": { 117 | "max_certificated_credit_num": 32, 118 | "min_certificated_credit_num": 14, 119 | "leaf": { 120 | "BC51(EDS,ED以外)": { 121 | "max_certificated_credit_num": 14, 122 | "min_certificated_credit_num": 10, 123 | "leaf": { 124 | "regexp_number": "^(?!BC51(3[1-3]|5[78])4)BC51.*$", 125 | "regexp_name": "" 126 | } 127 | }, 128 | "EDS,ED": { 129 | "max_certificated_credit_num": 4, 130 | "min_certificated_credit_num": 4, 131 | "leaf": { 132 | "regexp_number": "^BC51(3[1-3]|5[78])4$", 133 | "regexp_name": "" 134 | } 135 | }, 136 | "BB050,FH611...": { 137 | "max_certificated_credit_num": 14, 138 | "min_certificated_credit_num": 0, 139 | "leaf": { 140 | "regexp_number": "^(BB050|FH611|FG10641|GA12|BE21).*$", 141 | "regexp_name": "" 142 | } 143 | } 144 | } 145 | } 146 | } 147 | } 148 | } 149 | }, 150 | "基礎": { 151 | "max_certificated_credit_num": 66, 152 | "min_certificated_credit_num": 23, 153 | "leaf": { 154 | "共通": { 155 | "max_certificated_credit_num": 31, 156 | "min_certificated_credit_num": 17, 157 | "leaf": { 158 | "必修": { 159 | "max_certificated_credit_num": 16, 160 | "min_certificated_credit_num": 16, 161 | "leaf": { 162 | "総合科目": { 163 | "max_certificated_credit_num": 2, 164 | "min_certificated_credit_num": 2, 165 | "leaf": { 166 | "regexp_number": "", 167 | "regexp_name": "^(学問への誘い|フレッシュマン・セミナー)$" 168 | } 169 | }, 170 | "情報": { 171 | "max_certificated_credit_num": 4, 172 | "min_certificated_credit_num": 4, 173 | "leaf": { 174 | "regexp_number": "^6.*$", 175 | "regexp_name": "" 176 | } 177 | }, 178 | "体育": { 179 | "max_certificated_credit_num": 2, 180 | "min_certificated_credit_num": 2, 181 | "leaf": { 182 | "regexp_number": "^2[12].*$", 183 | "regexp_name": "" 184 | } 185 | }, 186 | "第1・2外国語": { 187 | "max_certificated_credit_num": 8, 188 | "min_certificated_credit_num": 8, 189 | "leaf": { 190 | "regexp_number": "^3.*$", 191 | "regexp_name": "" 192 | } 193 | } 194 | } 195 | }, 196 | "選択": { 197 | "max_certificated_credit_num": 15, 198 | "min_certificated_credit_num": 1, 199 | "leaf": { 200 | "総合科目(学士基盤科目)": { 201 | "max_certificated_credit_num": 3, 202 | "min_certificated_credit_num": 1, 203 | "leaf": { 204 | "regexp_number": "^1.*$", 205 | "regexp_name": "" 206 | } 207 | }, 208 | "体育": { 209 | "max_certificated_credit_num": 2, 210 | "min_certificated_credit_num": 0, 211 | "leaf": { 212 | "regexp_number": "^2.*$", 213 | "regexp_name": "" 214 | } 215 | }, 216 | "外国語": { 217 | "max_certificated_credit_num": 6, 218 | "min_certificated_credit_num": 0, 219 | "leaf": { 220 | "regexp_number": "^3.*$", 221 | "regexp_name": "" 222 | } 223 | }, 224 | "国語": { 225 | "max_certificated_credit_num": 2, 226 | "min_certificated_credit_num": 0, 227 | "leaf": { 228 | "regexp_number": "^5.*$", 229 | "regexp_name": "" 230 | } 231 | }, 232 | "芸術": { 233 | "max_certificated_credit_num": 2, 234 | "min_certificated_credit_num": 0, 235 | "leaf": { 236 | "regexp_number": "^4.*$", 237 | "regexp_name": "" 238 | } 239 | } 240 | } 241 | } 242 | } 243 | }, 244 | "関連": { 245 | "max_certificated_credit_num": 16, 246 | "min_certificated_credit_num": 6, 247 | "leaf": { 248 | "必修": { 249 | "max_certificated_credit_num": 0, 250 | "min_certificated_credit_num": 0, 251 | "leaf": {} 252 | }, 253 | "選択": { 254 | "max_certificated_credit_num": 16, 255 | "min_certificated_credit_num": 6, 256 | "leaf": { 257 | "社会・国際、特設自由科目並びに博物館": { 258 | "max_certificated_credit_num": 5, 259 | "min_certificated_credit_num": 0, 260 | "leaf": { 261 | "regexp_number": "^(BA|99|8).*$", 262 | "regexp_name": "" 263 | } 264 | }, 265 | "A/BB/C~": { 266 | "max_certificated_credit_num": 8, 267 | "min_certificated_credit_num": 3, 268 | "leaf": { 269 | "regexp_number": "^(A|BB|C).*$", 270 | "regexp_name": "" 271 | } 272 | }, 273 | "E/F/G/H/W/Y~": { 274 | "max_certificated_credit_num": 10, 275 | "min_certificated_credit_num": 3, 276 | "leaf": { 277 | "regexp_number": "^[EFGHWY].*$", 278 | "regexp_name": "" 279 | } 280 | }, 281 | "教職に関する科目": { 282 | "max_certificated_credit_num": 12, 283 | "min_certificated_credit_num": 0, 284 | "leaf": { 285 | "regexp_number": "^9.*$", 286 | "regexp_name": "" 287 | } 288 | } 289 | } 290 | } 291 | } 292 | } 293 | } 294 | } 295 | } 296 | } 297 | } 298 | -------------------------------------------------------------------------------- /react-visualizer/src/reqJson/klis21-knowledge.json: -------------------------------------------------------------------------------- 1 | { 2 | "知識情報・図書館学類21年度入学(知識科学主専攻)": { 3 | "max_certificated_credit_num": 124, 4 | "min_certificated_credit_num": 124, 5 | "leaf": { 6 | "専門": { 7 | "max_certificated_credit_num": 54, 8 | "min_certificated_credit_num": 34, 9 | "leaf": { 10 | "": { 11 | "max_certificated_credit_num": 54, 12 | "min_certificated_credit_num": 34, 13 | "leaf": { 14 | "必修": { 15 | "max_certificated_credit_num": 10, 16 | "min_certificated_credit_num": 10, 17 | "leaf": { 18 | "卒業研究": { 19 | "max_certificated_credit_num": 6, 20 | "min_certificated_credit_num": 6, 21 | "leaf": { 22 | "regexp_number": "^FB14908$", 23 | "regexp_name": "" 24 | } 25 | }, 26 | "専門英語B": { 27 | "max_certificated_credit_num": 1, 28 | "min_certificated_credit_num": 1, 29 | "leaf": { 30 | "regexp_number": "^GE507[1-3]2$", 31 | "regexp_name": "" 32 | } 33 | }, 34 | "専門英語C": { 35 | "max_certificated_credit_num": 1, 36 | "min_certificated_credit_num": 1, 37 | "leaf": { 38 | "regexp_number": "^GE508[1-3]2$", 39 | "regexp_name": "" 40 | } 41 | }, 42 | "知識情報科学実習A": { 43 | "max_certificated_credit_num": 1, 44 | "min_certificated_credit_num": 1, 45 | "leaf": { 46 | "regexp_number": "^GE60113$", 47 | "regexp_name": "" 48 | } 49 | }, 50 | "知識情報科学実習B": { 51 | "max_certificated_credit_num": 1, 52 | "min_certificated_credit_num": 1, 53 | "leaf": { 54 | "regexp_number": "^GE60123$", 55 | "regexp_name": "" 56 | } 57 | } 58 | } 59 | }, 60 | "選択": { 61 | "max_certificated_credit_num": 44, 62 | "min_certificated_credit_num": 24, 63 | "leaf": { 64 | "GE6(知識情報科学実習を除く)": { 65 | "max_certificated_credit_num": 36, 66 | "min_certificated_credit_num": 16, 67 | "leaf": { 68 | "regexp_number": "^GE6(?!.*01[1-2]3).*$", 69 | "regexp_name": "" 70 | } 71 | }, 72 | "GA4/GE4/GE7/GE8": { 73 | "max_certificated_credit_num": 28, 74 | "min_certificated_credit_num": 8, 75 | "leaf": { 76 | "regexp_number": "^(GA4|GE(4|7|8)).*$", 77 | "regexp_name": "" 78 | } 79 | } 80 | } 81 | } 82 | } 83 | } 84 | } 85 | }, 86 | "専門基礎": { 87 | "max_certificated_credit_num": 71, 88 | "min_certificated_credit_num": 51, 89 | "leaf": { 90 | "": { 91 | "max_certificated_credit_num": 71, 92 | "min_certificated_credit_num": 51, 93 | "leaf": { 94 | "必修": { 95 | "max_certificated_credit_num": 19, 96 | "min_certificated_credit_num": 19, 97 | "leaf": { 98 | "知識情報概論": { 99 | "max_certificated_credit_num": 1, 100 | "min_certificated_credit_num": 1, 101 | "leaf": { 102 | "regexp_number": "^GA141[1-2]1$", 103 | "regexp_name": "" 104 | } 105 | }, 106 | "アカデミックスキルズ": { 107 | "max_certificated_credit_num": 1, 108 | "min_certificated_credit_num": 1, 109 | "leaf": { 110 | "regexp_number": "^GE121[1-4]2$", 111 | "regexp_name": "" 112 | } 113 | }, 114 | "プログラミング入門A": { 115 | "max_certificated_credit_num": 2, 116 | "min_certificated_credit_num": 2, 117 | "leaf": { 118 | "regexp_number": "^GA182[1-4]2$", 119 | "regexp_name": "" 120 | } 121 | }, 122 | "プログラミング入門B": { 123 | "max_certificated_credit_num": 1, 124 | "min_certificated_credit_num": 1, 125 | "leaf": { 126 | "regexp_number": "^GA183[1-4]2$", 127 | "regexp_name": "" 128 | } 129 | }, 130 | "情報数学A": { 131 | "max_certificated_credit_num": 2, 132 | "min_certificated_credit_num": 2, 133 | "leaf": { 134 | "regexp_number": "^GA151[1-4]1$", 135 | "regexp_name": "" 136 | } 137 | }, 138 | "統計": { 139 | "max_certificated_credit_num": 2, 140 | "min_certificated_credit_num": 2, 141 | "leaf": { 142 | "regexp_number": "^GE10911$", 143 | "regexp_name": "" 144 | } 145 | }, 146 | "哲学": { 147 | "max_certificated_credit_num": 2, 148 | "min_certificated_credit_num": 2, 149 | "leaf": { 150 | "regexp_number": "^GE10201$", 151 | "regexp_name": "" 152 | } 153 | }, 154 | "専門英語A1": { 155 | "max_certificated_credit_num": 1, 156 | "min_certificated_credit_num": 1, 157 | "leaf": { 158 | "regexp_number": "^GE116(1|[3-4])2$", 159 | "regexp_name": "" 160 | } 161 | }, 162 | "専門英語A2": { 163 | "max_certificated_credit_num": 1, 164 | "min_certificated_credit_num": 1, 165 | "leaf": { 166 | "regexp_number": "^GE117(1|[3-4])2$", 167 | "regexp_name": "" 168 | } 169 | }, 170 | "知識情報演習I": { 171 | "max_certificated_credit_num": 2, 172 | "min_certificated_credit_num": 2, 173 | "leaf": { 174 | "regexp_number": "^GE110[1-2]2$", 175 | "regexp_name": "" 176 | } 177 | }, 178 | "知識情報演習II": { 179 | "max_certificated_credit_num": 2, 180 | "min_certificated_credit_num": 2, 181 | "leaf": { 182 | "regexp_number": "^GE111[1-2]2$", 183 | "regexp_name": "" 184 | } 185 | }, 186 | "知識情報演習III": { 187 | "max_certificated_credit_num": 2, 188 | "min_certificated_credit_num": 2, 189 | "leaf": { 190 | "regexp_number": "^GE112[1-2]2$", 191 | "regexp_name": "" 192 | } 193 | } 194 | } 195 | }, 196 | "選択": { 197 | "max_certificated_credit_num": 52, 198 | "min_certificated_credit_num": 32, 199 | "leaf": { 200 | "GA1/GE2/GE3": { 201 | "max_certificated_credit_num": 52, 202 | "min_certificated_credit_num": 32, 203 | "leaf": { 204 | "regexp_number": "^(?!.*((GA141|GE121|GA18[2-3]|GA151|GE10911|GE10201|GE11[6-7]|GE11[0-2])))(GA1|GE[2-3]).*$", 205 | "regexp_name": "" 206 | } 207 | } 208 | } 209 | } 210 | } 211 | } 212 | } 213 | }, 214 | "基礎": { 215 | "max_certificated_credit_num": 59, 216 | "min_certificated_credit_num": 19, 217 | "leaf": { 218 | "共通": { 219 | "max_certificated_credit_num": 33, 220 | "min_certificated_credit_num": 13, 221 | "leaf": { 222 | "必修": { 223 | "max_certificated_credit_num": 12, 224 | "min_certificated_credit_num": 12, 225 | "leaf": { 226 | "総合科目": { 227 | "max_certificated_credit_num": 2, 228 | "min_certificated_credit_num": 2, 229 | "leaf": { 230 | "regexp_number": "", 231 | "regexp_name": "^(学問への誘い|フレッシュマン・セミナー)$" 232 | } 233 | }, 234 | "情報": { 235 | "max_certificated_credit_num": 4, 236 | "min_certificated_credit_num": 4, 237 | "leaf": { 238 | "regexp_number": "^6.*$", 239 | "regexp_name": "" 240 | } 241 | }, 242 | "体育": { 243 | "max_certificated_credit_num": 2, 244 | "min_certificated_credit_num": 2, 245 | "leaf": { 246 | "regexp_number": "^2[12].*$", 247 | "regexp_name": "" 248 | } 249 | }, 250 | "第1外国語": { 251 | "max_certificated_credit_num": 4, 252 | "min_certificated_credit_num": 4, 253 | "leaf": { 254 | "regexp_number": "^31.*$", 255 | "regexp_name": "(^English Presentation Skills I+$)" 256 | } 257 | } 258 | } 259 | }, 260 | "選択": { 261 | "max_certificated_credit_num": 21, 262 | "min_certificated_credit_num": 1, 263 | "leaf": { 264 | "総合科目(学士基盤科目)": { 265 | "max_certificated_credit_num": 10000, 266 | "min_certificated_credit_num": 1, 267 | "leaf": { 268 | "regexp_number": "^1.*$", 269 | "regexp_name": "" 270 | } 271 | }, 272 | "総合科目/体育/外国語/国語/芸術": { 273 | "max_certificated_credit_num": 10000, 274 | "min_certificated_credit_num": 0, 275 | "leaf": { 276 | "regexp_number": "^[1-5].*$", 277 | "regexp_name": "" 278 | } 279 | } 280 | } 281 | } 282 | } 283 | }, 284 | "関連": { 285 | "max_certificated_credit_num": 16, 286 | "min_certificated_credit_num": 6, 287 | "leaf": { 288 | "必修": { 289 | "max_certificated_credit_num": 0, 290 | "min_certificated_credit_num": 0, 291 | "leaf": {} 292 | }, 293 | "選択": { 294 | "max_certificated_credit_num": 16, 295 | "min_certificated_credit_num": 6, 296 | "leaf": { 297 | "GA、GB、GC、GE、共通科目、及び教職に関する科目以外": { 298 | "max_certificated_credit_num": 16, 299 | "min_certificated_credit_num": 6, 300 | "leaf": { 301 | "regexp_number": "^(?!(GA|GB|GC|GE|[1-5]|9)).*$", 302 | "regexp_name": "" 303 | } 304 | }, 305 | "GB/GC": { 306 | "max_certificated_credit_num": 16, 307 | "min_certificated_credit_num": 0, 308 | "leaf": { 309 | "regexp_number": "^(GB|GC).*$", 310 | "regexp_name": "" 311 | } 312 | } 313 | } 314 | } 315 | } 316 | } 317 | } 318 | } 319 | } 320 | } 321 | } -------------------------------------------------------------------------------- /react-visualizer/src/reqJson/klis21-management.json: -------------------------------------------------------------------------------- 1 | { 2 | "知識情報・図書館学類21年度入学(情報資源経営主専攻)": { 3 | "max_certificated_credit_num": 124, 4 | "min_certificated_credit_num": 124, 5 | "leaf": { 6 | "専門": { 7 | "max_certificated_credit_num": 54, 8 | "min_certificated_credit_num": 34, 9 | "leaf": { 10 | "": { 11 | "max_certificated_credit_num": 54, 12 | "min_certificated_credit_num": 34, 13 | "leaf": { 14 | "必修": { 15 | "max_certificated_credit_num": 10, 16 | "min_certificated_credit_num": 10, 17 | "leaf": { 18 | "卒業研究": { 19 | "max_certificated_credit_num": 6, 20 | "min_certificated_credit_num": 6, 21 | "leaf": { 22 | "regexp_number": "^FB14908$", 23 | "regexp_name": "" 24 | } 25 | }, 26 | "専門英語B": { 27 | "max_certificated_credit_num": 1, 28 | "min_certificated_credit_num": 1, 29 | "leaf": { 30 | "regexp_number": "^GE507[1-3]2$", 31 | "regexp_name": "" 32 | } 33 | }, 34 | "専門英語C": { 35 | "max_certificated_credit_num": 1, 36 | "min_certificated_credit_num": 1, 37 | "leaf": { 38 | "regexp_number": "^GE508[1-3]2$", 39 | "regexp_name": "" 40 | } 41 | }, 42 | "情報資源経営実習A": { 43 | "max_certificated_credit_num": 1, 44 | "min_certificated_credit_num": 1, 45 | "leaf": { 46 | "regexp_number": "^GE80113$", 47 | "regexp_name": "" 48 | } 49 | }, 50 | "情報資源経営実習B": { 51 | "max_certificated_credit_num": 1, 52 | "min_certificated_credit_num": 1, 53 | "leaf": { 54 | "regexp_number": "^GE80123$", 55 | "regexp_name": "" 56 | } 57 | } 58 | } 59 | }, 60 | "選択": { 61 | "max_certificated_credit_num": 44, 62 | "min_certificated_credit_num": 24, 63 | "leaf": { 64 | "GE8(情報資源経営実習を除く)": { 65 | "max_certificated_credit_num": 36, 66 | "min_certificated_credit_num": 16, 67 | "leaf": { 68 | "regexp_number": "^GE8(?!.*01[1-2]3).*$", 69 | "regexp_name": "" 70 | } 71 | }, 72 | "GA4/GE4/GE6/GE7s": { 73 | "max_certificated_credit_num": 28, 74 | "min_certificated_credit_num": 8, 75 | "leaf": { 76 | "regexp_number": "^(GA4|GE(4|6|7)).*$", 77 | "regexp_name": "" 78 | } 79 | } 80 | } 81 | } 82 | } 83 | } 84 | } 85 | }, 86 | "専門基礎": { 87 | "max_certificated_credit_num": 71, 88 | "min_certificated_credit_num": 51, 89 | "leaf": { 90 | "": { 91 | "max_certificated_credit_num": 71, 92 | "min_certificated_credit_num": 51, 93 | "leaf": { 94 | "必修": { 95 | "max_certificated_credit_num": 19, 96 | "min_certificated_credit_num": 19, 97 | "leaf": { 98 | "知識情報概論": { 99 | "max_certificated_credit_num": 1, 100 | "min_certificated_credit_num": 1, 101 | "leaf": { 102 | "regexp_number": "^GA141[1-2]1$", 103 | "regexp_name": "" 104 | } 105 | }, 106 | "アカデミックスキルズ": { 107 | "max_certificated_credit_num": 1, 108 | "min_certificated_credit_num": 1, 109 | "leaf": { 110 | "regexp_number": "^GE121[1-4]2$", 111 | "regexp_name": "" 112 | } 113 | }, 114 | "プログラミング入門A": { 115 | "max_certificated_credit_num": 2, 116 | "min_certificated_credit_num": 2, 117 | "leaf": { 118 | "regexp_number": "^GA182[1-4]2$", 119 | "regexp_name": "" 120 | } 121 | }, 122 | "プログラミング入門B": { 123 | "max_certificated_credit_num": 1, 124 | "min_certificated_credit_num": 1, 125 | "leaf": { 126 | "regexp_number": "^GA183[1-4]2$", 127 | "regexp_name": "" 128 | } 129 | }, 130 | "情報数学A": { 131 | "max_certificated_credit_num": 2, 132 | "min_certificated_credit_num": 2, 133 | "leaf": { 134 | "regexp_number": "^GA151[1-4]1$", 135 | "regexp_name": "" 136 | } 137 | }, 138 | "統計": { 139 | "max_certificated_credit_num": 2, 140 | "min_certificated_credit_num": 2, 141 | "leaf": { 142 | "regexp_number": "^GE10911$", 143 | "regexp_name": "" 144 | } 145 | }, 146 | "哲学": { 147 | "max_certificated_credit_num": 2, 148 | "min_certificated_credit_num": 2, 149 | "leaf": { 150 | "regexp_number": "^GE10201$", 151 | "regexp_name": "" 152 | } 153 | }, 154 | "専門英語A1": { 155 | "max_certificated_credit_num": 1, 156 | "min_certificated_credit_num": 1, 157 | "leaf": { 158 | "regexp_number": "^GE116(1|[3-4])2$", 159 | "regexp_name": "" 160 | } 161 | }, 162 | "専門英語A2": { 163 | "max_certificated_credit_num": 1, 164 | "min_certificated_credit_num": 1, 165 | "leaf": { 166 | "regexp_number": "^GE117(1|[3-4])2$", 167 | "regexp_name": "" 168 | } 169 | }, 170 | "知識情報演習I": { 171 | "max_certificated_credit_num": 2, 172 | "min_certificated_credit_num": 2, 173 | "leaf": { 174 | "regexp_number": "^GE110[1-2]2$", 175 | "regexp_name": "" 176 | } 177 | }, 178 | "知識情報演習II": { 179 | "max_certificated_credit_num": 2, 180 | "min_certificated_credit_num": 2, 181 | "leaf": { 182 | "regexp_number": "^GE111[1-2]2$", 183 | "regexp_name": "" 184 | } 185 | }, 186 | "知識情報演習III": { 187 | "max_certificated_credit_num": 2, 188 | "min_certificated_credit_num": 2, 189 | "leaf": { 190 | "regexp_number": "^GE112[1-2]2$", 191 | "regexp_name": "" 192 | } 193 | } 194 | } 195 | }, 196 | "選択": { 197 | "max_certificated_credit_num": 52, 198 | "min_certificated_credit_num": 32, 199 | "leaf": { 200 | "GA1/GE2/GE3": { 201 | "max_certificated_credit_num": 52, 202 | "min_certificated_credit_num": 32, 203 | "leaf": { 204 | "regexp_number": "^(?!.*((GA141|GE121|GA18[2-3]|GA151|GE10911|GE10201|GE11[6-7]|GE11[0-2])))(GA1|GE[2-3]).*$", 205 | "regexp_name": "" 206 | } 207 | } 208 | } 209 | } 210 | } 211 | } 212 | } 213 | }, 214 | "基礎": { 215 | "max_certificated_credit_num": 59, 216 | "min_certificated_credit_num": 19, 217 | "leaf": { 218 | "共通": { 219 | "max_certificated_credit_num": 33, 220 | "min_certificated_credit_num": 13, 221 | "leaf": { 222 | "必修": { 223 | "max_certificated_credit_num": 12, 224 | "min_certificated_credit_num": 12, 225 | "leaf": { 226 | "総合科目": { 227 | "max_certificated_credit_num": 2, 228 | "min_certificated_credit_num": 2, 229 | "leaf": { 230 | "regexp_number": "", 231 | "regexp_name": "^(学問への誘い|フレッシュマン・セミナー)$" 232 | } 233 | }, 234 | "情報": { 235 | "max_certificated_credit_num": 4, 236 | "min_certificated_credit_num": 4, 237 | "leaf": { 238 | "regexp_number": "^6.*$", 239 | "regexp_name": "" 240 | } 241 | }, 242 | "体育": { 243 | "max_certificated_credit_num": 2, 244 | "min_certificated_credit_num": 2, 245 | "leaf": { 246 | "regexp_number": "^2[12].*$", 247 | "regexp_name": "" 248 | } 249 | }, 250 | "第1外国語": { 251 | "max_certificated_credit_num": 4, 252 | "min_certificated_credit_num": 4, 253 | "leaf": { 254 | "regexp_number": "^31.*$", 255 | "regexp_name": "(^English Presentation Skills I+$)" 256 | } 257 | } 258 | } 259 | }, 260 | "選択": { 261 | "max_certificated_credit_num": 21, 262 | "min_certificated_credit_num": 1, 263 | "leaf": { 264 | "総合科目(学士基盤科目)": { 265 | "max_certificated_credit_num": 10000, 266 | "min_certificated_credit_num": 1, 267 | "leaf": { 268 | "regexp_number": "^1.*$", 269 | "regexp_name": "" 270 | } 271 | }, 272 | "総合科目/体育/外国語/国語/芸術": { 273 | "max_certificated_credit_num": 10000, 274 | "min_certificated_credit_num": 0, 275 | "leaf": { 276 | "regexp_number": "^[1-5].*$", 277 | "regexp_name": "" 278 | } 279 | } 280 | } 281 | } 282 | } 283 | }, 284 | "関連": { 285 | "max_certificated_credit_num": 16, 286 | "min_certificated_credit_num": 6, 287 | "leaf": { 288 | "必修": { 289 | "max_certificated_credit_num": 0, 290 | "min_certificated_credit_num": 0, 291 | "leaf": {} 292 | }, 293 | "選択": { 294 | "max_certificated_credit_num": 16, 295 | "min_certificated_credit_num": 6, 296 | "leaf": { 297 | "GA、GB、GC、GE、共通科目、及び教職に関する科目以外": { 298 | "max_certificated_credit_num": 16, 299 | "min_certificated_credit_num": 6, 300 | "leaf": { 301 | "regexp_number": "^(?!(GA|GB|GC|GE|[1-5]|9)).*$", 302 | "regexp_name": "" 303 | } 304 | }, 305 | "GB/GC": { 306 | "max_certificated_credit_num": 16, 307 | "min_certificated_credit_num": 0, 308 | "leaf": { 309 | "regexp_number": "^(GB|GC).*$", 310 | "regexp_name": "" 311 | } 312 | } 313 | } 314 | } 315 | } 316 | } 317 | } 318 | } 319 | } 320 | } 321 | } -------------------------------------------------------------------------------- /react-visualizer/src/reqJson/math20.json: -------------------------------------------------------------------------------- 1 | { 2 | "数学類20年度入学": { 3 | "max_certificated_credit_num": 124, 4 | "min_certificated_credit_num": 124, 5 | "leaf": { 6 | "専門": { 7 | "max_certificated_credit_num": 84, 8 | "min_certificated_credit_num": 60, 9 | "leaf": { 10 | "": { 11 | "max_certificated_credit_num": 84, 12 | "min_certificated_credit_num": 60, 13 | "leaf": { 14 | "必修": { 15 | "max_certificated_credit_num": 14, 16 | "min_certificated_credit_num": 14, 17 | "leaf": { 18 | "卒業研究": { 19 | "max_certificated_credit_num": 6, 20 | "min_certificated_credit_num": 6, 21 | "leaf": { 22 | "regexp_number": "^FB14908$", 23 | "regexp_name": "" 24 | } 25 | }, 26 | "卒業予備研究": { 27 | "max_certificated_credit_num": 3, 28 | "min_certificated_credit_num": 3, 29 | "leaf": { 30 | "regexp_number": "^FB13901$", 31 | "regexp_name": "" 32 | } 33 | }, 34 | "数学外書輪講II": { 35 | "max_certificated_credit_num": 2, 36 | "min_certificated_credit_num": 2, 37 | "leaf": { 38 | "regexp_number": "^FB135[012]1$", 39 | "regexp_name": "" 40 | } 41 | } 42 | } 43 | }, 44 | "選択": { 45 | "max_certificated_credit_num": 70, 46 | "min_certificated_credit_num": 46, 47 | "leaf": { 48 | "FB12/13/14~": { 49 | "max_certificated_credit_num": 70, 50 | "min_certificated_credit_num": 46, 51 | "leaf": { 52 | "regexp_number": "^FB1[2-4].*$", 53 | "regexp_name": "" 54 | } 55 | } 56 | } 57 | } 58 | } 59 | } 60 | } 61 | }, 62 | "専門基礎": { 63 | "max_certificated_credit_num": 53, 64 | "min_certificated_credit_num": 29, 65 | "leaf": { 66 | "": { 67 | "max_certificated_credit_num": 53, 68 | "min_certificated_credit_num": 29, 69 | "leaf": { 70 | "必修": { 71 | "max_certificated_credit_num": 6, 72 | "min_certificated_credit_num": 6, 73 | "leaf": { 74 | "微積分I,II": { 75 | "max_certificated_credit_num": 2, 76 | "min_certificated_credit_num": 2, 77 | "leaf": { 78 | "regexp_number": "^FBA(14[6-9]1|15[0-3]1)$", 79 | "regexp_name": "" 80 | } 81 | }, 82 | "線形代数I,II": { 83 | "max_certificated_credit_num": 2, 84 | "min_certificated_credit_num": 2, 85 | "leaf": { 86 | "regexp_number": "^FBA(1(5[89]|6[01])1|16[2-5]1)$", 87 | "regexp_name": "" 88 | } 89 | }, 90 | "数学リテラシー1": { 91 | "max_certificated_credit_num": 1, 92 | "min_certificated_credit_num": 1, 93 | "leaf": { 94 | "regexp_number": "", 95 | "regexp_name": "^数学リテラシー1$" 96 | } 97 | }, 98 | "数学リテラシー2": { 99 | "max_certificated_credit_num": 1, 100 | "min_certificated_credit_num": 1, 101 | "leaf": { 102 | "regexp_number": "", 103 | "regexp_name": "^数学リテラシー2$" 104 | } 105 | } 106 | } 107 | }, 108 | "選択": { 109 | "max_certificated_credit_num": 47, 110 | "min_certificated_credit_num": 23, 111 | "leaf": { 112 | "FBA/FC/FE/EE,生物~": { 113 | "max_certificated_credit_num": 47, 114 | "min_certificated_credit_num": 23, 115 | "leaf": { 116 | "regexp_number": "^((FBA|FC|FE|EE).*|(EB00001|EB11[368]11|EB11[27]21|EB11131))$", 117 | "regexp_name": "" 118 | } 119 | } 120 | } 121 | } 122 | } 123 | } 124 | } 125 | }, 126 | "基礎": { 127 | "max_certificated_credit_num": 45, 128 | "min_certificated_credit_num": 19, 129 | "leaf": { 130 | "共通": { 131 | "max_certificated_credit_num": 29, 132 | "min_certificated_credit_num": 13, 133 | "leaf": { 134 | "必修": { 135 | "max_certificated_credit_num": 12, 136 | "min_certificated_credit_num": 12, 137 | "leaf": { 138 | "総合科目": { 139 | "max_certificated_credit_num": 2, 140 | "min_certificated_credit_num": 2, 141 | "leaf": { 142 | "regexp_number": "", 143 | "regexp_name": "^(学問への誘い|フレッシュマン・セミナー)$" 144 | } 145 | }, 146 | "情報": { 147 | "max_certificated_credit_num": 4, 148 | "min_certificated_credit_num": 4, 149 | "leaf": { 150 | "regexp_number": "^6.*$", 151 | "regexp_name": "" 152 | } 153 | }, 154 | "体育": { 155 | "max_certificated_credit_num": 2, 156 | "min_certificated_credit_num": 2, 157 | "leaf": { 158 | "regexp_number": "^2[12].*$", 159 | "regexp_name": "" 160 | } 161 | }, 162 | "第1外国語": { 163 | "max_certificated_credit_num": 4, 164 | "min_certificated_credit_num": 4, 165 | "leaf": { 166 | "regexp_number": "^31.*$", 167 | "regexp_name": "(^English Presentation Skills I+$)" 168 | } 169 | } 170 | } 171 | }, 172 | "選択": { 173 | "max_certificated_credit_num": 17, 174 | "min_certificated_credit_num": 1, 175 | "leaf": { 176 | "総合科目(学士基盤科目)": { 177 | "max_certificated_credit_num": 1, 178 | "min_certificated_credit_num": 1, 179 | "leaf": { 180 | "regexp_number": "^1.*$", 181 | "regexp_name": "" 182 | } 183 | }, 184 | "総合科目/体育/外国語/国語/芸術": { 185 | "max_certificated_credit_num": 16, 186 | "min_certificated_credit_num": 0, 187 | "leaf": { 188 | "regexp_number": "^[1-5].*$", 189 | "regexp_name": "" 190 | } 191 | } 192 | } 193 | } 194 | } 195 | }, 196 | "関連": { 197 | "max_certificated_credit_num": 16, 198 | "min_certificated_credit_num": 6, 199 | "leaf": { 200 | "必修": { 201 | "max_certificated_credit_num": 0, 202 | "min_certificated_credit_num": 0, 203 | "leaf": {} 204 | }, 205 | "選択": { 206 | "max_certificated_credit_num": 16, 207 | "min_certificated_credit_num": 6, 208 | "leaf": { 209 | "専門科目および専門基礎科目で指定した以外の科目": { 210 | "max_certificated_credit_num": 10000, 211 | "min_certificated_credit_num": 6, 212 | "leaf": { 213 | "regexp_number": "^.......$", 214 | "regexp_name": "" 215 | } 216 | } 217 | } 218 | } 219 | } 220 | } 221 | } 222 | } 223 | } 224 | } 225 | } 226 | -------------------------------------------------------------------------------- /react-visualizer/src/reqJson/psych20.json: -------------------------------------------------------------------------------- 1 | { 2 | "心理学類20年度入学": { 3 | "max_certificated_credit_num": 125, 4 | "min_certificated_credit_num": 125, 5 | "leaf": { 6 | "専門": { 7 | "max_certificated_credit_num": 80, 8 | "min_certificated_credit_num": 43, 9 | "leaf": { 10 | "": { 11 | "max_certificated_credit_num": 80, 12 | "min_certificated_credit_num": 43, 13 | "leaf": { 14 | "必修": { 15 | "max_certificated_credit_num": 22, 16 | "min_certificated_credit_num": 22, 17 | "leaf": { 18 | "知覚・認知心理学": { 19 | "max_certificated_credit_num": 2, 20 | "min_certificated_credit_num": 2, 21 | "leaf": { 22 | "regexp_number": "^CC21291$", 23 | "regexp_name": "" 24 | } 25 | }, 26 | "学習・言語心理学": { 27 | "max_certificated_credit_num": 2, 28 | "min_certificated_credit_num": 2, 29 | "leaf": { 30 | "regexp_number": "^CC21221$", 31 | "regexp_name": "" 32 | } 33 | }, 34 | "感情・人格心理学": { 35 | "max_certificated_credit_num": 2, 36 | "min_certificated_credit_num": 2, 37 | "leaf": { 38 | "regexp_number": "^CC21311$", 39 | "regexp_name": "" 40 | } 41 | }, 42 | "神経・生理心理学": { 43 | "max_certificated_credit_num": 2, 44 | "min_certificated_credit_num": 2, 45 | "leaf": { 46 | "regexp_number": "^CC21321$", 47 | "regexp_name": "" 48 | } 49 | }, 50 | "社会・集団・家族心理学": { 51 | "max_certificated_credit_num": 2, 52 | "min_certificated_credit_num": 2, 53 | "leaf": { 54 | "regexp_number": "^CC21231$", 55 | "regexp_name": "" 56 | } 57 | }, 58 | "発達心理学": { 59 | "max_certificated_credit_num": 2, 60 | "min_certificated_credit_num": 2, 61 | "leaf": { 62 | "regexp_number": "^CC21241$", 63 | "regexp_name": "" 64 | } 65 | }, 66 | "臨床心理学概論": { 67 | "max_certificated_credit_num": 2, 68 | "min_certificated_credit_num": 2, 69 | "leaf": { 70 | "regexp_number": "^CC21211$", 71 | "regexp_name": "" 72 | } 73 | }, 74 | "卒業研究セミナー": { 75 | "max_certificated_credit_num": 2, 76 | "min_certificated_credit_num": 2, 77 | "leaf": { 78 | "regexp_number": "^$", 79 | "regexp_name": "" 80 | } 81 | }, 82 | "卒業研究": { 83 | "max_certificated_credit_num": 6, 84 | "min_certificated_credit_num": 6, 85 | "leaf": { 86 | "regexp_number": "^CC219[15]8$", 87 | "regexp_name": "" 88 | } 89 | } 90 | } 91 | }, 92 | "選択": { 93 | "max_certificated_credit_num": 70, 94 | "min_certificated_credit_num": 46, 95 | "leaf": { 96 | "FB12/13/14~": { 97 | "max_certificated_credit_num": 70, 98 | "min_certificated_credit_num": 46, 99 | "leaf": { 100 | "regexp_number": "^FB1[2-4].*$", 101 | "regexp_name": "" 102 | } 103 | } 104 | } 105 | } 106 | } 107 | } 108 | } 109 | }, 110 | "専門基礎": { 111 | "max_certificated_credit_num": 53, 112 | "min_certificated_credit_num": 29, 113 | "leaf": { 114 | "": { 115 | "max_certificated_credit_num": 53, 116 | "min_certificated_credit_num": 29, 117 | "leaf": { 118 | "必修": { 119 | "max_certificated_credit_num": 6, 120 | "min_certificated_credit_num": 6, 121 | "leaf": { 122 | "微積分I,II": { 123 | "max_certificated_credit_num": 2, 124 | "min_certificated_credit_num": 2, 125 | "leaf": { 126 | "regexp_number": "^FBA(14[6-9]1|15[0-3]1)$", 127 | "regexp_name": "" 128 | } 129 | }, 130 | "線形代数I,II": { 131 | "max_certificated_credit_num": 2, 132 | "min_certificated_credit_num": 2, 133 | "leaf": { 134 | "regexp_number": "^FBA(1(5[89]|6[01])1|16[2-5]1)$", 135 | "regexp_name": "" 136 | } 137 | }, 138 | "数学リテラシー1": { 139 | "max_certificated_credit_num": 1, 140 | "min_certificated_credit_num": 1, 141 | "leaf": { 142 | "regexp_number": "", 143 | "regexp_name": "^数学リテラシー1$" 144 | } 145 | }, 146 | "数学リテラシー2": { 147 | "max_certificated_credit_num": 1, 148 | "min_certificated_credit_num": 1, 149 | "leaf": { 150 | "regexp_number": "", 151 | "regexp_name": "^数学リテラシー2$" 152 | } 153 | } 154 | } 155 | }, 156 | "選択": { 157 | "max_certificated_credit_num": 47, 158 | "min_certificated_credit_num": 23, 159 | "leaf": { 160 | "FBA/FC/FE/EE,生物~": { 161 | "max_certificated_credit_num": 47, 162 | "min_certificated_credit_num": 23, 163 | "leaf": { 164 | "regexp_number": "^((FBA|FC|FE|EE).*|(EB00001|EB11[368]11|EB11[27]21|EB11131))$", 165 | "regexp_name": "" 166 | } 167 | } 168 | } 169 | } 170 | } 171 | } 172 | } 173 | }, 174 | "基礎": { 175 | "max_certificated_credit_num": 45, 176 | "min_certificated_credit_num": 19, 177 | "leaf": { 178 | "共通": { 179 | "max_certificated_credit_num": 29, 180 | "min_certificated_credit_num": 13, 181 | "leaf": { 182 | "必修": { 183 | "max_certificated_credit_num": 12, 184 | "min_certificated_credit_num": 12, 185 | "leaf": { 186 | "総合科目": { 187 | "max_certificated_credit_num": 2, 188 | "min_certificated_credit_num": 2, 189 | "leaf": { 190 | "regexp_number": "", 191 | "regexp_name": "^(学問への誘い|フレッシュマン・セミナー)$" 192 | } 193 | }, 194 | "情報": { 195 | "max_certificated_credit_num": 4, 196 | "min_certificated_credit_num": 4, 197 | "leaf": { 198 | "regexp_number": "^6.*$", 199 | "regexp_name": "" 200 | } 201 | }, 202 | "体育": { 203 | "max_certificated_credit_num": 2, 204 | "min_certificated_credit_num": 2, 205 | "leaf": { 206 | "regexp_number": "^2[12].*$", 207 | "regexp_name": "" 208 | } 209 | }, 210 | "第1外国語": { 211 | "max_certificated_credit_num": 4, 212 | "min_certificated_credit_num": 4, 213 | "leaf": { 214 | "regexp_number": "^31.*$", 215 | "regexp_name": "(^English Presentation Skills I+$)" 216 | } 217 | } 218 | } 219 | }, 220 | "選択": { 221 | "max_certificated_credit_num": 17, 222 | "min_certificated_credit_num": 1, 223 | "leaf": { 224 | "総合科目(学士基盤科目)": { 225 | "max_certificated_credit_num": 1, 226 | "min_certificated_credit_num": 1, 227 | "leaf": { 228 | "regexp_number": "^1.*$", 229 | "regexp_name": "" 230 | } 231 | }, 232 | "総合科目/体育/外国語/国語/芸術": { 233 | "max_certificated_credit_num": 16, 234 | "min_certificated_credit_num": 0, 235 | "leaf": { 236 | "regexp_number": "^[1-5].*$", 237 | "regexp_name": "" 238 | } 239 | } 240 | } 241 | } 242 | } 243 | }, 244 | "関連": { 245 | "max_certificated_credit_num": 16, 246 | "min_certificated_credit_num": 6, 247 | "leaf": { 248 | "必修": { 249 | "max_certificated_credit_num": 0, 250 | "min_certificated_credit_num": 0, 251 | "leaf": {} 252 | }, 253 | "選択": { 254 | "max_certificated_credit_num": 16, 255 | "min_certificated_credit_num": 6, 256 | "leaf": { 257 | "専門科目および専門基礎科目で指定した以外の科目": { 258 | "max_certificated_credit_num": 10000, 259 | "min_certificated_credit_num": 6, 260 | "leaf": { 261 | "regexp_number": "^.......$", 262 | "regexp_name": "" 263 | } 264 | } 265 | } 266 | } 267 | } 268 | } 269 | } 270 | } 271 | } 272 | } 273 | } 274 | -------------------------------------------------------------------------------- /react-visualizer/src/setupTests.js: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | // import "@testing-library/jest-dom"; 6 | -------------------------------------------------------------------------------- /script/genJson.sh: -------------------------------------------------------------------------------- 1 | rm src/reqJson/* 2 | yq -o json . reqYml/cisIR20.yml | jq --indent 4 '' > src/reqJson/cisIR20.json 3 | yq -o json . reqYml/cisID20.yml | jq --indent 4 '' > src/reqJson/cisID20.json 4 | yq -o json . reqYml/coins19.yml | jq --indent 4 '' > src/reqJson/coins19.json 5 | yq -o json . reqYml/coins20.yml | jq --indent 4 '' > src/reqJson/coins20.json 6 | yq -o json . reqYml/coins21.yml | jq --indent 4 '' > src/reqJson/coins21.json 7 | yq -o json . reqYml/mast20.yml | jq --indent 4 '' > src/reqJson/mast20.json 8 | yq -o json . reqYml/math20.yml | jq --indent 4 '' > src/reqJson/math20.json 9 | yq -o json . reqYml/psych20.yml | jq --indent 4 '' > src/reqJson/psych20.json 10 | 11 | -------------------------------------------------------------------------------- /script/genYml.sh: -------------------------------------------------------------------------------- 1 | rm reqYml/* 2 | yq -y . src/reqJson/cisIR20.json > reqYml/cisIR20.yml 3 | yq -y . src/reqJson/cisID20.json > reqYml/cisID20.yml 4 | yq -y . src/reqJson/coins19.json > reqYml/coins19.yml 5 | yq -y . src/reqJson/coins20.json > reqYml/coins20.yml 6 | yq -y . src/reqJson/coins21.json > reqYml/coins21.yml 7 | yq -y . src/reqJson/mast20.json > reqYml/mast20.yml 8 | yq -y . src/reqJson/math20.json > reqYml/math20.yml 9 | yq -y . src/reqJson/psych20.json > reqYml/psych20.yml 10 | 11 | -------------------------------------------------------------------------------- /script/sample.csv: -------------------------------------------------------------------------------- 1 | "学籍番号","学生氏名","科目番号","科目名 ","単位数","春学期","秋学期","総合評価","科目区分","開講年度","開講区分" 2 | "","","GB10524","微分方程式"," 2.0","-","-","認","B","","" 3 | "","","GB11514","シミュレーション物理"," 1.0","-","-","認","B","","" 4 | "","","GB11601","確率論"," 2.0","-","-","認","B","","" 5 | "","","GB11931","データ構造とアルゴリズム"," 3.0","-","-","認","B","","" 6 | "","","GB11956","データ構造とアルゴリズム実験"," 2.0","-","-","D","B","","" 7 | "","","GB12017","論理回路実験"," 2.0","-","-","認","B","","" 8 | "","","GB12501","情報理論"," 2.0","-","-","認","B","","" 9 | "","","GB13024","オブジェクト指向プログラミング"," 2.0","-","-","認","B","","" 10 | "","","GB13312","情報特別演習I"," 2.0","-","-","履修中","A","","" 11 | "","","GB19061","専門英語基礎"," 1.0","-","-","認","B","","" 12 | "","","GB21601","オートマトンと形式言語"," 2.0","-","-","認","A","","" 13 | "","","GB31301","プログラム言語処理"," 2.0","-","-","認","A","","" 14 | "","","GB37001","情報システム特別講義A"," 1.0","-","-","認","A","","" 15 | "","","1422011","健康と社会"," 1.0","-","-","履修中","C","","" 16 | "","","2243243","応用体育ボディ・ワーク(春)"," 0.5","-","-","D","C","","" 17 | "","","GB10234","線形代数B"," 2.0","-","-","C","B","","" 18 | "","","GB10444","微分積分B"," 2.0","-","-","履修中","B","","" 19 | "","","GB10804","論理回路"," 2.0","-","-","認","B","","" 20 | "","","GB11964","コンピュータとプログラミング"," 3.0","-","-","認","B","","" 21 | "","","GB12301","数値計算法"," 2.0","-","-","認","B","","" 22 | "","","GB12601","論理と形式化"," 2.0","-","-","認","B","","" 23 | "","","GB12812","論理システム演習"," 1.0","-","-","認","B","","" 24 | "","","GB13704","コンピュータグラフィックス基礎"," 2.0","-","-","認","B","","" 25 | "","","GB20111","プログラム言語論I"," 1.0","-","-","C","A","","" 26 | "","","GB30101","コンピュータネットワーク"," 2.0","-","-","認","A","","" 27 | "","","GB31111","並列処理アーキテクチャI"," 1.0","-","-","認","A","","" 28 | "","","2125173","基礎体育テニス(秋)"," 0.5","-","-","認","C","","" 29 | "","","31KG052","English Reading Skills II"," 1.0","-","-","認","C","","" 30 | "","","6524102","データサイエンス"," 2.0","-","-","履修中","C","","" 31 | "","","GA10301","コンテンツ応用論"," 2.0","-","-","認","B","","" 32 | "","","GA15311","微分積分A"," 2.0","-","-","認","B","","" 33 | "","","GA18112","プログラミング入門"," 3.0","-","-","認","B","","" 34 | "","","GB11404","電磁気学"," 2.0","-","-","認","B","","" 35 | "","","YAL1011","ビジュアルデザイン概論"," 1.0","-","-","認","C0","","" 36 | "","","1118102","フレッシュマン・セミナー"," 1.0","-","-","D","C","","" 37 | "","","1227571","学問への誘い"," 1.0","-","-","認","C","","" 38 | "","","31JG052","English Presentation Skills I"," 1.0","-","-","認","C","","" 39 | "","","GB19948","卒業研究A"," 3.0","-","-","認","C","","" 40 | "","","6424102","情報リテラシー(演習)"," 1.0","-","-","認","C","","" 41 | "","","BB05041","経済学の最前線"," 1.0","-","-","認","C0","","" 42 | "","","BB20021","民事法概論"," 2.0","-","-","認","C0","","" 43 | "","","BC11971","基礎経済数学"," 2.0","-","-","認","C0","","" 44 | "","","GA12101","知能と情報科学"," 2.0","-","-","認","B","","" 45 | "","","GB22011","システム数理I"," 1.0","-","-","認","B","","" 46 | "","","GA13101","情報メディア入門A"," 1.0","-","-","認","B","","" 47 | "","","GA13301","情報メディア入門C"," 1.0","-","-","履修中","B","","" 48 | "","","GA14111","知識情報概論"," 1.0","-","-","認","B","","" 49 | "","","GA14201","知識情報システム概説"," 1.0","-","-","履修中","B","","" 50 | "","","GA15211","線形代数A"," 2.0","-","-","認","B","","" 51 | --------------------------------------------------------------------------------