[シェル芸]面接官 「1~250までの数字がある。1つだけ抜けてる数字がある時、どうやってその数字を探し出しますか?」 をやってみた

[シェル芸]面接官 「1~250までの数字がある。1つだけ抜けてる数字がある時、どうやってその数字を探し出しますか?」 をやってみた

久々にシェル芸ブログです。2chまとめブログでこんなのを見つけたので、シェル芸で解いてみました。

面接官 「1~250までの数字がある。1つだけ抜けてる数字がある時、どうやってその数字を探し出しますか?」 : IT速報

※ 2015/01/24 12:00更新

Twitterで別解が集まりましたので、本記事末尾に追記しました。

きっともっとスマートなやり方があると思いますが、とりあえずこんな感じでやりました。数字の書いてあるファイルを「nums」としています。

$ expr $(seq 1 250 | awk 'BEGIN{sum=0}{sum=sum+$1}END{print sum}') - $(awk 'BEGIN{sum=0}{sum=sum+$1}END{print sum}' nums)

それでは、numsファイルを作ってみましょう。

$ seq 1 250 > nums

仮に128を抜け番にしてみます。

$ sed -i s/128// nums

それではシェル芸です。

$ expr $(seq 1 250 | awk 'BEGIN{sum=0}{sum=sum+$1}END{print sum}') - $(awk 'BEGIN{sum=0}{sum=sum+$1}END{print sum}' nums)
128

128が抜け番だとわかりました。

121: ダイビングフットスタンプ(富山県)@\(^o^)/ 2015/01/23(金) 21:37:47.67 ID:W25GyRI30.net

>>115 1から250までの総和-挙がってる数の総和=抜けてる数

という解き方のヒントがあったので、 seqコマンドで1から250まで足した総和から、numsファイルの総和を引いた数をexprで求めるというやり方でやってみました。でわ〜♪

※ 追記 Twitterで集まった別解

https://twitter.com/kunst1080/status/558680927342047232

※ 2015/01/24 23:50

ぐれさんの回答を追加しました。

[amazonjs asin=”4904807006″ locale=”JP” title=”プログラミング言語AWK”]

[シェル芸]面接官 「1~250までの数字がある。1つだけ抜けてる数字がある時、どうやってその数字を探し出しますか?」 をやってみた」への0件のコメント