0
0

英単語になるカラーコードを総当たりで探す

Last updated at Posted at 2024-08-11

やりたかったこと

カラーコードで使用するアルファベット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 (建物の)正面

0
0
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0