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.
今やってること2015(仮)
1
@tututen
クラスメソッド株式会社
2015年10月03日
本日の移動距離
あんた誰?
3
あんた誰?
• サーモン大好き、パネポン大好き
• クラスメソッド株式会社 所属
• 一応開発者?(所属はオペレーション部)
• Python,Ruby,Golang and more
• 北見工業大学 卒業生 元処理研部員
• 処理研のサーバ...
サーモン
5
パネポン(対戦者募集中)
6
https://www.youtube.com/watch?v=Ubv7NadPSww
2015年遍歴
7
2015年遍歴
2014/11 北見→札幌へ引っ越し
2015/01 現職入社&東京研修
2015/02 札幌オフィス初出社
2015/03末 DevelopersIOイベントスタッフ
2015/05 道内イベント参加復活
8
2015年 勉強会
2015/03 ゆるふわ勉強会(旭川)
2015/05 FraIT #8 (二人ぼっち富良野)
2015/05 Ohotech #12(OSCリハ)
2015/06 CLR/H カフェ #1
2015/07 Infrastr...
遍歴だけだと正直つまらん
今年やってきた中で
書いてきたコード
11
A-1
@tututen
クラスメソッド株式会社
2015年10月03日
断然ウチらしい!
夏のこと
13
Code 2015
問題出題しました
• 出し物班の@ag0u3さん、@darkcrushさんと一緒に
考えました
• 今回はショートコードではないものを出そう
• プログラム言語に依存しない問題
• プログラム書かなくてもある程度解ける問題
15
QRコードを解こう
QRコード
• きっかけはSECCONの札幌大会
• 「簡単に作れるし、簡単にとけそう」
• じゃぁ、大量にQRコード作ろう
17
QRコード
• きっかけはSECCONの札幌大会
• 「簡単に作れるし、簡単にとけそう」
• じゃぁ、大量にQRコード作ろう
18
Code 2015 とは?
出し物班の準備
出し物班の準備
バナナを食いながら
問題を作る人の図
QRコード問題作成の進
• 方針自体は1週間以上前から決まってた
• でも、手を動かせたのは「前日」から…
• で、上級の問題は「Drewさんのいつもの3語」で
• どの道問題は会場で作って公開
26
進 ダメです!
QRコード問題内容
27
data:
application/zip;
base64,…
4096枚 256枚
hint.txt
+
QRコード問題内容
28
data:
application/zip;
base64,…
4096枚 256枚
hint.txt
+
手作業で解かせる気がない上級問題!
QRコード問題作成・回答
• 作るのも解くのもPython
• みんなで問題の難易度とか決めようとFlaskで問題
作れるようにした→結局あんまり使わなかった
• 回答文を@ag0u3さんに作ってもらってウチはQR
コードを作る簡単な作業
• ...
QRコード問題作成・回答
• 作るのも解くのもPython
• みんなで問題の難易度とか決めようとFlaskで問題
作れるようにした→結局あんまり使わなかった
• 回答文を@ag0u3さんに作ってもらってウチはQR
コードを作る簡単な作業
• ...
問題を解いてもらった反応
31
• ポジティブ回答
• 自分の扱える言語を選べた
• 解いてて楽しかった(心折れた時もあったが)
• 中級まではスマホ片手に解けた
わーい
問題を解いてもらった反応
32
• ネガティブ回答
• QRコード読み取るライブラリが見つからなくて
本題が楽しめなかった
• 「言語が選べる」とはいえ、QRコード読み取り
精度を考慮すると選べなかった
うーむ…
Code 2015まとめ
• 出題担当は楽しい
• ただ、出題者の楽しい 解答者の楽しい
• 人数規模が増えるほど楽しいを全員で共有する難
しさ
• 次回やるとしたらもうちょいとっつきやすさ重視
• Python便利(そろそろ3系移行

せねば...
最近のこと
34
カプレカ数
35
カプレカ数
• 正の整数nがあった時に二乗した値を中央で分断
• その分断した2つ数値の和がnと等しい
36
n = 297の時
n*n=88209
カプレカ数
• 正の整数nがあった時に二乗した値を中央で分断
• その分断した2つ数値の和がnと等しい
37
n = 297の時
n*n=88209
88+209=297
カプレカ数ってプログラムの練習に
いいと思うんですよ!
(略)
コード書いてください
書きました
重要なのはこの辺
カプレカ数 方針
42
log10(n)+1で桁数
pow(10, (int)(log10(n)+1))
で桁数の10の累乗
oはnの桁数の10の累乗!
カプレカ数 方針
43
でも
209を取得するのがめんどい
n*n=88209,o=1000
(int)(n*n/o)=88
は簡単
n = 297の時
カプレカ数 方針
44
n*n=88209,o=1000
n*n-((n*n/o)*o)=209
長いと思いません?
美しくないと思いません??
n = 297の時
カプレカ数 方針
45
n*n=88209,o=1000
p=n*n/o;
p+n*n-p*o==n
p=88
n*n-(p*o)=209
n = 297の時
20byte
カプレカ数 方針
n==88+209
という考えを捨てます
n = 297の時
n-88==209
という考えで行きます
カプレカ数 方針
n = 297の時
n-88=209,o=1000
n*n=88209
n*n=88000+209
n*n=(n*n/o)*o
+(n-(n*n/o))
カプレカ数 方針
n = 297の時
n*n=(n*n/o)*o
+(n-(n*n/o))
n*n=(n*n/o)*(o-1)+n
比較するので
n*n==(n*n/o)*(o-1)+n
20byte
カプレカ数 方針
49
n*n=88209,o=1000
p=n*n/o;
p+n*n-p*o==n
p=88
n*n-(p*o)=209
n = 297の時
20byte
あ、あれ?変わらん?
いやいや、そんなことはない
n = 297の時
演算子の優先順位的に
括弧いらないので
n*n==(n*n/o)*(o-1)+n
 
n*n==n*n/o*(o-1)+n
18byte
最終的に…
o;
main(n){
o=pow(10,scanf( %d",&n)+(int)log10(n));
puts(n+n*n/o*(o-1)-n*n?"false":"true");
}
90byte
カプレカ数 まとめ
• 「カプレラ数」[検索]
• Google先生「もしかして:カブレラ数?」
• 正直文字列で扱うほうが楽
• ※但し、C言語を除く
• ただ、自由度は無限大(短くなるとは言ってない)
• 第2定義?知らない子ですね

(ど...
まとめ
• 趣味の範囲でやってることはほぼ変わらない
• 私は元気です
• 仕事の事は触れませんでしたがもっと色々書いて
ます
• 次回はAWS語りたいです、

面白いこと言えるぐらいまで

精進します
•
54
I Love Salmon!!
パネポン(対戦者募集中)
56Ⓒ Classmethod, Inc.
今年やってきた中で書いてきたコード
今年やってきた中で書いてきたコード
今年やってきた中で書いてきたコード
今年やってきた中で書いてきたコード
今年やってきた中で書いてきたコード
Upcoming SlideShare
Loading in …5
×

今年やってきた中で書いてきたコード

1,275 views

Published on

Ohotech #13で発表した資料

Published in: Technology
  • Be the first to comment

  • Be the first to like this

今年やってきた中で書いてきたコード

  1. 1. 今やってること2015(仮) 1 @tututen クラスメソッド株式会社 2015年10月03日
  2. 2. 本日の移動距離
  3. 3. あんた誰? 3
  4. 4. あんた誰? • サーモン大好き、パネポン大好き • クラスメソッド株式会社 所属 • 一応開発者?(所属はオペレーション部) • Python,Ruby,Golang and more • 北見工業大学 卒業生 元処理研部員 • 処理研のサーバとかいじってました。 4
  5. 5. サーモン 5
  6. 6. パネポン(対戦者募集中) 6 https://www.youtube.com/watch?v=Ubv7NadPSww
  7. 7. 2015年遍歴 7
  8. 8. 2015年遍歴 2014/11 北見→札幌へ引っ越し 2015/01 現職入社&東京研修 2015/02 札幌オフィス初出社 2015/03末 DevelopersIOイベントスタッフ 2015/05 道内イベント参加復活 8
  9. 9. 2015年 勉強会 2015/03 ゆるふわ勉強会(旭川) 2015/05 FraIT #8 (二人ぼっち富良野) 2015/05 Ohotech #12(OSCリハ) 2015/06 CLR/H カフェ #1 2015/07 Infrastructure as Code Casual 札幌 #0 2015/08 Code 2015 in 定山渓温泉 2015/08 FraIT #10 アイディアソン 2015/09 PyCon mini Sapporo 2015 (一応スタッフ) 2015/09 クラウドの知識から学ぶ Azure 勉強会@旭川 2015/10 Ohotech #13(←今ココ) 9
  10. 10. 遍歴だけだと正直つまらん
  11. 11. 今年やってきた中で 書いてきたコード 11 A-1 @tututen クラスメソッド株式会社 2015年10月03日
  12. 12. 断然ウチらしい!
  13. 13. 夏のこと 13
  14. 14. Code 2015
  15. 15. 問題出題しました • 出し物班の@ag0u3さん、@darkcrushさんと一緒に 考えました • 今回はショートコードではないものを出そう • プログラム言語に依存しない問題 • プログラム書かなくてもある程度解ける問題 15
  16. 16. QRコードを解こう
  17. 17. QRコード • きっかけはSECCONの札幌大会 • 「簡単に作れるし、簡単にとけそう」 • じゃぁ、大量にQRコード作ろう 17
  18. 18. QRコード • きっかけはSECCONの札幌大会 • 「簡単に作れるし、簡単にとけそう」 • じゃぁ、大量にQRコード作ろう 18
  19. 19. Code 2015 とは?
  20. 20. 出し物班の準備
  21. 21. 出し物班の準備 バナナを食いながら 問題を作る人の図
  22. 22. QRコード問題作成の進 • 方針自体は1週間以上前から決まってた • でも、手を動かせたのは「前日」から… • で、上級の問題は「Drewさんのいつもの3語」で • どの道問題は会場で作って公開 26 進 ダメです!
  23. 23. QRコード問題内容 27 data: application/zip; base64,… 4096枚 256枚 hint.txt +
  24. 24. QRコード問題内容 28 data: application/zip; base64,… 4096枚 256枚 hint.txt + 手作業で解かせる気がない上級問題!
  25. 25. QRコード問題作成・回答 • 作るのも解くのもPython • みんなで問題の難易度とか決めようとFlaskで問題 作れるようにした→結局あんまり使わなかった • 回答文を@ag0u3さんに作ってもらってウチはQR コードを作る簡単な作業 • 中級までは10秒以内出来た • 上級のQRコード4096枚生成するまで10分弱か かった 29
  26. 26. QRコード問題作成・回答 • 作るのも解くのもPython • みんなで問題の難易度とか決めようとFlaskで問題 作れるようにした→結局あんまり使わなかった • 回答文を@ag0u3さんに作ってもらってウチはQR コードを作る簡単な作業 • 中級までは10秒以内出来た • 上級のQRコード4096枚生成するまで10分弱か かった 30
  27. 27. 問題を解いてもらった反応 31 • ポジティブ回答 • 自分の扱える言語を選べた • 解いてて楽しかった(心折れた時もあったが) • 中級まではスマホ片手に解けた わーい
  28. 28. 問題を解いてもらった反応 32 • ネガティブ回答 • QRコード読み取るライブラリが見つからなくて 本題が楽しめなかった • 「言語が選べる」とはいえ、QRコード読み取り 精度を考慮すると選べなかった うーむ…
  29. 29. Code 2015まとめ • 出題担当は楽しい • ただ、出題者の楽しい 解答者の楽しい • 人数規模が増えるほど楽しいを全員で共有する難 しさ • 次回やるとしたらもうちょいとっつきやすさ重視 • Python便利(そろそろ3系移行
 せねば…) 33
  30. 30. 最近のこと 34
  31. 31. カプレカ数 35
  32. 32. カプレカ数 • 正の整数nがあった時に二乗した値を中央で分断 • その分断した2つ数値の和がnと等しい 36 n = 297の時 n*n=88209
  33. 33. カプレカ数 • 正の整数nがあった時に二乗した値を中央で分断 • その分断した2つ数値の和がnと等しい 37 n = 297の時 n*n=88209 88+209=297
  34. 34. カプレカ数ってプログラムの練習に いいと思うんですよ! (略) コード書いてください
  35. 35. 書きました
  36. 36. 重要なのはこの辺
  37. 37. カプレカ数 方針 42 log10(n)+1で桁数 pow(10, (int)(log10(n)+1)) で桁数の10の累乗 oはnの桁数の10の累乗!
  38. 38. カプレカ数 方針 43 でも 209を取得するのがめんどい n*n=88209,o=1000 (int)(n*n/o)=88 は簡単 n = 297の時
  39. 39. カプレカ数 方針 44 n*n=88209,o=1000 n*n-((n*n/o)*o)=209 長いと思いません? 美しくないと思いません?? n = 297の時
  40. 40. カプレカ数 方針 45 n*n=88209,o=1000 p=n*n/o; p+n*n-p*o==n p=88 n*n-(p*o)=209 n = 297の時 20byte
  41. 41. カプレカ数 方針 n==88+209 という考えを捨てます n = 297の時 n-88==209 という考えで行きます
  42. 42. カプレカ数 方針 n = 297の時 n-88=209,o=1000 n*n=88209 n*n=88000+209 n*n=(n*n/o)*o +(n-(n*n/o))
  43. 43. カプレカ数 方針 n = 297の時 n*n=(n*n/o)*o +(n-(n*n/o)) n*n=(n*n/o)*(o-1)+n 比較するので n*n==(n*n/o)*(o-1)+n 20byte
  44. 44. カプレカ数 方針 49 n*n=88209,o=1000 p=n*n/o; p+n*n-p*o==n p=88 n*n-(p*o)=209 n = 297の時 20byte
  45. 45. あ、あれ?変わらん?
  46. 46. いやいや、そんなことはない n = 297の時 演算子の優先順位的に 括弧いらないので n*n==(n*n/o)*(o-1)+n   n*n==n*n/o*(o-1)+n 18byte
  47. 47. 最終的に… o; main(n){ o=pow(10,scanf( %d",&n)+(int)log10(n)); puts(n+n*n/o*(o-1)-n*n?"false":"true"); } 90byte
  48. 48. カプレカ数 まとめ • 「カプレラ数」[検索] • Google先生「もしかして:カブレラ数?」 • 正直文字列で扱うほうが楽 • ※但し、C言語を除く • ただ、自由度は無限大(短くなるとは言ってない) • 第2定義?知らない子ですね
 (どう頑張っても面白くない=
  愚直実装) 53
  49. 49. まとめ • 趣味の範囲でやってることはほぼ変わらない • 私は元気です • 仕事の事は触れませんでしたがもっと色々書いて ます • 次回はAWS語りたいです、
 面白いこと言えるぐらいまで
 精進します • 54
  50. 50. I Love Salmon!!
  51. 51. パネポン(対戦者募集中) 56Ⓒ Classmethod, Inc.

×