【問題と解答】jus共催 第57回シェル芸勉強会

Wed Jan 5 17:52:55 JST 2022 (modified: Wed Jan 5 17:52:55 JST 2022)
views: 145, keywords: プログラミング,勉強会,シェル芸,シェル芸勉強会

  このエントリーをはてなブックマークに追加 
  • 問題で使われているデータファイルはGitHubにあります。クローンは以下のようにお願いします。
  • 環境: 解答例はUbuntu 20.04 LTSで作成。Macの場合はcoreutilsをインストールすると、GNUのコマンドが使えます。BSD系の人は玄人なので各自対応のこと。

Q1

次のファイルから今の元号の数を数えてください。

解答例

「令」は2つUnicodeのコードポイントを持っています。

Q2

次のファイルの中の旧字体の漢字を、新字体に変換してください。

解答例

「星図」が「製図になっちゃいましたが、ご愛嬌ということで・・・。

Q3

次のファイルから、日本語にない漢字を抽出してください。

解答例

cat kanji | grep -o . | mecab -Oyomi  | grep -P '\p{Han}'

Q4

次のファイル内の漢字を簡体字に変換してください。

$ cat hongkong
西營盤站
香港大學站
荃灣站
黃大仙站
鑽石山站
觀塘站

解答例

$ bzcat /usr/share/unicode/Unihan_Variants.txt.bz2 | grep Simpli | sed 's/U+//g' | awk '{print "echo -e s/\\\\U"$1"/\\\\U"$3"/g"}' | bash | grep -v '#' | sed -f- hongkong
西营盘站
香港大学站
荃湾站
黄大仙站
钻石山站
观塘站
$ bzcat /usr/share/unicode/Unihan_Variants.txt.bz2 | sed 's/U+/0x/g' | grep -v '[#<]' | tr '\t' ' ' |awk NF| grep Simpli | opy '["s/"+chr(F1)+"/"+chr(F3)+"/"]' | sed -f- hongkong
西营盘站
香港大学站
荃湾站
黄大仙站
钻石山站
观塘站

Q5

次のシェルスクリプトについて./hoge.bash &を実行の後、1番目のdateの実行から2番目のdateの実行を40秒以上あとに遅らせてください。

$ cat hoge.bash 
#!/bin/bash

date
sleep 30
date

解答例

$ kill -SIGSTOP $! ; sleep 40 ; kill -SIGCONT $!

Q6

小問1

 次のような手続きを実行すると、ある時点でgrepが終わらなくなります。

このgrepを直接Ctrl+Cやkillせず、unkoファイルに細工をする方法で止めてください。

小問2

 できた人は、次のwhile文を止めてみてください。

解答例

 小問1のは、

で止まります。rm unkoでは、ファイルの実体が消えないので止まりません。

 小問2のは、

で止まります。(環境によっては違うかもしれません。)

Q7

x^8 - y^8を因数分解してください。できた人はsin xをテイラー展開でもしててください。

解答例

\[sin x\]のテイラー展開

Q8

7/17を小数になおすと循環小数(ある桁以降が同じ数字の並びの繰り返しになる小数)になります。繰り返される数字の並びについて、最短のものを求めてください(循環の始まる先頭は捉えなくてかまいません)。

解答例

7/17の場合はこれで大丈夫です。最短一致で切り出した後、最長のものを求めます。



prev:日記(2021年12月29日) next:jus共催 第57回シェル芸勉強会リンク集





このサイトではGoogle Analyticsやその他ソーシャルボタンのためにCookieを使用しています。もし同意いただけない場合はブラウザでクッキーを無効にして閲覧をお願いします。This site uses cookies for Google AdSense and some social buttons. If you cannot accept our use of cookies, please disable cookies on your browser.