/lost+found/amanoese

作られては忘れられていくコードや日常のための日記

「jus共催 第47回引きこもりシェル芸勉強会」にリモート参加しました

タイトルのとおり「jus共催 第47回引きこもりシェル芸勉強会」にリモートから参加した記録です。 いままでは勉強会参加の話などあんまり書いていなかったけど、他の人たちを真似てやってみようかなと……

いつもは大阪のサテライト会場から参加しているのですが、今回のシェル芸勉強会は外出自粛要請の影響もありリモートでの開催でした。

勉強会の様子…Live配信されたYouTubeのリンクはこちらです。

www.youtube.com

一応、初心者ということもあり始まる前にちゃんと挨拶とかしておきました。

問題と解答

ここにのっています。

b.ueda.tech

自分の解答とか模範解答とか感想とか

はい。とりあえず自分が解いた解答か良さそうな模範解答ぽいものを載せていきます。

Q1

Q1は最初ということもあり簡単でした。

Q2

これは無理やり解いた感が大きいです。
綺麗な解答は下記みたいですシンプルで良いですね。
実はgrepだけで解けるのは驚きです。

Q3

vimでアレコレしてましたが模範解答が出るまでには解けませんでした。

コレで並ぶんですかうーん。

Q4

これは最近Atcoderをやった影響か、なんとなく決め打ち二分探索で解きたくなってしまって遅くなってしまいました。

しかも 素数を求めるところで NF==2と書くべきところを NF=2 と書いて時間を食ってしまったり……

素直な解答がシンプルで良いですね。

解答例

$ seq inf | factor | awk 'NF==2{print $2}' | xargs | awk '{for(i=1;;i++){for(j=i;j<i+9;j++)printf $j" ";print ""}}' | awk '{print $1+$2+$3+$4+$5+$6+$7+$8+$9}' | grep -m 1 ^479
https://b.ueda.tech/?post=20200425_shellgei_47#q4 より

Q5

空白文字苦手なんですよね。。。解けませんでした。。。

Q6

ほんとうは/usr/share/unicode/emoji/emoji-test.txtにあるファイルを利用するのですが、自分のUbuntuには入ってなかったので仕方なく絵文字のユニコードの範囲で生成。

じつはこのコード勉強会当日に考えたものではなく昔のコードをTwitterで探して書き換えただけだったりする。

出力結果は下記みたいな感じです。

𓀗𓇈𓇼𓅺𓅃𓁩𓌴𓉌𓋛𓅧𓇦𓍃𓏲𓋔𓌢𓇞𓇰𓂹𓉚𓎟𓋵𓉼𓃻𓂧𓂥𓎽𓂯𓎄𓎢𓍉𓃞𓀉𓂾𓀕𓅕𓎜𓏸𓉢𓈗𓄷𓉓𓈁𓆛𓎂𓀣𓐥𓀯𓄽𓄨𓁜𓅤𓋭𓌍𓉭𓎧𓏽𓈒𓁎𓉿𓅜𓍡𓄴𓁆𓉏𓀞𓉄𓉉𓀴𓍺𓂫𓈿𓇜𓆄𓅪𓈢𓌌𓋂𓂇𓏢𓌟𓇷𓏋𓌝𓂊𓎬𓅒𓄯𓊫𓆰𓂤𓋀𓂚𓇁𓎰𓌋𓍶𓇲𓁃𓅋𓎾

たしか今年のはじめに遊戯王のアニメみたのと暗号解読の本を(ヒエログリフと暗号の関係の話)読んだので興奮して、ヒエログリフを表示したくて書いた気がするけど、まさか役に立つ日が来るとはねぇ……

Q7

なんか頑張ってたけどこれユニコード正規化の話だから多分コマンドあるやろ…と思って調べたらuninameというコマンドを見つけてしまった。
日本語情報が乗っているサイト少なかったので綺麗に説明しているサイト探して共有した記憶。 うーん。

さらに次郎さんがQ8のときに出してくれた情報が良さそうでした。

これを参考にすると模範解答はこんなかんじでしょうか?

$ cat spaces|uniname -bcegpu|sed 1d|sort|uniq -c
      1 EM SPACE
      4 EN SPACE
      2 FIGURE SPACE
      2 FOUR-PER-EM SPACE
      6 HAIR SPACE
      6 IDEOGRAPHIC SPACE
      8 LINE FEED (LF)
      4 PUNCTUATION SPACE
     21 SPACE
      1 THREE-PER-EM SPACE
      1 ZERO WIDTH SPACE

あと後日調べてたら知ったけどuconvでもできるのでuniname実は要らないかもしれないとか。言えない。。。

$ cat spaces|uconv -x any-name|egrep -o '{[^}]+'|cut -c 4-|sort|uniq -c
      8 <control-000A>
      1 EM SPACE
      4 EN SPACE
      2 FIGURE SPACE
      2 FOUR-PER-EM SPACE
      6 HAIR SPACE
      6 IDEOGRAPHIC SPACE
      4 PUNCTUATION SPACE
     21 SPACE
      1 THREE-PER-EM SPACE
      1 ZERO WIDTH SPACE

uconvは-x any-name を指定することでユニコードの名前を出してくれます。 調べたところによるとuconvはIPA(International Phonetic Alphabet)やX-SAMPAとかの表示形式にも対応してるっぽいし、どっかで記事書くかなぁ

Q8

uninameを見つけたことでTLは盛り上がっていました。 さてしかし…実はこの問題に関しては2個解答を出せたのですが、ユニコード正規化を利用した下記の解答のほうが好きだったりします。

後日シンプルな解答が出てました。

uconv素晴らしいですね。

全体通して

全8問中6問解けた感じでしょうか?今回は割と調子が良かった気がします。

反省点としてはuninameを紹介してしまったので、uconvで全部できたよとは強く言えないところでしょうか。まあTwitterで言いましたが。

個人的にはuconv推しです。

LTとか

ぐれさんが素晴らしいLTをしてくださっていました。 うーん。Linuxつよいひとつよいなぁ。

セキュリティや脆弱性のはなしなためか、資料は一旦非公開らしいです。 そのうち再公開されたら追記します。

感想とかまとめとか

リモートだと会場(各自宅)の雰囲気がつかめないため、少し新鮮な感じでした。 後日YouTubeで配信できる申請とかしたので、次回はLTしたいなぁ。

最後に勉強会を開いてくださった皆様ありがとうございました。