Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
本日の怪物曲線
自己紹介
Twitter:	ヘキソミノ @Hexomino
ネットワークエンジニア
外資系メーカ勤務
シェル芸勉強会参加歴 2年強
前回の伝説のLTおさらい
•鳥海師匠による eval黒魔術
• evalコマンド多段評価によるフラクタル曲線デモ
•ドラゴン曲線
•ヒルベルト曲線
俺もやってみたい
まずは前回のLTの解析
•鳥海師匠による eval黒魔術
•ヒルベルト曲線
l='L${r}FR${l}F${l}RF${r}L' r='R${l}FL${r}F${r}LF${l}R'
eval eval eval eval eval eva...
まずは前回のLTの解析
•鳥海師匠によるヒルベルト曲線
l='L${r}FR${l}F${l}RF${r}L'
r='R${l}FL${r}F${r}LF${l}R'
お題:
シェルピンスキー曲線
シェルピンスキー曲線
•鳥海師匠によるeval黒魔術を継承
•平面を充填する閉曲線
c='N${c}FR${c}LLLFFL${c}FR${c}'
L: 左へ45度回転
R: 右へ90度回転
鳥海流でやってみた
シェルピンスキー曲線シェル芸
c='N${c}FR${c}LLLFFL${c}FR
${c}' eval eval eval c=
eval echo '$c' | { read a;
b=${a%%F*}; echo "from
turtle...
ドラゴン曲線
ヒルベルト曲線
シェルピンスキー曲線
・・・
他にも空間充填曲線はあるか?
あった
ゴスパーの流蛇
1次のゴスパー流蛇
ゴスパーの流蛇
•ゴスパー曲線の写像
• A	(正順)	à SALBLLBRARRAARBL
• B	(逆順)	à SRALBBLLBLARRARB
• L:	60度左回転
• R:	60度右回転
• S:	θ (tanθ =	√3/5)	右回...
ゴスパーの流蛇シェル芸
• sed +	AWK	+	Pythonでやってみた
echo xx | sed "s:.:| sed
's/^/S/;y/AB/CD/;s/C/ALBLLBRARRAARBL/g;s/D/RALBBLLBLARRARB...
2次のゴスパーの流蛇
3次のゴスパーの流蛇
4次のゴスパーの流蛇
5次のゴスパーの流蛇
さらに
拡張ゴスパー怪物曲線
• グーグル先生に聞いてみた
•ゴスパーの流蛇は N=7
•「ふつう思うのは、『N=7と
言っているのだから、これ
だけではないでしょう』と」
• 参考:	IPX社員によるブログ 鹿又さん
http://ipx.haten...
ゴスパーの怪物曲線 (N=13)
A (正順) à LLBRARRALBLLBRAARRARBLARBLLBLAR
B (逆順) à LBRARRALBRALBLLBBLARRARBLLBLARR
N=13 ゴスパー1次曲線 N=13 ゴスパー...
ゴスパーの怪物曲線 (N=37)
A à ALBRAARBLLBLARBLLBLARBRALBLLBRARRALBRARRALBRAARBLLBLALBBRARRAALBRARRALBBLARBL
B à RALBRAARBLLBLARBBLL...
ゴスパーの怪物曲線 (N=19)
A à AALBBLALBBLLBLARRARBRAARBRAAARBBL
B à RAALBBBLALBBLALBLLBRARRAARBRAARBB
N=19 ゴスパー1次曲線
ラーメンみたいなやつ
ゴスパーの怪物曲線 (N=19,2次)
ゴスパーの怪物曲線 (N=19,3次)
ゴスパーの怪物曲線 (N=19)
拡張ゴスパー
ラーメン曲線デモ
echo xx | sed "s:.:| sed
's/^/S/;y/AB/CD/;s/C/AALBBLALBBLLBLARRARBRAARBRAAARBBL/g;s/D/RAA...
Upcoming SlideShare
Loading in …5
×

本日の怪物曲線 2016/6/18

7,834 views

Published on

シェル芸を使用した空間充填曲線デモ

Published in: Science
  • Be the first to comment

本日の怪物曲線 2016/6/18

  1. 1. 本日の怪物曲線
  2. 2. 自己紹介 Twitter: ヘキソミノ @Hexomino ネットワークエンジニア 外資系メーカ勤務 シェル芸勉強会参加歴 2年強
  3. 3. 前回の伝説のLTおさらい •鳥海師匠による eval黒魔術 • evalコマンド多段評価によるフラクタル曲線デモ •ドラゴン曲線 •ヒルベルト曲線
  4. 4. 俺もやってみたい
  5. 5. まずは前回のLTの解析 •鳥海師匠による eval黒魔術 •ヒルベルト曲線 l='L${r}FR${l}F${l}RF${r}L' r='R${l}FL${r}F${r}LF${l}R' eval eval eval eval eval eval l= r= eval echo '$l' | { read a; b=${a%%F*}; echo "from turtle import *;speed(0);pensize(2);ms=min(screensize())*0.8;l=2*ms/(2* *${#b}-1);up();setpos(-ms,-ms);down();${a}done()"; } | sed 's/L/lt(90);/g;s/R/rt(90);/g;s/F/fd(l);/g' | python
  6. 6. まずは前回のLTの解析 •鳥海師匠によるヒルベルト曲線 l='L${r}FR${l}F${l}RF${r}L' r='R${l}FL${r}F${r}LF${l}R'
  7. 7. お題: シェルピンスキー曲線
  8. 8. シェルピンスキー曲線 •鳥海師匠によるeval黒魔術を継承 •平面を充填する閉曲線 c='N${c}FR${c}LLLFFL${c}FR${c}' L: 左へ45度回転 R: 右へ90度回転
  9. 9. 鳥海流でやってみた
  10. 10. シェルピンスキー曲線シェル芸 c='N${c}FR${c}LLLFFL${c}FR ${c}' eval eval eval c= eval echo '$c' | { read a; b=${a%%F*}; echo "from turtle import *;speed(0);pensize(2);ms=m in(screensize())*0.9;l=ms/ (2**${#b});up();setpos(- ms+l/2,- ms+l);down();L${a}FR${a}FR ${a}FR${a}FR done()"; } | sed 's/N//g;s/RLL//g;s/L/lt(45 );/g;s/R/rt(90);/g;s/FF/fd (l);/g;s:F:fd(l/sqrt(2));: g' | python
  11. 11. ドラゴン曲線 ヒルベルト曲線 シェルピンスキー曲線 ・・・ 他にも空間充填曲線はあるか?
  12. 12. あった
  13. 13. ゴスパーの流蛇 1次のゴスパー流蛇
  14. 14. ゴスパーの流蛇 •ゴスパー曲線の写像 • A (正順) à SALBLLBRARRAARBL • B (逆順) à SRALBBLLBLARRARB • L: 60度左回転 • R: 60度右回転 • S: θ (tanθ = √3/5) 右回転 鳥海流 eval黒魔術は断念 L
  15. 15. ゴスパーの流蛇シェル芸 • sed + AWK + Pythonでやってみた echo xx | sed "s:.:| sed 's/^/S/;y/AB/CD/;s/C/ALBLLBRARRAARBL/g;s/D/RALBBLLBLARRARB/g' :g;s:^:echo A :;" | sh | awk '{match($0,/^S*/);deg=RLENGTH;print "from turtle import *;speed(0);pensize(2);ms=min(screensize())*.95;l=ms*sqrt(3)/( sqrt(7)**" deg ");up();setpos(-ms*sqrt(3)/2,- ms/2);down();rt(atan(sqrt(3)/5)*" deg "*180/pi);" $0 "done();"}' | sed 's/S//g;s/LR//g;s/L/lt(60);/g;s/R/rt(60);/g;s/[AB]/fd(l);/g;' | python
  16. 16. 2次のゴスパーの流蛇
  17. 17. 3次のゴスパーの流蛇
  18. 18. 4次のゴスパーの流蛇
  19. 19. 5次のゴスパーの流蛇
  20. 20. さらに
  21. 21. 拡張ゴスパー怪物曲線 • グーグル先生に聞いてみた •ゴスパーの流蛇は N=7 •「ふつう思うのは、『N=7と 言っているのだから、これ だけではないでしょう』と」 • 参考: IPX社員によるブログ 鹿又さん http://ipx.hatenablog.com/entry/2015/09/23/185322 • ゴスパーの怪物曲線は N=3n+1 として一般化
  22. 22. ゴスパーの怪物曲線 (N=13) A (正順) à LLBRARRALBLLBRAARRARBLARBLLBLAR B (逆順) à LBRARRALBRALBLLBBLARRARBLLBLARR N=13 ゴスパー1次曲線 N=13 ゴスパー2次曲線
  23. 23. ゴスパーの怪物曲線 (N=37) A à ALBRAARBLLBLARBLLBLARBRALBLLBRARRALBRARRALBRAARBLLBLALBBRARRAALBRARRALBBLARBL B à RALBRAARBLLBLARBBLLBLAARBRARRALBBLARBLLBLARBLLBLARRARBLALBRARRALBRARRALBBLARB N=37 ゴスパー1次曲線 N=37 ゴスパー2次曲線
  24. 24. ゴスパーの怪物曲線 (N=19) A à AALBBLALBBLLBLARRARBRAARBRAAARBBL B à RAALBBBLALBBLALBLLBRARRAARBRAARBB N=19 ゴスパー1次曲線 ラーメンみたいなやつ
  25. 25. ゴスパーの怪物曲線 (N=19,2次)
  26. 26. ゴスパーの怪物曲線 (N=19,3次)
  27. 27. ゴスパーの怪物曲線 (N=19) 拡張ゴスパー ラーメン曲線デモ echo xx | sed "s:.:| sed 's/^/S/;y/AB/CD/;s/C/AALBBLALBBLLBLARRARBRAARBRAAARBBL/g;s/D/RAALBBB LALBBLALBLLBRARRAARBRAARBB/g':g;s:^:echo A :;" | sh | awk '{match($0,/^S*/);deg=RLENGTH;print "from turtle import *;speed(0);pensize(2);ms=min(screensize())*.95;l=ms*sqrt(3)/(sqrt(19 )**" deg ");up();setpos(-ms*sqrt(3)/2,- ms/2);down();rt(atan(sqrt(3)/4)*" deg "*180/pi);" $0 "done();"}' | sed 's/S//g;s/LR//g;s/L/lt(60);/g;s/R/rt(60);/g;s/[AB]/fd(l);/g;' | python

×