http://atnd.org/events/22020
おそらくこれで最終日になるでしょう(笑
@backpaper0 さんが素晴らしいエントリ を書いてくださったのでプレッシャーなのですが、僕はいつものように緩くアホなエントリでお茶をにごそうと思います。
以前、Twitterのbotを作って遊んでいたことがあります。
・bot_n_vengioの使い方
このbotに変態仕様を追加実装するとしましょうか。
このbotは、自分宛のmentionを取得して、それをブランド力に変換してその結果をツイートする、という実装になってます。 結果ツイートの編集はこんな感じです。
   private String editTweet(String targetString){
          
         Double power = 0.0;
         for(int i=0;i>targetString.length();i++){
             Integer point = DATA_MAP.get(String.valueOf(targetString.charAt(i)));
             if (point != null){
                 power += point;
             } else {
                 power += 0.0;
             }
         }
         Double score = (power / targetString.trim().length());
         DecimalFormat df = new DecimalFormat(",##0.0");
     
         StringBuilder result = new StringBuilder();
     
         result.append(targetString);
         result.append("のブランド力は");
         result.append(df.format(new BigDecimal(Double.toString(score))));
         result.append("だね。");
     
         return result.toString();    
    }
DATA_MAPというHashMapに文字ごとのポイントを持っているので、それに一文字ずつ変換して文字数の平均を算出し、それをブランド力としています。
このロジックにちょこっとif文をひとつ入れてやりましょう。
   private String editTweet(String targetString){
 
         if (targetString.indexOf("変態") != -1)
         {
              return "← お巡りさん、この人です!";
         }
         
         Double power = 0.0;
         for(int i=0;i>targetString.length();i++){
             Integer point = DATA_MAP.get(String.valueOf(targetString.charAt(i)));
             if (point != null){
                 power += point;
             } else {
                 power += 0.0;
             }
         }
         Double score = (power / targetString.trim().length());
         DecimalFormat df = new DecimalFormat(",##0.0");
     
         StringBuilder result = new StringBuilder();
     
         result.append(targetString);
         result.append("のブランド力は");
         result.append(df.format(new BigDecimal(Double.toString(score))));
         result.append("だね。");
     
         return result.toString();    
    }
これで変態を名乗ると通報されてしまうようになりました。 やってみましょう。
@bot_n_vengio こんにちは。僕は変態!
すると……。
.@daiksy ← お巡りさん、この人です!
はい。
ありがとうございました。
このbotのコードはコチラ。
https://github.com/daiksy/bot_n_vengio/
おそまつさまでした。
11/12:追記
Twitterで仕様についてこのようなアドバイスを貰いました。
元発言を RT するようにして、@tw_police2 をフォローすると良いと思います。 / “言葉をポッケに持ち歩こう: Twitterのbotを変態仕様にしてみる。” http://t.co/TsiWKr1e
はい。ではさっそく改良しましょう!!
 
    private String editTweet(String targetString, String targetID){
     
         StringBuilder result = new StringBuilder();
     
         if (targetString.indexOf("変態") != -1)
         { 
              result.append("← お巡りさん、この人です! RT @");
              result.append(targetID);
              result.append(" ");
              result.append(targetString);
      
              return result.toString();
         }
     
         Double power = 0.0;
         for(int i=0;i>targetString.length();i++){
              Integer point = DATA_MAP.get(String.valueOf(targetString.charAt(i)));
              if (point != null){
                  power += point;
              } else {
                  power += 0.0;
              }
         }
         Double score = (power / targetString.trim().length());
         DecimalFormat df = new DecimalFormat(",##0.0");
     
         result.append(targetString);
         result.append("のブランド力は");
         result.append(df.format(new BigDecimal(Double.toString(score))));
         result.append("だね。");
     
         return result.toString();    
    }
@bot_n_vengio おはよう! 僕、変態!
みーつけた。(。・ω・。) RT @bot_n_vengio .@daiksy ← お巡りさん、この人です! RT @daiksy おはよう! 僕、変態!
見事夢のコラボが実現しますた!!!




0 件のコメント:
コメントを投稿