Latihan 1 dari materi Globbing & Brace Expansion di Terminal — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Lengkapi dua function untuk mensimulasikan rename massal dengan glob dan brace. expandBrace(template) di kode awal sudah jadi (mendukung {a,b}, {1..3}, dan {01..03}), biarkan begitu, begitu juga sepuluh baris console.log-nya.
matchGlob(pattern, filename) mengembalikan true kalau filename cocok dengan pola glob pattern, dan false kalau gak. Cukup dukung * (nol atau lebih karakter apa saja) dan ? (tepat satu karakter). Karakter lain, termasuk titik, harus sama persis, dan polanya harus cocok dengan seluruh nama dari awal sampai akhir.
batchRename(files, fromPattern, toTemplate): saring files yang cocok dengan fromPattern (pakai matchGlob), jabarkan toTemplate dengan expandBrace, lalu pasangkan sesuai urutan: file cocok pertama dapat nama pertama, dan seterusnya. Kembalikan array berisi { from, to }. Kalau gak ada yang cocok, kembalikan array kosong.
Output-nya harus persis sepuluh baris ini, berurutan:
["file.js","file.ts"]
["img-1.png","img-2.png","img-3.png"]
["img-01.png","img-02.png","img-03.png"]
true
false
true
false
2
a.txt->backup-01.txt
b.txt->backup-02.txt
Ada juga cek tambahan: matchGlob("*.txt", "note_txt") harus false, batchRename(["x.md", "y.txt"], "*.md", "old-{1..2}.md")[0].to harus "old-1.md", dan batchRename(["a.js"], "*.txt", "b-{1..2}.txt").length harus 0.