やりたかったこと
カラーコードで使用するアルファベット6種類6文字で、英単語になるものがいくつあるのか知りたい。
検索したところ総当たりで調べた結果は見つけられなかった。
→ せっかくなのでプログラムを書いて調べてみることにしました。
※先行記事:
方針
- Node.jsを使って作成し、コマンドラインで呼び出すと結果が表示されるようにする。
- カラーコードに使える6種類6文字の組み合わせをすべて調べて、辞書に存在するものを抽出する。
やったこと
パブリックドメインの英和辞書を取得
こちらからJSON形式のものをお借りしました。
準備
ディレクトリ作成、package.jsonの作成
$ mkdir colorcodeapp
$ cd colorcodeapp
$ npm init
辞書のJSONファイルの読み込みにECMAScriptモジュールを使用できるようにするため、以下のコマンドでpackage.jsonにtypeフィールドを追加してモジュール形式を指定する。
$ npm pkg set type=module
DLしたejdict.jsonをcolorcodeappディレクトリに保存しておく。
JS
colorcodeappディレクトリにmain.jsファイルを作成
main.js
import { readFile } from 'fs/promises'
const json = JSON.parse(await readFile('./ejdict.json'))
const chars = ['a', 'b', 'c', 'd', 'e', 'f'];
const codes = [];
//文字列生成して存在チェック
for (let i=0; i<6; i++){
for (let j=0; j<6; j++){
for (let k=0; k<6; k++){
for (let l=0; l<6; l++){
for (let m=0; m<6; m++){
for (let n=0; n<6; n++){
let code = chars[i] + chars[j] + chars[k] + chars[l] + chars[m] + chars[n];
if (code in json){
codes.push(code);
}
}
}
}
}
}
}
for (let i=0; i<codes.length; i++){
console.log('#' + codes[i] + ' : ' + json[codes[i]]);
}
結果
コマンドラインからアプリを呼び出して結果を確認します。
$ cd colorcodeapp
$ node main.js
#accede : (要求・提案などに)同意する,承認する(agree)《+『to』+『名』》 / (王位・財産などを)継承する;(公職などに)就任する《+『to』+『名』》
#decade : 『10年間』
#deface : 表面を傷つける[摩滅する]; 読めなくする, わからなくする・〈外観〉'を'醜くする・…'を'摩損する,すり消す,読みにくくする
#efface : (…から)〈文字・記憶など〉‘を'消す,ぬぐい去る《+『名』+『from』+『名』》
#facade : (建物の)正面(front) / (物の)外観;見せかけ
5つだけヒットしました。
#accede
(要求・提案などに)同意する,承認する
#decade
10年間
#deface
表面を傷つける
#efface
(…から)〈文字・記憶など〉を消す
#facade
(建物の)正面