Just another Ruby porter,


7月中旬の日記 | RDF

2016-07-12 (Tue)

正規表現で素数

jq 1.5だと正規表現対応しているので素数判定に使える。

% seq 2 100 | jq 'select("0"*.|test("^(00+?)\\1+$")|not)'                           
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97

桁数が増えると処理時間も増える。

% echo 100000000 | /usr/bin/time -f %E jq 'select("0"*.|test("^(00+?)\\1+$")|not)'
0:10.16

やっぱ素数にはfactorだな。

cf: https://twitter.com/climagic/status/752873364109221888


2016-07-11 (Mon)

333333333333333331

やはり繰り返しはjqを使うと楽だ。

% seq 20 | while read n;do printf '%0*d1\n' $n;done | tr 0 3 | factor | awk -M '$0*=!$3'
31
331
3331
33331
333331
3333331
33333331
333333333333333331
% seq 20 | jq -r '"3"*.+"1"' | factor | awk -M '$0*=!$3'
31
331
3331
33331
333331
3333331
33333331
333333333333333331


2016-07-10 (Sun)

Pythonでdot notation

最近Lambda FunctionはnodeじゃなくてPython使ってんだけど、
辞書でのアクセスでついdict.fooと書いてエラーを喰らう。
というわけでなんかいい感じでやってくれる easydictというモジュールを見つけた。

% pip install -t . easydict
% python -c 'from easydict import EasyDict; print(EasyDict({"foo":"bar"}).foo)'
bar

自動とまではいかないが、お手軽ではある。


2016-07-09 (Sat)

jqで短冊

短冊jq芸を書こうと思ってたら寝落ちして明け方twitterに投稿したのがこれ。

% echo ちょっと出遅れた | jq -Rrs '"+----+","| \((./"")[:-1][]) |","+----+"'
+----+
| ち |
| ょ |
| っ |
| と |
| 出 |
| 遅 |
| れ |
| た |
+----+

やはり寝惚けてたらしく-sなんて不要だった。
そうすれば1.5のバグっぽい仕様の小細工([:-1])も不要になる。

% echo ちょっと出遅れた | jq -rR '"+----+","| \((./"")[]) |","+----+"' 
+----+
| ち |
| ょ |
| っ |
| と |
| 出 |
| 遅 |
| れ |
| た |
+----+

"+----+"が2個出てくるから変数に入れたいとこだが、残念ながらそのほうが長くなる。

% echo ちょっと出遅れた | jq -rR '"+----+"as$s|$s,"| \((./"")[]) |",$s'
+----+
| ち |
| ょ |
| っ |
| と |
| 出 |
| 遅 |
| れ |
| た |
+----+

2016-07-08 (Fri)

jqの小ネタ

複数の条件があるときは全部愚直に書かないといけない。

% seq 10 | jq 'select(. == 1 or . == 3 or . == 8)' 
1
3
8

正規表現でと思ったが、元が数値なのでかえって面倒なことに。

% seq 10 | jq 'select(tostring|test("^(1|3|8)$"))'
1
3
8

jqではcommaでまとめられるようだ。

% seq 10 | jq 'select(. == (1,3,8))'              
1
3
8

cf: json - How to filter array of objects by element property values using jq? - Stack Overflow


7月中旬の日記 | RDF


WWW を検索 jarp.does.notwork.org を検索

わたなべひろふみ
Key fingerprint = C456 1350 085F A320 C6C8 8A36 0F15 9B2E EB12 3885
Valid HTML 4.01!