2013年1月13日日曜日

あけましておめでとうございます。

新年明けましておめでとうございます。
なんだかんだで後半はずん子フィーバーになってしまいましたがぼちぼち色々形にしていこうかと思います。


2012年12月21日金曜日

Python2のジャンケン


# -*- coding: utf-8 -*-
import random
def input():return raw_input()

#ユーザ入力
def userinput():
    print(u"1:グー")
    print(u"2:チョキー")
    print(u"3:パー")
    print(u"───────────────────")
    print(u"数字を入力して:")
    a=input()
    if   a=="1":b="グー"
    elif a=="2":b="チョキ"
    elif a=="3":b="パー"
    else       :b=""
    return b


#初期化
a=""
b=""

#入力判定
while a==b or a=="":
    a=userinput()
    b=random.choice(["グー","チョキ","パー"])
    if a=="":
        print(u"############################")
        print(u"正しい入力をしてください")
        print(u"############################")
    if a==b:
        print(u"############################")
        print(u"あなた:" + a.decode('utf-8'))
        print(u"あいて:" + b.decode('utf-8'))
        print(u"あいこです")
        print(u"############################")

#勝負判定
print(u"あなた:" + a.decode('utf-8'))
print(u"あいて:" + b.decode('utf-8'))
if a=="グー":
    if   b=="パー"  :print(u"負け")
    elif b=="チョキ":print(u"勝ち")
elif a=="パー":
    if   b=="グー"  :print(u"勝ち")
    elif b=="チョキ":print(u"負け")
elif a=="チョキ":
    if   b=="グー"  :print(u"負け")
    elif b=="パー"  :print(u"勝ち")

input() #確認停止

2012年12月20日木曜日

Python3によるジャンケン


import random

#ユーザ入力
def userinput():
    print("1:グー")
    print("2:チョキー")
    print("3:パー")
    print("───────────────────")
    print("数字を入力して:",end=' ')
    a=input()
    if   a=="1":b="グー"
    elif a=="2":b="チョキ"
    elif a=="3":b="パー"
    else       :b=""
    return b


#初期化
a=""
b=""

#入力判定
while a==b or a=="":
    a=userinput()
    b=random.choice(["グー","チョキ","パー"])
    if a=="":
        print("############################")
        print("正しい入力をしてください")
        print("############################")
    if a==b:
        print("############################")
        print("あなた:" + a)
        print("あいて:" + b)
        print("あいこです")
        print("############################")

#勝負判定
print("あなた:" + a)
print("あいて:" + b)
if a=="グー":
    if   b=="パー"  :print("負け")
    elif b=="チョキ":print("勝ち")
elif a=="パー":
    if   b=="グー"  :print("勝ち")
    elif b=="チョキ":print("負け")
elif a=="チョキ":
    if   b=="グー"  :print("負け")
    elif b=="パー"  :print("勝ち")

input() #確認停止







2012年12月4日火曜日

四国めたん「愛しています」

なんかこういつもはっちゃけているのが漆黒のめたんで乙女チックになっちゃっているのが四国めたんっていう設定でどうですか?

さておき、ずん子小説よりめたんちゃんです。

元ネタはこちらを参照ください。
「露出してるとついつい目が行ってしまう身体の部位4パターン:http://togetter.com/li/410871

2012年11月24日土曜日

ずん誕

ずん誕
東北ずん子の誕生日が10月27日と言う事でしてちょうどその日が休みだったのから描き始めたんですが放送しながらぬくぬくしていたら終わらなかった…orz

途中新キャラまででてきちゃってので追加しちゃいました。


左から「漆黒のめたん、東北きりたん、東北ずん子、東北イタコ、中国うさぎ、九州そら」です

2012年11月20日火曜日

備忘:VBSのnullとemptyの違い

エラトステネスの篩でかるい配列の為にemptyとか使ってましたがそもそも空って何?という話。 

まぁ空っぽいのって言う感じでしょうか。判定と状態についてです。

 "" これはいわゆる空文字(日本語的におかしくなるけど)0文字数の文字列です
null これは無効な値です。(特殊な判定されがちで個人的にあんまり使いたくない)
empty これは初期化されていない変数の値です


■簡単なチェックをしましょう
""nullempty
+1えらーnull1
*1えらーnull0
&"str""str""str""str"
typename()StringNullEmpty
isnull()falsetruefalse
isempty()falsefalsetrue
if 時のbool値えらーfalsefalse

多少微妙ですがこんな表になります。

・空文字は言わずもがなただ文字数が0なだけで全て文字判定です説明要らないですよね?


・emptyについて
数値処理が来た場合0として扱われます。ゆえに+1では1を返し、*1では0となります。
文字列処理が来た場合は空文字として扱われます。
if 時のboolにおいてemptyの判定はfalseです。

if 時のboolってなんぞや?って思う人が居るかもしれませんが判定略書き字に役に立ちます。
if empty then msgbox"true" else "false"
こんな感じです。

まぁ内部でif中の判定がどんなに難しくても結果あの中で処理されるのは「0またはそれ以外の値」、「Trueまたはfalse」って事です。

それでemptyっていつ役に立つの?って話ですが初期化判定で使える事です(あまぁ当たり前だけど)。
「a=inputbox()」と処理を書いた場合にOKの場合文字数に関わらず文字列キャンセルを押した場合代入自体が行われないのです。
「if isempty(inputbox("")) then msgbox"empty" else msgbox"string"」
を試してみれば理解できるかと思います。


・nullについて
正直判定や処理が微妙です。
計算を代入などしても値はnullであり表示などではエラーします。
たとえば「a=null+1」の時点ではエラーなどはありませんがそのあとに「msgbox a」とするとエラーします。また、Cscript時に「a=null+1」後に「wsh.echo a」とした場合エラーせずに、コンソールにはnullが表示されます。
文字列処理において「msgbox null」はエラーとなり「msgbox null & ""」だと通ります。

そしてif時の判定ですが「if null then msgbox"true" else "false"」nullの判定はfalseです。


とまぁ、こんな感じです。nullは使い辛いですが逆にエラー処理とか作るときには楽しそうです。



素数列挙3

そろそろ絵上げないとですね。
とかいいつつ平方根的ちょちょいな方に変更。

ちなみに指定値に対する素数の数は下の通り。
秒数は下のコードじゃなく、別途篩版のです。篩は次回で。
指定値   素数総数 時間
1040秒
100250秒
10001680秒
1000012290秒
10000095920秒
1000000784981秒
1000000066457925秒
100000000576145518分53秒





dim n:redim n(-1)'←再配列化時の-1は値は代入できないが指定は可能非推奨だと思う多分
For i = 2 To 1000000
    a = Int(i^0.5)
    if a=1 then redim Preserve n(ubound(n)+1):n(ubound(n))=i
    For k = 2 To a
        If i Mod k = 0 Then Exit For
        if k=a then redim Preserve n(ubound(n)+1):n(ubound(n))=i
    Next
Next
wsh.echo join(n)
wsh.echo ubound(n)