14-15 パズルの実装に興味があります。
昇順で 0 ~ 15 の値を持つ配列を作成しています。
S = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
今、私がやりたいのは、それらをシャッフルして、パズルの新しいインスタンスを作成することです。ただし、「奇妙な順列」でボードを作成すると、解決できないことはわかっています。
ウィキペディアによると、偶数順列でパズルを作成する必要があります。これは、偶数回のスワップを確実に行う必要があることを意味していると思いますか?
フィッシャー・イェーツをどのように変更して、最後に順列が均等になるようにしますか? 配列内のすべての要素に対してスワップを行うと、16回のスワップになり、偶数順列になると思います。ただし、自分自身とのスワップについて心配する必要はありますか? 有効なパズルがあることを確認する他の方法はありますか?