ハロウイーンをウーロンハイにする置換
ハロウイーンをウーロンハイにする置換
ハロウィン
@motcho_tw: ハロウイーンに行列を掛けると…
https://gyazo.com/8ecf286a64ba06016f0f744e2cdd21bd
@motcho_tw: ハロウイーンをウーロンハイにする置換(1325)(46)は長さ4の巡回置換なので「ハロウイーン」「ウーロンハイ」ときた後に「ロハーイウン」「ーウハンロイ」という謎の言葉を経由してハロウイーンに戻る
2つの巡回置換の積
循環置換であれば逆行列が存在する?あんも.icon
ハロウイーン: [1 2 3 4 5 6]
ウーロンハイ: [3 5 2 6 1 4]
(1325)(46): [[1, 3, 2, 5], [4, 6]]
交換されているか確認する
code:jl
halloween = 1 2 3 4 5 6
mat = [0 0 0 0 1 0;
0 0 1 0 0 0;
1 0 0 0 0 0;
0 0 0 0 0 1;
0 1 0 0 0 0;
0 0 0 1 0 0]
halloween * mat
文字列を吐くようにする
横方向に書かれた文字に作用させるので、右から作用させる
code:jl
function convert_string(input_string, mat)
input_array = Int(ch) for ch in input_string # String型をVector{Int}型に変換
output_array = input_array' * mat # 置換行列を作用させる
output_string = Char(i) for i in output_array # Int型をChar型に戻す
return join(output_string)
end
# テスト
mat = 0 0 0 0 1 0; 0 0 1 0 0 0; 1 0 0 0 0 0; 0 0 0 0 0 1; 0 1 0 0 0 0; 0 0 0 1 0 0
t = convert_string("ハロウイーン", mat)
t = convert_string(t, mat) # 繰り返すとハロウィーンに戻る
任意の置換から、対応する行列を生成できるようにする
任意の置換から対応する行列を生成する