〜2007年2月上旬〜
410通。Gmail側約4400スレッド。
awkの4Bはどこかで見たテクニック。
sedの5Bは2通り考えついた。
bashの6Bはsedの2つ目の応用で。表と裏というか。
blankのsedの別解は/./!dです。だからgrep .なわけで、
その流れでawkは3Bになると。
echoはpgじゃなくてddを使いました。
っていうかpgって何って状態だった。
なんかDancingをBashの内部コマンドだけで挑戦してるようなので、
こちらも挑戦。Rubyで使ったアルゴリズムをそのまま移植。
結構なんとかなるもんだと思ったり。
- About:
- PeaZip is an archiver tool that supports its native Pea archive format (featuring compression, split volumes, and flexible authenticated encryption and integrity check schemes) and other mainstream formats, with special focus on handling open formats. It can create/browse/extract 7Z, 7-Zip sfx, Bzip2, Gzip, PAQ, PEA, split, TAR, and ZIP. It can browse/extract: ARJ, CAB, CHM, CPIO, DEB, ISO, JAR, LZH, NSIS installers, OOo files, RAR, RPM, and Z.
こんだけあれば大抵間に合いそうだ。
man bashしてみると結構知らない機能が多い。
普段は移植性を考えて変な機能は使わないしねえ。
read c ((${#c}>4))&&echo yes||echo no
てな感じでcに入ったバイト数を判断できる。
あ、そうか。2Bでいけますね。不思議なことに可能だと示されると思いつく。
それにしてもawkってほんと奥が深い。
それいいね。example.comが一気に縮む。
:h line2byte()すると
line2byte(line("$") + 1)
で実際のサイズ+1が得られる。それをechoすれば
echo line2byte(line("$") + 1) - 1
で表示できる。適当に
map gc :echo 'size'line2byte(line('$')+1)-1<CR>
gcとmappingしてみたが、どうせならstatus lineに表示しちゃえ。
set statuslineで
%{line2byte(line('$')+1)-1}
をどこかに含めればいい。現在のstatuslineは
set statusline=%<%f\ %m%r%h%w[%{&ff}][%{&fenc?&fenc:&enc}]\ %BH\ %{line2byte(line('$')+1)-1}B%=%l,%c\ %P
となった。なんだかよくわからんな。
Rubyで8バイトのechoはずるしなくても可能です。
停滞気味だったので新たな問題を出してみた。
なんというか簡単な問題なんだけど、新たな発見があって楽しい。
特にawkは。sedの4Bはなあ。ちょっとねえ。man sedしてみるといいよ。
奇数行も出すか。ってすでに3B予告されてる。
ということらしいので早速申し込んだ。msmtpの設定は~/.msmtprcに
account default auth on host SMTPホスト名 port 587 from 自分のメールアドレス user ユーザ名 password パスワード
てな感じでいけた。
なんとなくsed版に挑戦。sedだとtで分岐するしかないし、
その先でcで表示するなんのひねりもないものを作ったら意外と小さい。
そのままbashに移植したらいきなり更新。Rubyに移植したらまた更新。
というわけで、煮詰まってるときは別の言語でやってみるといいかもしれない。
平方根なんて知らないのさということで、文字列の入力と出力だったらsedでしょやっぱ。
sqrtとprintfを持ってる言語だとそれなりにできてしまうし。
1,2行目が2,3なのはやはりそういうことなんだろうと作っていて思った。
なんで46まで?16進表示して納得。Cでは楽できる。
PerlとBashでは予想外な結果に。Bashって結構豪快だな。
入力がないとsedが使えなくて残念なので、 改行1個のファイルかなにかを指定しといて欲しいな。
info sedしてたら圧縮する方法を思いついたので試す。140B。わるくないね。