mirror of
https://github.com/krahets/hello-algo.git
synced 2025-11-01 03:24:24 +08:00
docs: add Japanese translate documents (#1812)
* docs: add Japanese documents (`ja/docs`) * docs: add Japanese documents (`ja/codes`) * docs: add Japanese documents * Remove pythontutor blocks in ja/ * Add an empty at the end of each markdown file. * Add the missing figures (use the English version temporarily). * Add index.md for Japanese version. * Add index.html for Japanese version. * Add missing index.assets * Fix backtracking_algorithm.md for Japanese version. * Add avatar_eltociear.jpg. Fix image links on the Japanese landing page. * Add the Japanese banner. --------- Co-authored-by: krahets <krahets@163.com>
This commit is contained in:
committed by
GitHub
parent
2487a27036
commit
954c45864b
Binary file not shown.
|
After Width: | Height: | Size: 154 KiB |
52
ja/docs/chapter_preface/about_the_book.md
Normal file
52
ja/docs/chapter_preface/about_the_book.md
Normal file
@ -0,0 +1,52 @@
|
||||
# この本について
|
||||
|
||||
このオープンソースプロジェクトは、データ構造とアルゴリズムに関する無料で初心者にやさしいクラッシュコースの作成を目指しています。
|
||||
|
||||
- アニメーション付きの図解、理解しやすい内容、滑らかな学習曲線により、初心者がデータ構造とアルゴリズムの「知識マップ」を探索するのに役立ちます。
|
||||
- ワンクリックでコードを実行できるため、読者のプログラミングスキルの向上と、アルゴリズムの動作原理およびデータ構造の基礎実装の理解に役立ちます。
|
||||
- 教えることによる学習を促進し、質問や洞察の共有を自由に行ってください。議論を通じて一緒に成長しましょう。
|
||||
|
||||
## 対象読者
|
||||
|
||||
もしあなたがアルゴリズムに触れたばかりで経験が限られている場合、またはアルゴリズムである程度の経験を積んでいても、データ構造とアルゴリズムについて曖昧な理解しかなく、常に「分かった」と「うーん」の間を行き来している場合、この本はあなたのためのものです!
|
||||
|
||||
すでにある程度の問題解決経験を積んでおり、ほとんどのタイプの問題に精通している場合、この本はアルゴリズムの知識体系を復習し整理するのに役立ちます。リポジトリのソースコードは「問題解決ツールキット」や「アルゴリズムチートシート」として使用できます。
|
||||
|
||||
もしあなたがアルゴリズムの専門家であれば、貴重な提案をいただくか、[参加して協力](https://www.hello-algo.com/chapter_appendix/contribution/)していただければと思います。
|
||||
|
||||
!!! success "前提条件"
|
||||
|
||||
少なくとも一つのプログラミング言語で簡単なコードを書いて読むことができる必要があります。
|
||||
|
||||
## 内容構成
|
||||
|
||||
本書の主な内容を下図に示します。
|
||||
|
||||
- **計算量解析**: データ構造とアルゴリズムを評価する側面と方法を探求します。時間計算量と空間計算量を導出する方法、および一般的なタイプと例を扱います。
|
||||
- **データ構造**: 基本的なデータ型、分類方法、定義、長所と短所、一般的な操作、タイプ、応用、および配列、連結リスト、スタック、キュー、ハッシュテーブル、木、ヒープ、グラフなどのデータ構造の実装方法に焦点を当てます。
|
||||
- **アルゴリズム**: アルゴリズムを定義し、その長所と短所、効率性、応用シナリオ、問題解決ステップについて議論し、検索、ソート、分割統治、バックトラッキング、動的プログラミング、貪欲アルゴリズムなど、さまざまなアルゴリズムのサンプル問題を含みます。
|
||||
|
||||

|
||||
|
||||
## 謝辞
|
||||
|
||||
この本は、オープンソースコミュニティの多くの貢献者の共同努力により継続的に改善されています。時間とエネルギーを投資してくださった各執筆者に感謝いたします。GitHubで生成された順序で記載されています: krahets, coderonion, Gonglja, nuomi1, Reanon, justin-tse, hpstory, danielsss, curtishd, night-cruise, S-N-O-R-L-A-X, msk397, gvenusleo, khoaxuantu, RiverTwilight, rongyi, gyt95, zhuoqinyue, K3v123, Zuoxun, mingXta, hello-ikun, FangYuan33, GN-Yu, yuelinxin, longsizhuo, Cathay-Chen, guowei-gong, xBLACKICEx, IsChristina, JoseHung, qualifier1024, QiLOL, pengchzn, Guanngxu, L-Super, WSL0809, Slone123c, lhxsm, yuan0221, what-is-me, theNefelibatas, longranger2, cy-by-side, xiongsp, JeffersonHuang, Transmigration-zhou, magentaqin, Wonderdch, malone6, xiaomiusa87, gaofer, bluebean-cloud, a16su, Shyam-Chen, nanlei, hongyun-robot, Phoenix0415, MolDuM, Nigh, he-weilai, junminhong, mgisr, iron-irax, yd-j, XiaChuerwu, XC-Zero, seven1240, SamJin98, wodray, reeswell, NI-SW, Horbin-Magician, Enlightenus, xjr7670, YangXuanyi, DullSword, boloboloda, iStig, qq909244296, jiaxianhua, wenjianmin, keshida, kilikilikid, lclc6, lwbaptx, liuxjerry, lucaswangdev, lyl625760, hts0000, gledfish, fbigm, echo1937, szu17dmy, dshlstarr, Yucao-cy, coderlef, czruby, bongbongbakudan, beintentional, ZongYangL, ZhongYuuu, luluxia, xb534, bitsmi, ElaBosak233, baagod, zhouLion, yishangzhang, yi427, yabo083, weibk, wangwang105, th1nk3r-ing, tao363, 4yDX3906, syd168, steventimes, sslmj2020, smilelsb, siqyka, selear, sdshaoda, Xi-Row, popozhu, nuquist19, noobcodemaker, XiaoK29, chadyi, ZhongGuanbin, shanghai-Jerry, JackYang-hellobobo, Javesun99, lipusheng, BlindTerran, ShiMaRing, FreddieLi, FloranceYeh, iFleey, fanchenggang, gltianwen, goerll, Dr-XYZ, nedchu, curly210102, CuB3y0nd, KraHsu, CarrotDLaw, youshaoXG, bubble9um, fanenr, eagleanurag, LifeGoesOnionOnionOnion, 52coder, foursevenlove, KorsChen, hezhizhen, linzeyan, ZJKung, GaochaoZhu, hopkings2008, yang-le, Evilrabbit520, Turing-1024-Lee, thomasq0, Suremotoo, Allen-Scai, Risuntsy, Richard-Zhang1019, qingpeng9802, primexiao, nidhoggfgg, 1ch0, MwumLi, martinx, ZnYang2018, hugtyftg, logan-qiu, psychelzh, Keynman, KeiichiKasai and 0130w.
|
||||
|
||||
この本のコードレビュー作業は、coderonion, Gonglja, gvenusleo, hpstory, justin‐tse, khoaxuantu, krahets, night-cruise, nuomi1, Reanon and rongyi(アルファベット順)によって完了されました。彼らの時間と努力に感謝し、様々な言語でのコードの標準化と統一性を確保してくださいました。
|
||||
|
||||
この本の繁体字中国語版は Shyam-Chen と Dr-XYZ によってレビューされ、英語版は yuelinxin, K3v123, QiLOL, Phoenix0415, SamJin98, yanedie, RafaelCaso, pengchzn, thomasq0, and magentaqin によってレビューされました。彼らの継続的な貢献により、この本がより広い読者に届き、役立つことができます。
|
||||
|
||||
この本の制作過程において、多くの方々から貴重な支援をいただきました。これらに限定されませんが:
|
||||
|
||||
- 会社でのメンター、李熙博士に感謝します。ある会話で「早く行動しろ」と励ましていただき、この本を書く決意を固めることができました。
|
||||
- ガールフレンドのBubbleに感謝します。この本の最初の読者として、アルゴリズム初心者の視点から多くの貴重な提案をいただき、この本を初心者により適したものにしてくださいました。
|
||||
- Tengbao、Qibao、Feibaoに感謝します。この本のクリエイティブな名前を考えてくださり、みんなが初めて「Hello World!」を書いた時の素晴らしい思い出を呼び起こしてくれました。
|
||||
- Xiaoquanに感謝します。知的財産に関する専門的な支援を提供してくださり、このオープンソース本の開発において重要な役割を果たしてくださいました。
|
||||
- Sutongに感謝します。この本の美しいカバーとロゴをデザインしてくださり、私の要求で何度も修正を辛抱強く行ってくださいました。
|
||||
- @squidfunk に感謝します。執筆と組版の提案、および彼が開発したオープンソースドキュメントテーマ [Material-for-MkDocs](https://github.com/squidfunk/mkdocs-material/tree/master) を提供してくださいました。
|
||||
|
||||
執筆の過程で、データ構造とアルゴリズムに関する多数の教科書や記事を深く研究しました。これらの作品は模範的なモデルとして機能し、この本の内容の正確性と品質を確保してくださいました。先人の方々の貴重な貢献に感謝いたします!
|
||||
|
||||
この本は、理論と実践を組み合わせた学習を提唱しており、この点で ["Dive into Deep Learning"](https://github.com/d2l-ai/d2l-en) からインスピレーションを受けています。この優れた本をすべての読者に強くお勧めします。
|
||||
|
||||
**継続的な支援と励ましにより、この興味深い仕事をすることを可能にしてくださった両親に心から感謝いたします**。
|
||||
9
ja/docs/chapter_preface/index.md
Normal file
9
ja/docs/chapter_preface/index.md
Normal file
@ -0,0 +1,9 @@
|
||||
# 序文
|
||||
|
||||

|
||||
|
||||
!!! abstract
|
||||
|
||||
アルゴリズムは美しい交響曲のようで、コードの一行一行がリズムのように流れています。
|
||||
|
||||
この本があなたの心の中で静かに響き、独特で深い旋律を残すことを願っています。
|
||||
BIN
ja/docs/chapter_preface/suggestions.assets/code_md_to_repo.png
Normal file
BIN
ja/docs/chapter_preface/suggestions.assets/code_md_to_repo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 93 KiB |
BIN
ja/docs/chapter_preface/suggestions.assets/download_code.png
Normal file
BIN
ja/docs/chapter_preface/suggestions.assets/download_code.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 91 KiB |
BIN
ja/docs/chapter_preface/suggestions.assets/learning_route.png
Normal file
BIN
ja/docs/chapter_preface/suggestions.assets/learning_route.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 26 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 72 KiB |
239
ja/docs/chapter_preface/suggestions.md
Normal file
239
ja/docs/chapter_preface/suggestions.md
Normal file
@ -0,0 +1,239 @@
|
||||
# 読み方
|
||||
|
||||
!!! tip
|
||||
|
||||
最良の読書体験のために、このセクションを通読することをお勧めします。
|
||||
|
||||
## 記述規則
|
||||
|
||||
- タイトルの後に「*」が付いた章は任意であり、比較的難易度の高い内容が含まれています。時間に制約がある場合は、これらをスキップすることをお勧めします。
|
||||
- 技術用語は太字(印刷版およびPDF版)または下線(Web版)で表示されます。例えば、<u>配列</u>などです。技術文書をより良く理解するために、これらに慣れることをお勧めします。
|
||||
- **太字のテキスト**は重要な内容や要約文を示し、特別な注意を払う価値があります。
|
||||
- 特定の意味を持つ単語や句は「引用符」で示され、曖昧さを避けます。
|
||||
- プログラミング言語間で一致しない用語については、この本はPythonに従います。例えば、`null`を意味するために`None`を使用します。
|
||||
- この本は、よりコンパクトなコンテンツレイアウトと引き換えに、プログラミング言語のコメント規約を部分的に無視しています。コメントは主に3つのタイプで構成されています:タイトルコメント、内容コメント、複数行コメント。
|
||||
|
||||
=== "Python"
|
||||
|
||||
```python title=""
|
||||
"""関数、クラス、テストサンプルなどをラベル付けするためのヘッダーコメント"""
|
||||
|
||||
# 詳細を説明するためのコメント
|
||||
|
||||
"""
|
||||
複数行
|
||||
コメント
|
||||
"""
|
||||
```
|
||||
|
||||
=== "C++"
|
||||
|
||||
```cpp title=""
|
||||
/* 関数、クラス、テストサンプルなどをラベル付けするためのヘッダーコメント */
|
||||
|
||||
// 詳細を説明するためのコメント
|
||||
|
||||
/**
|
||||
* 複数行
|
||||
* コメント
|
||||
*/
|
||||
```
|
||||
|
||||
=== "Java"
|
||||
|
||||
```java title=""
|
||||
/* 関数、クラス、テストサンプルなどをラベル付けするためのヘッダーコメント */
|
||||
|
||||
// 詳細を説明するためのコメント
|
||||
|
||||
/**
|
||||
* 複数行
|
||||
* コメント
|
||||
*/
|
||||
```
|
||||
|
||||
=== "C#"
|
||||
|
||||
```csharp title=""
|
||||
/* 関数、クラス、テストサンプルなどをラベル付けするためのヘッダーコメント */
|
||||
|
||||
// 詳細を説明するためのコメント
|
||||
|
||||
/**
|
||||
* 複数行
|
||||
* コメント
|
||||
*/
|
||||
```
|
||||
|
||||
=== "Go"
|
||||
|
||||
```go title=""
|
||||
/* 関数、クラス、テストサンプルなどをラベル付けするためのヘッダーコメント */
|
||||
|
||||
// 詳細を説明するためのコメント
|
||||
|
||||
/**
|
||||
* 複数行
|
||||
* コメント
|
||||
*/
|
||||
```
|
||||
|
||||
=== "Swift"
|
||||
|
||||
```swift title=""
|
||||
/* 関数、クラス、テストサンプルなどをラベル付けするためのヘッダーコメント */
|
||||
|
||||
// 詳細を説明するためのコメント
|
||||
|
||||
/**
|
||||
* 複数行
|
||||
* コメント
|
||||
*/
|
||||
```
|
||||
|
||||
=== "JS"
|
||||
|
||||
```javascript title=""
|
||||
/* 関数、クラス、テストサンプルなどをラベル付けするためのヘッダーコメント */
|
||||
|
||||
// 詳細を説明するためのコメント
|
||||
|
||||
/**
|
||||
* 複数行
|
||||
* コメント
|
||||
*/
|
||||
```
|
||||
|
||||
=== "TS"
|
||||
|
||||
```typescript title=""
|
||||
/* 関数、クラス、テストサンプルなどをラベル付けするためのヘッダーコメント */
|
||||
|
||||
// 詳細を説明するためのコメント
|
||||
|
||||
/**
|
||||
* 複数行
|
||||
* コメント
|
||||
*/
|
||||
```
|
||||
|
||||
=== "Dart"
|
||||
|
||||
```dart title=""
|
||||
/* 関数、クラス、テストサンプルなどをラベル付けするためのヘッダーコメント */
|
||||
|
||||
// 詳細を説明するためのコメント
|
||||
|
||||
/**
|
||||
* 複数行
|
||||
* コメント
|
||||
*/
|
||||
```
|
||||
|
||||
=== "Rust"
|
||||
|
||||
```rust title=""
|
||||
/* 関数、クラス、テストサンプルなどをラベル付けするためのヘッダーコメント */
|
||||
|
||||
// 詳細を説明するためのコメント
|
||||
|
||||
/**
|
||||
* 複数行
|
||||
* コメント
|
||||
*/
|
||||
```
|
||||
|
||||
=== "C"
|
||||
|
||||
```c title=""
|
||||
/* 関数、クラス、テストサンプルなどをラベル付けするためのヘッダーコメント */
|
||||
|
||||
// 詳細を説明するためのコメント
|
||||
|
||||
/**
|
||||
* 複数行
|
||||
* コメント
|
||||
*/
|
||||
```
|
||||
|
||||
=== "Kotlin"
|
||||
|
||||
```kotlin title=""
|
||||
/* 関数、クラス、テストサンプルなどをラベル付けするためのヘッダーコメント */
|
||||
|
||||
// 詳細を説明するためのコメント
|
||||
|
||||
/**
|
||||
* 複数行
|
||||
* コメント
|
||||
*/
|
||||
```
|
||||
|
||||
=== "Zig"
|
||||
|
||||
```zig title=""
|
||||
// 関数、クラス、テストサンプルなどをラベル付けするためのヘッダーコメント
|
||||
|
||||
// 詳細を説明するためのコメント
|
||||
|
||||
// 複数行
|
||||
// コメント
|
||||
```
|
||||
|
||||
## アニメーション図解による効率的学習
|
||||
|
||||
テキストと比較して、動画や画像は情報密度が高く、より構造化されており、理解しやすくなっています。この本では、**重要で難しい概念は主にアニメーションと図解を通じて提示され**、テキストは説明と補足として機能します。
|
||||
|
||||
下図に示すようなアニメーションや図解のある内容に遭遇した場合、**図の理解を優先し、テキストを補足として**、両方を統合して包括的な理解を得てください。
|
||||
|
||||

|
||||
|
||||
## コーディング実践による理解の深化
|
||||
|
||||
この本のソースコードは[GitHubリポジトリ](https://github.com/krahets/hello-algo)でホストされています。下図に示すように、**ソースコードにはテスト例が付属しており、ワンクリックで実行できます**。
|
||||
|
||||
時間に余裕がある場合は、**自分でコードをタイプすることをお勧めします**。時間がない場合は、少なくともすべてのコードを読んで実行してください。
|
||||
|
||||
コードを読むだけと比較して、コードを書くことは多くの場合、より多くの学習をもたらします。**実践による学習こそが真の学習方法です。**
|
||||
|
||||

|
||||
|
||||
コードを実行するための設定には、主に3つのステップが含まれます。
|
||||
|
||||
**ステップ1:ローカルプログラミング環境をインストール**。付録の[チュートリアル](https://www.hello-algo.com/chapter_appendix/installation/)に従ってインストールするか、すでにインストールされている場合はこのステップをスキップしてください。
|
||||
|
||||
**ステップ2:コードリポジトリをクローンまたはダウンロード**。[GitHubリポジトリ](https://github.com/krahets/hello-algo)を訪問してください。
|
||||
|
||||
[Git](https://git-scm.com/downloads)がインストールされている場合は、次のコマンドを使用してリポジトリをクローンします:
|
||||
|
||||
```shell
|
||||
git clone https://github.com/krahets/hello-algo.git
|
||||
```
|
||||
|
||||
または、下図に示す場所にある「Download ZIP」ボタンをクリックして、コードを圧縮ZIPファイルとして直接ダウンロードすることもできます。その後、ローカルで展開するだけです。
|
||||
|
||||

|
||||
|
||||
**ステップ3:ソースコードを実行**。下図に示すように、上部にファイル名が記載されたコードブロックについては、リポジトリの`codes`フォルダで対応するソースコードファイルを見つけることができます。これらのファイルはワンクリックで実行でき、不要なデバッグ時間を節約し、学習に集中できます。
|
||||
|
||||

|
||||
|
||||
## 議論による共同学習
|
||||
|
||||
この本を読んでいる間、学べなかった点を飛ばさないでください。**コメントセクションで気軽に質問してください**。喜んでお答えし、通常2日以内に回答できます。
|
||||
|
||||
下図に示すように、各章の下部にコメントセクションがあります。これらのコメントに注意を払うことをお勧めします。他の人が遭遇した問題を知ることで、知識のギャップを特定し、より深い思索を促すだけでなく、仲間の読者の質問に答えたり、洞察を共有したり、相互の向上を促進したりすることで寛大に貢献することも招待します。
|
||||
|
||||

|
||||
|
||||
## アルゴリズム学習パス
|
||||
|
||||
全体的に、データ構造とアルゴリズムをマスターする旅は3つの段階に分けることができます:
|
||||
|
||||
1. **段階1:アルゴリズムの入門**。さまざまなデータ構造の特性と使用法に慣れ、異なるアルゴリズムの原理、プロセス、用途、効率について学ぶ必要があります。
|
||||
2. **段階2:アルゴリズム問題の練習**。[Sword for Offer](https://leetcode.cn/studyplan/coding-interviews/)や[LeetCode Hot 100](https://leetcode.cn/studyplan/top-100-liked/)などの人気のある問題から始めることをお勧めし、少なくとも100問を蓄積して主流のアルゴリズム問題に慣れることです。練習を始めると忘却が課題になる可能性がありますが、これは正常なことですのでご安心ください。「エビングハウスの忘却曲線」に従って問題を復習することができ、通常3〜5回の反復の後、それらを覚えることができるでしょう。
|
||||
3. **段階3:知識体系の構築**。学習の面では、アルゴリズムコラム記事、解法フレームワーク、アルゴリズム教科書を読んで知識体系を継続的に豊かにすることができます。練習の面では、トピック別分類、一つの問題に対する複数の解法、複数の問題に対する一つの解法など、高度な戦略を試すことができます。これらの戦略に関する洞察は、さまざまなコミュニティで見つけることができます。
|
||||
|
||||
下図に示すように、この本は主に「段階1」をカバーしており、段階2と3により効率的に取り組むのに役立つことを目的としています。
|
||||
|
||||

|
||||
8
ja/docs/chapter_preface/summary.md
Normal file
8
ja/docs/chapter_preface/summary.md
Normal file
@ -0,0 +1,8 @@
|
||||
# まとめ
|
||||
|
||||
- この本の主な読者はアルゴリズムの初心者です。すでに基本的な知識をお持ちの場合、この本はアルゴリズムの知識を体系的に復習するのに役立ち、この本のソースコードは「コーディングツールキット」としても使用できます。
|
||||
- この本は3つの主要なセクション、計算量解析、データ構造、アルゴリズムで構成されており、この分野のほとんどのトピックをカバーしています。
|
||||
- アルゴリズムの初心者にとって、多くの回り道や一般的な落とし穴を避けるために、初期段階で入門書を読むことが重要です。
|
||||
- 本書内のアニメーションと図は通常、重要なポイントと難しい知識を紹介するために使用されます。本を読む際にはこれらにより多くの注意を払う必要があります。
|
||||
- 実践はプログラミングを学ぶ最良の方法です。ソースコードを実行し、自分でコードをタイプすることを強くお勧めします。
|
||||
- この本のWeb版の各章には議論セクションがあり、いつでも質問や洞察を共有することを歓迎します。
|
||||
Reference in New Issue
Block a user