この解答例はChatGPTによって生成されています,正しいかは自己判断で。 皆の投稿からも解答例が見つかるかもしれませんよ。
BFE.devでのAI解答例 - JavaScript コーディング問題
119. tokenizerを実装する
function* tokenize(str) { const len = str.length let index = 0 while (index < len) { let char = str.charAt(index) if (char === ' ') { index++ continue } if (char === '(' || char === ')') { yield char index++ continue } let token = char index++ while (index < len) { char = str.charAt(index) if (char === ' ' || char === '(' || char === ')') { break } token += char index++ } yield token }}
この関数では、与えられた文字列を1文字ずつ解析し、指定されたルールに沿ってトークン(token)に分割します。
- スペースは無視されます。
(
と)
は各々1つのトークンとなります。- それ以外の文字は1つのトークンとして、その後に続く同じ種類の文字がなくなるまで結合されます。これは、整数と演算子に対応するために使用されます。
次に、関数が値を生成する方法は、ジェネレータ機能の使用方法に従います。トークンを作成すると、yield
ステートメントによってトークンがジェネレータから取り出され、それを呼び出し元に返します。
このように作成されたトークンは、計算エンジンで使用されることができます。