Skip to content

Commit

Permalink
fix: improve prompt
Browse files Browse the repository at this point in the history
  • Loading branch information
exKAZUu committed Dec 19, 2024
1 parent 0c7b3b2 commit 0f77d05
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 32 deletions.
18 changes: 10 additions & 8 deletions HOW_TO_CREATE_PROBLEMS.md
Original file line number Diff line number Diff line change
Expand Up @@ -126,14 +126,16 @@ class MyTurtle2 {
```
以下のルールに従って、`java` のコードをJavaScript言語に変換して、 `instrumented` に出力してください。
1. 静的フィールド(つまり、グローバル変数)を扱う場合、 `myGlobal.[クラス名] = { [静的フィールド名]: [初期値] };` を先頭に置くこと。例: `myGlobal.Settings = { speed: 0 };`
2. 静的メソッドは普通の関数で代替すること。
3. 独自クラスの定義が含まれている場合、 `main` 関数を定義して、末尾で `main()` を呼び出すこと。
4. コード中で定義しているコンストラクタの呼び出しに `// caller` が付いている場合、 `call([クラス名], [仮引数の名前のリスト])([実数名のリスト])` に書き換えること。例: `const t2 = call(MyTurtle2, 'x', 'y')(2, 2);`
5. コード中で定義している関数の呼び出しに `// caller` が付いている場合、 `call([関数名], [仮引数の名前のリスト])([実数名のリスト])` に書き換えること。例: `call(increaseSpeed)()`
6. コード中で定義しているメソッドの呼び出しに `// caller` が付いている場合、 `call([オブジェクト名].[関数名].bind([オブジェクト名]), [仮引数の名前のリスト])([実数名のリスト])` に書き換えること。例: `call(t1.moveForward.bind(t1, 'speed'))(3)`
7. `Turtle` 以外の値をローカル変数に代入する場合は `s.set([変数名], [右辺値])` を、参照する場合は `s.get([変数名])` を使うこと。 例: `i++` -> `s.set('i', s.get('i') + 1)`
8. フィールド変数は`s.set`や`s.get`を使わずに、通常通り `this.[変数名]` を使うこと。例: `this.t.前に進む();`
1. 静的フィールド(つまり、グローバル変数)を扱う場合、 `myGlobal.<クラス名> = { <静的フィールド名>: <初期値> };` を先頭に置くこと。例: `myGlobal.Settings = { speed: 0 };`
2. コードにクラス宣言が含まれている場合、先頭で `main` 関数を定義して、末尾で `main()` を呼び出すこと。
3. 静的メソッドは普通の関数で代替すること。
4. コード中で定義しているコンストラクタの呼び出しに `// caller` が付いている場合、 `call(<クラス名>, '仮引数の名前1', '仮引数の名前2', ...)(実引数1, 実引数2, ...)` に書き換えること。例: `const t2 = call(MyTurtle2, 'x', 'y')(2, 2);`
5. コード中で定義している関数の呼び出しに `// caller` が付いている場合、 `call(<関数名>, '仮引数の名前1', '仮引数の名前2', ...)(実引数1, 実引数2, ...)` に書き換えること。例: `call(increaseSpeed)()`
6. コード中で定義しているメソッドの呼び出しに `// caller` が付いている場合、 `call(<オブジェクト名>.<関数名>.bind(<オブジェクト名>), '仮引数の名前1', '仮引数の名前2', ...)(実引数1, 実引数2, ...)` に書き換えること。例: `call(t1.moveForward.bind(t1, 'speed'))(3)`
7. `// step` のコメントを増やしたり減らしたりせずに、そのままの形で `// step` のコメントを残すこと。
8. すべての `// caller` のコメントを削除すること。
9. `Turtle` 以外の値(数値・文字列・配列など)をローカル変数に代入する場合は `s.set(<変数名>, <右辺値>)` を、参照する場合は `s.get(<変数名>)` を使うこと。 例: `i++` -> `s.set('i', s.get('i') + 1)`
10. フィールド変数では `s.set` や `s.get` を使わずに、 `this.[変数名]` を使うこと。例: `this.t.前に進む();`
```

8. Cursorの生成結果を手直しして完成させる。例:
Expand Down
31 changes: 14 additions & 17 deletions src/problems/problemData.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3659,33 +3659,30 @@ public class Main {
test5: {
instrumented: `
const t = new Turtle(); // step
t.forward();
t.forward();
t.turnRight();
t.forward();
t.forward();
t.forward();
t.forward();
t.前に進む(); // step
t.前に進む(); // step
t.右を向く(); // step
t.前に進む(); // step
t.前に進む(); // step
t.前に進む(); // step
t.前に進む(); // step
`,
java: `
public class Straight {
public static void main(String[] args) {
var c = new Turtle(); // step
c.forward(); // step
c.forward(); // step
c.turnRight(); // step
c.forward(); // step
c.forward(); // step
c.forward(); // step
c.forward(); // step
c.前に進む(); // step
c.前に進む(); // step
c.右を向く(); // step
c.前に進む(); // step
c.前に進む(); // step
c.前に進む(); // step
c.前に進む(); // step
}
}
`,
},
test9: {
// Javaの静的フィールド(つまり、グローバル変数)を扱う場合、 `myGlobal` を使うこと。
// 静的メソッドは普通の関数で代替すること。
// 独自クラスを定義するコードでは `main()` 関数を定義すること。
instrumented: `
myGlobal.Settings = { speed: 0 };
Expand Down
14 changes: 7 additions & 7 deletions tests/unit/traceProgram.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -463,13 +463,13 @@ public class Main {
public class Straight {
public static void main(String[] args) {
var c = new Turtle();
c.forward();
c.forward();
c.turnRight();
c.forward();
c.forward();
c.forward();
c.forward();
c.前に進む();
c.前に進む();
c.右を向く();
c.前に進む();
c.前に進む();
c.前に進む();
c.前に進む();
}
}
`.trim(),
Expand Down

0 comments on commit 0f77d05

Please sign in to comment.