2010-09-05(日)
Scala座で「Scalaによる型推論の実装」という発表をしてきました
第一回 Scala座: 2010年9月4日(土) WINC愛知で発表してきました。
Ustもあるらしいですが、怖くて確認できていないです。
LTでもないのにScalaとあんまり関係ない話をするとか空気読めてない感じでごめんなさい。
感想
- わらびもち!
- 受け付けしてました。
- 「弊社にくればScalaのお仕事あります!」っていっている人がそこそこ居て、わくわくしました。
- 懇親会で何を話したかほとんど記憶にないのですが、id:bleis-tiftさんとかid:a-hisameさんのブログを見る感じだと、いろんな言語の話で盛り上ったり、名古屋ハッカソンの話をしてたっぽいです。名古屋ハッカソンは是非やりましょう。
2010-09-04(土)
2010-08-31(火)
buffalo
30分プログラム、その799。anarchy golf - Buffaloにインスパイアされました。
"Buffalo buffalo Buffalo buffalo buffalo buffalo Buffalo buffalo"という文法的に正しい英文を出力するプログラムです。
使い方
16> buffalo:main(). "Buffalo buffalo Buffalo buffalo buffalo buffalo Buffalo buffalo"
ソースコード
-module(buffalo). -compile([export_all]). capitalize([])-> []; capitalize([C|Cs])-> [string:to_upper(C)|Cs]. id(X) -> X. main()-> C = fun capitalize/1, I = fun id/1, string:join(lists:map(fun (F) -> F("buffalo") end , [C,I,C,I,I,I,C,I]), " ").
参考
2010-08-30(月)
明日(8/31)、名駅付近でもくもく会をやります。
Scala座で発表するはずのスライドの作成状況が危機的になっております。
というわけで、明日(8/31)に名駅付近でもくもく会をやります。暇な人とか、逆にタスクがいっぱいある人とかは、一緒に作業しましょう。
いっしょに夏休みの宿題をかたづけましょう。
もくもく会とは
もくもく会とは喫茶店やカフェなどに集まって各自もくもくと勉強したり仕事したりする会です。家ではどうも仕事や勉強に集中できない、さぼってしまいがち…というフリーランスの人や学生の人におすすめです。気軽に参加(もしくは開催)してみてください。
もくもく会ポータルより。
場所・時間
- 17:00〜19:00 CAFE Z-TRES 名古屋(駅前) カフェ・ランチ・喫茶|CAFE Z-TRES(カフェ ジートレス)
- 19:00〜三省堂テルミナ店 CAFE グルメ ショップサーチ | 名古屋駅前地下街 テルミナ
参加方法
上記の場所と時間を参考にぶらっときて、ぶらっと帰っていくといいと思います。
異様な雰囲気を放つ集団なので、たぶん「待合せをしてるのですが...」と言うと案内してもらえると思います。「PCを広げてるの思うのですが..」と言えば完璧です。
ネットワークとか
参加するかもしれない人
漢数字への変換
30分プログラム、その798。数字から漢数字への変換をやってみました。
1以上1億未満の数字にのみ対応してます。
使い方
*Main> kanji 10 十 *Main> kanji 42 四十二 *Main> kanji 12345 一万二千三百四十五
ソースコード
import qualified System.IO.UTF8 as U right = ["", "一", "二","三","四","五","六","七","八","九"] left = ["", "二","三","四","五","六","七","八","九"] sep p xs ys = ys ++ [ x ++ p ++ y | x <- xs, y <- ys] xs = sep "万" (tail ys) ys where ys = foldl (\x p -> sep p left x) right ["十","百","千"] kanji n = U.putStrLn (xs !! n)
参考
2010-08-29(日)
Coq庵で発表してきました
- 強者の集うCoq庵 : ATNDで無謀にも発表してきました
- CoqUn, Recorded on 8/29/10 keigoi on USTREAM. Comedyに動画もあるらしいです。怖くて確認できてないですけど。
2010-08-28(土)
OCamlMeeting 2010 NagoyaでLTしてきました
OCamlMeeting 2010 NagoyaでOCamlAPISearchのLTをしてきました。
半年前に書き捨てたコードなので、よく覚えてなかったです。もうちょいコード読んで記憶を取り戻してから発表に挑むべきだった気がします。
Scala座で発表します
OCamlミーティングが終った直後であれですが、来週9/4(土)にScala座というイベントがあります。
「Scalaあるところにkmizuさんあり」と評判のkmizuさんも来るので、暇な人もそうでない人も来るといいと思います。
2010-08-24(火)
改行しかしない
30分プログラム、その797。anarchy golf - Carriage no returnにインスパイアされました。
使い方
- no_return "abc\ndef"; val it = "abc\n def" : string
ソースコード
fun lines s = String.tokens (fn c => c = #"\n") s; fun unlines xs = String.concatWith "\n" xs; fun pad n = String.implode (List.tabulate (n,(fn _ => #" "))); fun fst (x,_) = x; fun snd (_,y) = y; fun concat_with_pad xs = List.foldl (fn (x,(n,ys)) => (String.size x + n, (pad n) ^ x :: ys)) (0,[]) xs; fun no_return str = unlines (List.rev (snd (concat_with_pad (lines str))));
参考
2010-08-22(日)
ローマ数字の変換
30分プログラム、その797。500 - Internal Server Errorにインスパイアされました。
ローマ数字をIntに変換します。面倒だったので、I,V,Xにしか対応していません。
使い方
scala> Roman.toInt("II")
res39: Int = 2
scala> Roman.toInt("IIV")
res40: Int = 3
scala> Roman.toInt("XIV")
res38: Int = 14
ソースコード
object Roman { val map = Map('I' -> 1, 'V' -> 5, 'X' -> 10) def toInt(s : String) : Int = s.foldRight((0,0)){ case (c, (m, current)) => val n = map(c) if(n < m){ (m, current - n) }else{ (n max m, current + n) } }._2 }
参考
2010-08-21(土)
Googolからの引き算
30分プログラム、その796。anarchy golf - Substract from a Googolにインスパイアされて、Googolからの引き算をやってみます。
きっと、32bitの整数しか扱えない処理系でやるとエキサイティングなんでしょうけど、Gaucheだとあっさりできてしましました。ステキだと思います。
使い方
$ gosh googol.scm 0 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 $ gosh googol.scm 1 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 $ gosh googol.scm 123 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999877
ソースコード
#! /opt/local/bin/gosh ;; -*- mode:scheme; coding:utf-8 -*- (define (pow n m) (cond ((eq? m 0) 1) ((even? m) (pow (* n n) (/ m 2))) (else (* n (pow n (- m 1)))))) (define googol (pow 10 100)) (define (main args) (for-each print (map (cut - googol <>) (map string->number (cdr args)))))
参考
2010-08-17(火)
各文字の出現回数を数える
30分プログラム、その795。anarchy golf - asunderにインスパイアされました。
入力中のアルファベットの出現回数を数えます。たぶん暗号解読に便利な頻度表の作成に便利なんじゃないですかね(適当)。
使い方
$ echo abc | python asunder.py A: 0 B: 0 C: 0 D: 0 E: 0 F: 0 G: 0 H: 0 I: 0 J: 0 K: 0 L: 0 M: 0 N: 0 O: 0 P: 0 Q: 0 R: 0 S: 0 T: 0 U: 0 V: 0 W: 0 X: 0 Y: 0 Z: 0 a: 1 b: 1 c: 1 d: 0 e: 0 f: 0 g: 0 h: 0 i: 0 j: 0 k: 0 l: 0 m: 0 n: 0 o: 0 p: 0 q: 0 r: 0 s: 0 t: 0 u: 0 v: 0 w: 0 x: 0 y: 0 z: 0 $ cat sample.txt | python asunder.py A: 16 B: 19 C: 6 D: 14 E: 12 F: 11 G: 10 H: 13 I: 9 J: 10 K: 12 L: 9 M: 16 N: 11 O: 4 P: 12 Q: 13 R: 15 S: 9 T: 14 U: 9 V: 7 W: 11 X: 10 Y: 15 Z: 12 a: 13 b: 13 c: 9 d: 14 e: 5 f: 20 g: 5 h: 13 i: 10 j: 14 k: 10 l: 11 m: 11 n: 14 o: 11 p: 11 q: 15 r: 14 s: 6 t: 12 u: 12 v: 9 w: 17 x: 8 y: 15 z: 9
ソースコード
#! /usr/bin/python # -*- mode:python; coding:utf-8 -*- import sys d = {} for i in sys.stdin: for c in i: if c.isalpha(): d[c] = d.get(c,0) + 1 for k in range(ord('A'),ord('Z')+1) + range(ord('a'),ord('z')+1): print "%s: %2d" % (chr(k),d.get(chr(k),0))



http://issues.hudson-ci.org/browse/HUDSON-7365
とりあえずvoteしてみてはいかがでしょうか。
あとMLに投げないとそもそも問題として認識されない恐れもあるので、
日本語のMLでもいいのでポストしたほうが良いかも。
http://wiki.hudson-ci.org/display/HUDSON/Mailing+List
ただそもそも最近はアップデートされてる気配も無さそうなので、
パッチを送りつけるとか、コミット権もらって直接
直しちゃうのが一番はやいかも。
しかし素敵な絵ですね。
自分で直したほうが早いんじゃね、と思いながら、いろいろといじってはいるんですが、なかなかうまくいってない感じです。
とりあえずあとでvoteしておきます。