続・CodeJP 2013にて出題されたコードゴルフを頑張ってみた #codejp
CodeJP 2013にて出題されたコードゴルフを頑張ってみた #codejp - tututenの備忘録の続き
いろんな人のコードを参考に、自分の脳みそこねこねした集大成。
まだ短くなるかもだけど、また時間かかりそうなのでとりあえず載せるよ!
tmux + wemux のテスト環境をwindows + vagrantで構築してみる
後輩に「wemuxとか知ってますか?」と聞かれたので、試してみた。
ちなみにうちはscreen派でtmuxは一度挫折なんかしてたりするのです。
つまみ食いして放置したパターン!
CodeJP 2013にて出題されたコードゴルフを頑張ってみた #codejp
イベントに参加したことよりまずこっちの話題をまとめとこうと思う。
2013/8/3(土),4(日)の2日間にて参加したイベントで、
3日に問題が出題されて、4日に3人1チームで組みコードをチューニングして提出するというもの。
いろんな人の考え方、切り崩し方(?)を垣間見ることが出来てとても楽しかったです。
てことで、以下コード話をつらつら
ダイヤ表示をするための考察
前回Ohotech 特盛#4 にて、島田さんによるプログラム公開大会が行われた。
その中で最終問題でダイアモンドを表示させるってことで、
いくつか解答を考えてみた。
擬似乱数から「hello world」表示できるのをLINQで探してみた
まずはじめに。
元ネタ様→java - Why does this code print "hello world"? - Stack Overflow
先駆者様→ランダム関数による hello world | 札幌ワークス
を踏まえた上でLINQでやってみた。
続きを読むFizzBuzzを1ライナーしてみよう
以前Python札幌勉強会の時に、
for i in ( 'fizzbuzz' if x % 15 == 0 else 'buzz' if x % 5 == 0 else 'fizz' if x % 3 == 0 else x for x in range(1, 101) ) : print i
とあったのをふとしたきっかけで短くしてみた。
まず、利用したのが短絡評価による「文字("fizz","buzz","fizzbuzz")」と「数字」を分ける
>> a = '' or 2 >> a 2 >> a = 'fizz' or 2 >> a 'fizz' >> x = 3 >> a = ['','fizz'][not x%3] or x 'fizz' >> x = 4 >> a = ['','fizz'][not x%3] or x 4
これにより、以下のソースが組み上がる
>> [['','fizz'][not x%3]+['','buzz'][not x%5]or x for x in range(1,31)] [1, 2, 'fizz', 4, 'buzz', 'fizz', 7, 8, 'fizz', 'buzz', 11, 'fizz', 13, 14, 'fizzbuzz', 16, 17, 'fizz', 19, 'buzz', 'fizz', 22, 23, 'fizz', 'buzz', 26, 'fizz', 28, 29, 'fizzbuzz']
更に「not 」>「>0」のほうが短いので
>> [['fizz',''][x%3>0]+['buzz',''][x%5>0]or x for x in range(1,31)] [1, 2, 'fizz', 4, 'buzz', 'fizz', 7, 8, 'fizz', 'buzz', 11, 'fizz', 13, 14, 'fizzbuzz', 16, 17, 'fizz', 19, 'buzz', 'fizz', 22, 23, 'fizz', 'buzz', 26, 'fizz', 28, 29, 'fizzbuzz']
LDD13isに参加して来ました #ldd13is
1/26(土)に宮の沢ちえりあにて、
Local Developer Day '13 Infra & Securityに参加して来ました。
長丁場でしたが、懇親会含め楽しく参加させてもらいました。
ネットエージェントのカレンダーがゲット出来たことが一番の収穫とか言えない(ぉぃ
第13回北海道情報セキュリティ勉強会 に参加してきました #secpolo
11/10(土)に第13回北海道情報セキュリティ勉強会に参加してきました。
北海道大学札幌キャンパスの人文・社会科学総合教育研究棟(W棟)2階 W201に行って来ました・・・が、
北大構内迷いますね!(札幌駅から、銀杏並木を北12条まで歩いていた)
mtraceを使ってみた
しっくハック: メモリリーク検出:mtrace編
↑を参考に使ってみた
ソース: malloc_test.c
#include<stdio.h> #include<stdlib.h> #include<mcheck.h> int malloc_test() { char *c, *d; c = (char *)malloc(100); d = (char *)malloc(100); free(c); return 1; } int main() { mtrace(); malloc_test(); muntrace(); }
コンパイルからmtrace実行まで
$ pwd /home/user/mtrace $ ls mallc_test.c $ export MALLOC_TRACE="./mtrace.log" $ gcc malloc_test.c -g -o a.out $ ls a.out mallc_test.c mtrace.log $ mtrace a.out mtrace.log Memory not freed: ----------------- Address Size Caller 0x08a563e0 0x64 at /home/user/mtrace/malloc_test.c:9 $ awk 'NR == 9 { print }' malloc_test.c d = (char *)malloc(100);
のような感じ、しっかり検出してくれるっぽい。
Xcode 4.3以降になってソースコンパイルがうまく行かなくなった
Xcode 4.3 から autotools が削除されている件 - Null.ly
ってあった。
これによって、Mountain Lion でのGNU Screenのコンパイルがうまくできなかったので、
Homebrewにて
brew install autoconf automake
をやると良い。