29 lines
1001 B
JavaScript
29 lines
1001 B
JavaScript
|
//ファイル読み込みライブラリを使用
|
|||
|
const fs = require("fs");
|
|||
|
//ファイル名の指定(./はこのjsファイルと同階層にあることを明示)
|
|||
|
const src = "./henshin.txt";
|
|||
|
//ファイルを読み込み
|
|||
|
const bytes = fs.readFileSync(src);
|
|||
|
//バイト列から文字列に
|
|||
|
const txt = bytes.toString();
|
|||
|
//文字の配列にする
|
|||
|
const arr = Array.from(txt);
|
|||
|
|
|||
|
//文字コードをずらす確率
|
|||
|
let probability = 0.0;
|
|||
|
const shifted = arr.map(c => {
|
|||
|
//配列の最初:0%-最後:100%になるように確率を変更していく
|
|||
|
probability += 1 / arr.length;
|
|||
|
//randomは0~1の乱数
|
|||
|
if (Math.random() < probability) {
|
|||
|
//配列の文字コードを1つ隣へずらす
|
|||
|
return String.fromCodePoint(c.codePointAt(0) + 1)
|
|||
|
} else {
|
|||
|
return c
|
|||
|
}
|
|||
|
});
|
|||
|
//ソートした配列を(区切り文字なしで)結合
|
|||
|
const shifted_str = shifted.join("");
|
|||
|
//ファイルに保存
|
|||
|
fs.writeFileSync("henshin_shifted_grad.txt", shifted_str);
|