第14回シェル芸勉強会で個人的に面白かった解答
Sun Dec 14 23:02:46 JST 2014 (modified: Sun Oct 1 10:50:27 JST 2017)
views: 2362, keywords:CLI,UNIX/Linuxサーバ,USP友の会,勉強になりました,勉強会,寝る,シェル芸 この記事は最終更新日が7年以上前のものです。
個人的に印象に残った解法をペタペタ貼り付けします。シェル芸勉強会関連のウェブ工作活動が続いておりますが、これが最後です。
シェル芸初参加だがみんな変態すぎて
まるで追いつけない。
#シェル芸
— YOUG (@YOUG_XX) 2014, 12月 13
・・・追いつかなくて・・・大丈夫だと思います・・・。
では、いってみましょう。
Q1での副会長の解答
腕が上がってるような気が。なぜかRedHat系でしか動かないのですが、いい感じです。
echo $(seq 1 100) | sed -e 's/[[:space:]]/\\ \\\\*\\ /g' | xargs expr #シェル芸
— (っ´∀`)っ ゃー (@nullpopopo) 2014, 12月 13
Q2をGNU sedでなくオリジナルのsedで解く
n;n;n;n;n;n;n;n;n;n;n;n;n;n;n;n;n;n;n;n;・・・
seq 100 | sed 'n;n;s/.*/Fizz/' | sed 'n;n;n;n;s/[0-9]*$/Buzz/' #シェル芸
— No Wasabeef No Life (@Hexomino) 2014, 12月 13
seq 100 | sed -e 'n;n;s/.*/Fizz/' | sed 'n;n;n;n;/F/s/$/Buzz/;/F/!s/.*/Buzz/'
#シェル芸
— fujita masaru (@t5tmy) 2014, 12月 13
Q2
seq 100 | sed -e 'n;n;s/^.*$/Fz/' | sed -e 'n;n;n;n;s/^.*$/Bz/' | sed -e 'n;n;n;n;n;n;n;n;n;n;n;n;n;n;s/^.*$/FzBz/'
#シェル芸
— hidezzz (@hidezzz) 2014, 12月 13
Q2をjqで解く
jqで解くって、何を言っているのか意味がわかりません・・・
sedじゃなくてjqで
% seq 100|jq -r '. as$i|[["Fizz"][.%3],["Buzz"][.%5]]|add//$i' #シェル芸
— eban (@eban) 2014, 12月 13
フェルマーですか?
#シェル芸 問題3、解けたけど長すぎるので提出できない!! (答えは0x13と0x0D)
— 日柳 光久 (@mikkun_jp) 2014, 12月 13
opensslで素数の問題を解く
みなさんいったいなんなんですか?opensslは計算コマンドじゃありませんよ。しかも二人。
% echo 0xaf 0x13 0x0d 0x24 0x58 | fmt -1 | sed s/..//|xargs -n1 openssl prime -hex | grep -v not #シェル芸
— eban (@eban) 2014, 12月 13
echo 0xaf 0x13 0x0d 0x24 0x58 | xargs printf '%d\\n' | xargs -n 1 openssl prime | grep -v 'not'
微妙。。
#シェル芸
— fujita masaru (@t5tmy) 2014, 12月 13
Q3をRubyで解く
コマンド並みにメソッドとオプションを知っていないとできない芸だと思う・・・。
% echo 0xaf 0x13 0x0d 0x24 0x58 | ruby -rmathn -ane 'puts $F.select{|x|Prime.prime?(x.hex)} #シェル芸
— eban (@eban) 2014, 12月 13
今回も炸裂したphp_cli芸
ありがとうございます。
echo 0xaf 0x13 0x0d 0x24 0x58 | php -r '$a=explode(" ", fgets(STDIN));foreach($a as $b){if(gmp_prob_prime($b)){echo $b,"\\n";}}' #シェル芸
— kuwa1 (@kuwashima) 2014, 12月 13
Pythonつこうた
Pythonメタプログラマーと呼んでくらっさい。
Q7前半 echo '1/4 + 2/5 + 7/16 - 5/9' | sed 's/\\([+-]\\) /\\1/g' |
sed 's;\\([+-]*[0-9]*\\)/\\([0-9]*\\);+ Fraction(\\1,\\2);g' |
#シェル芸
— Ryuichi UEDA (@ryuichiueda) 2014, 12月 14
Q7後半
awk '{print "from fractions import Fraction ; a = ",$0,";print a"}' |
python
#シェル芸
— Ryuichi UEDA (@ryuichiueda) 2014, 12月 14
(自分の解答例をコピペしたツイートを貼り付けてます。)
あ。もう一人・・・
echo 'print '$(seq 100 | tr '\\n' '*')1 | python
#シェル芸
— fujita masaru (@t5tmy) 2014, 12月 13
巻島?パリグランプリ?
mathematicaみたいなことができるらしいです。今度使ってみます。mecabもそうですが、CLIと親和性の強い大型コマンドは本当に有難いです。感謝感謝。
echo '1/4 + 2/5 + 7/16 - 5/9' | paste - <(echo ';') | maxima | tail -4 #シェル芸
— fukuda (@fukuda0000) 2014, 12月 13
PARI/GPを使うと計算できてしまう(インストールすると200MBほど食うが)。
% sudo apt install pari-gp
% echo '1/4 + 2/5 + 7/16 - 5/9' | gp -f -q
383/720
#シェル芸
— eban (@eban) 2014, 12月 13
地獄のQ8
自分のです。汚い。ここまで来ると左から右へ一筆書きというより、頭の中でインデントを想像しながらプログラミングする感覚になります。もちろん、遊びです。
Q8 会場で作った答え。死ぬ。 #シェル芸 pic.twitter.com/NUbQQQw19i
— Ryuichi UEDA (@ryuichiueda) 2014, 12月 13
スタッフの方、会場に来られた方、リモート参戦の方、皆様ありがとうございました。
寝る。