Skip to content

Instantly share code, notes, and snippets.

View greymd's full-sized avatar
😉
Nanchatte

Yasuhiro Yamada greymd

😉
Nanchatte
View GitHub Profile
@greymd
greymd / 123.sh
Last active January 1, 2016 05:25
1,2,3の3つの数字を並び替えた時の全パターンを列挙する
$ echo {1,2,3}{1,2,3}{1,2,3}'\n' | awk '$1=$1' | sed -nr '/(.)(.?)\1/!p'
123
132
213
231
312
321
$ echo 1 2 3 | egison -F1,1c -T -m '(match-all-lambda (multiset integer)[<cons $a <cons $b <cons $c _>>> [a b c "#_EOF_#"]])' | sed -r 's/\t"#_EOF_#"\t?/\n/g' | awk -F '\t' '$1=$1'
1 2 3
@greymd
greymd / gist:3865f73b3c6159347657
Last active February 19, 2016 12:39
100までの素数分割。ひどいアプローチ。
# Q https://twitter.com/tmnghryk/status/700073381454974976
# A
time while true; do factor {2..100} | awk '$0*=!$3' | xargs | perl -anlE '{for (@F) { $i=int(rand(2)); $su[$i]+=$_; $s[$i].="$_ "} }END{say "$s[0]: $su[0]\n$s[1]: $su[1]"}' | grep -E '530$' && break ; done
@greymd
greymd / gist:63b1b9623daa7ab1bce7
Last active March 11, 2016 08:09
「ズン」と「ドコ」をランダムに無限に生成し「ズン・ズン・ズン・ズン・ドコ」のパターンが出現した時に「キ・ヨ・シ♪」と出力して動作を停止するEgisonのコード。
((match-lambda
(list string) {[
<join $a
(loop $i [1 4]
<cons (& ,"ズン" $z_i) ...>
(& <cons ,"ドコ" _> $d))> [a z (car d) "キ・ヨ・シ ♪"]]})
(map 1#(R.car {"ズン" "ドコ"}) nats))
# 結果
@greymd
greymd / gist:08e381c73a9d9f646a8079d59ed5ba6d
Created April 30, 2016 15:51
南武線:駅名,停車パターン
川崎,始発 尻手,各停 矢向,各停 鹿島田,快速 平間,各停 向河原,快速 武蔵小杉,快速 武蔵中原,快速 武蔵新城,快速 武蔵溝ノ口,快速 津田山,各停 久地,各停 宿河原,各停 登戸,快速 中野島,各停 稲田堤,快速 矢野口,各停 稲城長沼,快速 南多摩,快速 府中本町,快速 分倍河原,快速 西府,快速 谷保,快速 矢川,快速 西国立,快速 立川,始発
@greymd
greymd / 2016-04-30_lt.md
Last active May 2, 2016 00:36
2016-04-30 シェル芸勉強会 LT
@greymd
greymd / soul-number.egi
Last active May 19, 2016 16:19
Egisonでソウルナンバー (https://twitter.com/twi_carnival/status/732782289604612096) を計算する
; num-to-digits from egison-libs https://github.com/egison-libs/project-euler
(define $num-to-digits
(lambda [$n]
(map 1#(read (pack {%1})) (unpack (show n)))))
(define $soul-sum
1#(match (num-to-digits %1) (list integer)
{[<cons $s ,{}> s]
[<cons $a $b> (soul-sum (foldl + a b))]}))
ctggggaaatctacagggcaccccaaaaaccactgcaggagaggccgcttgagggatccccggggaaacctcaagcgaatctgggaagggagcgtacctgggtcgatcgtgcgcgttggaggagactccttcgtagcttcgacgcccggccgcccctcctcgaccgcttgggagactacccggtggatacaactcacgcggctcttacctgttgttagtaaaaaaaggtgtccctttgtagcccct
@greymd
greymd / partition_num_detail.egi
Last active June 19, 2016 16:14
分割数を求める際の整数の分割方法を表示したい
#!/usr/bin/env egison
(define $main
(lambda [$args]
(each display (divnum (read (car args))))))
(define $divnum
(lambda [$n]
(unique
(match-all (take n (repeat1 1)) (list integer)
[(loop $i [1 n] <join $a_i ...> <nil>)
$ echo "1,2,3\n4,5,6" | jq -R 'split(",")'
# result
[
"1",
"2",
"3"
]
[
"4",
"5",
@greymd
greymd / binet.egi
Created June 21, 2016 08:55
Calculate fibonacci numbers with O( log n)
(define $binet
(lambda [$n]
(* (/ 1 (sqrt 5))
(- (/ (+ 1 (sqrt 5)) 2)^n
(/ (- 1 (sqrt 5)) 2)^n))))
; > (binet 3)
; 2
; > (binet 1)
; 1