[シェル芸]面接官 「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で集まった別解
@nullpopopo スマートかどうかは分かりませんが別解です(横に数値を2つ並べ、数値が異なる最初の行から答えを抜き出しました)。
seq 250 | paste num – | awk '$1!=$2{print($2==""?250:$2);exit}'— 日柳 光久 (要介護5在宅介護中) (@mikkun_jp) January 23, 2015
@nullpopopo 空行対策、これでOKのはずです。
paste <(cat num | sed '/^$/d') <(seq 250) | awk '$1!=$2{print($2==""?250:$2);exit}'— 日柳 光久 (要介護5在宅介護中) (@mikkun_jp) January 23, 2015
https://twitter.com/kunst1080/status/558680927342047232
あえて和を求めずに awk '(NR!=$1){print; exit}' nums #シェル芸 [シェル芸]面接官 「1~250までの数字がある。1つだけ抜けてる数字がある時、どうやってその数字を探し出しますか?」 をやってみた http://t.co/z7Uzv2MfmD
— th0x0472 (@th0x0472) January 24, 2015
xargsで縦にしてdiffかなあ
diff <( cat nums | xargs -n1 | sort -n ) <( seq 1 250 | xargs -n1 )http://t.co/fab3N4Jh5V
動かしてないけどね#シェル芸— きゃろさん (@Carol_815) January 24, 2015
日記書いた! 面接官 「1~250までの数字がある。1つだけ抜けてる数字がある時、どうやってその数字を探し出しますか?」 をcommで解く #シェル芸http://t.co/EsQcOLrduX
— eban (@eban) January 24, 2015
※ 2015/01/24 23:50
ぐれさんの回答を追加しました。
$ cat nums <(seq 250) | sort | uniq -u RT [シェル芸]面接官 「1~250までの数字がある。1つだけ抜けてる数字がある時、どうやってその数字を探し出しますか?」 をやってみた http://t.co/FF34rqMMFx #シェル芸
— ぐれさん (@grethlen) January 24, 2015
[amazonjs asin=”4904807006″ locale=”JP” title=”プログラミング言語AWK”]
「[シェル芸]面接官 「1~250までの数字がある。1つだけ抜けてる数字がある時、どうやってその数字を探し出しますか?」 をやってみた」への0件のコメント