無限不可能性ドライブ

『ニューラルネットワーク自作入門』に刺激されてExcelVBAでニューラルネットワークを作ってみたものの、やっぱり数学やらなきゃと思い少しずつやってきたのもあって、自分の知識の整理とかそういった感じです。

年賀クイズの答え

youtu.be

ということで、答えは「VOICEROID」でした!
昨年、VOICEROIDを購入したのですが、キャラクタに声がつくだけでこんなに身近に感じられるようになるのか!と結構衝撃的でした。
ということで、今回のワードは「VOICEROID」にしました。

他にもこんなことをしてたりします。
youtu.be

qiita.com


さて、セル・オートマトンの解き方ですが…年末にこんな記事を書いたので載せておきます。今回は、これを利用すれば解くことができます。
qiita.com

ですが、解答用に改変するのは面倒だと思うので、解答用のVBAコードを載せておきますね。
シートには条件付き書式設定で、セルの値が1の時には紫、0の時には白になるようにしています。

Option Explicit

Public Sub Click_実行()
    Dim r As Long, c As Long, tc As Long
    Dim self As Long
    Dim up_r As Long, down_r As Long, left_c As Long, right_c As Long
    Dim life_count As Long
    
    For r = 1 To 6
        For c = 1 To 6
            self = Cells(r, c).Value    '自分自身の状態(紫:1, 白:0)
            
            up_r = r - 1                '「上」の行番号を計算
            If up_r < 1 Then
                up_r = 6
            End If
            
            down_r = r + 1              '「下」の行番号を計算
            If down_r > 6 Then
                down_r = 1
            End If
            
            left_c = c - 1              '「左」の行番号を計算
            If left_c < 1 Then
                left_c = 6
            End If
            
            right_c = c + 1             '「右」の行番号を計算
            If right_c > 6 Then
                right_c = 1
            End If
            
            life_count = Cells(up_r, left_c).Value + Cells(up_r, c).Value + Cells(up_r, right_c).Value
            life_count = life_count + Cells(r, left_c).Value + Cells(r, right_c).Value
            life_count = life_count + _
                         Cells(down_r, left_c).Value + Cells(down_r, c).Value + Cells(down_r, right_c).Value
            
            If self = 1 And (life_count = 2 Or life_count = 3) Then '紫セルの周りに2つか3つの紫セルがある場合は、そのセルは紫のまま
                self = 1
            ElseIf self = 1 And life_count >= 4 Then                '紫セルの周りに4つ以上の紫セルがある場合は、そのセルは白くなる
                self = 0
            ElseIf self = 1 And life_count <= 1 Then                '紫セルの周りに紫セルが1つ以下しかない場合は、そのセルは白くなる
                self = 0
            ElseIf self = 0 And life_count = 3 Then                 '白いセルの周りに紫セルがちょうど3つある場合は、そのセルは紫になる
                self = 1
            End If
            
            Cells(r, c + 10).Value = self
            
        Next
    Next

    Application.Wait Now() + TimeValue("00:00:02")          '表示遅延用Wait
    
    tc = 11
    For r = 1 To 6
        For c = 11 To 16
            If Cells(r, c).Value = 1 Then
                Cells(r + 8, c).Font.Color = RGB(255, 255, 255)
                Cells(r + 8, c).Interior.Color = RGB(132, 132, 255)
                
                Cells(8, tc).Value = Cells(r + 8, c).Value
                tc = tc + 1
                
                Application.Wait Now() + TimeValue("00:00:01")  '表示遅延用Wait
            Else
                Cells(r + 8, c).Font.Color = RGB(132, 132, 255)
                Cells(r + 8, c).Interior.Color = xlNone
            End If
        Next
    Next
    
End Sub

Public Sub Click_初期化()
    
    Range("K1:P6").Value = 0
    
    With Range("K9:P14")
        .Font.Color = RGB(132, 132, 255)
        .Interior.Color = xlNone
    End With
    
    Rows(8).ClearContents
    Range("J8").Value = "答:"

End Sub