Skip to content

Instantly share code, notes, and snippets.

@akanehara
Last active August 2, 2019 01:40
Show Gist options
  • Save akanehara/8cf597e1b4e30d246387337d39cb0757 to your computer and use it in GitHub Desktop.
Save akanehara/8cf597e1b4e30d246387337d39cb0757 to your computer and use it in GitHub Desktop.
非実用一行野郎
# スプレッドシートの37万8861列目は UNKO
echo UNKO | perl -aple 'my($d,$x);for(map ord(uc$_)-65,reverse split//,$F[0]){$x+=($_+1)*(26**$d++)};$_=$x'
# dcイディオム(map)
seq 10 | dc -e '[2*]sF' -e '?[lFxpc?z0<.]ds.x'
# dcイディオム(reduce)
seq 10 | dc -e '[+]sF?' -e '?[lFx?z1<.]s.z0<.p'
# 10進encode
printf akanehara | xxd -u -p | tr -d '\n' | dc -e '16i?p' | tr -d '\n\\'
# 10進decode
echo 1797071762166447698529 | dc -e '16o?p' | tr -d '\n\\' | xxd -p -r
# 素因数分解encode
printf 素因数 | xxd -u -p | dc -e '10o16i?p' | tr -d '\n\\' | factor | cut -d \ -f2-
# 素因数分解decode
dc -e '16o?[*z1<.]s.z1<.p' | tr -d '\n\\' | xxd -p -r
# 九九の表 (dc)
seq 11 99 | sed '/0/d;s/.*/&*&/;s/./& /g;s/$/rn[x]nn[=]np/' | dc | xargs -n9
# 九九の表 (AWK)
seq 11 99 | sed 's/./& /g' | awk '!/0/&&$0=$1"x"$2"="$1*$2' | xargs -n9
# ますみ
S=https;W=ja.wikipedia.org;K='(href|src|srcset)';curl -L $S://$W/wiki/スターリン|sed -E -e 's@'$K'="/([^/])@\1="'$S'://'$W'/\2@g;s@'$K'="//@\1="'$S'://@g' -e 's/スターリン/真澄/g;s/ヨシフ/岡田/g;s/・//g;s/ヴィッサリオノヴィチ/ファンファン/g' >_.html&&open _.html
# 知らんけど答弁
curl -s "http://kokkai.ndl.go.jp/api/1.0/speech?$(echo 'speaker=安倍晋三' | perl -MURI::Escape -ple '$_=uri_escape $_;')" | xmllint --encode utf-8 --xpath "//session|//nameOfHouse|//nameOfMeeting|//date|//speech|//speaker" - | nkf --numchar-input | tr -d '\n' | LANG=C LC_ALL=C sed -e 's/ *//g' | sed -e 's/<[\/0-9a-zA-Z]*>/ /g' | xargs -n6 | sed -e 's/。/。知らんけど。/g'
# 32回シェル芸勉強会 Q1
echo 14679 | sed 's/\(.\)/\1 /g' | rev | sed 's/$/ 0sr [lr 1 + sr d lr !=h d lr =g z 0 !=f]sf [n[]pn]sg [[]pn]sh lfx/' | dc
# (dc)フィボナッチ数列
dc -e '0 1 [p d sa + la r l.x]d s. x' | head -n100
# (dc)ユークリッドの互除法
echo 1071 1029 | dc -e '? [sn ln % ln r d 0 !=.]d s. x r p'
# (dc) Fizz Buzz
seq 30 | dc -e '[[Fizz]n 1sR]sF [[Buzz]n 1sR]sB [n]sX [0sR d3%0=F d5%0=B lR0=X []p c ? z0<.]s. ? l.x'
dc -e '[[Fizz]n 1sR]sF [[Buzz]n 1sR]sB [dn]sX [0sR d3%0=F d5%0=B lR0=X []pn 1 + z0<.]s. 1 l.x' | head -n30
# rot13
tr a-zA-Z n-za-mN-ZA-M
# 鳥獣戯画をさがせ
seq 1234 4321 | awk '/1/&&/2/&&/3/&&/4/' | sed 'y/1234/鳥獣戯画/' | gsort -R
seq 4321|awk '/1/&&/2/&&/3/&&/4/'|sed 'y/1234/鳥獣戯画/'|awk 'BEGIN{srand()}$0=rand()"\t"$0'|sort -k1,1n|cut -f2-
# ワンライナーを gzip . Base64 エンコード
gzip <<"EOT" | base64 | tr -d \\n
echo-sd 鳥獣戯画をさがせ!;echo;seq 4321|awk '/1/&&/2/&&/3/&&/4/'|sed 'y/1234/鳥獣戯画/'|awk 'BEGIN{srand()}$0=rand()"\t"$0'|sort -k1,1n|cut -f2-|column
EOT
# gzip . Base64 されたワンライナーをデコード・展開・実行
base64 --decode|gzip -d|sh
# 行列転置
awk '{if(C<NF)C=NF;for(f=1;f<=NF;f++){a[NR,f]=$f}}END{for(i=1;i<=C;i++){r="";for(j=1;j<=NR;j++){r=r a[j,i]" "};print r}}'
# [備忘] 汝、ホールドスペースを忘れるな
seq 5 | sed '1!G;$!h;$!d;'
# 前方でグルーピング
BASELENGTH=3; (seq 10000 10009; seq 20000 20009) | sed -E 's/^(.{'$BASELENGTH'})(.*)$/\1 \2/' | sort -k1 | awk '!d[$1]{d[$1]=$2} d[$1]{d[$1]=d[$1]","$2} END{for(k in d){print k"{"d[k]"}"}}'
# 端末芸下書き
seq 1 50 | sed 's/.*/&;s(&\/3)*30+45/' | bc -l | sed 's/\..*$//' | xargs -n2 | while read x y; do tput cup $x $y; printf "$y"; done
# すごーい」or「そうなんだー」or「たのしー」しか喋らないHTTP 1.0 サーバー
while :;do ! (echo HTTP/1.0 200 OK;echo;echo すごーい そうなんだー たのしー|awk '$0=$'$((`od -vAn -tu1 -N1 /dev/urandom`%3+1))'')|nc -Cl 8080&&break;done
# to UpperCamelCase
# 未完成
# TODO: もっと煮詰める
# TODO: 逆操作もほしい
echo upper_camel_case | gsed 's/\([a-z]\)\([a-z]*\)/\u\1\2/; s/_\([a-z]\)\([a-z]*\)/\u\1\2/g'
# 素数個の素数の積からなる合成数
seq 1000 | factor | while read x; do if echo $x | awk '{print NF-1}' | factor | awk '{if(NF!=2){exit 1}}'; then echo $x; fi; done;
# 長さと幅から範囲のリストを生成
awk -v L=10 -v W=3 'BEGIN{C=0;while(C<L){A=C;B=C+W-1;if((L-1)<B){B=L-1};print A"\t"B;system("");C=B+1}}'
# 2進数encode
xxd -b -c1 | cut -d' ' -f2 | tr -d '\n'
xxd -ps | tr -d '\n' | tr 'a-z' 'A-Z' | sed 's/^/obase=2;ibase=16;/' | bc | tr -d '\' | tr -d '\n'
# 2進数decode
sed 's/^/obase=16;ibase=2;/' | bc | xxd -p -r | nkf
echo こんにちは \
| xxd -ps | { tr -d '\r\n'; echo;} | tr 'a-f' 'A-F' | sed 's/^/obase=10;ibase=16;/' | bc | { tr -d '\\\r\n'; echo;} \
| tee /dev/tty \
| sed 's/^/obase=16;ibase=10;/' | bc | { tr -d '\\\r\n'; echo;} | xxd -p -r
# ポンコツ映画
curl -s http://www1.kcn.ne.jp/~pop/spcpm/f02k/king_kong1986.html | nkf | sed '/^<!--/,/^-->/d;s/<[^>]*>//g;s/^ *//'
# 無限回廊
curl -s http://www.maroon.dti.ne.jp/knight999/jiken.htm | nkf -w | sed 's/Shift_JIS/UTF-8/' | xmllint --html --encode utf-8 --xpath "/" - 2>/dev/null | gsed -n -E 's@^.*<a href="([0-9a-z]+\.htm)"><font face="MS ゴシック" size="2">([^<]+)</font>.*$@\2\t\1@p' | nl -nln
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment