【プログラム】乱数の数列

<はじめに>
例えば、下記のような0~6の7個の数
 [0 1 2 3 4 5 6]
を下記のようにランダムで並べることを考えたい。
 [2 3 5 0 6 4 1]
本記事では、備忘録としてその方法を記載します。

Javascriptのプログラムを作成するときに纏めたもののため、本記事も基本的にJavascriptの記述で記載する。
箇条書きで書いていますが、下の方にある図をメインで見てもらったほうがよいかもです。


<乱数の数列の作成方法>
※下記0~6の7個の数を例に記載。

① 一次元の配列に、並べる前の数を入れておく。(ここでは、変数名tempとする。)
例.
var temp = [0, 1, 2, 3, 4, 5, 6];

② ランダム関数で0~6の範囲で乱数(整数値)を取得する。(ここでは、変数名randとする。)

例.
rand = Math.floor(Math.random() * 7);
※Math.random()関数は、0以上1未満の範囲から乱数を返す関数
※Math.floor()関数は、小数点以下切り捨てする関数

③ ②で取得した乱数を最終出力の配列に入れる。(ここでは、変数名outとする。)

例.
out[0] = rand;

④ temp変数のrand番目に一番最後の要素を入れる。
  <本作業の目的>
  ③で取得済みの乱数は、次から考えないようにしたい。
  そのため、もともと要素数7の配列だったが、
  あたかも要素数6(③で取得した乱数以外)の配列かのように扱っていくようにする。

例.
temp[rand] = temp[6];
※temp.length-1が一番最後の要素を指す

⑤ ②を範囲を一つ小さくして、②~④を要素の数だけ繰り返し実施する。
  すなわち、0~5の範囲で乱数(整数値)を取得する。

例.
rand = Math.floor(Math.random() * 6);
out[1] = rand;
temp[rand] = temp[5];
rand = Math.floor(Math.random() * 5);
out[2] = rand;
temp[rand] = temp[4];
rand = Math.floor(Math.random() * 4);
out[3] = rand;
temp[rand] = temp[3];
 ︙
rand = Math.floor(Math.random() * 1);
out[6] = rand;
temp[rand] = temp[ ]; ←最後のステップ時は不要


<乱数の数列の作成方法の図>
f:id:lm4183:20210123234706p:plain


時間[s] キーストローク 備考
0 Ctrl 閉じる
0 W
0 Ctrl
0 W
0.5 N 保存しない(N:No)
0 N
0.5 Ctrl 新規作成
0 N
0 Ctrl
0 N
0.5 Enter  
0 Enter

 

 

<用語>

・CLIP STUDIO:株式会社セルシスのペイントソフト

・Razer Tartarus Pro:Razerの左手用キーパッド

・Razer Synapse:Razerのキーマップ設定ソフト

 

 

 <(参考)Spaceを押しながらドラッグすることで移動することができることを知った動画>

※5分30秒くらい

https://www.youtube.com/watch?v=2faq9cndENo&list=PL8o9gN9hzJCz04idSPv2PeXbBmKGQsmTl&index=1

 

 

 

【Razer Tartarus Pro】CLIP STUDIO用キーマップ設定_ver2

修正(ver3)を公開。

lm4183.hateblo.jp

 

 

 

 

CLIP STUDIOで絵を描く用に使用している左手デバイス「Razer Tartarus Pro」のキーマップ設定を記載します。

前回公開時から変更したので、ver2として記載。

  

<前回からの変更点>

30秒ドローイング用のMacroをキーマップ3に移動。間違って押した時にデータ失うので。。。

・その代わりにGペン/移動(手のひら)に変更。たぶん最も使ってる機能なので。

・キーマップ1の12~15をツールの機能に統一。

 また、透明水彩、色混ぜに変更(ここ数日使ってみた時に頻繁に使うものに変更)。


<色の意味>

・番号

・機能名

・キー

 

<キーマップ設定>

・キーマップ1 (ペイントソフト用)

f:id:lm4183:20201005021940p:plain

 

・キーマップ2 (数字入力用)

f:id:lm4183:20201005022006p:plain

 

・キーマップ3 (ペイントソフト用 30秒ドローイング用)

※キーマップ3は付けたり外したり。

f:id:lm4183:20201005022048p:plain

 ※05 閉じる→新規は、30秒ドローイングで便利。(ファイルは保存しないで閉じる。)

 ※Macro1の内容は、下の項目に記載。

 

<Macro1の設定>

時間[s] キーストローク 備考
0 Ctrl 閉じる
0 W
0 Ctrl
0 W
0.5 N 保存しない(N:No)
0 N
0.5 Ctrl 新規作成
0 N
0 Ctrl
0 N
0.5 Enter  
0 Enter

 

 

<用語>

・CLIP STUDIO:株式会社セルシスのペイントソフト

・Razer Tartarus Pro:Razerの左手用キーパッド

・Razer Synapse:Razerのキーマップ設定ソフト

 

 

 

【ルービックキューブ】OLL(コーナーキューブ)_3箇所交換、2箇所交換のみの揃え方

<はじめに>
本項目では、OLL(コーナーキューブ)を3箇所交換、2箇所交換のみだけで揃えられる方法を記載します
つまりは、極力、暗記したくない人のための揃え方となっています。
(揃えるスピードを上げたい人向けではなく、暗記したくない人向けです。)

本手順実施前 本手順実施後

<コマンド>
・SexyMove(3箇所交換)
[(R U R' U'), D] = R U R' U' D U R U' R' D'

・SexyMove(2箇所交換)
[(R U R' U')2, D] = R U R' U' R U R' U' D U R U' R' U R U' R' D'


<前提①>
本項目では、ルービックキューブは下記のように最上位階層をFront(手前)の向きで扱います。

3箇所交換 2箇所交換

<前提②>
本項目において、ルービックキューブの状態を次のように表現することとします。
・3箇所交換、2箇所交換において、ある1面(ここではFront面)のコーナーキューブのみが変化の対象であるため(それ以外は変化ないため)、1面のコーナーキューブだけを表現します。
・各コーナーキューブにおいて、OLLの面の色(ここでは黄色)の向きをU(上),D(下),R(右),L(左),F(前)で記載します。
 また、黒の罫線を引いています。(Fの場合は、外枠全てとしています。)
ルービックキューブの向き違いのパターンを同じ色で統一しています。
 
例.

例1
例2
例3
 ※例2,3は、ルービックキューブの向きの違いであるため、同じ色で表されている。


<前提③>
OLLのパターン数は、下記であることが知られています。
ルービックキューブの向き違いを含む場合:8パターン
ルービックキューブの向き違いを含まない場合:27パターン


<3箇所交換、2箇所交換の状態遷移>
3箇所交換、2箇所交換の状態遷移を全て書きだすと下図となります。
※赤色の矢印は、3箇所交換、2箇所交換した時の遷移方向です。
※前提②にも記載してますが、同じ色の状態は、ルービックキューブの向きが異なるのみです。
 たとえば、②の紫色の状態の時、ルービックキューブの向きを変えるだけで、①の紫色の状態になります。

3箇所交換 2箇所交換


<3箇所交換、2箇所交換のみだけで揃える方法>
揃った状態(灰色の状態)が存在しているのは、①、⑫となっており、それぞれ紫色、赤色の状態から遷移されています。
すなわち、紫色の状態であれば、ルービックキューブの向きに注意して3箇所交換することにより、完成形となります。
また、赤色の状態であれば、ルービックキューブの向きに注意して2箇所交換することにより、完成形となります。


本項目では、基本的には3箇所交換を実施して(※1)、赤色の状態の場合のみ2箇所交換をすることとします(※2)。
(※1)2箇所交換より3箇所交換の方が手数少ないです。
(※2)3箇所交換だけでも完成させることもできますが、運が悪ければ延々と揃わないので、2箇所交換も使うとします。
  3箇所交換を覚えていれば、2箇所交換も簡単に覚えられるので。


テキトーに何回か3箇所交換をして、紫色、赤色の状態になってくれたら、ハッピーなのですが、
⑦,⑧,⑨,⑩,⑪の状態の場合、どんなに実施しても紫色、赤色の状態になりません。
では、どうしたらよいかというと、下記どちらかの方法を実施すればよいです。

1. ルービックキューブの向きをランダムに変えながら、3箇所交換を実施する。

ただ、紫色、赤色になるための操作数が、天に任せる感じになります。
そのため、次の2をオススメします。

2. Fの位置(OLLの面の色(OLLで揃えたい色))を左上になるようにルービックキューブの向きを変えて、3箇所交換を実施する。

このルールに従うと、必ず2操作以内に紫色、赤色の状態になります。
なぜかというと、左上がFとなっているパターンは、①,④,⑤であり、①,④,⑤には紫色、赤色のいずれかが含まれているからです。
(補足:3箇所交換は、右上、右下、左下の交換であるため、3箇所交換の操作をして左上の色が変わることはありません。)

以上で、3箇所交換、2箇所交換のみだけで揃えられます。


<もう少しやる気のある人へ>
3箇所交換、2箇所交換は、本項目では書いていませんが、逆回転となる操作方法や、別なコーナーキューブの交換など、本項目以外での操作方法が存在します。
この操作方法が既知であれば、より様々なパターンに対応し、操作数を減らして完成させることができるようになります。
また、8パターンに対して、それぞれ完成させる操作を暗記すれば、1操作で完成させることができるのです。
なお、筆者はこれ以上解析したくない、暗記したくないという思いであり、スピードを求めてなく極力頑張りたくないので、やりません。

【Razer Tartarus Pro】CLIP STUDIO用キーマップ設定

 修正(ver3)を公開。

lm4183.hateblo.jp

 


 

 

 

CLIP STUDIOで絵を描く用に左手デバイス「Razer Tartarus Pro」を買った。

参考までに、Razer Synapseのキーマップ設定を記載。

人によって使用機能の頻度が異なるので、参考になるかわかりませんが。。

  

<キーマップ設定>

・キーマップ1 (ペイントソフト用)

f:id:lm4183:20200923234533p:plain

 ※20 閉じる→新規は、30秒ドローイングで便利。

 ※Macro1の内容は、下の項目に記載。

・キーマップ2 (数字入力用)

f:id:lm4183:20200923225011p:plain

<Macro1の設定>

時間[s] キーストローク 備考
0 Ctrl 閉じる
0 W
0 Ctrl
0 W
0.5 N 保存しない(N:No)
0 N
0.5 Ctrl 新規作成
0 N
0 Ctrl
0 N
0.5 Enter  
0 Enter


<色の意味>

・番号

・機能名

・キー

 

<用語>

・CLIP STUDIO:株式会社セルシスのペイントソフト

・Razer Tartarus Pro:Razerの左手用キーパッド

・Razer Synapse:Razerのキーマップ設定ソフト

 

 

 

 

 

【ルービックキューブ】目次

はじめに

はじめに
記法

手順(3×3×3):LBL(Layer By Layer)法

1. Cross

完成形 コマンド
-

2. 完全一面

完成形 コマンド
-

3. F2L(First 2 Layers)

完成形 コマンド
・時計回り
[U, R] [U', F']
※詳細
・反時計回り
[U', F'] [U, R]
※詳細

4. OLL(Orientation of the Last Layer)
4.1 エッジキューブ

完成形 コマンド
F [U, R] F'
※詳細

4.2 コーナーキューブ

完成形 コマンド
・SexyMove(3箇所交換)
[(R U R' U'), D]
※詳細
・SexyMove(2箇所交換)
[(R U R' U')2, D]
※詳細


5. PLL(Permutation of the Last Layer)

完成形 コマンド
・Uパーム
M2 [U M, U2] M2
※詳細
・Aパーム
R [U', R D2 R'] R'
※詳細
詳細:【ルービックキューブ】OLL(コーナーキューブ)_3箇所交換、2箇所交換のみの揃え方 - lm4183のブログ

手順(4×4×4):LBL(Layer By Layer)法

1. センターキューブ

完成形 コマンド
-

2. エッジキューブ

完成形 コマンド
・エッジ入れ替え
l F U' R F' U l'

3. 「3×3×3」の手順

完成形 コマンド
-

4. OLLパリティ

完成形 コマンド
l2 B2 r F2 l F2 U2 l U2 l' U2 r' U2 B2 l2

5. PLLパリティ

完成形 コマンド
Uw2 Rw2 U2 r2 U2 Rw2 Uw2