Hacker Rankが楽しい

とある経緯でHacker Rankというサイトを知りました。超楽しいです。

https://www.hackerrank.com/

要はオンラインでプログラミングの問題を解くサイトなのですが、bashがあります。
普段何気なく使ってるコマンドの知らなかったオプションを新たに知ることが出来たりすると嬉しいです。
問題の趣旨を無視して色々な解き方を考えるのも楽しいです。

例えばこの問題。単語を配列に読み込んで1列につなげて出力せよという問題ですが、xargsで瞬殺です。

Bashの配列の問題で唯一Hardとなってるこの問題も、配列を使わずに解けます。こんな解答して全テストケースをクリアしました。配列を使う方が難しいんじゃないかなぁ。

read;read nums
echo $nums | xargs -n 1 | sort | uniq -c | awk ‘$1~1{print $2}’

問題はこんな感じです:二行の入力が与えられます。二行目はスペース区切りの数字の並びで、一行目は二行目に何個の数字があるかを教えてくれます。求められているのは、二行目の数字の並びの中で一回だけ出現した数字を出力することです。
ハッキリ言って、xargs | sort | uniq までは脊髄反射でしたね。

ただ、この問題だけは解ける気がしません。下から描いていって最後にtacすればいいんだろうなということくらいしか思い浮かびません。

今回はBashの事ばかり書きましたが、Pythonの問題も解いています。

カテゴリー blog