Home > ふぁくたん

ふぁくたん

  • 更新: 2016年01月06日 21:24

Twitterの素因数分解ボットであるfactoring_botの愛称が「ふぁくたん」です.生い立ちなどはこちらをご覧下さい

開発のいきさつ

ということで,

と名乗り出て,

できました.

現在の仕様

実装は開発速度を最優先としたため,PHPで作られています.素因数分解は単純に既知素数表を用いて順番に割っているだけです.難しいことは一切していません.コア部分のコードは以下のような感じです.

include 'prime.php'; //fact_nums[]
$stack = array();
for($n=0; $n<= $fact_nums[$n]); $n++) {
  if($num <= $fact_nums[$n]) break;
  if(0 == $num % $fact_nums[$n]) {
    $num /= $fact_nums[$n];
    array_push($stack, $fact_nums[$n]);
    $n--;
  }
}

主たる機能は以下の通りです.

friends_timeline (f)

friends_timelineから3~10桁の数字を見つけて,その素因数分解結果をRTでつぶやきます.動作間隔は5分で直近200件を対象にしています.

mentions (m)

mentionsから特に文頭に”@factoring_bot”が含まれているツイートを対象に,素因数分解を行いRTで結果をつぶやきます.動作間隔 は1分です.ただし,”@factoring_bot 123456″には反応しますが,”123456 @factoring_bot”には反応しない仕様としています(RT連鎖回避のため).201212241637追記:テストリリースとして,12桁の素因数分解ならびに冪乗表示に対応しました.

today (t)

1日1回0時1分(日本時間)に,その日が素数であれば,報告します.例えば,2010年1月1日を”20100101″と表現し,その数字が素数かどうか判定し,素数であればつぶやきます.

Message Queuing

上記3機能(+1機能)から出力されるつぶやき予定のメッセージをデータベースに保存し,投稿専用プログラムでTwitterに送出しています.動作間隔は1分です.そのため,上記3機能の出力は1分以上遅れてTwitter上に現れます.また,この機能によって,クジラ病発生時に,最大60分は再送を試みます.

主たる仕様は以下の通りです.

  • つぶやくメッセージは”(素因数分解対象の数字)=(素因数分解結果) RT @SCREEN_NAME (元のつぶやき)”となりますが,このメッセージが140文字を超えた場合,つぶやくことを諦めます.(20101122注記)friends増加に伴い,つぶやき数が増えてきたので,in_reply_toに頼った方式は中断して様子を見ているため,このような仕様になっています.
  • 201204051420追記:つぶやくメッセージは”@SCREEN_NAME (素因数分解対象の数字)=(素因数分解結果) RT: (元のつぶやき)”となりますが,このメッセージが140文字を超えた場合,つぶやくことを諦めます.
  • 頻出する”2010″と”2011″と”2012″と”2013″と”100″はブラックリストに入っています.今後もブラックリストは予告なく変更があります.
  • 201104291604追記:123,456,789のようなカンマ区切りの桁取りに対応しました.
  • フォロー/リムーブは自動で行っています.動作間隔は2時間です.ふぁくたんにつぶやきを拾われて素因数分解されることが目障りだと感じましたら,どうぞリムーブして下さい.慎ましく活動していますので,スパム報告しないで下さい><.(201102030942追記:昨晩より大量リムーブが発生しています.復旧を試みますが,フォローは1000件/日のため,完全復旧まで数日かかる見通しです.ごめんなさいごめんなさい.201102092248追記:復旧しました.)

20120405の問題について

以上のようなトラブルが発生したので,ツイッター側のバグだと思いますが,対策を講じました.

学会発表

日本最大のセキュリティ系シンポジウムであるSCIS2010および日本最大級のセキュリティ系シンポジウムであるCSS2010において,「ふぁくたん」について学会発表が行われています.

発表の様子はYoutubeで公開されています.

Home > ふぁくたん

Return to page top