Tip 1. アルゴリズムの解答コードをそのまま貼り付け
解答コードを関数ごとそのまま貼り付けるだけ。コメントもOK、パラメータは自動で検出されます。入力値を埋めて実行を押してください。
入力例
// 配列を昇順にソートして返す
//
// 解き方
// 隣接する2つの要素を比較し、大きい方を後ろへ送る。
// 1周ごとに最大値が末尾に確定する。
// 時間計算量: O(n^2)
function bubbleSort(arr) {
const n = arr.length;
for (let i = 0; i < n - 1; i++) {
for (let j = 0; j < n - 1 - i; j++) {
// 前の方が大きければ交換
if (arr[j] > arr[j + 1]) {
const temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
return arr;
}ライブプレビュー
ボタンを押してみてください。実際のアプリでは入力値も変更できます。
Tip 2. 関数のないただのコードでも動作します
関数で囲まれていないコードでも問題なく実行できます。パラメータの入力は不要 — そのまま ▶ 実行 を押してください。
const arr = [5, 3, 8, 1, 2];
let total = 0;
for (let i = 0; i < arr.length; i++) {
total += arr[i];
}
console.log(total);Tip 3. ブログやNotionに埋め込み
ブログ、Notion、Obsidianなど、iframeに対応する場所であればどこでも実行画面を埋め込めます。実行画面の上部にある Embed ボタンをクリックすると、iframeコードをコピーできます。高さの調整も可能で、Notionでは /embed を使ってURLを貼り付けるだけです。
<iframe src="https://recursive.oilater.com/embed?preset=bubble-sort" width="100%" height="600" style="border:none;border-radius:8px;" />
Tip 4. PythonとJavaScriptに対応
- Pythonは標準ライブラリ(collections、functools、itertoolsなど)を自由に使えます。
- JavaScript / TypeScriptの型は自動で除去されます。Math、JSON、Arrayメソッドなどの組み込みAPIはすべて動作します。
Tip 5. 未対応の機能
- 非同期コード(setTimeout、Promise、async/await)にはまだ対応していません。
- JavaScriptのclass構文はまだ動作しません。
- Pythonは標準ライブラリのみ対応。numpy、pandasなどは使えません。
- 非常に大きな入力では実行が停止することがあります。テストサイズは適度に保ってください。
- Java、C、C++などはブラウザで直接実行できず、別途サーバーが必要です。現在このプロジェクトはサーバーなしで動作しているため、これらの言語はまだ対応していません。
- 複数行入力(競技プログラミングサイトのようなstdin形式の入力など)には対応していません。値は関数のパラメータとしてのみ渡せます。
Tip 6. フィードバックはいつでも歓迎
機能リクエストやバグ報告はいつでも歓迎します。GitHub Issuesに投稿してください。PRでの直接コントリビュートも大歓迎です。
更新履歴
GitHub Issuesをもとに機能を改善しています。すべてのIssueを見る →
- 関数呼び出しをスタックフレームとして可視化
- 再帰呼び出しツリーのマウスドラッグによるパン操作
- Python対応
- 埋め込み対応(ブログ、Notion、Obsidianなど)
- i18n対応(韓国語 / 英語)
- Docsページの追加