読者です 読者をやめる 読者になる 読者になる

ブログが続かない人のブログ

技術ネタについて書いていきたいです。

競プロで学ぶPerl 第1回

競プロ Perl

はい、やってきました。今日プロで学ぶPerlのお時間です。

記念すべき第1回はこの問題です。

A: Simple Calculator - AtCoder Grand Contest 008 | AtCoder

とある行動にかかる回数の最小値を求める問題です。 x > y の場合、y > x の場合、、と場合分けをしたら解けました。

今回はこの解答で気になった部分を取り上げます。

Submission #1042085 - AtCoder Grand Contest 008 | AtCoder

print abs($y)+($y<0),$/
($y<0)

当たり前といえば当たり前ですが、

if($y<0) {
    print abs($y)+1,$/
} else {
    print abs($y),$/
}

としなくても、これだけで条件分岐を表せることに感動しました。これはいろんなところで使えそうですね。

$/

最初見たとき、これが何を意味しているのかわかりませんでした。 調べてみると、これは環境変数で改行を表していることがわかりました。

[perl]ファイルの読み込みを簡単にやりたい時($/をundefする) perlとシェルスクリプト

perlvar - Perl で定義済みの変数 - perldoc.jp

こんなに種類があったとは...少しずつ覚えていきたいです。

print A, B, C, ...

print関数にカンマ(,) で区切って複数の引数を与えると、それらをつなげて出力してくれます。 わかっていたつもりでしたが、パッと見たとき、第2引数ってなんだっけ...と思ってしまったので、一応覚書です。

最後に

今回、3つの知見を得ることができました。こうして少しずつ知見を貯めていきたいと思います。