diff --git a/.vscode/i18n-ally-custom-framework.yml b/.vscode/i18n-ally-custom-framework.yml
index 53d5a33b3..ea6bacf77 100644
--- a/.vscode/i18n-ally-custom-framework.yml
+++ b/.vscode/i18n-ally-custom-framework.yml
@@ -15,7 +15,7 @@ usageMatchRegex:
# The following example shows how to detect `t("your.i18n.keys")`
# the `{key}` will be placed by a proper keypath matching regex,
# you can ignore it and use your own matching rules as well
- - 't\(\w+?, [''"`]({key})[''"`]\)'
+ - '[^\w]t\(\w+?, [''"`]({key})[''"`]\)'
# An array of strings containing refactor templates.
# The "$1" will be replaced by the keypath specified.
diff --git a/README.ja.md b/README.ja.md
index 2d443b747..110339460 100644
--- a/README.ja.md
+++ b/README.ja.md
@@ -32,7 +32,7 @@ TypeScriptには [ts-toolbelt](https://github.com/millsp/ts-toolbelt), [utility-
> 以下のバッジをクリックすると、課題の詳細が表示されます。
-
By Tags
By Plain Text
お試し (1)
初級 (13)
中級 (69)
上級 (34)
最上級 (14)
+
By Tags
By Plain Text
お試し (1)
初級 (13)
中級 (69)
上級 (34)
最上級 (14)
> ✨ [今後の課題](https://github.com/type-challenges/type-challenges/issues?q=is%3Aissue+is%3Aopen+label%3Anew-challenge)
diff --git a/README.ko.md b/README.ko.md
index 3eb76993e..6c9d808eb 100644
--- a/README.ko.md
+++ b/README.ko.md
@@ -30,7 +30,7 @@
> 배지를 클릭해서 챌린지의 자세한 내용을 확인해보세요.
-
By Tags
By Plain Text
워밍업 (1)
쉬움 (13)
보통 (69)
어려움 (34)
매우 어려움 (14)
+
By Tags
By Plain Text
워밍업 (1)
쉬움 (13)
보통 (69)
어려움 (34)
매우 어려움 (14)
> ✨ [Upcoming challenges](https://github.com/type-challenges/type-challenges/issues?q=is%3Aissue+is%3Aopen+label%3Anew-challenge)
diff --git a/README.md b/README.md
index 0291fdefe..cec1d8e67 100644
--- a/README.md
+++ b/README.md
@@ -36,7 +36,7 @@ This project is aimed at helping you better understand how the type system works
> Click the following badges to see details of the challenges.
-
By Tags
By Plain Text
warm-up (1)
easy (13)
medium (69)
hard (34)
extreme (14)
+
By Tags
By Plain Text
warm-up (1)
easy (13)
medium (69)
hard (34)
extreme (14)
> ✨ [Upcoming challenges](https://github.com/type-challenges/type-challenges/issues?q=is%3Aissue+is%3Aopen+label%3Anew-challenge)
diff --git a/README.zh-CN.md b/README.zh-CN.md
index 0131f301d..b4b1e1bca 100644
--- a/README.zh-CN.md
+++ b/README.zh-CN.md
@@ -33,7 +33,7 @@
> 点击下方徽章查看题目内容
-
By Tags
By Plain Text
热身 (1)
简单 (13)
中等 (69)
困难 (34)
地狱 (14)
+
By Tags
By Plain Text
热身 (1)
简单 (13)
中等 (69)
困难 (34)
地狱 (14)
> ✨ [即将到来的新题目](https://github.com/type-challenges/type-challenges/issues?q=is%3Aissue+is%3Aopen+label%3Anew-challenge)
diff --git a/questions/2-medium-return-type/README.ja.md b/questions/00002-medium-return-type/README.ja.md
similarity index 100%
rename from questions/2-medium-return-type/README.ja.md
rename to questions/00002-medium-return-type/README.ja.md
diff --git a/questions/2-medium-return-type/README.ko.md b/questions/00002-medium-return-type/README.ko.md
similarity index 100%
rename from questions/2-medium-return-type/README.ko.md
rename to questions/00002-medium-return-type/README.ko.md
diff --git a/questions/2-medium-return-type/README.md b/questions/00002-medium-return-type/README.md
similarity index 100%
rename from questions/2-medium-return-type/README.md
rename to questions/00002-medium-return-type/README.md
diff --git a/questions/2-medium-return-type/README.zh-CN.md b/questions/00002-medium-return-type/README.zh-CN.md
similarity index 100%
rename from questions/2-medium-return-type/README.zh-CN.md
rename to questions/00002-medium-return-type/README.zh-CN.md
diff --git a/questions/2-medium-return-type/info.yml b/questions/00002-medium-return-type/info.yml
similarity index 100%
rename from questions/2-medium-return-type/info.yml
rename to questions/00002-medium-return-type/info.yml
diff --git a/questions/2-medium-return-type/info.zh-CN.yml b/questions/00002-medium-return-type/info.zh-CN.yml
similarity index 100%
rename from questions/2-medium-return-type/info.zh-CN.yml
rename to questions/00002-medium-return-type/info.zh-CN.yml
diff --git a/questions/2-medium-return-type/template.ts b/questions/00002-medium-return-type/template.ts
similarity index 100%
rename from questions/2-medium-return-type/template.ts
rename to questions/00002-medium-return-type/template.ts
diff --git a/questions/2-medium-return-type/test-cases.ts b/questions/00002-medium-return-type/test-cases.ts
similarity index 100%
rename from questions/2-medium-return-type/test-cases.ts
rename to questions/00002-medium-return-type/test-cases.ts
diff --git a/questions/3-medium-omit/README.ja.md b/questions/00003-medium-omit/README.ja.md
similarity index 91%
rename from questions/3-medium-omit/README.ja.md
rename to questions/00003-medium-omit/README.ja.md
index 3dae409df..c74e3df21 100644
--- a/questions/3-medium-omit/README.ja.md
+++ b/questions/00003-medium-omit/README.ja.md
@@ -18,4 +18,4 @@ const todo: TodoPreview = {
}
```
-
関連する課題
\ No newline at end of file
+
関連する課題
\ No newline at end of file
diff --git a/questions/3-medium-omit/README.ko.md b/questions/00003-medium-omit/README.ko.md
similarity index 90%
rename from questions/3-medium-omit/README.ko.md
rename to questions/00003-medium-omit/README.ko.md
index d035993db..fe63c644b 100644
--- a/questions/3-medium-omit/README.ko.md
+++ b/questions/00003-medium-omit/README.ko.md
@@ -18,4 +18,4 @@ const todo: TodoPreview = {
}
```
-
관련된 문제들
\ No newline at end of file
+
관련된 문제들
\ No newline at end of file
diff --git a/questions/3-medium-omit/README.md b/questions/00003-medium-omit/README.md
similarity index 91%
rename from questions/3-medium-omit/README.md
rename to questions/00003-medium-omit/README.md
index f2d836512..d640d7314 100644
--- a/questions/3-medium-omit/README.md
+++ b/questions/00003-medium-omit/README.md
@@ -20,4 +20,4 @@ const todo: TodoPreview = {
}
```
-
Related Challenges
\ No newline at end of file
+
Related Challenges
\ No newline at end of file
diff --git a/questions/3-medium-omit/README.zh-CN.md b/questions/00003-medium-omit/README.zh-CN.md
similarity index 89%
rename from questions/3-medium-omit/README.zh-CN.md
rename to questions/00003-medium-omit/README.zh-CN.md
index 9784ee945..4c7e32364 100644
--- a/questions/3-medium-omit/README.zh-CN.md
+++ b/questions/00003-medium-omit/README.zh-CN.md
@@ -20,4 +20,4 @@ const todo: TodoPreview = {
}
```
-
相关挑战
+
相关挑战
diff --git a/questions/3-medium-omit/info.yml b/questions/00003-medium-omit/info.yml
similarity index 100%
rename from questions/3-medium-omit/info.yml
rename to questions/00003-medium-omit/info.yml
diff --git a/questions/3-medium-omit/info.zh-CN.yml b/questions/00003-medium-omit/info.zh-CN.yml
similarity index 100%
rename from questions/3-medium-omit/info.zh-CN.yml
rename to questions/00003-medium-omit/info.zh-CN.yml
diff --git a/questions/3-medium-omit/template.ts b/questions/00003-medium-omit/template.ts
similarity index 100%
rename from questions/3-medium-omit/template.ts
rename to questions/00003-medium-omit/template.ts
diff --git a/questions/3-medium-omit/test-cases.ts b/questions/00003-medium-omit/test-cases.ts
similarity index 100%
rename from questions/3-medium-omit/test-cases.ts
rename to questions/00003-medium-omit/test-cases.ts
diff --git a/questions/4-easy-pick/README.ja.md b/questions/00004-easy-pick/README.ja.md
similarity index 91%
rename from questions/4-easy-pick/README.ja.md
rename to questions/00004-easy-pick/README.ja.md
index 9ef70e580..3ec31a260 100644
--- a/questions/4-easy-pick/README.ja.md
+++ b/questions/00004-easy-pick/README.ja.md
@@ -19,4 +19,4 @@ const todo: TodoPreview = {
}
```
-
関連する課題
+
関連する課題
diff --git a/questions/4-easy-pick/README.ko.md b/questions/00004-easy-pick/README.ko.md
similarity index 90%
rename from questions/4-easy-pick/README.ko.md
rename to questions/00004-easy-pick/README.ko.md
index 14b17bca0..0e788672b 100644
--- a/questions/4-easy-pick/README.ko.md
+++ b/questions/00004-easy-pick/README.ko.md
@@ -19,4 +19,4 @@ const todo: TodoPreview = {
}
```
-
관련된 문제들
+
관련된 문제들
diff --git a/questions/4-easy-pick/README.md b/questions/00004-easy-pick/README.md
similarity index 91%
rename from questions/4-easy-pick/README.md
rename to questions/00004-easy-pick/README.md
index 34c1916bc..99e90e64c 100644
--- a/questions/4-easy-pick/README.md
+++ b/questions/00004-easy-pick/README.md
@@ -21,4 +21,4 @@ const todo: TodoPreview = {
}
```
-
Related Challenges
+
Related Challenges
diff --git a/questions/4-easy-pick/README.zh-CN.md b/questions/00004-easy-pick/README.zh-CN.md
similarity index 89%
rename from questions/4-easy-pick/README.zh-CN.md
rename to questions/00004-easy-pick/README.zh-CN.md
index a1474b76b..6adbf4621 100644
--- a/questions/4-easy-pick/README.zh-CN.md
+++ b/questions/00004-easy-pick/README.zh-CN.md
@@ -23,4 +23,4 @@ const todo: TodoPreview = {
}
```
-
相关挑战
+
相关挑战
diff --git a/questions/4-easy-pick/info.yml b/questions/00004-easy-pick/info.yml
similarity index 100%
rename from questions/4-easy-pick/info.yml
rename to questions/00004-easy-pick/info.yml
diff --git a/questions/4-easy-pick/info.zh-CN.yml b/questions/00004-easy-pick/info.zh-CN.yml
similarity index 100%
rename from questions/4-easy-pick/info.zh-CN.yml
rename to questions/00004-easy-pick/info.zh-CN.yml
diff --git a/questions/4-easy-pick/template.ts b/questions/00004-easy-pick/template.ts
similarity index 100%
rename from questions/4-easy-pick/template.ts
rename to questions/00004-easy-pick/template.ts
diff --git a/questions/4-easy-pick/test-cases.ts b/questions/00004-easy-pick/test-cases.ts
similarity index 100%
rename from questions/4-easy-pick/test-cases.ts
rename to questions/00004-easy-pick/test-cases.ts
diff --git a/questions/5-extreme-readonly-keys/README.ja.md b/questions/00005-extreme-readonly-keys/README.ja.md
similarity index 100%
rename from questions/5-extreme-readonly-keys/README.ja.md
rename to questions/00005-extreme-readonly-keys/README.ja.md
diff --git a/questions/5-extreme-readonly-keys/README.md b/questions/00005-extreme-readonly-keys/README.md
similarity index 100%
rename from questions/5-extreme-readonly-keys/README.md
rename to questions/00005-extreme-readonly-keys/README.md
diff --git a/questions/5-extreme-readonly-keys/README.zh-CN.md b/questions/00005-extreme-readonly-keys/README.zh-CN.md
similarity index 100%
rename from questions/5-extreme-readonly-keys/README.zh-CN.md
rename to questions/00005-extreme-readonly-keys/README.zh-CN.md
diff --git a/questions/5-extreme-readonly-keys/info.yml b/questions/00005-extreme-readonly-keys/info.yml
similarity index 100%
rename from questions/5-extreme-readonly-keys/info.yml
rename to questions/00005-extreme-readonly-keys/info.yml
diff --git a/questions/5-extreme-readonly-keys/info.zh-CN.yml b/questions/00005-extreme-readonly-keys/info.zh-CN.yml
similarity index 100%
rename from questions/5-extreme-readonly-keys/info.zh-CN.yml
rename to questions/00005-extreme-readonly-keys/info.zh-CN.yml
diff --git a/questions/5-extreme-readonly-keys/template.ts b/questions/00005-extreme-readonly-keys/template.ts
similarity index 100%
rename from questions/5-extreme-readonly-keys/template.ts
rename to questions/00005-extreme-readonly-keys/template.ts
diff --git a/questions/5-extreme-readonly-keys/test-cases.ts b/questions/00005-extreme-readonly-keys/test-cases.ts
similarity index 100%
rename from questions/5-extreme-readonly-keys/test-cases.ts
rename to questions/00005-extreme-readonly-keys/test-cases.ts
diff --git a/questions/6-hard-simple-vue/README.ja.md b/questions/00006-hard-simple-vue/README.ja.md
similarity index 93%
rename from questions/6-hard-simple-vue/README.ja.md
rename to questions/00006-hard-simple-vue/README.ja.md
index eca33b797..b6af84733 100644
--- a/questions/6-hard-simple-vue/README.ja.md
+++ b/questions/00006-hard-simple-vue/README.ja.md
@@ -36,4 +36,4 @@ const instance = SimpleVue({
})
```
-
関連する課題
\ No newline at end of file
+
関連する課題
\ No newline at end of file
diff --git a/questions/6-hard-simple-vue/README.md b/questions/00006-hard-simple-vue/README.md
similarity index 92%
rename from questions/6-hard-simple-vue/README.md
rename to questions/00006-hard-simple-vue/README.md
index 95fc7e8c7..31dd6a98f 100644
--- a/questions/6-hard-simple-vue/README.md
+++ b/questions/00006-hard-simple-vue/README.md
@@ -36,4 +36,4 @@ const instance = SimpleVue({
})
```
-
Related Challenges
+
Related Challenges
diff --git a/questions/6-hard-simple-vue/README.zh-CN.md b/questions/00006-hard-simple-vue/README.zh-CN.md
similarity index 92%
rename from questions/6-hard-simple-vue/README.zh-CN.md
rename to questions/00006-hard-simple-vue/README.zh-CN.md
index dd8381455..667de7cb4 100644
--- a/questions/6-hard-simple-vue/README.zh-CN.md
+++ b/questions/00006-hard-simple-vue/README.zh-CN.md
@@ -36,4 +36,4 @@ const instance = SimpleVue({
})
```
-
相关挑战
+
相关挑战
diff --git a/questions/6-hard-simple-vue/info.yml b/questions/00006-hard-simple-vue/info.yml
similarity index 100%
rename from questions/6-hard-simple-vue/info.yml
rename to questions/00006-hard-simple-vue/info.yml
diff --git a/questions/6-hard-simple-vue/info.zh-CN.yml b/questions/00006-hard-simple-vue/info.zh-CN.yml
similarity index 100%
rename from questions/6-hard-simple-vue/info.zh-CN.yml
rename to questions/00006-hard-simple-vue/info.zh-CN.yml
diff --git a/questions/6-hard-simple-vue/template.ts b/questions/00006-hard-simple-vue/template.ts
similarity index 100%
rename from questions/6-hard-simple-vue/template.ts
rename to questions/00006-hard-simple-vue/template.ts
diff --git a/questions/6-hard-simple-vue/test-cases.ts b/questions/00006-hard-simple-vue/test-cases.ts
similarity index 100%
rename from questions/6-hard-simple-vue/test-cases.ts
rename to questions/00006-hard-simple-vue/test-cases.ts
diff --git a/questions/7-easy-readonly/README.ja.md b/questions/00007-easy-readonly/README.ja.md
similarity index 83%
rename from questions/7-easy-readonly/README.ja.md
rename to questions/00007-easy-readonly/README.ja.md
index 139579673..5c5f53c9a 100644
--- a/questions/7-easy-readonly/README.ja.md
+++ b/questions/00007-easy-readonly/README.ja.md
@@ -19,4 +19,4 @@ todo.title = "Hello" // Error: cannot reassign a readonly property
todo.description = "barFoo" // Error: cannot reassign a readonly property
```
-
関連する課題
+
関連する課題
diff --git a/questions/7-easy-readonly/README.ko.md b/questions/00007-easy-readonly/README.ko.md
similarity index 82%
rename from questions/7-easy-readonly/README.ko.md
rename to questions/00007-easy-readonly/README.ko.md
index e3a9e332b..5f003db52 100644
--- a/questions/7-easy-readonly/README.ko.md
+++ b/questions/00007-easy-readonly/README.ko.md
@@ -19,4 +19,4 @@ todo.title = "Hello" // Error: cannot reassign a readonly property
todo.description = "barFoo" // Error: cannot reassign a readonly property
```
-
관련된 문제들
\ No newline at end of file
+
관련된 문제들
\ No newline at end of file
diff --git a/questions/7-easy-readonly/README.md b/questions/00007-easy-readonly/README.md
similarity index 83%
rename from questions/7-easy-readonly/README.md
rename to questions/00007-easy-readonly/README.md
index 330b66cef..0eb67d631 100644
--- a/questions/7-easy-readonly/README.md
+++ b/questions/00007-easy-readonly/README.md
@@ -22,4 +22,4 @@ todo.title = "Hello" // Error: cannot reassign a readonly property
todo.description = "barFoo" // Error: cannot reassign a readonly property
```
-
Related Challenges
\ No newline at end of file
+
Related Challenges
\ No newline at end of file
diff --git a/questions/7-easy-readonly/README.zh-CN.md b/questions/00007-easy-readonly/README.zh-CN.md
similarity index 82%
rename from questions/7-easy-readonly/README.zh-CN.md
rename to questions/00007-easy-readonly/README.zh-CN.md
index 53eff9d4c..034801805 100644
--- a/questions/7-easy-readonly/README.zh-CN.md
+++ b/questions/00007-easy-readonly/README.zh-CN.md
@@ -25,4 +25,4 @@ todo.title = "Hello" // Error: cannot reassign a readonly property
todo.description = "barFoo" // Error: cannot reassign a readonly property
```
-
相关挑战
\ No newline at end of file
+
相关挑战
\ No newline at end of file
diff --git a/questions/7-easy-readonly/info.yml b/questions/00007-easy-readonly/info.yml
similarity index 100%
rename from questions/7-easy-readonly/info.yml
rename to questions/00007-easy-readonly/info.yml
diff --git a/questions/7-easy-readonly/info.zh-CN.yml b/questions/00007-easy-readonly/info.zh-CN.yml
similarity index 100%
rename from questions/7-easy-readonly/info.zh-CN.yml
rename to questions/00007-easy-readonly/info.zh-CN.yml
diff --git a/questions/7-easy-readonly/template.ts b/questions/00007-easy-readonly/template.ts
similarity index 100%
rename from questions/7-easy-readonly/template.ts
rename to questions/00007-easy-readonly/template.ts
diff --git a/questions/7-easy-readonly/test-cases.ts b/questions/00007-easy-readonly/test-cases.ts
similarity index 100%
rename from questions/7-easy-readonly/test-cases.ts
rename to questions/00007-easy-readonly/test-cases.ts
diff --git a/questions/8-medium-readonly-2/README.ja.md b/questions/00008-medium-readonly-2/README.ja.md
similarity index 84%
rename from questions/8-medium-readonly-2/README.ja.md
rename to questions/00008-medium-readonly-2/README.ja.md
index 0db4d9436..c7c7f1811 100644
--- a/questions/8-medium-readonly-2/README.ja.md
+++ b/questions/00008-medium-readonly-2/README.ja.md
@@ -24,4 +24,4 @@ todo.description = "barFoo" // Error: cannot reassign a readonly property
todo.completed = true // OK
```
-
関連する課題
\ No newline at end of file
+
関連する課題
\ No newline at end of file
diff --git a/questions/8-medium-readonly-2/README.ko.md b/questions/00008-medium-readonly-2/README.ko.md
similarity index 83%
rename from questions/8-medium-readonly-2/README.ko.md
rename to questions/00008-medium-readonly-2/README.ko.md
index cbc73338a..a1cdec4d6 100644
--- a/questions/8-medium-readonly-2/README.ko.md
+++ b/questions/00008-medium-readonly-2/README.ko.md
@@ -22,4 +22,4 @@ todo.description = "barFoo" // Error: cannot reassign a readonly property
todo.completed = true // OK
```
-
관련된 문제들
\ No newline at end of file
+
관련된 문제들
\ No newline at end of file
diff --git a/questions/8-medium-readonly-2/README.md b/questions/00008-medium-readonly-2/README.md
similarity index 83%
rename from questions/8-medium-readonly-2/README.md
rename to questions/00008-medium-readonly-2/README.md
index e8b35c791..b9bbaeca8 100644
--- a/questions/8-medium-readonly-2/README.md
+++ b/questions/00008-medium-readonly-2/README.md
@@ -24,4 +24,4 @@ todo.description = "barFoo" // Error: cannot reassign a readonly property
todo.completed = true // OK
```
-
Related Challenges
\ No newline at end of file
+
Related Challenges
\ No newline at end of file
diff --git a/questions/8-medium-readonly-2/README.zh-CN.md b/questions/00008-medium-readonly-2/README.zh-CN.md
similarity index 82%
rename from questions/8-medium-readonly-2/README.zh-CN.md
rename to questions/00008-medium-readonly-2/README.zh-CN.md
index 1d28f6a96..f343dccb1 100644
--- a/questions/8-medium-readonly-2/README.zh-CN.md
+++ b/questions/00008-medium-readonly-2/README.zh-CN.md
@@ -26,4 +26,4 @@ todo.description = "barFoo" // Error: cannot reassign a readonly property
todo.completed = true // OK
```
-
相关挑战
\ No newline at end of file
+
相关挑战
\ No newline at end of file
diff --git a/questions/8-medium-readonly-2/info.yml b/questions/00008-medium-readonly-2/info.yml
similarity index 100%
rename from questions/8-medium-readonly-2/info.yml
rename to questions/00008-medium-readonly-2/info.yml
diff --git a/questions/8-medium-readonly-2/info.zh-CN.yml b/questions/00008-medium-readonly-2/info.zh-CN.yml
similarity index 100%
rename from questions/8-medium-readonly-2/info.zh-CN.yml
rename to questions/00008-medium-readonly-2/info.zh-CN.yml
diff --git a/questions/8-medium-readonly-2/template.ts b/questions/00008-medium-readonly-2/template.ts
similarity index 100%
rename from questions/8-medium-readonly-2/template.ts
rename to questions/00008-medium-readonly-2/template.ts
diff --git a/questions/8-medium-readonly-2/test-cases.ts b/questions/00008-medium-readonly-2/test-cases.ts
similarity index 100%
rename from questions/8-medium-readonly-2/test-cases.ts
rename to questions/00008-medium-readonly-2/test-cases.ts
diff --git a/questions/9-medium-deep-readonly/README.ja.md b/questions/00009-medium-deep-readonly/README.ja.md
similarity index 85%
rename from questions/9-medium-deep-readonly/README.ja.md
rename to questions/00009-medium-deep-readonly/README.ja.md
index 364924e9c..122fe6e73 100644
--- a/questions/9-medium-deep-readonly/README.ja.md
+++ b/questions/00009-medium-deep-readonly/README.ja.md
@@ -26,4 +26,4 @@ type Expected = {
type Todo = DeepReadonly // should be same as `Expected`
```
-
関連する課題
\ No newline at end of file
+
関連する課題
\ No newline at end of file
diff --git a/questions/9-medium-deep-readonly/README.ko.md b/questions/00009-medium-deep-readonly/README.ko.md
similarity index 83%
rename from questions/9-medium-deep-readonly/README.ko.md
rename to questions/00009-medium-deep-readonly/README.ko.md
index 0745510a2..ab73c0709 100644
--- a/questions/9-medium-deep-readonly/README.ko.md
+++ b/questions/00009-medium-deep-readonly/README.ko.md
@@ -26,4 +26,4 @@ type Expected = {
type Todo = DeepReadonly // should be same as `Expected`
```
-
관련된 문제들
+
관련된 문제들
diff --git a/questions/9-medium-deep-readonly/README.md b/questions/00009-medium-deep-readonly/README.md
similarity index 84%
rename from questions/9-medium-deep-readonly/README.md
rename to questions/00009-medium-deep-readonly/README.md
index 058251d99..0e38696cd 100644
--- a/questions/9-medium-deep-readonly/README.md
+++ b/questions/00009-medium-deep-readonly/README.md
@@ -26,4 +26,4 @@ type Expected = {
type Todo = DeepReadonly // should be same as `Expected`
```
-
Related Challenges
+
Related Challenges
diff --git a/questions/9-medium-deep-readonly/README.zh-CN.md b/questions/00009-medium-deep-readonly/README.zh-CN.md
similarity index 82%
rename from questions/9-medium-deep-readonly/README.zh-CN.md
rename to questions/00009-medium-deep-readonly/README.zh-CN.md
index 6aaacbbc7..0892db247 100644
--- a/questions/9-medium-deep-readonly/README.zh-CN.md
+++ b/questions/00009-medium-deep-readonly/README.zh-CN.md
@@ -28,4 +28,4 @@ type Expected = {
type Todo = DeepReadonly // should be same as `Expected`
```
-
相关挑战
\ No newline at end of file
+
相关挑战
\ No newline at end of file
diff --git a/questions/9-medium-deep-readonly/info.yml b/questions/00009-medium-deep-readonly/info.yml
similarity index 100%
rename from questions/9-medium-deep-readonly/info.yml
rename to questions/00009-medium-deep-readonly/info.yml
diff --git a/questions/9-medium-deep-readonly/info.zh-CN.yml b/questions/00009-medium-deep-readonly/info.zh-CN.yml
similarity index 100%
rename from questions/9-medium-deep-readonly/info.zh-CN.yml
rename to questions/00009-medium-deep-readonly/info.zh-CN.yml
diff --git a/questions/9-medium-deep-readonly/template.ts b/questions/00009-medium-deep-readonly/template.ts
similarity index 100%
rename from questions/9-medium-deep-readonly/template.ts
rename to questions/00009-medium-deep-readonly/template.ts
diff --git a/questions/9-medium-deep-readonly/test-cases.ts b/questions/00009-medium-deep-readonly/test-cases.ts
similarity index 100%
rename from questions/9-medium-deep-readonly/test-cases.ts
rename to questions/00009-medium-deep-readonly/test-cases.ts
diff --git a/questions/10-medium-tuple-to-union/README.ja.md b/questions/00010-medium-tuple-to-union/README.ja.md
similarity index 67%
rename from questions/10-medium-tuple-to-union/README.ja.md
rename to questions/00010-medium-tuple-to-union/README.ja.md
index 8a68678fb..7b9d442df 100644
--- a/questions/10-medium-tuple-to-union/README.ja.md
+++ b/questions/00010-medium-tuple-to-union/README.ja.md
@@ -10,4 +10,4 @@ type Arr = ['1', '2', '3']
type Test = TupleToUnion // expected to be '1' | '2' | '3'
```
-
関連する課題
\ No newline at end of file
+
関連する課題
\ No newline at end of file
diff --git a/questions/10-medium-tuple-to-union/README.ko.md b/questions/00010-medium-tuple-to-union/README.ko.md
similarity index 65%
rename from questions/10-medium-tuple-to-union/README.ko.md
rename to questions/00010-medium-tuple-to-union/README.ko.md
index a3fb94464..743876ad8 100644
--- a/questions/10-medium-tuple-to-union/README.ko.md
+++ b/questions/00010-medium-tuple-to-union/README.ko.md
@@ -10,4 +10,4 @@ type Arr = ['1', '2', '3']
type Test = TupleToUnion // expected to be '1' | '2' | '3'
```
-
관련된 문제들
\ No newline at end of file
+
관련된 문제들
\ No newline at end of file
diff --git a/questions/10-medium-tuple-to-union/README.md b/questions/00010-medium-tuple-to-union/README.md
similarity index 64%
rename from questions/10-medium-tuple-to-union/README.md
rename to questions/00010-medium-tuple-to-union/README.md
index 6abf22288..b24c69696 100644
--- a/questions/10-medium-tuple-to-union/README.md
+++ b/questions/00010-medium-tuple-to-union/README.md
@@ -10,4 +10,4 @@ type Arr = ['1', '2', '3']
type Test = TupleToUnion // expected to be '1' | '2' | '3'
```
-
Related Challenges
\ No newline at end of file
+
Related Challenges
\ No newline at end of file
diff --git a/questions/10-medium-tuple-to-union/README.zh-CN.md b/questions/00010-medium-tuple-to-union/README.zh-CN.md
similarity index 65%
rename from questions/10-medium-tuple-to-union/README.zh-CN.md
rename to questions/00010-medium-tuple-to-union/README.zh-CN.md
index 2b8e61ac3..1a3f79b79 100644
--- a/questions/10-medium-tuple-to-union/README.zh-CN.md
+++ b/questions/00010-medium-tuple-to-union/README.zh-CN.md
@@ -10,4 +10,4 @@ type Arr = ['1', '2', '3']
type Test = TupleToUnion // expected to be '1' | '2' | '3'
```
-
相关挑战
+
相关挑战
diff --git a/questions/10-medium-tuple-to-union/info.yml b/questions/00010-medium-tuple-to-union/info.yml
similarity index 100%
rename from questions/10-medium-tuple-to-union/info.yml
rename to questions/00010-medium-tuple-to-union/info.yml
diff --git a/questions/10-medium-tuple-to-union/info.zh-CN.yml b/questions/00010-medium-tuple-to-union/info.zh-CN.yml
similarity index 100%
rename from questions/10-medium-tuple-to-union/info.zh-CN.yml
rename to questions/00010-medium-tuple-to-union/info.zh-CN.yml
diff --git a/questions/10-medium-tuple-to-union/template.ts b/questions/00010-medium-tuple-to-union/template.ts
similarity index 100%
rename from questions/10-medium-tuple-to-union/template.ts
rename to questions/00010-medium-tuple-to-union/template.ts
diff --git a/questions/10-medium-tuple-to-union/test-cases.ts b/questions/00010-medium-tuple-to-union/test-cases.ts
similarity index 100%
rename from questions/10-medium-tuple-to-union/test-cases.ts
rename to questions/00010-medium-tuple-to-union/test-cases.ts
diff --git a/questions/11-easy-tuple-to-object/README.ja.md b/questions/00011-easy-tuple-to-object/README.ja.md
similarity index 67%
rename from questions/11-easy-tuple-to-object/README.ja.md
rename to questions/00011-easy-tuple-to-object/README.ja.md
index 6c42aec4c..b90b1db9f 100644
--- a/questions/11-easy-tuple-to-object/README.ja.md
+++ b/questions/00011-easy-tuple-to-object/README.ja.md
@@ -10,4 +10,4 @@ const tuple = ['tesla', 'model 3', 'model X', 'model Y'] as const
type result = TupleToObject // expected { tesla: 'tesla', 'model 3': 'model 3', 'model X': 'model X', 'model Y': 'model Y'}
```
-
関連する課題
+
関連する課題
diff --git a/questions/11-easy-tuple-to-object/README.ko.md b/questions/00011-easy-tuple-to-object/README.ko.md
similarity index 64%
rename from questions/11-easy-tuple-to-object/README.ko.md
rename to questions/00011-easy-tuple-to-object/README.ko.md
index 384571f4c..31ed9b196 100644
--- a/questions/11-easy-tuple-to-object/README.ko.md
+++ b/questions/00011-easy-tuple-to-object/README.ko.md
@@ -10,4 +10,4 @@ const tuple = ['tesla', 'model 3', 'model X', 'model Y'] as const
type result = TupleToObject // expected { tesla: 'tesla', 'model 3': 'model 3', 'model X': 'model X', 'model Y': 'model Y'}
```
-
관련된 문제들
\ No newline at end of file
+
관련된 문제들
\ No newline at end of file
diff --git a/questions/11-easy-tuple-to-object/README.md b/questions/00011-easy-tuple-to-object/README.md
similarity index 63%
rename from questions/11-easy-tuple-to-object/README.md
rename to questions/00011-easy-tuple-to-object/README.md
index f3eae590a..72abf49e8 100644
--- a/questions/11-easy-tuple-to-object/README.md
+++ b/questions/00011-easy-tuple-to-object/README.md
@@ -10,4 +10,4 @@ const tuple = ['tesla', 'model 3', 'model X', 'model Y'] as const
type result = TupleToObject // expected { tesla: 'tesla', 'model 3': 'model 3', 'model X': 'model X', 'model Y': 'model Y'}
```
-
Related Challenges
+
Related Challenges
diff --git a/questions/11-easy-tuple-to-object/README.zh-CN.md b/questions/00011-easy-tuple-to-object/README.zh-CN.md
similarity index 64%
rename from questions/11-easy-tuple-to-object/README.zh-CN.md
rename to questions/00011-easy-tuple-to-object/README.zh-CN.md
index fca7a3933..6b380fbdb 100644
--- a/questions/11-easy-tuple-to-object/README.zh-CN.md
+++ b/questions/00011-easy-tuple-to-object/README.zh-CN.md
@@ -12,4 +12,4 @@ const tuple = ['tesla', 'model 3', 'model X', 'model Y'] as const
type result = TupleToObject // expected { tesla: 'tesla', 'model 3': 'model 3', 'model X': 'model X', 'model Y': 'model Y'}
```
-
相关挑战
+
相关挑战
diff --git a/questions/11-easy-tuple-to-object/info.yml b/questions/00011-easy-tuple-to-object/info.yml
similarity index 100%
rename from questions/11-easy-tuple-to-object/info.yml
rename to questions/00011-easy-tuple-to-object/info.yml
diff --git a/questions/11-easy-tuple-to-object/info.zh-CN.yml b/questions/00011-easy-tuple-to-object/info.zh-CN.yml
similarity index 100%
rename from questions/11-easy-tuple-to-object/info.zh-CN.yml
rename to questions/00011-easy-tuple-to-object/info.zh-CN.yml
diff --git a/questions/11-easy-tuple-to-object/template.ts b/questions/00011-easy-tuple-to-object/template.ts
similarity index 100%
rename from questions/11-easy-tuple-to-object/template.ts
rename to questions/00011-easy-tuple-to-object/template.ts
diff --git a/questions/11-easy-tuple-to-object/test-cases.ts b/questions/00011-easy-tuple-to-object/test-cases.ts
similarity index 100%
rename from questions/11-easy-tuple-to-object/test-cases.ts
rename to questions/00011-easy-tuple-to-object/test-cases.ts
diff --git a/questions/12-medium-chainable-options/README.ja.md b/questions/00012-medium-chainable-options/README.ja.md
similarity index 100%
rename from questions/12-medium-chainable-options/README.ja.md
rename to questions/00012-medium-chainable-options/README.ja.md
diff --git a/questions/12-medium-chainable-options/README.md b/questions/00012-medium-chainable-options/README.md
similarity index 100%
rename from questions/12-medium-chainable-options/README.md
rename to questions/00012-medium-chainable-options/README.md
diff --git a/questions/12-medium-chainable-options/README.zh-CN.md b/questions/00012-medium-chainable-options/README.zh-CN.md
similarity index 100%
rename from questions/12-medium-chainable-options/README.zh-CN.md
rename to questions/00012-medium-chainable-options/README.zh-CN.md
diff --git a/questions/12-medium-chainable-options/info.yml b/questions/00012-medium-chainable-options/info.yml
similarity index 100%
rename from questions/12-medium-chainable-options/info.yml
rename to questions/00012-medium-chainable-options/info.yml
diff --git a/questions/12-medium-chainable-options/info.zh-CN.yml b/questions/00012-medium-chainable-options/info.zh-CN.yml
similarity index 100%
rename from questions/12-medium-chainable-options/info.zh-CN.yml
rename to questions/00012-medium-chainable-options/info.zh-CN.yml
diff --git a/questions/12-medium-chainable-options/template.ts b/questions/00012-medium-chainable-options/template.ts
similarity index 100%
rename from questions/12-medium-chainable-options/template.ts
rename to questions/00012-medium-chainable-options/template.ts
diff --git a/questions/12-medium-chainable-options/test-cases.ts b/questions/00012-medium-chainable-options/test-cases.ts
similarity index 100%
rename from questions/12-medium-chainable-options/test-cases.ts
rename to questions/00012-medium-chainable-options/test-cases.ts
diff --git a/questions/13-warm-hello-world/README.ja.md b/questions/00013-warm-hello-world/README.ja.md
similarity index 100%
rename from questions/13-warm-hello-world/README.ja.md
rename to questions/00013-warm-hello-world/README.ja.md
diff --git a/questions/13-warm-hello-world/README.md b/questions/00013-warm-hello-world/README.md
similarity index 100%
rename from questions/13-warm-hello-world/README.md
rename to questions/00013-warm-hello-world/README.md
diff --git a/questions/13-warm-hello-world/README.zh-CN.md b/questions/00013-warm-hello-world/README.zh-CN.md
similarity index 100%
rename from questions/13-warm-hello-world/README.zh-CN.md
rename to questions/00013-warm-hello-world/README.zh-CN.md
diff --git a/questions/13-warm-hello-world/info.yml b/questions/00013-warm-hello-world/info.yml
similarity index 100%
rename from questions/13-warm-hello-world/info.yml
rename to questions/00013-warm-hello-world/info.yml
diff --git a/questions/13-warm-hello-world/template.ts b/questions/00013-warm-hello-world/template.ts
similarity index 100%
rename from questions/13-warm-hello-world/template.ts
rename to questions/00013-warm-hello-world/template.ts
diff --git a/questions/13-warm-hello-world/test-cases.ts b/questions/00013-warm-hello-world/test-cases.ts
similarity index 100%
rename from questions/13-warm-hello-world/test-cases.ts
rename to questions/00013-warm-hello-world/test-cases.ts
diff --git a/questions/14-easy-first/README.ja.md b/questions/00014-easy-first/README.ja.md
similarity index 90%
rename from questions/14-easy-first/README.ja.md
rename to questions/00014-easy-first/README.ja.md
index 4645d83a7..f2fe52564 100644
--- a/questions/14-easy-first/README.ja.md
+++ b/questions/00014-easy-first/README.ja.md
@@ -12,4 +12,4 @@ type head1 = First // expected to be 'a'
type head2 = First // expected to be 3
```
-
関連する課題
+
関連する課題
diff --git a/questions/14-easy-first/README.ko.md b/questions/00014-easy-first/README.ko.md
similarity index 88%
rename from questions/14-easy-first/README.ko.md
rename to questions/00014-easy-first/README.ko.md
index 25d7fc72b..bc4d2145f 100644
--- a/questions/14-easy-first/README.ko.md
+++ b/questions/00014-easy-first/README.ko.md
@@ -12,4 +12,4 @@ type head1 = First // expected to be 'a'
type head2 = First // expected to be 3
```
-
관련된 문제들
\ No newline at end of file
+
관련된 문제들
\ No newline at end of file
diff --git a/questions/14-easy-first/README.md b/questions/00014-easy-first/README.md
similarity index 89%
rename from questions/14-easy-first/README.md
rename to questions/00014-easy-first/README.md
index 76c3b86a1..3da6744dd 100644
--- a/questions/14-easy-first/README.md
+++ b/questions/00014-easy-first/README.md
@@ -13,4 +13,4 @@ type head1 = First // expected to be 'a'
type head2 = First // expected to be 3
```
-
Related Challenges
\ No newline at end of file
+
Related Challenges
\ No newline at end of file
diff --git a/questions/14-easy-first/README.zh-CN.md b/questions/00014-easy-first/README.zh-CN.md
similarity index 87%
rename from questions/14-easy-first/README.zh-CN.md
rename to questions/00014-easy-first/README.zh-CN.md
index d174152aa..00d5940af 100644
--- a/questions/14-easy-first/README.zh-CN.md
+++ b/questions/00014-easy-first/README.zh-CN.md
@@ -14,4 +14,4 @@ type head1 = First // expected to be 'a'
type head2 = First // expected to be 3
```
-
相关挑战
+
相关挑战
diff --git a/questions/14-easy-first/info.yml b/questions/00014-easy-first/info.yml
similarity index 100%
rename from questions/14-easy-first/info.yml
rename to questions/00014-easy-first/info.yml
diff --git a/questions/14-easy-first/info.zh-CN.yml b/questions/00014-easy-first/info.zh-CN.yml
similarity index 100%
rename from questions/14-easy-first/info.zh-CN.yml
rename to questions/00014-easy-first/info.zh-CN.yml
diff --git a/questions/14-easy-first/template.ts b/questions/00014-easy-first/template.ts
similarity index 100%
rename from questions/14-easy-first/template.ts
rename to questions/00014-easy-first/template.ts
diff --git a/questions/14-easy-first/test-cases.ts b/questions/00014-easy-first/test-cases.ts
similarity index 100%
rename from questions/14-easy-first/test-cases.ts
rename to questions/00014-easy-first/test-cases.ts
diff --git a/questions/15-medium-last/README.ja.md b/questions/00015-medium-last/README.ja.md
similarity index 81%
rename from questions/15-medium-last/README.ja.md
rename to questions/00015-medium-last/README.ja.md
index 56f1483e5..af18cb557 100644
--- a/questions/15-medium-last/README.ja.md
+++ b/questions/00015-medium-last/README.ja.md
@@ -14,4 +14,4 @@ type tail1 = Last // expected to be 'c'
type tail2 = Last // expected to be 1
```
-
関連する課題
\ No newline at end of file
+
関連する課題
\ No newline at end of file
diff --git a/questions/15-medium-last/README.md b/questions/00015-medium-last/README.md
similarity index 80%
rename from questions/15-medium-last/README.md
rename to questions/00015-medium-last/README.md
index 56af99b0f..0abf67437 100644
--- a/questions/15-medium-last/README.md
+++ b/questions/00015-medium-last/README.md
@@ -14,4 +14,4 @@ type tail1 = Last // expected to be 'c'
type tail2 = Last // expected to be 1
```
-
Related Challenges
+
Related Challenges
diff --git a/questions/15-medium-last/README.zh-CN.md b/questions/00015-medium-last/README.zh-CN.md
similarity index 78%
rename from questions/15-medium-last/README.zh-CN.md
rename to questions/00015-medium-last/README.zh-CN.md
index aab268e44..4462e1011 100644
--- a/questions/15-medium-last/README.zh-CN.md
+++ b/questions/00015-medium-last/README.zh-CN.md
@@ -16,4 +16,4 @@ type tail1 = Last // expected to be 'c'
type tail2 = Last // expected to be 1
```
-
相关挑战
\ No newline at end of file
+
相关挑战
\ No newline at end of file
diff --git a/questions/15-medium-last/info.yml b/questions/00015-medium-last/info.yml
similarity index 100%
rename from questions/15-medium-last/info.yml
rename to questions/00015-medium-last/info.yml
diff --git a/questions/15-medium-last/info.zh-CN.yml b/questions/00015-medium-last/info.zh-CN.yml
similarity index 100%
rename from questions/15-medium-last/info.zh-CN.yml
rename to questions/00015-medium-last/info.zh-CN.yml
diff --git a/questions/15-medium-last/template.ts b/questions/00015-medium-last/template.ts
similarity index 100%
rename from questions/15-medium-last/template.ts
rename to questions/00015-medium-last/template.ts
diff --git a/questions/15-medium-last/test-cases.ts b/questions/00015-medium-last/test-cases.ts
similarity index 100%
rename from questions/15-medium-last/test-cases.ts
rename to questions/00015-medium-last/test-cases.ts
diff --git a/questions/16-medium-pop/README.ja.md b/questions/00016-medium-pop/README.ja.md
similarity index 81%
rename from questions/16-medium-pop/README.ja.md
rename to questions/00016-medium-pop/README.ja.md
index 393ae4046..3adf829d9 100644
--- a/questions/16-medium-pop/README.ja.md
+++ b/questions/00016-medium-pop/README.ja.md
@@ -16,4 +16,4 @@ type re2 = Pop // expected to be [3, 2]
**おまけ**: 同様に `Shift`、 `Push`、 `Unshift` も実装できますか?
-
関連する課題
\ No newline at end of file
+
関連する課題
\ No newline at end of file
diff --git a/questions/16-medium-pop/README.md b/questions/00016-medium-pop/README.md
similarity index 80%
rename from questions/16-medium-pop/README.md
rename to questions/00016-medium-pop/README.md
index 1a7ee22bf..363bbc660 100644
--- a/questions/16-medium-pop/README.md
+++ b/questions/00016-medium-pop/README.md
@@ -16,4 +16,4 @@ type re2 = Pop // expected to be [3, 2]
**Extra**: Similarly, can you implement `Shift`, `Push` and `Unshift` as well?
-
Related Challenges
\ No newline at end of file
+
Related Challenges
\ No newline at end of file
diff --git a/questions/16-medium-pop/README.zh-CN.md b/questions/00016-medium-pop/README.zh-CN.md
similarity index 77%
rename from questions/16-medium-pop/README.zh-CN.md
rename to questions/00016-medium-pop/README.zh-CN.md
index 245555a29..05d41bfcc 100644
--- a/questions/16-medium-pop/README.zh-CN.md
+++ b/questions/00016-medium-pop/README.zh-CN.md
@@ -18,4 +18,4 @@ type re2 = Pop // expected to be [3, 2]
**额外**:同样,您也可以实现`Shift`,`Push`和`Unshift`吗?
-
相关挑战
\ No newline at end of file
+
相关挑战
\ No newline at end of file
diff --git a/questions/16-medium-pop/info.yml b/questions/00016-medium-pop/info.yml
similarity index 100%
rename from questions/16-medium-pop/info.yml
rename to questions/00016-medium-pop/info.yml
diff --git a/questions/16-medium-pop/info.zh-CN.yml b/questions/00016-medium-pop/info.zh-CN.yml
similarity index 100%
rename from questions/16-medium-pop/info.zh-CN.yml
rename to questions/00016-medium-pop/info.zh-CN.yml
diff --git a/questions/16-medium-pop/template.ts b/questions/00016-medium-pop/template.ts
similarity index 100%
rename from questions/16-medium-pop/template.ts
rename to questions/00016-medium-pop/template.ts
diff --git a/questions/16-medium-pop/test-cases.ts b/questions/00016-medium-pop/test-cases.ts
similarity index 100%
rename from questions/16-medium-pop/test-cases.ts
rename to questions/00016-medium-pop/test-cases.ts
diff --git a/questions/17-hard-currying-1/README.ja.md b/questions/00017-hard-currying-1/README.ja.md
similarity index 77%
rename from questions/17-hard-currying-1/README.ja.md
rename to questions/00017-hard-currying-1/README.ja.md
index c50cb4e2f..0ce15550d 100644
--- a/questions/17-hard-currying-1/README.ja.md
+++ b/questions/00017-hard-currying-1/README.ja.md
@@ -18,4 +18,4 @@ const five = curriedAdd(2)(3)
この課題では、カリー化された関数は一度に 1 つの引数しか受け付けません。すべての引数が代入されたら、その結果を返す必要があります。
-
関連する課題
\ No newline at end of file
+
関連する課題
\ No newline at end of file
diff --git a/questions/17-hard-currying-1/README.md b/questions/00017-hard-currying-1/README.md
similarity index 75%
rename from questions/17-hard-currying-1/README.md
rename to questions/00017-hard-currying-1/README.md
index 6d70dce06..8a6286fd7 100644
--- a/questions/17-hard-currying-1/README.md
+++ b/questions/00017-hard-currying-1/README.md
@@ -18,4 +18,4 @@ The function passed to `Currying` may have multiple arguments, you need to corre
In this challenge, the curried function only accept one argument at a time. Once all the argument is assigned, it should return its result.
-
Related Challenges
+
Related Challenges
diff --git a/questions/17-hard-currying-1/README.zh-CN.md b/questions/00017-hard-currying-1/README.zh-CN.md
similarity index 73%
rename from questions/17-hard-currying-1/README.zh-CN.md
rename to questions/00017-hard-currying-1/README.zh-CN.md
index 43d8ce2d1..ad48f4b95 100644
--- a/questions/17-hard-currying-1/README.zh-CN.md
+++ b/questions/00017-hard-currying-1/README.zh-CN.md
@@ -20,4 +20,4 @@ const five = curriedAdd(2)(3)
在此挑战中,curried函数一次仅接受一个参数。分配完所有参数后,它应返回其结果。
-
相关挑战
\ No newline at end of file
+
相关挑战
\ No newline at end of file
diff --git a/questions/17-hard-currying-1/info.yml b/questions/00017-hard-currying-1/info.yml
similarity index 100%
rename from questions/17-hard-currying-1/info.yml
rename to questions/00017-hard-currying-1/info.yml
diff --git a/questions/17-hard-currying-1/info.zh-CN.yml b/questions/00017-hard-currying-1/info.zh-CN.yml
similarity index 100%
rename from questions/17-hard-currying-1/info.zh-CN.yml
rename to questions/00017-hard-currying-1/info.zh-CN.yml
diff --git a/questions/17-hard-currying-1/template.ts b/questions/00017-hard-currying-1/template.ts
similarity index 100%
rename from questions/17-hard-currying-1/template.ts
rename to questions/00017-hard-currying-1/template.ts
diff --git a/questions/17-hard-currying-1/test-cases.ts b/questions/00017-hard-currying-1/test-cases.ts
similarity index 100%
rename from questions/17-hard-currying-1/test-cases.ts
rename to questions/00017-hard-currying-1/test-cases.ts
diff --git a/questions/18-easy-tuple-length/README.ja.md b/questions/00018-easy-tuple-length/README.ja.md
similarity index 100%
rename from questions/18-easy-tuple-length/README.ja.md
rename to questions/00018-easy-tuple-length/README.ja.md
diff --git a/questions/18-easy-tuple-length/README.ko.md b/questions/00018-easy-tuple-length/README.ko.md
similarity index 100%
rename from questions/18-easy-tuple-length/README.ko.md
rename to questions/00018-easy-tuple-length/README.ko.md
diff --git a/questions/18-easy-tuple-length/README.md b/questions/00018-easy-tuple-length/README.md
similarity index 100%
rename from questions/18-easy-tuple-length/README.md
rename to questions/00018-easy-tuple-length/README.md
diff --git a/questions/18-easy-tuple-length/README.zh-CN.md b/questions/00018-easy-tuple-length/README.zh-CN.md
similarity index 100%
rename from questions/18-easy-tuple-length/README.zh-CN.md
rename to questions/00018-easy-tuple-length/README.zh-CN.md
diff --git a/questions/18-easy-tuple-length/info.yml b/questions/00018-easy-tuple-length/info.yml
similarity index 100%
rename from questions/18-easy-tuple-length/info.yml
rename to questions/00018-easy-tuple-length/info.yml
diff --git a/questions/18-easy-tuple-length/info.zh-CN.yml b/questions/00018-easy-tuple-length/info.zh-CN.yml
similarity index 100%
rename from questions/18-easy-tuple-length/info.zh-CN.yml
rename to questions/00018-easy-tuple-length/info.zh-CN.yml
diff --git a/questions/18-easy-tuple-length/template.ts b/questions/00018-easy-tuple-length/template.ts
similarity index 100%
rename from questions/18-easy-tuple-length/template.ts
rename to questions/00018-easy-tuple-length/template.ts
diff --git a/questions/18-easy-tuple-length/test-cases.ts b/questions/00018-easy-tuple-length/test-cases.ts
similarity index 100%
rename from questions/18-easy-tuple-length/test-cases.ts
rename to questions/00018-easy-tuple-length/test-cases.ts
diff --git a/questions/20-medium-promise-all/README.ja.md b/questions/00020-medium-promise-all/README.ja.md
similarity index 100%
rename from questions/20-medium-promise-all/README.ja.md
rename to questions/00020-medium-promise-all/README.ja.md
diff --git a/questions/20-medium-promise-all/README.md b/questions/00020-medium-promise-all/README.md
similarity index 99%
rename from questions/20-medium-promise-all/README.md
rename to questions/00020-medium-promise-all/README.md
index 019d549d6..97ac79ac2 100644
--- a/questions/20-medium-promise-all/README.md
+++ b/questions/00020-medium-promise-all/README.md
@@ -1,17 +1,17 @@
-Promise.all
by Anthony Fu @antfu
-
-Type the function `PromiseAll` that accepts an array of PromiseLike objects, the returning value should be `Promise` where `T` is the resolved result array.
-
-```ts
-const promise1 = Promise.resolve(3);
-const promise2 = 42;
-const promise3 = new Promise((resolve, reject) => {
- setTimeout(resolve, 100, 'foo');
-});
-
-// expected to be `Promise<[number, 42, string]>`
-const p = Promise.all([promise1, promise2, promise3] as const)
-```
-
-
-
+Promise.all
by Anthony Fu @antfu
+
+Type the function `PromiseAll` that accepts an array of PromiseLike objects, the returning value should be `Promise` where `T` is the resolved result array.
+
+```ts
+const promise1 = Promise.resolve(3);
+const promise2 = 42;
+const promise3 = new Promise((resolve, reject) => {
+ setTimeout(resolve, 100, 'foo');
+});
+
+// expected to be `Promise<[number, 42, string]>`
+const p = Promise.all([promise1, promise2, promise3] as const)
+```
+
+
+
diff --git a/questions/20-medium-promise-all/README.zh-CN.md b/questions/00020-medium-promise-all/README.zh-CN.md
similarity index 99%
rename from questions/20-medium-promise-all/README.zh-CN.md
rename to questions/00020-medium-promise-all/README.zh-CN.md
index cd530bfd4..db6698604 100644
--- a/questions/20-medium-promise-all/README.zh-CN.md
+++ b/questions/00020-medium-promise-all/README.zh-CN.md
@@ -1,18 +1,18 @@
-Promise.all
by Anthony Fu @antfu
-
-> 由谷歌自动翻译,欢迎 PR 改进翻译质量。
-
-键入函数`PromiseAll`,它接受PromiseLike对象数组,返回值应为`Promise`,其中`T`是解析的结果数组。
-
-```ts
-const promise1 = Promise.resolve(3);
-const promise2 = 42;
-const promise3 = new Promise((resolve, reject) => {
- setTimeout(resolve, 100, 'foo');
-});
-
-// expected to be `Promise<[number, 42, string]>`
-const p = Promise.all([promise1, promise2, promise3] as const)
-```
-
-
+Promise.all
by Anthony Fu @antfu
+
+> 由谷歌自动翻译,欢迎 PR 改进翻译质量。
+
+键入函数`PromiseAll`,它接受PromiseLike对象数组,返回值应为`Promise`,其中`T`是解析的结果数组。
+
+```ts
+const promise1 = Promise.resolve(3);
+const promise2 = 42;
+const promise3 = new Promise((resolve, reject) => {
+ setTimeout(resolve, 100, 'foo');
+});
+
+// expected to be `Promise<[number, 42, string]>`
+const p = Promise.all([promise1, promise2, promise3] as const)
+```
+
+
diff --git a/questions/20-medium-promise-all/info.yml b/questions/00020-medium-promise-all/info.yml
similarity index 100%
rename from questions/20-medium-promise-all/info.yml
rename to questions/00020-medium-promise-all/info.yml
diff --git a/questions/20-medium-promise-all/template.ts b/questions/00020-medium-promise-all/template.ts
similarity index 100%
rename from questions/20-medium-promise-all/template.ts
rename to questions/00020-medium-promise-all/template.ts
diff --git a/questions/20-medium-promise-all/test-cases.ts b/questions/00020-medium-promise-all/test-cases.ts
similarity index 97%
rename from questions/20-medium-promise-all/test-cases.ts
rename to questions/00020-medium-promise-all/test-cases.ts
index d8115ce6d..85d330b46 100644
--- a/questions/20-medium-promise-all/test-cases.ts
+++ b/questions/00020-medium-promise-all/test-cases.ts
@@ -1,11 +1,11 @@
-import type { Equal, Expect } from '@type-challenges/utils'
-
-const promiseAllTest1 = PromiseAll([1, 2, 3] as const)
-const promiseAllTest2 = PromiseAll([1, 2, Promise.resolve(3)] as const)
-const promiseAllTest3 = PromiseAll([1, 2, Promise.resolve(3)])
-
-type cases = [
- Expect>>,
- Expect>>,
- Expect>>,
-]
+import type { Equal, Expect } from '@type-challenges/utils'
+
+const promiseAllTest1 = PromiseAll([1, 2, 3] as const)
+const promiseAllTest2 = PromiseAll([1, 2, Promise.resolve(3)] as const)
+const promiseAllTest3 = PromiseAll([1, 2, Promise.resolve(3)])
+
+type cases = [
+ Expect>>,
+ Expect>>,
+ Expect>>,
+]
diff --git a/questions/43-easy-exclude/README.ja.md b/questions/00043-easy-exclude/README.ja.md
similarity index 100%
rename from questions/43-easy-exclude/README.ja.md
rename to questions/00043-easy-exclude/README.ja.md
diff --git a/questions/43-easy-exclude/README.ko.md b/questions/00043-easy-exclude/README.ko.md
similarity index 100%
rename from questions/43-easy-exclude/README.ko.md
rename to questions/00043-easy-exclude/README.ko.md
diff --git a/questions/43-easy-exclude/README.md b/questions/00043-easy-exclude/README.md
similarity index 99%
rename from questions/43-easy-exclude/README.md
rename to questions/00043-easy-exclude/README.md
index af04ecf8a..fcc78cf0c 100644
--- a/questions/43-easy-exclude/README.md
+++ b/questions/00043-easy-exclude/README.md
@@ -1,6 +1,6 @@
Exclude
by Zheeeng @zheeeng
-Implement the built-in Exclude
+Implement the built-in Exclude
> Exclude from T those types that are assignable to U
diff --git a/questions/43-easy-exclude/README.zh-CN.md b/questions/00043-easy-exclude/README.zh-CN.md
similarity index 99%
rename from questions/43-easy-exclude/README.zh-CN.md
rename to questions/00043-easy-exclude/README.zh-CN.md
index 2a14f03be..7dd63aa83 100644
--- a/questions/43-easy-exclude/README.zh-CN.md
+++ b/questions/00043-easy-exclude/README.zh-CN.md
@@ -1,8 +1,8 @@
-Exclude
by Zheeeng @zheeeng
-
-> 欢迎 PR 改进翻译质量。
-
-实现内置的Exclude 类型,但不能直接使用它本身。
->从联合类型T中排除U的类型成员,来构造一个新的类型。
-
+Exclude
by Zheeeng @zheeeng
+
+> 欢迎 PR 改进翻译质量。
+
+实现内置的Exclude 类型,但不能直接使用它本身。
+>从联合类型T中排除U的类型成员,来构造一个新的类型。
+
\ No newline at end of file
diff --git a/questions/43-easy-exclude/info.yml b/questions/00043-easy-exclude/info.yml
similarity index 100%
rename from questions/43-easy-exclude/info.yml
rename to questions/00043-easy-exclude/info.yml
diff --git a/questions/43-easy-exclude/template.ts b/questions/00043-easy-exclude/template.ts
similarity index 100%
rename from questions/43-easy-exclude/template.ts
rename to questions/00043-easy-exclude/template.ts
diff --git a/questions/43-easy-exclude/test-cases.ts b/questions/00043-easy-exclude/test-cases.ts
similarity index 98%
rename from questions/43-easy-exclude/test-cases.ts
rename to questions/00043-easy-exclude/test-cases.ts
index 7e2dad8e9..c9666766b 100644
--- a/questions/43-easy-exclude/test-cases.ts
+++ b/questions/00043-easy-exclude/test-cases.ts
@@ -1,7 +1,7 @@
-import type { Equal, Expect } from '@type-challenges/utils'
-
-type cases = [
- Expect, Exclude<'a' | 'b' | 'c', 'a'>>>,
- Expect, Exclude<'a' | 'b' | 'c', 'a' | 'b'>>>,
- Expect void), Function>, Exclude void), Function>>>,
-]
+import type { Equal, Expect } from '@type-challenges/utils'
+
+type cases = [
+ Expect, Exclude<'a' | 'b' | 'c', 'a'>>>,
+ Expect, Exclude<'a' | 'b' | 'c', 'a' | 'b'>>>,
+ Expect void), Function>, Exclude void), Function>>>,
+]
diff --git a/questions/55-hard-union-to-intersection/README.ja.md b/questions/00055-hard-union-to-intersection/README.ja.md
similarity index 100%
rename from questions/55-hard-union-to-intersection/README.ja.md
rename to questions/00055-hard-union-to-intersection/README.ja.md
diff --git a/questions/55-hard-union-to-intersection/README.md b/questions/00055-hard-union-to-intersection/README.md
similarity index 99%
rename from questions/55-hard-union-to-intersection/README.md
rename to questions/00055-hard-union-to-intersection/README.md
index aa7d4ca66..3ebdb4cb0 100644
--- a/questions/55-hard-union-to-intersection/README.md
+++ b/questions/00055-hard-union-to-intersection/README.md
@@ -1,11 +1,11 @@
Union to Intersection
by Zheeeng @zheeeng
-Implement the advanced util type `UnionToIntersection`
-
-For example
-
-```ts
-type I = Union2Intersection<'foo' | 42 | true> // expected to be 'foo' & 42 & true
+Implement the advanced util type `UnionToIntersection`
+
+For example
+
+```ts
+type I = Union2Intersection<'foo' | 42 | true> // expected to be 'foo' & 42 & true
```
diff --git a/questions/55-hard-union-to-intersection/README.zh-CN.md b/questions/00055-hard-union-to-intersection/README.zh-CN.md
similarity index 99%
rename from questions/55-hard-union-to-intersection/README.zh-CN.md
rename to questions/00055-hard-union-to-intersection/README.zh-CN.md
index 7baa1094f..1994526db 100644
--- a/questions/55-hard-union-to-intersection/README.zh-CN.md
+++ b/questions/00055-hard-union-to-intersection/README.zh-CN.md
@@ -2,12 +2,12 @@
> 由谷歌自动翻译,欢迎 PR 改进翻译质量。
-实现高级util类型`UnionToIntersection`
-
-例如
-
-```ts
-type I = Union2Intersection<'foo' | 42 | true> // expected to be 'foo' & 42 & true
+实现高级util类型`UnionToIntersection`
+
+例如
+
+```ts
+type I = Union2Intersection<'foo' | 42 | true> // expected to be 'foo' & 42 & true
```
\ No newline at end of file
diff --git a/questions/55-hard-union-to-intersection/info.yml b/questions/00055-hard-union-to-intersection/info.yml
similarity index 100%
rename from questions/55-hard-union-to-intersection/info.yml
rename to questions/00055-hard-union-to-intersection/info.yml
diff --git a/questions/55-hard-union-to-intersection/template.ts b/questions/00055-hard-union-to-intersection/template.ts
similarity index 100%
rename from questions/55-hard-union-to-intersection/template.ts
rename to questions/00055-hard-union-to-intersection/template.ts
diff --git a/questions/55-hard-union-to-intersection/test-cases.ts b/questions/00055-hard-union-to-intersection/test-cases.ts
similarity index 97%
rename from questions/55-hard-union-to-intersection/test-cases.ts
rename to questions/00055-hard-union-to-intersection/test-cases.ts
index d8c68c45f..99963227e 100644
--- a/questions/55-hard-union-to-intersection/test-cases.ts
+++ b/questions/00055-hard-union-to-intersection/test-cases.ts
@@ -1,6 +1,6 @@
-import type { Equal, Expect } from '@type-challenges/utils'
-
-type cases = [
- Expect, 'foo' & 42 & true>>,
- Expect 'foo') | ((i: 42) => true)>, (() => 'foo') & ((i: 42) => true)>>,
-]
+import type { Equal, Expect } from '@type-challenges/utils'
+
+type cases = [
+ Expect, 'foo' & 42 & true>>,
+ Expect 'foo') | ((i: 42) => true)>, (() => 'foo') & ((i: 42) => true)>>,
+]
diff --git a/questions/57-hard-get-required/README.ja.md b/questions/00057-hard-get-required/README.ja.md
similarity index 89%
rename from questions/57-hard-get-required/README.ja.md
rename to questions/00057-hard-get-required/README.ja.md
index 90966f890..cc057b295 100644
--- a/questions/57-hard-get-required/README.ja.md
+++ b/questions/00057-hard-get-required/README.ja.md
@@ -8,4 +8,4 @@
type I = GetRequired<{ foo: number, bar?: string }> // expected to be { foo: number }
```
-
関連する課題
\ No newline at end of file
+
関連する課題
\ No newline at end of file
diff --git a/questions/57-hard-get-required/README.md b/questions/00057-hard-get-required/README.md
similarity index 88%
rename from questions/57-hard-get-required/README.md
rename to questions/00057-hard-get-required/README.md
index 88c177df1..42b81abb4 100644
--- a/questions/57-hard-get-required/README.md
+++ b/questions/00057-hard-get-required/README.md
@@ -1,12 +1,12 @@
Get Required
by Zheeeng @zheeeng
-Implement the advanced util type `GetRequired`, which remains all the required fields
-
-For example
-
-```ts
-type I = GetRequired<{ foo: number, bar?: string }> // expected to be { foo: number }
+Implement the advanced util type `GetRequired`, which remains all the required fields
+
+For example
+
+```ts
+type I = GetRequired<{ foo: number, bar?: string }> // expected to be { foo: number }
```
-
Related Challenges
\ No newline at end of file
+
Related Challenges
\ No newline at end of file
diff --git a/questions/57-hard-get-required/README.zh-CN.md b/questions/00057-hard-get-required/README.zh-CN.md
similarity index 88%
rename from questions/57-hard-get-required/README.zh-CN.md
rename to questions/00057-hard-get-required/README.zh-CN.md
index 01179e2a2..fe04d6403 100644
--- a/questions/57-hard-get-required/README.zh-CN.md
+++ b/questions/00057-hard-get-required/README.zh-CN.md
@@ -2,12 +2,12 @@
> 由谷歌自动翻译,欢迎 PR 改进翻译质量。
-实现高级util类型`GetRequired`,该类型保留所有必填字段
-
-例如
-
-```ts
-type I = GetRequired<{ foo: number, bar?: string }> // expected to be { foo: number }
+实现高级util类型`GetRequired`,该类型保留所有必填字段
+
+例如
+
+```ts
+type I = GetRequired<{ foo: number, bar?: string }> // expected to be { foo: number }
```
-
相关挑战
\ No newline at end of file
+
相关挑战
\ No newline at end of file
diff --git a/questions/57-hard-get-required/info.yml b/questions/00057-hard-get-required/info.yml
similarity index 100%
rename from questions/57-hard-get-required/info.yml
rename to questions/00057-hard-get-required/info.yml
diff --git a/questions/57-hard-get-required/template.ts b/questions/00057-hard-get-required/template.ts
similarity index 100%
rename from questions/57-hard-get-required/template.ts
rename to questions/00057-hard-get-required/template.ts
diff --git a/questions/57-hard-get-required/test-cases.ts b/questions/00057-hard-get-required/test-cases.ts
similarity index 97%
rename from questions/57-hard-get-required/test-cases.ts
rename to questions/00057-hard-get-required/test-cases.ts
index 0bd2706c6..8ca8138fc 100644
--- a/questions/57-hard-get-required/test-cases.ts
+++ b/questions/00057-hard-get-required/test-cases.ts
@@ -1,6 +1,6 @@
-import type { Equal, Expect } from '@type-challenges/utils'
-
-type cases = [
- Expect, { foo: number }>>,
- Expect, { foo: undefined }>>,
-]
+import type { Equal, Expect } from '@type-challenges/utils'
+
+type cases = [
+ Expect, { foo: number }>>,
+ Expect, { foo: undefined }>>,
+]
diff --git a/questions/59-hard-get-optional/README.ja.md b/questions/00059-hard-get-optional/README.ja.md
similarity index 89%
rename from questions/59-hard-get-optional/README.ja.md
rename to questions/00059-hard-get-optional/README.ja.md
index 83af435cf..fcc5f2fd4 100644
--- a/questions/59-hard-get-optional/README.ja.md
+++ b/questions/00059-hard-get-optional/README.ja.md
@@ -8,4 +8,4 @@
type I = GetOptional<{ foo: number, bar?: string }> // expected to be { bar?: string }
```
-
関連する課題
\ No newline at end of file
+
関連する課題
\ No newline at end of file
diff --git a/questions/59-hard-get-optional/README.md b/questions/00059-hard-get-optional/README.md
similarity index 88%
rename from questions/59-hard-get-optional/README.md
rename to questions/00059-hard-get-optional/README.md
index 7ba52136c..f85e15d5b 100644
--- a/questions/59-hard-get-optional/README.md
+++ b/questions/00059-hard-get-optional/README.md
@@ -1,12 +1,12 @@
Get Optional
by Zheeeng @zheeeng
-Implement the advanced util type `GetOptional`, which remains all the optional fields
-
-For example
-
-```ts
-type I = GetOptional<{ foo: number, bar?: string }> // expected to be { bar?: string }
+Implement the advanced util type `GetOptional`, which remains all the optional fields
+
+For example
+
+```ts
+type I = GetOptional<{ foo: number, bar?: string }> // expected to be { bar?: string }
```
-
Related Challenges
\ No newline at end of file
+
Related Challenges
\ No newline at end of file
diff --git a/questions/59-hard-get-optional/README.zh-CN.md b/questions/00059-hard-get-optional/README.zh-CN.md
similarity index 88%
rename from questions/59-hard-get-optional/README.zh-CN.md
rename to questions/00059-hard-get-optional/README.zh-CN.md
index fb114e050..6af7301da 100644
--- a/questions/59-hard-get-optional/README.zh-CN.md
+++ b/questions/00059-hard-get-optional/README.zh-CN.md
@@ -2,12 +2,12 @@
> 由谷歌自动翻译,欢迎 PR 改进翻译质量。
-实现高级util类型`GetOptional`,该类型保留所有可选字段
-
-例如
-
-```ts
-type I = GetOptional<{ foo: number, bar?: string }> // expected to be { bar?: string }
+实现高级util类型`GetOptional`,该类型保留所有可选字段
+
+例如
+
+```ts
+type I = GetOptional<{ foo: number, bar?: string }> // expected to be { bar?: string }
```
-
相关挑战
\ No newline at end of file
+
相关挑战
\ No newline at end of file
diff --git a/questions/59-hard-get-optional/info.yml b/questions/00059-hard-get-optional/info.yml
similarity index 100%
rename from questions/59-hard-get-optional/info.yml
rename to questions/00059-hard-get-optional/info.yml
diff --git a/questions/59-hard-get-optional/template.ts b/questions/00059-hard-get-optional/template.ts
similarity index 100%
rename from questions/59-hard-get-optional/template.ts
rename to questions/00059-hard-get-optional/template.ts
diff --git a/questions/59-hard-get-optional/test-cases.ts b/questions/00059-hard-get-optional/test-cases.ts
similarity index 98%
rename from questions/59-hard-get-optional/test-cases.ts
rename to questions/00059-hard-get-optional/test-cases.ts
index 12d795aee..db8b6efcc 100644
--- a/questions/59-hard-get-optional/test-cases.ts
+++ b/questions/00059-hard-get-optional/test-cases.ts
@@ -1,6 +1,6 @@
-import type { Equal, Expect } from '@type-challenges/utils'
-
-type cases = [
- Expect, { bar?: string }>>,
- Expect, { bar?: undefined }>>,
+import type { Equal, Expect } from '@type-challenges/utils'
+
+type cases = [
+ Expect, { bar?: string }>>,
+ Expect, { bar?: undefined }>>,
]
diff --git a/questions/62-medium-type-lookup/README.ja.md b/questions/00062-medium-type-lookup/README.ja.md
similarity index 100%
rename from questions/62-medium-type-lookup/README.ja.md
rename to questions/00062-medium-type-lookup/README.ja.md
diff --git a/questions/62-medium-type-lookup/README.md b/questions/00062-medium-type-lookup/README.md
similarity index 98%
rename from questions/62-medium-type-lookup/README.md
rename to questions/00062-medium-type-lookup/README.md
index dd92fb267..389d6829d 100644
--- a/questions/62-medium-type-lookup/README.md
+++ b/questions/00062-medium-type-lookup/README.md
@@ -1,23 +1,23 @@
-Type Lookup
by Anthony Fu @antfu
-
-Sometimes, you may want to lookup for a type in a union to by their attributes.
-
-In this challenge, we would like to get the corresponding type by searching for the common `type` field in the union `Cat | Dog`. In other words, we will expect to get `Dog` for `LookUp` and `Cat` for `LookUp` in the following example.
-
-```ts
-interface Cat {
- type: 'cat'
- breeds: 'Abyssinian' | 'Shorthair' | 'Curl' | 'Bengal'
-}
-
-interface Dog {
- type: 'dog'
- breeds: 'Hound' | 'Brittany' | 'Bulldog' | 'Boxer'
- color: 'brown' | 'white' | 'black'
-}
-
-type MyDogType = LookUp // expected to be `Dog`
-```
-
-
-
+Type Lookup
by Anthony Fu @antfu
+
+Sometimes, you may want to lookup for a type in a union to by their attributes.
+
+In this challenge, we would like to get the corresponding type by searching for the common `type` field in the union `Cat | Dog`. In other words, we will expect to get `Dog` for `LookUp` and `Cat` for `LookUp` in the following example.
+
+```ts
+interface Cat {
+ type: 'cat'
+ breeds: 'Abyssinian' | 'Shorthair' | 'Curl' | 'Bengal'
+}
+
+interface Dog {
+ type: 'dog'
+ breeds: 'Hound' | 'Brittany' | 'Bulldog' | 'Boxer'
+ color: 'brown' | 'white' | 'black'
+}
+
+type MyDogType = LookUp // expected to be `Dog`
+```
+
+
+
diff --git a/questions/62-medium-type-lookup/README.zh-CN.md b/questions/00062-medium-type-lookup/README.zh-CN.md
similarity index 98%
rename from questions/62-medium-type-lookup/README.zh-CN.md
rename to questions/00062-medium-type-lookup/README.zh-CN.md
index a55645b5e..a4b93fdb0 100644
--- a/questions/62-medium-type-lookup/README.zh-CN.md
+++ b/questions/00062-medium-type-lookup/README.zh-CN.md
@@ -1,24 +1,24 @@
-Type Lookup
by Anthony Fu @antfu
-
-> 由谷歌自动翻译,欢迎 PR 改进翻译质量。
-
-有时,您可能希望根据其属性在并集中查找类型。
-
-在此挑战中,我们想通过在联合`Cat | Dog`中搜索公共`type`字段来获取相应的类型。换句话说,在以下示例中,我们期望`LookUp`获得`Dog`,`LookUp`获得`Cat`。
-
-```ts
-interface Cat {
- type: 'cat'
- breeds: 'Abyssinian' | 'Shorthair' | 'Curl' | 'Bengal'
-}
-
-interface Dog {
- type: 'dog'
- breeds: 'Hound' | 'Brittany' | 'Bulldog' | 'Boxer'
- color: 'brown' | 'white' | 'black'
-}
-
-type MyDog = LookUp // expected to be `Dog`
-```
-
+Type Lookup
by Anthony Fu @antfu
+
+> 由谷歌自动翻译,欢迎 PR 改进翻译质量。
+
+有时,您可能希望根据其属性在并集中查找类型。
+
+在此挑战中,我们想通过在联合`Cat | Dog`中搜索公共`type`字段来获取相应的类型。换句话说,在以下示例中,我们期望`LookUp`获得`Dog`,`LookUp`获得`Cat`。
+
+```ts
+interface Cat {
+ type: 'cat'
+ breeds: 'Abyssinian' | 'Shorthair' | 'Curl' | 'Bengal'
+}
+
+interface Dog {
+ type: 'dog'
+ breeds: 'Hound' | 'Brittany' | 'Bulldog' | 'Boxer'
+ color: 'brown' | 'white' | 'black'
+}
+
+type MyDog = LookUp // expected to be `Dog`
+```
+
\ No newline at end of file
diff --git a/questions/62-medium-type-lookup/info.yml b/questions/00062-medium-type-lookup/info.yml
similarity index 100%
rename from questions/62-medium-type-lookup/info.yml
rename to questions/00062-medium-type-lookup/info.yml
diff --git a/questions/62-medium-type-lookup/template.ts b/questions/00062-medium-type-lookup/template.ts
similarity index 100%
rename from questions/62-medium-type-lookup/template.ts
rename to questions/00062-medium-type-lookup/template.ts
diff --git a/questions/62-medium-type-lookup/test-cases.ts b/questions/00062-medium-type-lookup/test-cases.ts
similarity index 95%
rename from questions/62-medium-type-lookup/test-cases.ts
rename to questions/00062-medium-type-lookup/test-cases.ts
index bde22fec7..441abcff1 100644
--- a/questions/62-medium-type-lookup/test-cases.ts
+++ b/questions/00062-medium-type-lookup/test-cases.ts
@@ -1,19 +1,19 @@
-import type { Equal, Expect } from '@type-challenges/utils'
-
-interface Cat {
- type: 'cat'
- breeds: 'Abyssinian' | 'Shorthair' | 'Curl' | 'Bengal'
-}
-
-interface Dog {
- type: 'dog'
- breeds: 'Hound' | 'Brittany' | 'Bulldog' | 'Boxer'
- color: 'brown' | 'white' | 'black'
-}
-
-type Animal = Cat | Dog
-
-type cases = [
- Expect, Dog>>,
- Expect, Cat>>,
+import type { Equal, Expect } from '@type-challenges/utils'
+
+interface Cat {
+ type: 'cat'
+ breeds: 'Abyssinian' | 'Shorthair' | 'Curl' | 'Bengal'
+}
+
+interface Dog {
+ type: 'dog'
+ breeds: 'Hound' | 'Brittany' | 'Bulldog' | 'Boxer'
+ color: 'brown' | 'white' | 'black'
+}
+
+type Animal = Cat | Dog
+
+type cases = [
+ Expect, Dog>>,
+ Expect, Cat>>,
]
diff --git a/questions/89-hard-required-keys/README.ja.md b/questions/00089-hard-required-keys/README.ja.md
similarity index 88%
rename from questions/89-hard-required-keys/README.ja.md
rename to questions/00089-hard-required-keys/README.ja.md
index 243fa9d94..84b06ce22 100644
--- a/questions/89-hard-required-keys/README.ja.md
+++ b/questions/00089-hard-required-keys/README.ja.md
@@ -9,4 +9,4 @@ type Result = RequiredKeys<{ foo: number; bar?: string }>;
// expected to be “foo”
```
-
関連する課題
\ No newline at end of file
+
関連する課題
\ No newline at end of file
diff --git a/questions/89-hard-required-keys/README.md b/questions/00089-hard-required-keys/README.md
similarity index 87%
rename from questions/89-hard-required-keys/README.md
rename to questions/00089-hard-required-keys/README.md
index 9547d8d1d..587181e72 100644
--- a/questions/89-hard-required-keys/README.md
+++ b/questions/00089-hard-required-keys/README.md
@@ -1,13 +1,13 @@
Required Keys
by yituan @yi-tuan
-Implement the advanced util type `RequiredKeys`, which picks all the required keys into a union.
-
-For example
-
-```ts
-type Result = RequiredKeys<{ foo: number; bar?: string }>;
-// expected to be “foo”
+Implement the advanced util type `RequiredKeys`, which picks all the required keys into a union.
+
+For example
+
+```ts
+type Result = RequiredKeys<{ foo: number; bar?: string }>;
+// expected to be “foo”
```
-
Related Challenges
\ No newline at end of file
+
Related Challenges
\ No newline at end of file
diff --git a/questions/89-hard-required-keys/README.zh-CN.md b/questions/00089-hard-required-keys/README.zh-CN.md
similarity index 85%
rename from questions/89-hard-required-keys/README.zh-CN.md
rename to questions/00089-hard-required-keys/README.zh-CN.md
index e65191fde..74e0e7bad 100644
--- a/questions/89-hard-required-keys/README.zh-CN.md
+++ b/questions/00089-hard-required-keys/README.zh-CN.md
@@ -2,13 +2,13 @@
> 由谷歌自动翻译,欢迎 PR 改进翻译质量。
-实现高级util类型`RequiredKeys`,该类型将所有必需的键都选择为一个并集。
-
-例如
-
-```ts
-type Result = RequiredKeys<{ foo: number; bar?: string }>;
-// expected to be “foo”
+实现高级util类型`RequiredKeys`,该类型将所有必需的键都选择为一个并集。
+
+例如
+
+```ts
+type Result = RequiredKeys<{ foo: number; bar?: string }>;
+// expected to be “foo”
```
-
相关挑战
\ No newline at end of file
+
相关挑战
\ No newline at end of file
diff --git a/questions/89-hard-required-keys/info.yml b/questions/00089-hard-required-keys/info.yml
similarity index 100%
rename from questions/89-hard-required-keys/info.yml
rename to questions/00089-hard-required-keys/info.yml
diff --git a/questions/89-hard-required-keys/template.ts b/questions/00089-hard-required-keys/template.ts
similarity index 100%
rename from questions/89-hard-required-keys/template.ts
rename to questions/00089-hard-required-keys/template.ts
diff --git a/questions/89-hard-required-keys/test-cases.ts b/questions/00089-hard-required-keys/test-cases.ts
similarity index 98%
rename from questions/89-hard-required-keys/test-cases.ts
rename to questions/00089-hard-required-keys/test-cases.ts
index b264b5d6c..ad9248db7 100644
--- a/questions/89-hard-required-keys/test-cases.ts
+++ b/questions/00089-hard-required-keys/test-cases.ts
@@ -1,8 +1,8 @@
-import type { Equal, Expect } from '@type-challenges/utils'
-
-type cases = [
- Expect, 'a'>>,
- Expect, 'a'>>,
- Expect, 'a' | 'c' | 'd'>>,
- Expect, never>>,
+import type { Equal, Expect } from '@type-challenges/utils'
+
+type cases = [
+ Expect, 'a'>>,
+ Expect, 'a'>>,
+ Expect, 'a' | 'c' | 'd'>>,
+ Expect, never>>,
]
diff --git a/questions/90-hard-optional-keys/README.ja.md b/questions/00090-hard-optional-keys/README.ja.md
similarity index 77%
rename from questions/90-hard-optional-keys/README.ja.md
rename to questions/00090-hard-optional-keys/README.ja.md
index 7776caeb3..56e2181da 100644
--- a/questions/90-hard-optional-keys/README.ja.md
+++ b/questions/00090-hard-optional-keys/README.ja.md
@@ -2,4 +2,4 @@
オプショナルなキーの Union を抽出する高度なユーティリティ型 `OptionalKeys` を実装してください。
-
関連する課題
\ No newline at end of file
+
関連する課題
\ No newline at end of file
diff --git a/questions/90-hard-optional-keys/README.md b/questions/00090-hard-optional-keys/README.md
similarity index 76%
rename from questions/90-hard-optional-keys/README.md
rename to questions/00090-hard-optional-keys/README.md
index 47129d9cf..554ba52bb 100644
--- a/questions/90-hard-optional-keys/README.md
+++ b/questions/00090-hard-optional-keys/README.md
@@ -3,4 +3,4 @@
Implement the advanced util type `OptionalKeys`, which picks all the optional keys into a union.
-
Related Challenges
\ No newline at end of file
+
Related Challenges
\ No newline at end of file
diff --git a/questions/90-hard-optional-keys/README.zh-CN.md b/questions/00090-hard-optional-keys/README.zh-CN.md
similarity index 75%
rename from questions/90-hard-optional-keys/README.zh-CN.md
rename to questions/00090-hard-optional-keys/README.zh-CN.md
index 5f5cdba33..2338b01e2 100644
--- a/questions/90-hard-optional-keys/README.zh-CN.md
+++ b/questions/00090-hard-optional-keys/README.zh-CN.md
@@ -4,4 +4,4 @@
实现高级util类型`OptionalKeys`,该类型将所有可选键合并为一个并集。
-
相关挑战
\ No newline at end of file
+
相关挑战
\ No newline at end of file
diff --git a/questions/90-hard-optional-keys/info.yml b/questions/00090-hard-optional-keys/info.yml
similarity index 100%
rename from questions/90-hard-optional-keys/info.yml
rename to questions/00090-hard-optional-keys/info.yml
diff --git a/questions/90-hard-optional-keys/template.ts b/questions/00090-hard-optional-keys/template.ts
similarity index 100%
rename from questions/90-hard-optional-keys/template.ts
rename to questions/00090-hard-optional-keys/template.ts
diff --git a/questions/90-hard-optional-keys/test-cases.ts b/questions/00090-hard-optional-keys/test-cases.ts
similarity index 98%
rename from questions/90-hard-optional-keys/test-cases.ts
rename to questions/00090-hard-optional-keys/test-cases.ts
index ba3aaca44..d021cd9a0 100644
--- a/questions/90-hard-optional-keys/test-cases.ts
+++ b/questions/00090-hard-optional-keys/test-cases.ts
@@ -1,8 +1,8 @@
-import type { Equal, Expect } from '@type-challenges/utils'
-
-type cases = [
- Expect, 'b'>>,
- Expect, 'b'>>,
- Expect, 'b' | 'c' | 'd'>>,
- Expect, never>>,
+import type { Equal, Expect } from '@type-challenges/utils'
+
+type cases = [
+ Expect, 'b'>>,
+ Expect, 'b'>>,
+ Expect, 'b' | 'c' | 'd'>>,
+ Expect, never>>,
]
diff --git a/questions/106-medium-trimleft/README.ja.md b/questions/00106-medium-trimleft/README.ja.md
similarity index 80%
rename from questions/106-medium-trimleft/README.ja.md
rename to questions/00106-medium-trimleft/README.ja.md
index de38e4578..125b069c0 100644
--- a/questions/106-medium-trimleft/README.ja.md
+++ b/questions/00106-medium-trimleft/README.ja.md
@@ -9,4 +9,4 @@ type trimed = TrimLeft<' Hello World '> // expected to be 'Hello World '
```
-
関連する課題
+
関連する課題
diff --git a/questions/106-medium-trimleft/README.md b/questions/00106-medium-trimleft/README.md
similarity index 78%
rename from questions/106-medium-trimleft/README.md
rename to questions/00106-medium-trimleft/README.md
index 5d74ece36..4be41dd41 100644
--- a/questions/106-medium-trimleft/README.md
+++ b/questions/00106-medium-trimleft/README.md
@@ -1,12 +1,12 @@
-Trim Left
by Anthony Fu @antfu
-
-Implement `TrimLeft` which takes an exact string type and returns a new string with the whitespace beginning removed.
-
-For example
-
-```ts
-type trimed = TrimLeft<' Hello World '> // expected to be 'Hello World '
-```
-
-
-
Related Challenges
+Trim Left
by Anthony Fu @antfu
+
+Implement `TrimLeft` which takes an exact string type and returns a new string with the whitespace beginning removed.
+
+For example
+
+```ts
+type trimed = TrimLeft<' Hello World '> // expected to be 'Hello World '
+```
+
+
+
Related Challenges
diff --git a/questions/106-medium-trimleft/README.zh-CN.md b/questions/00106-medium-trimleft/README.zh-CN.md
similarity index 79%
rename from questions/106-medium-trimleft/README.zh-CN.md
rename to questions/00106-medium-trimleft/README.zh-CN.md
index c8fe2aa8e..7d1224380 100644
--- a/questions/106-medium-trimleft/README.zh-CN.md
+++ b/questions/00106-medium-trimleft/README.zh-CN.md
@@ -8,4 +8,4 @@
type trimed = TrimLeft<' Hello World '> // 应推导出 'Hello World '
```
-
相关挑战
+
相关挑战
diff --git a/questions/106-medium-trimleft/info.yml b/questions/00106-medium-trimleft/info.yml
similarity index 100%
rename from questions/106-medium-trimleft/info.yml
rename to questions/00106-medium-trimleft/info.yml
diff --git a/questions/106-medium-trimleft/template.ts b/questions/00106-medium-trimleft/template.ts
similarity index 100%
rename from questions/106-medium-trimleft/template.ts
rename to questions/00106-medium-trimleft/template.ts
diff --git a/questions/106-medium-trimleft/test-cases.ts b/questions/00106-medium-trimleft/test-cases.ts
similarity index 97%
rename from questions/106-medium-trimleft/test-cases.ts
rename to questions/00106-medium-trimleft/test-cases.ts
index 6eb20089d..a1b4b9296 100644
--- a/questions/106-medium-trimleft/test-cases.ts
+++ b/questions/00106-medium-trimleft/test-cases.ts
@@ -1,11 +1,11 @@
-import type { Equal, Expect } from '@type-challenges/utils'
-
-type cases = [
- Expect, 'str'>>,
- Expect, 'str'>>,
- Expect, 'str'>>,
- Expect, 'str '>>,
- Expect, 'foo bar '>>,
- Expect, ''>>,
- Expect, ''>>,
-]
+import type { Equal, Expect } from '@type-challenges/utils'
+
+type cases = [
+ Expect, 'str'>>,
+ Expect, 'str'>>,
+ Expect, 'str'>>,
+ Expect, 'str '>>,
+ Expect, 'foo bar '>>,
+ Expect, ''>>,
+ Expect, ''>>,
+]
diff --git a/questions/108-medium-trim/README.ja.md b/questions/00108-medium-trim/README.ja.md
similarity index 79%
rename from questions/108-medium-trim/README.ja.md
rename to questions/00108-medium-trim/README.ja.md
index 084c2266f..2418106fb 100644
--- a/questions/108-medium-trim/README.ja.md
+++ b/questions/00108-medium-trim/README.ja.md
@@ -9,4 +9,4 @@ type trimed = Trim<' Hello World '> // expected to be 'Hello World'
```
-
関連する課題
+
関連する課題
diff --git a/questions/108-medium-trim/README.md b/questions/00108-medium-trim/README.md
similarity index 78%
rename from questions/108-medium-trim/README.md
rename to questions/00108-medium-trim/README.md
index f00e89661..49e4b66d3 100644
--- a/questions/108-medium-trim/README.md
+++ b/questions/00108-medium-trim/README.md
@@ -1,12 +1,12 @@
-Trim
by Anthony Fu @antfu
-
-Implement `Trim` which takes an exact string type and returns a new string with the whitespace from both ends removed.
-
-For example
-
-```ts
-type trimmed = Trim<' Hello World '> // expected to be 'Hello World'
-```
-
-
-
Related Challenges
+Trim
by Anthony Fu @antfu
+
+Implement `Trim` which takes an exact string type and returns a new string with the whitespace from both ends removed.
+
+For example
+
+```ts
+type trimmed = Trim<' Hello World '> // expected to be 'Hello World'
+```
+
+
+
Related Challenges
diff --git a/questions/108-medium-trim/README.zh-CN.md b/questions/00108-medium-trim/README.zh-CN.md
similarity index 77%
rename from questions/108-medium-trim/README.zh-CN.md
rename to questions/00108-medium-trim/README.zh-CN.md
index 9c1b896a0..88c99e152 100644
--- a/questions/108-medium-trim/README.zh-CN.md
+++ b/questions/00108-medium-trim/README.zh-CN.md
@@ -9,5 +9,5 @@ type trimed = Trim<' Hello World '> // expected to be 'Hello World'
```
-
相关挑战
+
相关挑战
diff --git a/questions/108-medium-trim/info.yml b/questions/00108-medium-trim/info.yml
similarity index 100%
rename from questions/108-medium-trim/info.yml
rename to questions/00108-medium-trim/info.yml
diff --git a/questions/108-medium-trim/template.ts b/questions/00108-medium-trim/template.ts
similarity index 100%
rename from questions/108-medium-trim/template.ts
rename to questions/00108-medium-trim/template.ts
diff --git a/questions/108-medium-trim/test-cases.ts b/questions/00108-medium-trim/test-cases.ts
similarity index 97%
rename from questions/108-medium-trim/test-cases.ts
rename to questions/00108-medium-trim/test-cases.ts
index c13b03532..7e5f6afa3 100644
--- a/questions/108-medium-trim/test-cases.ts
+++ b/questions/00108-medium-trim/test-cases.ts
@@ -1,12 +1,12 @@
-import type { Equal, Expect } from '@type-challenges/utils'
-
-type cases = [
- Expect, 'str'>>,
- Expect, 'str'>>,
- Expect, 'str'>>,
- Expect, 'str'>>,
- Expect, 'str'>>,
- Expect, 'foo bar'>>,
- Expect, ''>>,
- Expect, ''>>,
-]
+import type { Equal, Expect } from '@type-challenges/utils'
+
+type cases = [
+ Expect, 'str'>>,
+ Expect, 'str'>>,
+ Expect, 'str'>>,
+ Expect, 'str'>>,
+ Expect, 'str'>>,
+ Expect, 'foo bar'>>,
+ Expect, ''>>,
+ Expect, ''>>,
+]
diff --git a/questions/110-medium-capitalize/README.ja.md b/questions/00110-medium-capitalize/README.ja.md
similarity index 100%
rename from questions/110-medium-capitalize/README.ja.md
rename to questions/00110-medium-capitalize/README.ja.md
diff --git a/questions/110-medium-capitalize/README.md b/questions/00110-medium-capitalize/README.md
similarity index 99%
rename from questions/110-medium-capitalize/README.md
rename to questions/00110-medium-capitalize/README.md
index 34815887d..26644e34c 100644
--- a/questions/110-medium-capitalize/README.md
+++ b/questions/00110-medium-capitalize/README.md
@@ -1,12 +1,12 @@
-Capitalize
by Anthony Fu @antfu
-
-Implement `Capitalize` which converts the first letter of a string to uppercase and leave the rest as-is.
-
-For example
-
-```ts
-type capitalized = Capitalize<'hello world'> // expected to be 'Hello world'
-```
-
-
-
+Capitalize
by Anthony Fu @antfu
+
+Implement `Capitalize` which converts the first letter of a string to uppercase and leave the rest as-is.
+
+For example
+
+```ts
+type capitalized = Capitalize<'hello world'> // expected to be 'Hello world'
+```
+
+
+
diff --git a/questions/110-medium-capitalize/README.zh-CN.md b/questions/00110-medium-capitalize/README.zh-CN.md
similarity index 100%
rename from questions/110-medium-capitalize/README.zh-CN.md
rename to questions/00110-medium-capitalize/README.zh-CN.md
diff --git a/questions/110-medium-capitalize/info.yml b/questions/00110-medium-capitalize/info.yml
similarity index 100%
rename from questions/110-medium-capitalize/info.yml
rename to questions/00110-medium-capitalize/info.yml
diff --git a/questions/110-medium-capitalize/template.ts b/questions/00110-medium-capitalize/template.ts
similarity index 100%
rename from questions/110-medium-capitalize/template.ts
rename to questions/00110-medium-capitalize/template.ts
diff --git a/questions/110-medium-capitalize/test-cases.ts b/questions/00110-medium-capitalize/test-cases.ts
similarity index 97%
rename from questions/110-medium-capitalize/test-cases.ts
rename to questions/00110-medium-capitalize/test-cases.ts
index e8a06dc8a..ac965694c 100644
--- a/questions/110-medium-capitalize/test-cases.ts
+++ b/questions/00110-medium-capitalize/test-cases.ts
@@ -1,34 +1,34 @@
-import type { Equal, Expect } from '@type-challenges/utils'
-
-type cases = [
- Expect, 'Foobar'>>,
- Expect, 'FOOBAR'>>,
- Expect, 'Foo bar'>>,
- Expect, ''>>,
- Expect, 'A'>>,
- Expect, 'B'>>,
- Expect, 'C'>>,
- Expect, 'D'>>,
- Expect, 'E'>>,
- Expect, 'F'>>,
- Expect, 'G'>>,
- Expect, 'H'>>,
- Expect, 'I'>>,
- Expect, 'J'>>,
- Expect, 'K'>>,
- Expect, 'L'>>,
- Expect, 'M'>>,
- Expect, 'N'>>,
- Expect, 'O'>>,
- Expect, 'P'>>,
- Expect, 'Q'>>,
- Expect, 'R'>>,
- Expect, 'S'>>,
- Expect, 'T'>>,
- Expect, 'U'>>,
- Expect, 'V'>>,
- Expect, 'W'>>,
- Expect, 'X'>>,
- Expect, 'Y'>>,
- Expect, 'Z'>>,
-]
+import type { Equal, Expect } from '@type-challenges/utils'
+
+type cases = [
+ Expect, 'Foobar'>>,
+ Expect, 'FOOBAR'>>,
+ Expect, 'Foo bar'>>,
+ Expect, ''>>,
+ Expect, 'A'>>,
+ Expect, 'B'>>,
+ Expect, 'C'>>,
+ Expect, 'D'>>,
+ Expect, 'E'>>,
+ Expect, 'F'>>,
+ Expect, 'G'>>,
+ Expect, 'H'>>,
+ Expect, 'I'>>,
+ Expect, 'J'>>,
+ Expect, 'K'>>,
+ Expect, 'L'>>,
+ Expect, 'M'>>,
+ Expect, 'N'>>,
+ Expect, 'O'>>,
+ Expect, 'P'>>,
+ Expect, 'Q'>>,
+ Expect, 'R'>>,
+ Expect, 'S'>>,
+ Expect, 'T'>>,
+ Expect, 'U'>>,
+ Expect, 'V'>>,
+ Expect, 'W'>>,
+ Expect, 'X'>>,
+ Expect, 'Y'>>,
+ Expect, 'Z'>>,
+]
diff --git a/questions/112-hard-capitalizewords/README.ja.md b/questions/00112-hard-capitalizewords/README.ja.md
similarity index 100%
rename from questions/112-hard-capitalizewords/README.ja.md
rename to questions/00112-hard-capitalizewords/README.ja.md
diff --git a/questions/112-hard-capitalizewords/README.md b/questions/00112-hard-capitalizewords/README.md
similarity index 99%
rename from questions/112-hard-capitalizewords/README.md
rename to questions/00112-hard-capitalizewords/README.md
index 492b65350..0b22051f0 100644
--- a/questions/112-hard-capitalizewords/README.md
+++ b/questions/00112-hard-capitalizewords/README.md
@@ -1,12 +1,12 @@
-Capitalize Words
by Anthony Fu @antfu
-
-Implement `CapitalizeWords` which converts the first letter of **each word of a string** to uppercase and leaves the rest as-is.
-
-For example
-
-```ts
-type capitalized = CapitalizeWords<'hello world, my friends'> // expected to be 'Hello World, My Friends'
-```
-
-
-
+Capitalize Words
by Anthony Fu @antfu
+
+Implement `CapitalizeWords` which converts the first letter of **each word of a string** to uppercase and leaves the rest as-is.
+
+For example
+
+```ts
+type capitalized = CapitalizeWords<'hello world, my friends'> // expected to be 'Hello World, My Friends'
+```
+
+
+
diff --git a/questions/112-hard-capitalizewords/info.yml b/questions/00112-hard-capitalizewords/info.yml
similarity index 100%
rename from questions/112-hard-capitalizewords/info.yml
rename to questions/00112-hard-capitalizewords/info.yml
diff --git a/questions/112-hard-capitalizewords/template.ts b/questions/00112-hard-capitalizewords/template.ts
similarity index 100%
rename from questions/112-hard-capitalizewords/template.ts
rename to questions/00112-hard-capitalizewords/template.ts
diff --git a/questions/112-hard-capitalizewords/test-cases.ts b/questions/00112-hard-capitalizewords/test-cases.ts
similarity index 98%
rename from questions/112-hard-capitalizewords/test-cases.ts
rename to questions/00112-hard-capitalizewords/test-cases.ts
index 8ce99e4ba..d0e8592f2 100644
--- a/questions/112-hard-capitalizewords/test-cases.ts
+++ b/questions/00112-hard-capitalizewords/test-cases.ts
@@ -1,10 +1,10 @@
-import type { Equal, Expect } from '@type-challenges/utils'
-
-type cases = [
- Expect, 'Foobar'>>,
- Expect, 'FOOBAR'>>,
- Expect, 'Foo Bar'>>,
- Expect, 'Foo Bar Hello World'>>,
- Expect, 'Foo Bar.Hello,World'>>,
- Expect, ''>>,
+import type { Equal, Expect } from '@type-challenges/utils'
+
+type cases = [
+ Expect, 'Foobar'>>,
+ Expect, 'FOOBAR'>>,
+ Expect, 'Foo Bar'>>,
+ Expect, 'Foo Bar Hello World'>>,
+ Expect, 'Foo Bar.Hello,World'>>,
+ Expect, ''>>,
]
diff --git a/questions/114-hard-camelcase/README.ja.md b/questions/00114-hard-camelcase/README.ja.md
similarity index 79%
rename from questions/114-hard-camelcase/README.ja.md
rename to questions/00114-hard-camelcase/README.ja.md
index 3d53e48eb..6884d71a6 100644
--- a/questions/114-hard-camelcase/README.ja.md
+++ b/questions/00114-hard-camelcase/README.ja.md
@@ -10,4 +10,4 @@ type camelCase2 = CamelCase<'HELLO_WORLD_WITH_TYPES'> // expected to be same as
```
-
関連する課題
+
関連する課題
diff --git a/questions/114-hard-camelcase/README.md b/questions/00114-hard-camelcase/README.md
similarity index 77%
rename from questions/114-hard-camelcase/README.md
rename to questions/00114-hard-camelcase/README.md
index 7cde5949c..2621c5d46 100644
--- a/questions/114-hard-camelcase/README.md
+++ b/questions/00114-hard-camelcase/README.md
@@ -1,13 +1,13 @@
-CamelCase
by Anthony Fu @antfu
-
-Implement `CamelCase` which converts `snake_case` string to `camelCase`.
-
-For example
-
-```ts
-type camelCase1 = CamelCase<'hello_world_with_types'> // expected to be 'helloWorldWithTypes'
-type camelCase2 = CamelCase<'HELLO_WORLD_WITH_TYPES'> // expected to be same as previous one
-```
-
-
-
Related Challenges
+CamelCase
by Anthony Fu @antfu
+
+Implement `CamelCase` which converts `snake_case` string to `camelCase`.
+
+For example
+
+```ts
+type camelCase1 = CamelCase<'hello_world_with_types'> // expected to be 'helloWorldWithTypes'
+type camelCase2 = CamelCase<'HELLO_WORLD_WITH_TYPES'> // expected to be same as previous one
+```
+
+
+
Related Challenges
diff --git a/questions/114-hard-camelcase/info.yml b/questions/00114-hard-camelcase/info.yml
similarity index 100%
rename from questions/114-hard-camelcase/info.yml
rename to questions/00114-hard-camelcase/info.yml
diff --git a/questions/114-hard-camelcase/template.ts b/questions/00114-hard-camelcase/template.ts
similarity index 100%
rename from questions/114-hard-camelcase/template.ts
rename to questions/00114-hard-camelcase/template.ts
diff --git a/questions/114-hard-camelcase/test-cases.ts b/questions/00114-hard-camelcase/test-cases.ts
similarity index 97%
rename from questions/114-hard-camelcase/test-cases.ts
rename to questions/00114-hard-camelcase/test-cases.ts
index c1f32aea1..7c488d7e6 100644
--- a/questions/114-hard-camelcase/test-cases.ts
+++ b/questions/00114-hard-camelcase/test-cases.ts
@@ -1,10 +1,10 @@
-import type { Equal, Expect } from '@type-challenges/utils'
-
-type cases = [
- Expect, 'foobar'>>,
- Expect, 'foobar'>>,
- Expect, 'fooBar'>>,
- Expect, 'fooBarHelloWorld'>>,
- Expect, 'helloWorldWithTypes'>>,
- Expect, ''>>,
+import type { Equal, Expect } from '@type-challenges/utils'
+
+type cases = [
+ Expect, 'foobar'>>,
+ Expect, 'foobar'>>,
+ Expect, 'fooBar'>>,
+ Expect, 'fooBarHelloWorld'>>,
+ Expect, 'helloWorldWithTypes'>>,
+ Expect, ''>>,
]
diff --git a/questions/116-medium-replace/README.ja.md b/questions/00116-medium-replace/README.ja.md
similarity index 99%
rename from questions/116-medium-replace/README.ja.md
rename to questions/00116-medium-replace/README.ja.md
index b533842d0..ef1ec8782 100644
--- a/questions/116-medium-replace/README.ja.md
+++ b/questions/00116-medium-replace/README.ja.md
@@ -1,11 +1,11 @@
-Replace
by Anthony Fu @antfu
-
-文字列`S`に含まれる文字`From`を`To`に一度だけ置き換える型`Replace`を実装します。
-
-例えば
-
-```ts
-type replaced = Replace<'types are fun!', 'fun', 'awesome'>; // expected to be 'types are awesome!'
-```
-
-
+Replace
by Anthony Fu @antfu
+
+文字列`S`に含まれる文字`From`を`To`に一度だけ置き換える型`Replace`を実装します。
+
+例えば
+
+```ts
+type replaced = Replace<'types are fun!', 'fun', 'awesome'>; // expected to be 'types are awesome!'
+```
+
+
diff --git a/questions/116-medium-replace/README.md b/questions/00116-medium-replace/README.md
similarity index 99%
rename from questions/116-medium-replace/README.md
rename to questions/00116-medium-replace/README.md
index 392501873..1006052a2 100644
--- a/questions/116-medium-replace/README.md
+++ b/questions/00116-medium-replace/README.md
@@ -1,12 +1,12 @@
-Replace
by Anthony Fu @antfu
-
-Implement `Replace` which replace the string `From` with `To` once in the given string `S`
-
-For example
-
-```ts
-type replaced = Replace<'types are fun!', 'fun', 'awesome'> // expected to be 'types are awesome!'
-```
-
-
-
+Replace
by Anthony Fu @antfu
+
+Implement `Replace` which replace the string `From` with `To` once in the given string `S`
+
+For example
+
+```ts
+type replaced = Replace<'types are fun!', 'fun', 'awesome'> // expected to be 'types are awesome!'
+```
+
+
+
diff --git a/questions/116-medium-replace/README.zh-CN.md b/questions/00116-medium-replace/README.zh-CN.md
similarity index 99%
rename from questions/116-medium-replace/README.zh-CN.md
rename to questions/00116-medium-replace/README.zh-CN.md
index 124e7d1c7..e582b06e6 100644
--- a/questions/116-medium-replace/README.zh-CN.md
+++ b/questions/00116-medium-replace/README.zh-CN.md
@@ -1,12 +1,12 @@
-Replace
by Anthony Fu @antfu
-
-实现 `Replace` 将字符串 `S` 中的第一个子字符串 `From` 替换为 `To` 。
-
-例如
-
-```ts
-type replaced = Replace<'types are fun!', 'fun', 'awesome'> // 期望是 'types are awesome!'
-```
-
-
-
+Replace
by Anthony Fu @antfu
+
+实现 `Replace` 将字符串 `S` 中的第一个子字符串 `From` 替换为 `To` 。
+
+例如
+
+```ts
+type replaced = Replace<'types are fun!', 'fun', 'awesome'> // 期望是 'types are awesome!'
+```
+
+
+
diff --git a/questions/116-medium-replace/info.yml b/questions/00116-medium-replace/info.yml
similarity index 100%
rename from questions/116-medium-replace/info.yml
rename to questions/00116-medium-replace/info.yml
diff --git a/questions/116-medium-replace/template.ts b/questions/00116-medium-replace/template.ts
similarity index 100%
rename from questions/116-medium-replace/template.ts
rename to questions/00116-medium-replace/template.ts
diff --git a/questions/116-medium-replace/test-cases.ts b/questions/00116-medium-replace/test-cases.ts
similarity index 97%
rename from questions/116-medium-replace/test-cases.ts
rename to questions/00116-medium-replace/test-cases.ts
index d973790e8..64693c3f1 100644
--- a/questions/116-medium-replace/test-cases.ts
+++ b/questions/00116-medium-replace/test-cases.ts
@@ -1,9 +1,9 @@
-import type { Equal, Expect } from '@type-challenges/utils'
-
-type cases = [
- Expect, 'foofoo'>>,
- Expect, 'foofoobar'>>,
- Expect, 'foobarbar'>>,
- Expect, 'foobarbar'>>,
- Expect, ''>>,
-]
+import type { Equal, Expect } from '@type-challenges/utils'
+
+type cases = [
+ Expect, 'foofoo'>>,
+ Expect, 'foofoobar'>>,
+ Expect, 'foobarbar'>>,
+ Expect, 'foobarbar'>>,
+ Expect, ''>>,
+]
diff --git a/questions/119-medium-replaceall/README.ja.md b/questions/00119-medium-replaceall/README.ja.md
similarity index 99%
rename from questions/119-medium-replaceall/README.ja.md
rename to questions/00119-medium-replaceall/README.ja.md
index 143ea15f5..fc83bea6e 100644
--- a/questions/119-medium-replaceall/README.ja.md
+++ b/questions/00119-medium-replaceall/README.ja.md
@@ -1,11 +1,11 @@
-