« 2016年01月 | メイン | 2016年06月 »

2016年03月 アーカイブ

2016年03月15日

ズンドコキヨシ with 秀丸マクロ

Javaの講義、試験が「自作関数を作り記述しなさい」って問題だったから
「ズン」「ドコ」のいずれかをランダムで出力し続けて「ズン」「ズン」「ズン」「ズン」「ドコ」の配列が出たら「キ・ヨ・シ!」って出力した後終了って関数作ったら満点で単位貰ってた
そこで、秀丸マクロで作ってみた。
秀丸マクロには、配列がないため文字列の連結で対応した。
また、浮動小数点版の秀丸でないと乱数が使えない。
Windowsが起動してからの経過時間を取得するtickcountという、一見乱数につかえそうなものがあるが、単位がミリ秒であるため、ループ内で使用すると同じ値が連続して帰ってきてしまう。
今回のような用途では、擬似乱数生成器を自分で実装する必要がある。
ここでは、線形合同法を用いた。
また、実装した乱数生成器は偶数と奇数を交互に返すため、このまま利用すると『ズンドコ』を延々に繰り返してしまう。
これを避けるために、10の位を判定に利用している。
$zundoko = "";
#rand = tickcount % 256;
while($zundoko != "ズンズンズンズンドコ") {
    #rand = (129 * #rand + 83) % 256;
    if ((#rand / 10) % 2 == 0) {
        $zd = "ズン";
    } else {
        $zd = "ドコ";
    }
    insert $zd;
    $zundoko = $zundoko + $zd;
    $zundoko = rightstr($zundoko, 20);
}
insert "キ・ヨ・シ!";
秀丸マクロ実行のたびに『ズン』もしくは『ドコ』の出力を一度しか行わないのであれば、乱数代わりにtickcountを利用できる。
ここでは配列代わりに出力済みのテキストを使い、より簡潔に記述している。
if (tickcount % 2 == 0) {
    insert "ズン";
} else {
    insert "ドコ";
}
$str = gettext(x - 20, y, x, y);
if ($str == "ズンズンズンズンドコ") {
    insert "キ・ヨ・シ!";
}
後者のマクロは、秀丸のマクロ登録でこのマクロをキーに割り当てると、『ズン・ズンズン・ズンドコ』のリズムでキーを押しながらマクロを実行できるので、ある意味気持ちいい。
複数人で誰が『キ・ヨ・シ!』を出すのかという『ズンドコゲーム』も可能だ。
成功確率も1/32のためそれなりにエキサイトするのではないか。
関連リンク

ズンドコキヨシ with Excel VBA

Javaの講義、試験が「自作関数を作り記述しなさい」って問題だったから
「ズン」「ドコ」のいずれかをランダムで出力し続けて「ズン」「ズン」「ズン」「ズン」「ドコ」の配列が出たら「キ・ヨ・シ!」って出力した後終了って関数作ったら満点で単位貰ってた
そこで、Excel VBAで作ってみた。
Sub Zundoko()
    Do While True
        If Rnd < 0.5 Then
            ActiveCell.Value = "ズン"
        Else
            ActiveCell.Value = "ドコ"
        End If
        Cells(ActiveCell.Row + 1, ActiveCell.Column).Activate
        Dim zd As String
        zd = ""
        For i = 5 To 1 Step -1
            If ActiveCell.Row - i > 0 Then
            zd = zd + Cells(ActiveCell.Row - i, ActiveCell.Column).Value
            End If
        Next
        If zd = "ズンズンズンズンドコ" Then
            Exit Do
        End If
    Loop
    ActiveCell.Value = "キ・ヨ・シ!"
End Sub
関連リンク

2016年03月16日

ズンドコキヨシ with AppleScript

Javaの講義、試験が「自作関数を作り記述しなさい」って問題だったから
「ズン」「ドコ」のいずれかをランダムで出力し続けて「ズン」「ズン」「ズン」「ズン」「ドコ」の配列が出たら「キ・ヨ・シ!」って出力した後終了って関数作ったら満点で単位貰ってた
そこで、AppleScriptで作ってみた。
『ズン』と『ドコ』はログの履歴のメッセージに表示され、『キ・ヨ・シ!』は結果に表示される。

比較演算子さえも英語のように記述できるAppleScriptの特徴がよく出ていると思う。
(もちろん記号でもOK。)
set zundoko to {}
repeat while zundoko as string is not equal to "ズンズンズンズンドコ"
    set r to random number from 0 to 1
    if r is equal to 0 then
        set zd to "ズン"
    else
        set zd to "ドコ"
    end if
    log zd
    set the end of zundoko to zd
    repeat while ((count zundoko) is greater than 5)
        set zundoko to rest of zundoko
    end repeat
end repeat
return "キ・ヨ・シ!"
関連リンク

2016年03月17日

ズンドコキヨシ with PowerPoint VBA

Javaの講義、試験が「自作関数を作り記述しなさい」って問題だったから
「ズン」「ドコ」のいずれかをランダムで出力し続けて「ズン」「ズン」「ズン」「ズン」「ドコ」の配列が出たら「キ・ヨ・シ!」って出力した後終了って関数作ったら満点で単位貰ってた
そこで、PowerPoint VBAで作ってみた。
Sub addSlide(text As String, Optional size As Integer = 360)
    With ActivePresentation.Slides
        Dim slide As slide
        Set slide = .addSlide( _
            Index:=(.count + 1), _
            pCustomLayout:=.Parent.SlideMaster.CustomLayouts(7) _
            )
        With slide
            Dim shape As shape
            Set shape = .Shapes.AddShape( _
                Type:=msoShapeRectangle, _
                Left:=0, _
                Top:=0, _
                Width:=960, _
                Height:=540 _
            )
            With shape
                .TextEffect.FontSize = size
                .TextFrame.TextRange.text = text
            End With
        End With
    End With
End Sub

Sub Zundoko()
    Do While True
        If Rnd < 0.5 Then
            addSlide "ズン"
        Else
            addSlide "ドコ"
        End If
        With ActivePresentation.Slides
            Dim zd As String
            zd = ""
            For i = 4 To 0 Step -1
                If .count - i > 0 Then
                    If .Item(.count - i).Shapes.count > 0 Then
                        zd = zd + .Item(.count - i).Shapes.Item(1).TextFrame.TextRange.text
                    End If
                End If
            Next
            If zd = "ズンズンズンズンドコ" Then
                Exit Do
            End If
        End With
    Loop
    addSlide "キ・ヨ・シ!", 144
End Sub
関連リンク

2016年03月18日

ズンドコキヨシ with Scratch

Javaの講義、試験が「自作関数を作り記述しなさい」って問題だったから
「ズン」「ドコ」のいずれかをランダムで出力し続けて「ズン」「ズン」「ズン」「ズン」「ドコ」の配列が出たら「キ・ヨ・シ!」って出力した後終了って関数作ったら満点で単位貰ってた
そこで、Scratchで作ってみた。
せっかくScratchで作っているので歩かせてみた。
関連リンク
Google

タグ クラウド