2007年11月09日

カブらない数字を4桁だすの 〜勝手に拡大解釈篇

dropdbさんのところでお題が出て、まちゅさんが反応しているので絡んでみる。

最初に僕の思いついたのはこんな感じで。
(0..9).sort_by{rand}[0,4]
0〜9の配列を作ってシャッフル、先頭4文字を取り出す方法で。さっきdropdbさんのところを覗いたら、同じ方法が既にコメント欄に先に書かれていたけど、まぁいいや:p
ここで、dropdbさんの方法を見ると、
ary = []		#空の配列です。
4.times{		#4回繰り返して
  n = rand 10	#0-9までの乱数を発生させ配列に入れる。
  redo if ary.include? n	#既に配列にnがあった場合はもう1度
  ary.push n
}
print ary
出力は「7492」みたいに横に繋がって出てくる。まちゅさんの方法も同様。
nums = (0..9).to_a
4.times do
  print nums.delete_at(rand(nums.size))
end
もしかすると「カブらない4つの数字を要素に持つリストを作る」んじゃなくて数字がカブらない4桁の整数を作るのがゴールなのかも。と、勝手に拡大解釈してみるとこんな感じ?
(0..9).sort_by{rand}[0,4].join.to_i
これだとリストの先頭が0になっている可能性があって、そうなると整数値としては3桁になってしまうのでマズい。(「0745」みたいな文字列表現なら問題ないけど)
numbers = (0..9).sort_by{rand}
(numbers[0] == 0 ? numbers[1,4] : numbers[0,4]).join.to_i
にしてみるとか。
ちなみに、このsort_by{rand}でリストをシャッフルする方法は「Ruby Cookbook」にも登場しております。手軽に書ける反面で、リストのサイズが大きいときは効率が悪くなるので、別の方法を使うべし、とこのと。例として挙がっているのは、リストを先頭から順番に辿って「自分より後ろの要素をランダムに選んで入替える」というもの。詳しくはCookbookのChapter4 Arrays の 4.10 Shuffling an Array をどうぞ。僕の手元にあるのは原書版の方なのだけど、dankogai氏に酷評されていると評判の翻訳版にもきっと出ているはず・・・

Chapter 4 Arrays 未収録

『Rubyクックブック』の原書と和書の違いについて
未収録orz
まぢですか。。

というわけで、気になる方は原書の方をどうぞ。

Ruby Cookbook (Cookbooks (O'Reilly))
Lucas Carlson Leonard Richardson
Oreilly & Associates Inc (2006/07/28)
売り上げランキング: 6141
posted by cesare at 12:52 | 技術関連

2007年11月03日

OpenSocialとOpenIDと

GoogleがSNS向けの共通APIを出したらしいという話は聞いていたけど、なんとmixiまでがバンドワゴンに飛び乗ったというニュースにびっくり。mixiって、どちらかと言うとAPI公開にも消極的で、「オープン」からは程遠い印象だったのだけど。最近は少し変化してきているのだろうか。多分に願望が入ってますけどね。

そして、時を同じくして、はてながOpenIDを採用するというニュースも舞い込んできた。確かに、はてなスターなら、はてなユーザー以外の人も巻き込んだ方が楽しそうだし、これはこれでありだと思う。OpenIDって、まだいまいちぱっとしない印象だったのが、そろそろ臨界を迎えかけているのかも知れない。これを機会にブレイクしてくれないかな。いや、多分に願望が入ってますが。

奇しくも、共に「Open」を冠した規格絡みで出てきた2つのニュースを見ていると、今って実は大変なタイミングだったりするんじゃないかという気がする。自サービスにどれだけ多くのユーザーを囲い込むかで競い合うタイプのビジネスモデルが破綻して、開かれたプラットフォーム上で純粋にサービスの質やアイディアの善し悪しで勝負する時代への移行が始まった、歴史のターニングポイントとして後世の人達に記憶される時代のまっただ中にいるんではないかと。いや、多分に願望が入ってるんですけどね。

て言うか、OAuthとかOpenSocialとか、勉強しないといけないことが山積みなんですけど。でも、大変ではあるけど面白いな。こんな時代に生きてるなんて凄い運が良いのかも。とか思ったりもするわけです。いやまぁ、多分に願望が入ってるわけなんですが。

posted by cesare at 00:00 | 技術関連

2007年11月01日

TwitterがOAuthに対応

いつの間にやら、TwitterAPIがOAuthにも対応しているようです。なぜかお知らせページが要ログインな場所になっていてブックマークできないので、こちらにメモ。週末に試してみよう。

続きを読む
posted by cesare at 22:56 | 技術関連

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。