Soumettre la recherche
Mettre en ligne
時間をかけて解く FizzBuzz
•
5 j'aime
•
2,189 vues
Kazuyuki CHINDA
Suivre
2011-11-09, 社内LT大会@aiming-inc 2012-03-28, Shinjuku.rb #03 LT
Lire moins
Lire la suite
Technologie
Signaler
Partager
Signaler
Partager
1 sur 32
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
MEZAMASHARE(めざまシェア)
MEZAMASHARE(めざまシェア)
Shinnosuke HORIGUCHI
20180807 NefryUserMeetup#1
20180807 NefryUserMeetup#1
Ayachika Kitazaki
私とscreen (@第30回CBUG Meeting) 2014/5/17(土)@池袋
私とscreen (@第30回CBUG Meeting) 2014/5/17(土)@池袋
Genta Iha
オセロゲームでコードゴルフ
オセロゲームでコードゴルフ
洸人 高橋
クラウドハニーポットを運用しよう!
クラウドハニーポットを運用しよう!
Mizutani Masayoshi
Your code sucks, let's fix it - DPC UnCon
Your code sucks, let's fix it - DPC UnCon
Rafael Dohms
セキュリティ・キャンプのススメ
セキュリティ・キャンプのススメ
Hiromu Yakura
The FizzBuzz Programing Contest
The FizzBuzz Programing Contest
Junichi Ito
Recommandé
MEZAMASHARE(めざまシェア)
MEZAMASHARE(めざまシェア)
Shinnosuke HORIGUCHI
20180807 NefryUserMeetup#1
20180807 NefryUserMeetup#1
Ayachika Kitazaki
私とscreen (@第30回CBUG Meeting) 2014/5/17(土)@池袋
私とscreen (@第30回CBUG Meeting) 2014/5/17(土)@池袋
Genta Iha
オセロゲームでコードゴルフ
オセロゲームでコードゴルフ
洸人 高橋
クラウドハニーポットを運用しよう!
クラウドハニーポットを運用しよう!
Mizutani Masayoshi
Your code sucks, let's fix it - DPC UnCon
Your code sucks, let's fix it - DPC UnCon
Rafael Dohms
セキュリティ・キャンプのススメ
セキュリティ・キャンプのススメ
Hiromu Yakura
The FizzBuzz Programing Contest
The FizzBuzz Programing Contest
Junichi Ito
Javaで最強のfizz buzz
Javaで最強のfizz buzz
yy yank
良質なコードを高速に書くコツ
良質なコードを高速に書くコツ
Shunji Konishi
オブジェクト指向やめましょう
オブジェクト指向やめましょう
なおき きしだ
CTFはとんでもないものを 盗んでいきました。私の時間です…
CTFはとんでもないものを 盗んでいきました。私の時間です…
Hiromu Yakura
型についてあれこれ
型についてあれこれ
Yuta Shimakawa
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣
Masahiro Nishimi
オブジェクト指向できていますか?
オブジェクト指向できていますか?
Moriharu Ohzu
ソースコードの品質向上のための効果的で効率的なコードレビュー
ソースコードの品質向上のための効果的で効率的なコードレビュー
Moriharu Ohzu
Introduction fasttext
Introduction fasttext
Kazuyuki CHINDA
仮想電子工作のすすめ
仮想電子工作のすすめ
Kazuyuki CHINDA
Query selecterの話
Query selecterの話
Kazuyuki CHINDA
ウェブエンジニアのための色の話
ウェブエンジニアのための色の話
Kazuyuki CHINDA
Shinjuku.html5.lunch #11
Shinjuku.html5.lunch #11
Kazuyuki CHINDA
typo の傾向と対策
typo の傾向と対策
Kazuyuki CHINDA
エンジニアのためのUX入門
エンジニアのためのUX入門
Kazuyuki CHINDA
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
Contenu connexe
En vedette
Javaで最強のfizz buzz
Javaで最強のfizz buzz
yy yank
良質なコードを高速に書くコツ
良質なコードを高速に書くコツ
Shunji Konishi
オブジェクト指向やめましょう
オブジェクト指向やめましょう
なおき きしだ
CTFはとんでもないものを 盗んでいきました。私の時間です…
CTFはとんでもないものを 盗んでいきました。私の時間です…
Hiromu Yakura
型についてあれこれ
型についてあれこれ
Yuta Shimakawa
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣
Masahiro Nishimi
オブジェクト指向できていますか?
オブジェクト指向できていますか?
Moriharu Ohzu
ソースコードの品質向上のための効果的で効率的なコードレビュー
ソースコードの品質向上のための効果的で効率的なコードレビュー
Moriharu Ohzu
En vedette
(8)
Javaで最強のfizz buzz
Javaで最強のfizz buzz
良質なコードを高速に書くコツ
良質なコードを高速に書くコツ
オブジェクト指向やめましょう
オブジェクト指向やめましょう
CTFはとんでもないものを 盗んでいきました。私の時間です…
CTFはとんでもないものを 盗んでいきました。私の時間です…
型についてあれこれ
型についてあれこれ
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣
オブジェクト指向できていますか?
オブジェクト指向できていますか?
ソースコードの品質向上のための効果的で効率的なコードレビュー
ソースコードの品質向上のための効果的で効率的なコードレビュー
Plus de Kazuyuki CHINDA
Introduction fasttext
Introduction fasttext
Kazuyuki CHINDA
仮想電子工作のすすめ
仮想電子工作のすすめ
Kazuyuki CHINDA
Query selecterの話
Query selecterの話
Kazuyuki CHINDA
ウェブエンジニアのための色の話
ウェブエンジニアのための色の話
Kazuyuki CHINDA
Shinjuku.html5.lunch #11
Shinjuku.html5.lunch #11
Kazuyuki CHINDA
typo の傾向と対策
typo の傾向と対策
Kazuyuki CHINDA
エンジニアのためのUX入門
エンジニアのためのUX入門
Kazuyuki CHINDA
Plus de Kazuyuki CHINDA
(7)
Introduction fasttext
Introduction fasttext
仮想電子工作のすすめ
仮想電子工作のすすめ
Query selecterの話
Query selecterの話
ウェブエンジニアのための色の話
ウェブエンジニアのための色の話
Shinjuku.html5.lunch #11
Shinjuku.html5.lunch #11
typo の傾向と対策
typo の傾向と対策
エンジニアのためのUX入門
エンジニアのためのUX入門
Dernier
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Hiroshi Tomioka
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Dernier
(11)
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
時間をかけて解く FizzBuzz
1.
時間をかけて解くFizzBuzz
kchinda@aiming-inc.com
2.
FizzBuzz 遊び方 プレイヤーは円状に座る。 最初のプレイヤーは「1」と数字を発言する。
次のプレイヤーは直前のプレイヤーの次の数字を発言していく。 ただし、 3で割り切れる場合は 「Fizz」 5で割り切れる場合は 「Buzz」 両者で割り切れる場合は 「Fizz Buzz」 を数の代わりに発言しなければならない。 発言を間違えた者や、ためらった者は脱落となる。 http://ja.wikipedia.org/wiki/Fizz_Buzz
3.
FizzBuzz 1, 2,
Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz,13,14, FizzBuzz, 16, 17, Fizz, 19, Buzz...
4.
FizzBuzz 色々な FizzBuzz
を書いてみる
5.
FizzBuzz コード例 if
文 def if_function n if n % 15 == 0 'FizzBuzz' elsif n % 3 == 0 'Fizz' elsif n % 5 == 0 'Buzz' else n end end
6.
FizzBuzz コード例 case
文 def case_function n case n % 15 when 0 'FizzBuzz' when 3, 6, 9, 12 'Fizz' when 5, 10 'Buzz' else n end end
7.
FizzBuzz コード例 3項演算子
def ternary_function n n % 15 == 0 ? ‘FizzBuzz’ : n % 3 == 0 ? ’Fizz’ : n % 5 == 0 ? ‘Buzz’ : n end
8.
FizzBuzz コード例 map
def map_function (1..100).map{|n|(s=(n%3<1 ? 'Fizz' : '') + (n%5<1 ?'Buzz':''))=~/^$/ ? n:s} end
9.
FizzBuzz コード例 ヒアドキュメント
def here_document n ret="#{["Fizz"][n%3]}#{["Buzz"][n%5]}" ret.empty? ? n : ret end
10.
FizzBuzz コード例 http://golf.shinh.org/p.rb?FizzBuzz
ruby での最短は 50 byte
11.
FizzBuzz 色々な FizzBuzz
を書いてみる 短すぎるコードは難解過ぎる テクニックを知らないと無理 短いコードを追求する必要はない
12.
シンプルな FizzBuzz !? def
silly_function n case n when 1; 1 when 2; 2 when 3; 'Fizz' when 4; 4 when 5; 'Buzz' when 6; 'Fizz' when 7; 7 when 8; 8 when 9; 'Fizz' when 10; 'Buzz' # ... end end
13.
シンプルな FizzBuzz !? def
silly_function puts ‘1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FuzzBuzz 16 17 Fizz ...’ end
14.
ちょっとは考えよう.
15.
誰が?
16.
コンピュータが.
17.
ここから本題.
18.
進化的アルゴリズム 計算機に考えてもらおう ニューラルネットワーク 遺伝的アルゴリズム
強化学習 etc.
19.
GA(遺伝的アルゴリズム) 生物の遺伝のメカニズムを学習に応用 遺伝子
染色体 交 突然変異 選択・淘汰
20.
GA(遺伝的アルゴリズム) アルゴリズムの流れ
http://www.jepoc.or.jp/tecinfo/tec00048.htm
21.
GA(遺伝的アルゴリズム) GA で文章を生成してみる
‘I am a Genius.’
22.
GA(遺伝的アルゴリズム)
demo
23.
GA(遺伝的アルゴリズム) FizzBuzz 問題は解ける?
24.
GA(遺伝的アルゴリズム) 生成された文字列が,その言語によって 解析可能 かつ,実行可能
かつ,正しい結果を出力する ハードルが高い!!!
25.
GP(遺伝的プログラミング) GA でのDNA配列を木構造で表現
プログラムとして解釈可能 T. Segaran, 集合知プログラミング, p.274
26.
GP(遺伝的プログラミング) 生成された文字列が,その言語に よって
解析可能 clear! かつ,実行可能 clear! かつ,正しい結果を出力する
27.
GP(遺伝的プログラミング) パラメータ・条件
各世代の個体数: 100 突然変異確率: 0.1 選択戦略: エリート戦略 最大世代数: 100,000 世代 使用できるオペレータ: +, -, *, %, if, > 使用できるオペランド: 1..10 の整数, ‘Fizz’, ‘Buzz’ 教師信号(適応度の算出): 1<n<50 までの結果
28.
GP(遺伝的プログラミング) 結果 if
( 5 - 4 ) > n % ( 9 + ( 7 - 1 ) ) 'Fizz' + 'Buzz' else if (9 % 8) > n % 5 'Fizz' * 1 else if (7 - 6) > n % (10 % 7) 'Buzz' else n end end 収束時の世代数: 19,473 世代目 end (3回のうち,2回は収束せず)
29.
GP(遺伝的プログラミング) ちなみに
30.
GP(遺伝的プログラミング) コード量
5 classes 203 lines
31.
GP(遺伝的プログラミング) かかった時間 コーディング
GA: 1 時間弱 GPへの改良: 1.5 時間 実行時間 一回につき,5 時間 とか 2 時間 とか
32.
結論
FizzBuzz 問題くらい 自分の頭で考えよう
Télécharger maintenant