|
setup diary |
sudo dd bs=1M if=ubuntu-mate-15.04-desktop-armhf-raspberry-pi-2.img of=/dev/sdXなどとして書き込む。sdXのところにはmicroSDを指定するようにして下さい。今回は8GBのmicroSDを使ったのだが、ubuntu mateには、partitionの格調をする機能が無いようなので、gpartedを使って拡張する。microSDの二番目のpartitionを選んで、リサイズする。そして、あとはrpi2に挿して起動である。 セットアップの仕方は、ubuntuとかに慣れていれば、それほど難しくないだろう。日本語を入力できるようにするために、ibus-anthyを入れて、あとは必要なr-baseやrubyを入れれば、測定に使えるようになる。ただ、いくつかのパッケージの取得に失敗したので、source.listを少し書き換えたが。 無事usbtmcの制御もできたし、測定用のマシンとしてのセットアップをしよう。
長らく共用のPCとして使っていたnoteが死んだので、別のnoteに入れ替えた。実はそのnoteには、しばらく前にdebian8をインストールしたのだが、起動しようとしたらビープ音が鳴るようになってしまい、電源がおかしいのかなと思って放置してあった。少し調べていたら、どうやらキーボードのどれかのキーが押された状態と認識されており、そのために音がいる可能性があることが分かった。そこで、分解してキーボートのフラットケーブルを外してみたところ、うまく動くようになった。基本的には、外付けのキーボートとマウスを繋いで使うので、これで問題が無い。ftpdやntpの設定をして、共用のPCとして使えるようになった。
debian8のLXDEを少し使ってみたが、windowの移動のときに、遅れて着いてくる感じで、気持ち悪い。単にPCの性能が低いだけかも知れ無いが。
100.times{|i|r=1;r*=2 until r.to_s=~/^#{i+1}/;p r}で50bytesである。そのすぐ後に、スペースを取り除けることに気が付き、
100.times{|i|r=1;r*=2until"#{r}"=~/^#{i+1}/;p r}として、48bytesまでになった。ここから、いろいろな工夫をしてみたが、どうしても48を切ることができなかった。例えば、
1.upto(100){|i|r=1;r*=2until"#{r}"=~/^#{i}/;p r} 1.upto(100){|i|r=1;r*=2until"%s"%r=~/^#{i}/;p r} 1.upto(100){|i|r=1;r*=2until"#{r}"[/^#{i}/];p r} 1.upto(100){|i|r=1;$_="#{r*=2}"until/^#{i}/;p r}などを作ったが、何をやっても48止まりだった。特に、最後のは1に対する答えが16になってしまうという欠点もあるし。ruby1.8なら、100の代わりに?dを使うという技を使えるのだが。その時、一位の人は46で二位が47だった。10bytesぐらい差をつけられていたら、もう諦めるのだが、数byteとかだと、なんとかなるのでは無いかと思ってしまう。散々考えていたら、昨晩、47に到達した。
($.+=r=1;r*=2until"#{r}"=~/^#$./;p r)until$.>99というものである。行数を表す組み込み変数$.を使って、初期値の代入と#{}の括弧をなくしたり、最初に1を足すことによって、100の代わりに99を使えるようにして、なんとか1byte減らすことに成功した。これでなんとか二位には追いついたが、一位の46bytesはどうやっているのか、全く見当もつかない。
二位の人は、ruby1.8流のやり方をしていた。これなら、1.9以降でも動く私のscriptの方が上とも言える。一位の人は、これに加えて、補数を求める~演算子を使っていた。なるほど、これなら100を99までで良くなるのでtimesが使えるし、行頭の^も省略できる。