この解答例はChatGPTによって生成されています,正しいかは自己判断で。 皆の投稿からも解答例が見つかるかもしれませんよ。
BFE.devでのAI解答例 - JavaScript コーディング問題
153. uglify CSS class names
以下がJavaScriptの解答例です。順番の扱いや、リセットの方法などは解決策によって異なる可能性がありますが、この例ではリセット関数を定義し、アルファベットの組み合わせを生成する関数を作成しました。
const getUniqueClassName = (() => {
let counter = 0;
const reset = () => {
counter = 0;
};
return () => {
const charRange = [...Array(52).keys()].map(i => String.fromCharCode(i < 26 ? i + 65 : i + 71));
let result = "";
let remainder = counter;
do {
result = charRange[remainder % 52] + result;
remainder = Math.floor(remainder / 52);
} while (remainder > 0);
counter++;
return result;
};
})();
// Usage:
console.log(getUniqueClassName()); // "a"
console.log(getUniqueClassName()); // "b"
console.log(getUniqueClassName()); // "c"
console.log(getUniqueClassName()); // "aa"
console.log(getUniqueClassName()); // "ab"
console.log(getUniqueClassName()); // "ac"
console.log(getUniqueClassName()); // "ZZ"
console.log(getUniqueClassName()); // "aaa"
console.log(getUniqueClassName()); // "aab"
console.log(getUniqueClassName()); // "aac"
getUniqueClassName.reset();
console.log(getUniqueClassName()); // "a"
この例では、getUniqueClassName()
のロジックは、まずアルファベットを含む配列charRange
を作成します。この配列の長さは52で、最初の26要素は大文字のアルファベット、次の26要素は小文字のアルファベットです。remainder
を計算しながら、この配列から文字を選択し、文字列result
に追加します。そして、counter
をインクリメントして、最終的な文字列を返します。
reset
関数は、計算中のカウンターを初期化します。最終的に、getUniqueClassName
関数によって生成されるアルファベットコードは、アルファベット順に並べられ、長さでソートされるため、強力で一意なクラス名が生成されます。