Write a program that prints the numbers from 1 to 100. But for
multiples of three print “Fizz” instead of the number and for the
multiples of five print “Buzz”. For numbers which are multiples of
both three and five print “FizzBuzz”.


1       100
3                                            Fizz          5
 Buzz                          3     5                                    FizzBuzz




         http://tickletux.wordpress.com/2007/01/24/using-fizzbuzz-to-find-developers-who-grok-coding/
         http://www.aoky.net/articles/jeff_atwood/why_cant_programmers_program.htm
http://www.cs.is.saga-u.ac.jp/~nakayama07/sotsuken.html
Map

      Last Recently Used (LRU) Cache



                   Map
#
lru.put(“a”, “dataA”);
lru.put(“b”, “dataB”);
lru.put(“c”, “dataC”);
lru.get(“a”); #=> null


# get
lru.put(“a”, “dataA”);
lru.put(“b”, “dataB”);
lru.get(“a”); #=> “dataA”
lru.put(“c”, “dataC”);
lru.get(“b”); #=> null
LRU Cache   ?



(   …)
LRU Cache   ?



(   …)
LRU Cache



(   …)
s = FileStore.new
s.set(“foo”, “hoge”)
s.get(“foo”)      #=> “hoge”
s.dump            #=> “foo:hoge¥n”

s.set(“bar”, “fuga”)
s.dump            #=> “foo:hoge¥nbar:fuga¥n”

s.get(“toto”)       #=> nil

s.set(nil, “momo”) # nil
s.set(“”, “gogo”)     #
s.dump              #=> “foo:hoge¥nbar:fuga¥n”

s.set(“foo”, “piyo”)
s.dump            #=> “bar:fuga¥nfoo:piyo¥n”
FileStore            ?



         (             …)




void : set_multi(Map)
Map : get_multi(Array)

s.set_multi({‘foo’ => ‘hoge’, ‘bar’ => ‘fuga’})
s.get_multi([‘foo’, ‘bar’, ‘baz’]) #=> {‘foo’ => ‘hoge’, ‘bar’ => ‘fuga’}
FileStore   ?



       (           …)




s.set(“foo”, “${now}”) #=> ${now}
s.get(“foo”) #=> “2010-07-10 14:19:12”
FileStore



        (               …)




set(key, val, second)            (           )
set(key, val, Time)          (           )
#            1
s.set_multi({‘foo’ => ‘hoge’, ‘bar’ => ‘fuga’})
s.get_multi([‘foo’, ‘bar’, ‘baz’]) #=> {‘foo’ => ‘hoge’, ‘bar’ => ‘fuga’}


#            2
s.set(“foo”, “${now}”) #=> ${now}
s.get(“foo”) #=> “2010-07-10 14:19:12” #=>                  dump      ?


#            3
set(key, val, second=nil)                 (           )
set(key, val, Time=nil)               (           )
FileStore



(   …)
#
“           :             ”

filter = WordFilter.new(‘Arsenal’)

# detect #=> true/false
filter.detect(“t_wada:         Arsenal vs Chelsea    !”) #=> true;
filter.detect(“t_wada: ManU vs Liverpool                       ”) #=> false;


# censor #=> String
filter.censor(“t_wada:         Arsenal vs Chelsea        !”)
    #=> “t_wada:        <censored> vs Chelsea      !”
WordFilter   ?



(        …)
    NG
WordFilter   ?


                                    …
     (        …)
 <censored>
…
WordFilter   ?


                                      …
    (       …)
        <censored>
…
WordFilter   ?



(   …)
    (          )
WordFilter



(   …)
#1           NG
filter = WordFilter.new(‘Arsenal’, ‘t_wada’)

#2                                    (                      OK)
filter.censor(“t_wada: Arsenal!!”) #=> “t_wada: <XXX>!!”;

#3
filter.censor(“t_wada: t_wada                       ”)
       #=> “t_wada: <censored>                          ”;

#4
         :             <       (OS     OK)>
         :             <       (OS     OK)>

TDDBC お題

  • 2.
    Write a programthat prints the numbers from 1 to 100. But for multiples of three print “Fizz” instead of the number and for the multiples of five print “Buzz”. For numbers which are multiples of both three and five print “FizzBuzz”. 1 100 3 Fizz 5 Buzz 3 5 FizzBuzz http://tickletux.wordpress.com/2007/01/24/using-fizzbuzz-to-find-developers-who-grok-coding/ http://www.aoky.net/articles/jeff_atwood/why_cant_programmers_program.htm
  • 3.
  • 5.
    Map Last Recently Used (LRU) Cache Map
  • 6.
    # lru.put(“a”, “dataA”); lru.put(“b”, “dataB”); lru.put(“c”,“dataC”); lru.get(“a”); #=> null # get lru.put(“a”, “dataA”); lru.put(“b”, “dataB”); lru.get(“a”); #=> “dataA” lru.put(“c”, “dataC”); lru.get(“b”); #=> null
  • 7.
    LRU Cache ? ( …)
  • 8.
    LRU Cache ? ( …)
  • 9.
  • 11.
    s = FileStore.new s.set(“foo”,“hoge”) s.get(“foo”) #=> “hoge” s.dump #=> “foo:hoge¥n” s.set(“bar”, “fuga”) s.dump #=> “foo:hoge¥nbar:fuga¥n” s.get(“toto”) #=> nil s.set(nil, “momo”) # nil s.set(“”, “gogo”) # s.dump #=> “foo:hoge¥nbar:fuga¥n” s.set(“foo”, “piyo”) s.dump #=> “bar:fuga¥nfoo:piyo¥n”
  • 12.
    FileStore ? ( …) void : set_multi(Map) Map : get_multi(Array) s.set_multi({‘foo’ => ‘hoge’, ‘bar’ => ‘fuga’}) s.get_multi([‘foo’, ‘bar’, ‘baz’]) #=> {‘foo’ => ‘hoge’, ‘bar’ => ‘fuga’}
  • 13.
    FileStore ? ( …) s.set(“foo”, “${now}”) #=> ${now} s.get(“foo”) #=> “2010-07-10 14:19:12”
  • 14.
    FileStore ( …) set(key, val, second) ( ) set(key, val, Time) ( )
  • 15.
    # 1 s.set_multi({‘foo’ => ‘hoge’, ‘bar’ => ‘fuga’}) s.get_multi([‘foo’, ‘bar’, ‘baz’]) #=> {‘foo’ => ‘hoge’, ‘bar’ => ‘fuga’} # 2 s.set(“foo”, “${now}”) #=> ${now} s.get(“foo”) #=> “2010-07-10 14:19:12” #=> dump ? # 3 set(key, val, second=nil) ( ) set(key, val, Time=nil) ( )
  • 16.
  • 20.
    # “ : ” filter = WordFilter.new(‘Arsenal’) # detect #=> true/false filter.detect(“t_wada: Arsenal vs Chelsea !”) #=> true; filter.detect(“t_wada: ManU vs Liverpool ”) #=> false; # censor #=> String filter.censor(“t_wada: Arsenal vs Chelsea !”) #=> “t_wada: <censored> vs Chelsea !”
  • 21.
    WordFilter ? ( …) NG
  • 22.
    WordFilter ? … ( …) <censored> …
  • 23.
    WordFilter ? … ( …) <censored> …
  • 24.
    WordFilter ? ( …) ( )
  • 25.
  • 26.
    #1 NG filter = WordFilter.new(‘Arsenal’, ‘t_wada’) #2 ( OK) filter.censor(“t_wada: Arsenal!!”) #=> “t_wada: <XXX>!!”; #3 filter.censor(“t_wada: t_wada ”) #=> “t_wada: <censored> ”; #4 : < (OS OK)> : < (OS OK)>