CommentTweetPocket先日実施された第44回シェル芸勉強会に出席してきたので、その復習。冒頭で、awkなどでゴリゴリ書いていく問題がメインらしいので、多分難しめなんだろうなぁと思ったけど、おわってみたらやはり難しい問題が多かった。問題および模範解答はこちら。あと、問題を解くに当たって必要になるファイルは以下のコマンドで取得してくる。https://github.com/ryuichiueda/ShellGeiData目次Q1.Q2.Q3.Q4.Q5.Q6.Q7.Q1.数独の問題で、マップ?のデータから各行列にどのような値が入ってるかを一覧化する問題。数独がやったことないのでよくわからないのだけど、とりあえず第一フィールドが行番号、第二フィールドが列番号、第三フィールドが区画(3×3のグリッドに適当に番号をつけたもの)、第四フィールドが値となるようにすればいいようだ。以下のようにawkで処理することで実現できる。6この問題については、awkでちゃんと書いてあげるのが一番良さそうだ。Q2.Q1から続きの問題で、Q1で作ったファイルをaというファイル名で保存して、さらにaのデータをもとに「4列目が*になっている行に対して、5列目以降に4列目に入らない数字を入れてbというファイルで保存しろ」という問題。これについては、awkでゴリゴリ回答を作成するよりは外部コマンドを生成してbashに食わせるといったやり方のほうが楽そうだったので、その方法で対処した。6Q3.Q3は、Q2で生成したファイルであるbに対して「5列目の値を4列目に入るであろう値のリストに書き換える」という処理をしたファイルcを作成する、という問題。そもそも数独のルールを理解していないので何を入れるんだかさっぱりわからない+数独について調べたけどいまいちよくわからなかったので回答のしようがないので、模範解答の内容を転記しておく。LinksQ4.Q4では、Q3で作成したcをもとに最初のファイル「sudoku」のフォーマットでファイルを作成するという問題。その際、Q3の段階で4列目に1個しかファイルが入らない行についてはその内容も適用する必要がある。これについては、awkでちゃちゃっとやってしまうのがいいだろうということで、そのまま処理をした。//g'53**7****6**195****98****6*8***6***34**853**17***2***6*6***7284***419*35****8**79Q5.Q5は数学の問題だった。積分なのだが、社会人になってからそういうのはやってなかったのでもはやさっぱり...。模範解答だけ転記しておくことにする。a}'Q6.Q6はウンコ系の問題。体感だけど、(案の定というか)この問題だけ正答率がすごく高かった気がする。ファイル「speech」の空行に対し、「speeck2」の内容を上から順に差し込んでいくという問題。自分は以下のような回答で処理をした。bashこのうんこを作ったのは誰だあっ!!うんこも休み休み言え春はあけぼの。