運動しないといけない手書きいろいろあって区役所に行ったりしてた。住所と名前をINF回書く日だった。書いたら紙が参照持ってきてほしいなぁ...旅行行った西の方へ旅行へ行った。毎度「死にます」と宣言されるので戦場かなんかだと思ってます。問題と解答はここです。Q1データを幹葉表現に変換する問題。210の位をキーに1の位を連想配列に入れています。このとき気をつけるのは正負の情報も必要だということです。PowerShellでもやってみます。242やっていることはbash/zsh版と同じです。Q2パリティチェックをして異常のあった行数を出力する問題。シェルでパリティチェックしたいですよね。NR;a[0]=a[1]=0}'4特に云うこともないawkゴリゴリ。解答例ではgsubがマッチ数を返すというのを利用する超賢いやつでした。PowerShellでもやるよ。""+$$[1].Count%2){$NR};$NR++}4PowerShell版ではGroup-Objectを使いました。このコマンドレットはコレクションに対してGroupByをおこない、GroupInfoオブジェクトを返します。ここに個数を示すCountプロパティがあるので、それをみてパリティチェックをしています。Q3行列の掛け算をする問題。そうそう、CLI上でやりたいことあるよねRの使い方を調べている間に時間が終わってしまったのでここではそれに再チャレンジします。-50awkでRのソースコードを組み立ててRに評価させています。コレに関してはPowerShellでやること変わらないので無しで。Q44人を2つにグループ分けするときの全パターンを列挙する問題。グループに区別はない。時間中に解けたんだけど、コピペのときにミスってたみたい。-1abcdabcDabCdabCDaBcdaBcDaBCdaBCDAbcdAbcDAbCdAbCDABcdABcDABCdABCDここで大文字小文字に注目すると、グループが区別されているときの全パターンが列挙されることがわかります。ここからいらないところを抜いてやれば良さそうです。大文字変換、awkで重複チェックするとほしい結果が得られますね。これは1111から2222までの数値を列挙するものです。マッチするものだけを通します。1111111211211122121112121221122221112112212121222211221222212222一行ごとに、この数値をキーにして連想配列にABCDを詰めていきます。後は整形、Aの含まれるグループを先に出力し重複を消して終わりですね。Q5パスカルの三角形を出力する問題。awkでパスカルの三角形を二次元配列に生成し、出力。コマンドへ渡して終わりです。コレ便利なのでおすすめです。最初に連想配列の配列の初期化をしています。なんかもっといい方法がほしいところではありますね。アルゴリズムは同じなのでそこの説明はしません。計算、さらに行の結果について最大公約数を計算する問題。sum;sum=0}'|./a.out11C++じゃねーか!!!!!!!!!この問題はどのライブラリを使ってGCDするか、という問題っぽいのでまぁなんでもいいんですが、解答例とかを見ているとpythonでmath.gcdするのが楽そうですね。PowerShellでもやってみましょう。-sum).Sum}176264231242330286とりあえず合計から。コレクションの合計値を計算しています。StaticメソッドにGCDがあるのでそれを利用すればOKですね。Q7円形に41人を並べ、それぞれに番号を割り振る。3人ごとに排除していき、最後に残る二人の番号を求めるという問題。ヨセフスの問題というらしい。時間中に解けなかったのでここで解いてみる。いうコマンドを作りました。Rust難しいgithub.com文字列を扱うDeque(双方向キュー)を提供するコマンドです。これを使えばジョブキューみたいなのもできるんじゃないですかね。インストールは手順とかを記載してるんですけど、まだちょっと気軽に試せる感じじゃないのでその辺の整備もしたいですね。Q8以下の文字列の各アルファベットに0-9の数値を割り当てて、式を完成させる問題。0-9が重複してはいけない。MONEYこの問題は全探索をするのですが、全パターンを試しているとめちゃめちゃ時間がかかるので、なんとか探索範囲を削っていきたいところ。桁数に注目すると、4桁+4桁=5桁で、最上位桁で繰り上がりがあることがわかります。1であることがわかります。