【問題】jus共催 第46回人類はおそらくシェル芸に仕事を奪われるか奪われないかのどちらかであるシェル芸勉強会
Sat Feb 15 13:09:03 JST 2020 (modified: Sat Feb 15 15:09:31 JST 2020)
views: 2337, keywords:プログラミング,勉強会,シェル芸,シェル芸勉強会 この記事は最終更新日が4年以上前のものです。
- 問題で使われているデータファイルはGitHubにあります。クローンは以下のようにお願いします。
git clone https://github.com/ryuichiueda/ShellGeiData.git $
- 環境: 解答例はUbuntu Linux 19.10 で作成。Macの場合はcoreutilsをインストールすると、GNUのコマンドが使えます。BSD系の人は玄人なので各自対応のこと。
- 出典
Q1
次のようなデータがあります。
$ cat data
32 -12 42 -4 3 34 32 9 22 24 25 19 18 -14 -4
これを、次のように1列目に十の位、2列目に一の位の数を並べた表現(幹葉表示)に変換してください。
-0 44
0 39
4 2
-1 24
3 224
2 245
1 89
Q2
次のdata2
は、1列目のデータに対して2列目にチェック用のビットを書き込んであるファイルです。 2列目の左右のビットがそれぞれ1列目の0と1の数の偶奇を表しており、 偶数なら0、奇数なら1になっています。1列目と2列目の整合性がとれていない行の番号を出力してください。
$ cat data2
0101010110101010101101010101101010101 10
0100000000010101010110101010101011101010 11
101011010101011010101010101010101010100101 00
010110101010111111111110101010101110 01
011010101010110101010101010101010 01
Q3
次のファイルについて、1〜3列目の3行、4〜6列目の3行をそれぞれ3x3行列とみなして掛け算してください。
$ cat matrix
3 4 -2 1 -9 4
3 -1 2 3 -2 -8
2 5 6 0 2 -3
Q4
A, B, C, Dの4種類の文字を2つにグループ分けするときの全通りのパターンを列挙してください。各グループかならず一つの文字が入っている(空集合を認めない)こととします。
Q5
次のような出力(パスカルの三角形)を得てください。完全に左右対称である必要はありませんが、なるべく左右対称にしてください。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
Q6
次のファイル内のそれぞれ数字について、上の桁の数からそれぞれ10, 9, 8, ..., 1をかけて総和を求めましょう。例えば4065170060なら4*10 + 0*9 + 6*8 + ... + 0*1
を計算してください。さらに、それぞれの行で求めた数について、最大公約数を求めてください。
$ cat isbn
4065170060
4774173444
4822239292
4048930699
4839952981
4839924015
Q7
41人を円形に並べ、1, 2, 3, 4, ..., 41番と番号をつけます。そして、生き残っている3人ごと(最初は3番, 6番, 9番, ...)の順に殺していきます。最後に残る二人は何番になるか、ワンライナーで答えてください。(ヨセフスの問題)
Q8
SEND + MORE = MONEY
の各アルファベットに0から9の数字1字を割り当てて足し算を完成させてください。異なるアルファベッドには異なる数字を割り当ててください。S
、M
には0を割り当てないでください。答えが分かるものであれば出力はなんでも構いません。