投稿

ラベル(パズル)が付いた投稿を表示しています

ルービックキューブ (2回目)

イメージ
2026/6/6(土)   ルービックキューブ (2回目)   ■ 2段目を揃える ▼ 記号 キューブ片の見えている面の数でキューブ Ⅰ,Ⅱ,Ⅲと 呼ぶ事にする   前回同様 逆回転は L'(プライム付き) 同時は (ED)、(ED)'、(E'D)、(ED')、(E'D') 180度回転はL 2 、 L '2 、 (ED) 2 、 (ED) '2   などで記述しています   全体の持ち替えは Xは前面を上に、Yは前面を左側面に、Zは上面を右側面に持ち替えます           ▼ 上段のキューブ Ⅱを中段右側に入れる   URF'U'FUFR'F'   ▼ 上段のキューブ Ⅱを中段左側に入れる U'L'FUF'U'F'LF     ■ 最後に ▼ どのようにして思いついたか 中段左側にいれる方法で説明すると U'L'F で上段キューブ Ⅱと下段左キューブⅢが色を合わせて くっつきます UF' でくっついたキューブが所定の位置に入りますが この過程で下段のキューブが崩れていますので もとに戻す方法を考えて U'F'LF にたどり着いた分けです この過程で下段を保ったまま中段を揃える事ができますが 上段は崩れ放題になります    

ルービックキューブ (1回目)

イメージ
2026/5/23(土) ルービックキューブ   (1回目) ▼   記号 操作をどう表現しようか迷っていたのですが いろいろな解説書が使っている記号を参考にしました よく使われる記号だと思いますが一部異なる場合があります 逆回転は L'(プライム付き) 同時は (ED)、(ED)'、(E'D)、(ED')、(E'D') 180度回転はL 2 、 L '2 、 (ED) 2 、 (ED) '2   などで記述しています 全体の持ち替えは Xは前面を上に、Yは前面を左側面に、Zは上面を右側面に持ち替えます ■ 六面十字   ▼   四面十字 (これの続きで六面十字を作ります)   M '2   U M '2   U' D' M '2   D' M '2   (ED) D   ▼   六面十字 四面十字から D 2   M '2   S '2   (ED) 2   M '2   S '2   で完成     ■ 六面十字の色の組み合わせ ▼   四面十字から十字以外を手前に持ち替えて M '2   U M '2   U' D' M '2   D' M '2   (ED) D で三面ずつの入れ替えができます   ▼   六面十字の向きを持ち替えて M '2   U M '2   U' D' M '2   D' M '2   (ED) D または D 2   M '2   S '2   (ED) 2   M '2   S '2   で色の組み合わせを変えることができます ただし 向きによっては元に戻ってしまう (十字がなくなる) かもしれません     ■ 最後に ▼   いつ頃考えたか この六面十字の方法は 1981年頃に考えた 完全オリジナルです   当時は六面十字は不可能と言われていたと記憶していますが (当時の解説書の範囲なので狭い範囲だとは思いますが) 何とかでき...

N88-BASIC,Cでハノイの塔 (7回目)

イメージ
202 5 / 1 /22 (水 ) N88-BASIC ,C で ハノイの塔  ( 7 回目 )   途中経過の移動の分離と表示の分離 (hanoi) Cで書く   ■ 前提 ▼ 参照 https://ulprojectmail.blogspot.com/2024/12/hanoi-3.html ハノイの塔  ( 3 回目 )   ▼   前提 3本(A,B,C)の棒とn枚の円盤(小さい順に1~nとする)がある Aに1~nの円盤が上から順に積まれている   ▼   目標 1~nの円盤全てをCに移動させる   ▼   ルール 小さい円盤の上に大きい円盤は置けない 1度に動かせる円盤は1枚のみ   ▼   定義 A,B,Cの一番上の円盤をpA, pB, pCとし、円盤が無い時は最大値とする 円盤を AからCに移動する事をA->Cと書くことにする   ▼   円盤の移動回数 N(n) = 2 n  - 1   ▼   分離 hより小さい円盤の移動はhの移動からhの移動まで N(h-1) = 2 (h-1)  - 1回続く この塊を別の関数で一括処理することで表示判定を省略できる 更に N(a)を一括処理すると更に速くなる 実際の実装は han007.cを参照して下さい   ■   動作 変数名など内部では A,B,Cを(pole)1,2,3と表現しています   nを入力し 1:A->Cの様に円盤の番号1~n(小~大)と棒A,B,C間の移動を表示する 今回の手順は再帰を使用していません h以上の円盤の移動のみ表示   VL,NL,XL-BASICとdlg~.zip( han 00 7 . c )は このブログ (以下のリンク)から ダウンロードできます https://ulprojectmail.blogspot.com Readme.txtを読んで遊んで下さい  

N88-BASIC,Cでハノイの塔 (6回目)

イメージ
202 5 / 1 / 18 (土 ) N88-BASIC ,C で ハノイの塔  ( 6 回目 )   途中経過の移動と表示の分離 (hanoi) Cで書く   ■ 前提 ▼ 参照 https://ulprojectmail.blogspot.com/2024/12/hanoi-3.html ハノイの塔  ( 3 回目 ) より   ▼   前提 3本(A,B,C)の棒とn枚の円盤(小さい順に1~nとする)がある Aに1~nの円盤が上から順に積まれている   ▼   目標 1~nの円盤全てをCに移動させる   ▼   ルール 小さい円盤の上に大きい円盤は置けない 1度に動かせる円盤は1枚のみ   ▼   定義 A,B,Cの一番上の円盤をpA, pB, pCとし、円盤が無い時は最大値とする 円盤を AからCに移動する事をA->Cと書くことにする   ▼   円盤の移動回数 N(n) = 2 n  - 1   ▼   分離 hより小さい円盤の移動はhの移動からhの移動まで N(h-1) = 2 (h-1)  - 1回続く この塊を別の関数で一括処理することで表示判定を省略できる 実際の実装は han006.cを参照して下さい   ■   動作 変数名など内部では A,B,Cを(pole)1,2,3と表現しています   nを入力し 1:A->Cの様に円盤の番号1~n(小~大)と棒A,B,C間の移動を表示する 今回の手順は再帰を使用していません h以上の円盤の移動のみ表示   VL,NL,XL-BASICとdlg~.zip( han 00 6 . c )は このブログ (以下のリンク)から ダウンロードできます https://ulprojectmail.blogspot.com Readme.txtを読んで遊んで下さい  

N88-BASIC,Cでハノイの塔 (5回目)

イメージ
202 5 / 1 /8 (水 ) N88-BASIC ,C で ハノイの塔  ( 5 回目 )   再帰を使用しない手順 (hanoi) Cで書く   ■ 前提 ▼ 参照 https://ulprojectmail.blogspot.com/2024/12/hanoi-3.html ハノイの塔  ( 3 回目 ) より   ▼   前提 3本(A,B,C)の棒とn枚の円盤(小さい順に1~nとする)がある Aに1~nの円盤が上から順に積まれている   ▼   目標 1~nの円盤全てをCに移動させる   ▼   ルール 小さい円盤の上に大きい円盤は置けない 1度に動かせる円盤は1枚のみ   ▼   定義 A,B,Cの一番上の円盤をpA, pB, pCとし、円盤が無い時は最大値とする 円盤を AからCに移動する事をA->Cと書くことにする   ▼   nの場合 nが奇数の時   A = Aのtop, pB = Bのtop, pC = Cのtop   pAB = A->B, pBC = B->C, pCA = C->A   pBA = B->A, pCB = C->B, pAC = A->C nが偶数の時(A⇔B)   pA = Bのtop, pB = Bのtop, pC = Cのtop   pAB = B->A, pBC = A->C, pCA = C->B   pBA = A->B, pCB = C->A, pAC = B->C と定義する つまり以下偶数の時は (A⇔B)と読み替える   nが偶数の時のみ以下の2行を追加   pBA   pB < pC なら pBC 違うなら pCB   pAC pA ≠ pBの間以下を繰り返す   pA < pB なら pAB 違うなら pBA   pCB   pC < pA なら pCA 違うなら pAC   pBA   pB < pC なら pBC 違うなら pCB   pAC   ■   動作 変数名など内部では A,B,Cを(pole)1,2,3と...

N88-BASIC,Cでハノイの塔 (4回目)

イメージ
    202 5 / 1 / 1 ( 水 ) N88-BASIC ,C で ハノイの塔  ( 4 回目 )   再帰を使用した手順 (hanoi) Cで書く   ■ 前提 ▼ 参照 https://ulprojectmail.blogspot.com/2024/12/hanoi-1.html ハノイの塔   ( 1 回目 ) より   ▼   ルール 3本(A,B,C)の棒とn枚の円盤(小さい順に1~nとする)がある Aに1~nの円盤が上から順に積まれている 小さい円盤の上に大きい円盤は置けない 1度に動かせる円盤は1枚のみ   ▼   目標 1~nの円盤全てをCに移動させる   ▼   Cの一部 #include <stdio.h> static void hanoi1(int n, int h, char p1, char p2, char p3) {     if (n >  1) hanoi1(n - 1, h, p1, p3, p2);     if (n >= h) printf(" %2d:%c->%c", n, p1, p3);     if (n >  1) hanoi1(n - 1, h, p2, p1, p3); } void main(void) {     int n = 3;     int h = 1;       hanoi1(n, h, 'A', 'B', 'C'); }   ▼   nの時の手順 A,B,Cを(pole)p1,p2,p3と表現しています   if (n >  1) hanoi1(n - 1, h, p1, p3, p2); 1~n-1の円盤をA->B (p1->p2)   if (n >= h) printf(" %2d:%c->%c", n, p1, p3); nの円盤をA->C (p1->p3)   if (n...

N88-BASIC,Cでハノイの塔 (3回目)

イメージ
2024/ 12 /29 (日 ) N88-BASIC ,C で ハノイの塔  ( 3 回目 )   途中経過表示を省略 (hanoi)   ■ 前提 ▼ 参照 https://ulprojectmail.blogspot.com/2024/12/n88-basicchanoi-2.html N88-BASIC ,C で ハノイの塔  ( 2 回目 ) (前回)   h以上の円盤の移動のみ表示するよう追加変更しました   ■   動作 変数名など内部では A,B,Cを(pole)1,2,3または0,1,2と表現しています   n,hを入力し 1:A->Cの様に円盤の番号1~n(小~大)と棒A,B,C間の移動を表示する 今回の手順は再帰を使用していません h以上の円盤の移動のみ表示     VL,NL,XL-BASICとdlg~.zip( han 00 3 .bas)は このブログ (以下のリンク)から ダウンロードできます https://ulprojectmail.blogspot.com Readme.txtを読んで遊んで下さい

N88-BASIC,Cでハノイの塔 (2回目)

イメージ
2024/ 12 / 27 (金 ) N88-BASIC ,C で ハノイの塔  ( 2 回目 )   再帰を使用しない手順 (hanoi)   ■ 前提 ▼ 参照 https://ulprojectmail.blogspot.com/2024/12/hanoi-3.html ハノイの塔   ( 3 回目 ) より   ▼   前提 3本(A,B,C)の棒とn枚の円盤(小さい順に1~nとする)がある Aに1~nの円盤が上から順に積まれている   ▼   目標 1~nの円盤全てをCに移動させる   ▼   ルール 小さい円盤の上に大きい円盤は置けない 1度に動かせる円盤は1枚のみ   ▼   定義 A,B,Cの一番上の円盤をpA, pB, pCとし、円盤が無い時は最大値とする 円盤を AからCに移動する事をA->Cと書くことにする   ▼   nの場合 nが奇数の時   A = Aのtop, pB = Bのtop, pC = Cのtop   pAB = A->B, pBC = B->C, pCA = C->A   pBA = B->A, pCB = C->B, pAC = A->C nが偶数の時(A⇔B)   pA = Bのtop, pB = Bのtop, pC = Cのtop   pAB = B->A, pBC = A->C, pCA = C->B   pBA = A->B, pCB = C->A, pAC = B->C と定義する つまり以下偶数の時は (A⇔B)と読み替える   nが偶数の時のみ以下の2行を追加   pBA   pB < pC なら pBC 違うなら pCB   pAC pA ≠ pBの間以下を繰り返す   pA < pB なら pAB 違うなら pBA   pCB   pC < pA なら pCA 違うなら pAC   pBA   pB < pC なら pBC 違うなら pCB   pAC   ▼   移動回数 N(n) N(n) = 2 n  - 1 回 ...

ハノイの塔 (3回目)

2024/ 8 / 21 (土 ) ハノイの塔  ( 3 回目 )   再帰を使用しない手順 (偶数奇数をまとめる) ( hanoi )   ■ 定義 ▼   前提 3本(A,B,C)の棒とn枚の円盤(小さい順に1~nとする)がある Aに1~nの円盤が上から順に積まれている   ▼   目標 1~nの円盤全てをCに移動させる   ▼   ルール 小さい円盤の上に大きい円盤は置けない 1度に動かせる円盤は1枚のみ   A,B,Cの一番上の円盤をpA, pB, pCとし、円盤が無い時は最大値とする   円盤 1をAからCに移動する事を1:A->C と書く事にする     ■ 具体的な動かし方 ▼   nが奇数の場合 A->C pA ≠ pBの間以下を繰り返す   pA < pB なら A->B 違うなら B->A   C->B   pC < pA なら C->A 違うなら A->C   B->A   pB < pC なら B->C 違うなら C->B   A->C   ▼   nが偶数の場合 nが奇数の場合に2行追加しAとBを入れ替える A->B 追加 pA < pC なら A->C 違うなら C->A 追加 B->C pA ≠ pBの間以下を繰り返す   pB < pA なら B->A 違うなら A->B   C->A   pC < pB なら C->B 違うなら B->C   A->B   pA < pC なら A->C 違うなら C->A   B->C     ■ 奇数偶数をまとめる nが奇数の時   A = Aのtop, pB = Bのtop, pC = Cのtop   pAB = A->B, pBC = B->C, pCA = C->A   pBA = B->A, pCB = C->B, pAC = A->C nが偶数の時(A⇔B) ...