SlideShare une entreprise Scribd logo
1  sur  51
Télécharger pour lire hors ligne
> fizzbuzz <- function(n) {
     # Write your code here
  }

> fizzbuzz(20)
 [1] "1"         "2"          "Fizz"
 [4] "4"         "Buzz"       "Fizz"
 [7] "7"         "8"          "Fizz"
[10] "Buzz"      "11"         "Fizz"
[13] "13"        "14"         "FizzBuzz"
[16] "16"        "17"         "Fizz"
[19] "19"        "Buzz"
fb1 <- function(n) {
   fb <- character(n)
   for (i in 1:n) {
      if (i %% 3 == 0 && i %% 5 == 0)
         fb[i] <- "FizzBuzz"
      else if (i %% 3 == 0)
         fb[i] <- "Fizz"
      else if (i %% 5 == 0)
         fb[i] <- "Buzz"
      else
         fb[i] <- i
   }
   fb
}
fb2 <- function(n) {
   sapply(1:n, function(i) {
      if (i %% 3 == 0 && i %% 5 == 0)
         "FizzBuzz"
      else if (i %% 3 == 0)
         "Fizz"
      else if (i %% 5 == 0)
         "Buzz"
      else
         i
   })
}
fb3 <- function(n) {
   isFizz <- rep(c(F,F,T), length=n)
   isBuzz <- rep(c(F,F,F,F,T), length=n)
   isNumber <- !isFizz & !isBuzz

    fizz <- ifelse(isFizz, "Fizz", "")
    buzz <- ifelse(isBuzz, "Buzz", "")
    number <- ifelse(isNumber, 1:n, "")

    paste(fizz, buzz, number, sep="")
}
> N <- 100
> benchmark(fb1(N), fb2(N), fb3(N),
            order="relative",
            replications=10000)

    test elapsed relative
3 fb3(N)   4.172 1.000000
2 fb2(N)   6.669 1.598514
1 fb1(N)   7.779 1.864573
> N <- 10000
> benchmark(fb1(N), fb2(N), fb3(N),
             order="relative",
             replications=100)

    test elapsed relative
3 fb3(N)   2.907 1.000000
2 fb2(N)   7.823 2.691090
1 fb1(N)   8.200 2.820777
> N <- 1000000
> benchmark(fb1(N), fb2(N), fb3(N),
            order="relative",
            replications=5)

    test elapsed relative
3 fb3(N) 28.287 1.000000
1 fb1(N) 46.198 1.633188
2 fb2(N) 52.223 1.846184
library(compiler)      # Installed by default
library(inline)        # Needs manual installation


fbcpp <- cxxfunction(
   signature(ns="integer"),
   body=src, # Shown in the next slide
   plugin="Rcpp")

fb1.c <- cmpfun(fb1)
fb2.c <- cmpfun(fb2)
fb3.c <- cmpfun(fb3)
fbcpp.c <- cmpfun(fbcpp)
int n = Rcpp::as<int>(ns);
Rcpp::CharacterVector fb(n);
for (int index = 0; index < n; index++) {
   int i = index + 1;
   if (i % 3 == 0 && i % 5 == 0)
      fb[index] = "FizzBuzz";
   else if (i % 3 == 0)
      fb[index] = "Fizz";
   else if (i % 5 == 0)
      fb[index] = "Buzz";
   else {
      char s[11]; // Integer is 10 or less digit
      sprintf(s, "%d", i);
      fb[index] = s;
   }
}
return(fb);
R で解く FizzBuzz 問題
R で解く FizzBuzz 問題
R で解く FizzBuzz 問題

Contenu connexe

Tendances

Apresentação metodologia do trabalho científico
Apresentação metodologia do trabalho científicoApresentação metodologia do trabalho científico
Apresentação metodologia do trabalho científico
Larissa Almada
 
Pericia Judicial Ambiental
Pericia Judicial AmbientalPericia Judicial Ambiental
Pericia Judicial Ambiental
nucleosul2svma
 
AULA 1 - LEGISLAÇÃO AMBIENTAL.pptx
AULA 1 - LEGISLAÇÃO AMBIENTAL.pptxAULA 1 - LEGISLAÇÃO AMBIENTAL.pptx
AULA 1 - LEGISLAÇÃO AMBIENTAL.pptx
Zoraide6
 

Tendances (20)

Processo de Fabricação de Acrílico
Processo de Fabricação de AcrílicoProcesso de Fabricação de Acrílico
Processo de Fabricação de Acrílico
 
Apresentação metodologia do trabalho científico
Apresentação metodologia do trabalho científicoApresentação metodologia do trabalho científico
Apresentação metodologia do trabalho científico
 
Simulado enade civil
Simulado enade civilSimulado enade civil
Simulado enade civil
 
Modelo projeto pesquisa
Modelo projeto pesquisaModelo projeto pesquisa
Modelo projeto pesquisa
 
Madeira (Resistência dos materiais)
Madeira (Resistência dos materiais)Madeira (Resistência dos materiais)
Madeira (Resistência dos materiais)
 
Guia básico licenciamento ambiental
Guia básico licenciamento ambientalGuia básico licenciamento ambiental
Guia básico licenciamento ambiental
 
Tecnologias Socioambientais para Agricultura Familiar
Tecnologias Socioambientais para Agricultura FamiliarTecnologias Socioambientais para Agricultura Familiar
Tecnologias Socioambientais para Agricultura Familiar
 
Plano de aula Corrosão
Plano de aula CorrosãoPlano de aula Corrosão
Plano de aula Corrosão
 
Pericia Judicial Ambiental
Pericia Judicial AmbientalPericia Judicial Ambiental
Pericia Judicial Ambiental
 
TCC SLIDE DE APRESENTAÇÃO
TCC SLIDE DE APRESENTAÇÃOTCC SLIDE DE APRESENTAÇÃO
TCC SLIDE DE APRESENTAÇÃO
 
AULA 1 - LEGISLAÇÃO AMBIENTAL.pptx
AULA 1 - LEGISLAÇÃO AMBIENTAL.pptxAULA 1 - LEGISLAÇÃO AMBIENTAL.pptx
AULA 1 - LEGISLAÇÃO AMBIENTAL.pptx
 
Concreto: Execução
Concreto: ExecuçãoConcreto: Execução
Concreto: Execução
 
Defesa do meio ambiente slides (1)
Defesa do meio ambiente slides (1)Defesa do meio ambiente slides (1)
Defesa do meio ambiente slides (1)
 
Aula impacto ambiental em biomas brasileiros
Aula   impacto ambiental em biomas brasileiros Aula   impacto ambiental em biomas brasileiros
Aula impacto ambiental em biomas brasileiros
 
Biomas brasileiros
Biomas brasileirosBiomas brasileiros
Biomas brasileiros
 
Aula revestimentos
Aula   revestimentos Aula   revestimentos
Aula revestimentos
 
Plano de aula
Plano de aulaPlano de aula
Plano de aula
 
Estruturas de madeira
Estruturas de madeiraEstruturas de madeira
Estruturas de madeira
 
Aula 01 classificação dos materiais
Aula 01 classificação dos materiaisAula 01 classificação dos materiais
Aula 01 classificação dos materiais
 
Como fazer uma boa introdução de tcc
Como fazer uma boa introdução de tccComo fazer uma boa introdução de tcc
Como fazer uma boa introdução de tcc
 

Similaire à R で解く FizzBuzz 問題

Similaire à R で解く FizzBuzz 問題 (10)

ATS language overview
ATS language overviewATS language overview
ATS language overview
 
20180310 functional programming
20180310 functional programming20180310 functional programming
20180310 functional programming
 
Performance Comparison JVM Languages
Performance Comparison JVM LanguagesPerformance Comparison JVM Languages
Performance Comparison JVM Languages
 
Fizz and buzz of computer programs in python.
Fizz and buzz of computer programs in python.Fizz and buzz of computer programs in python.
Fizz and buzz of computer programs in python.
 
7 Python udf.pptx
7 Python udf.pptx7 Python udf.pptx
7 Python udf.pptx
 
Basics
BasicsBasics
Basics
 
Get Kata
Get KataGet Kata
Get Kata
 
Fourier project presentation
Fourier project  presentationFourier project  presentation
Fourier project presentation
 
Where do Rubyists go?
 Where do Rubyists go?  Where do Rubyists go?
Where do Rubyists go?
 
FUNctional programming in Python
FUNctional programming in PythonFUNctional programming in Python
FUNctional programming in Python
 

R で解く FizzBuzz 問題

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26. > fizzbuzz <- function(n) { # Write your code here } > fizzbuzz(20) [1] "1" "2" "Fizz" [4] "4" "Buzz" "Fizz" [7] "7" "8" "Fizz" [10] "Buzz" "11" "Fizz" [13] "13" "14" "FizzBuzz" [16] "16" "17" "Fizz" [19] "19" "Buzz"
  • 27.
  • 28. fb1 <- function(n) { fb <- character(n) for (i in 1:n) { if (i %% 3 == 0 && i %% 5 == 0) fb[i] <- "FizzBuzz" else if (i %% 3 == 0) fb[i] <- "Fizz" else if (i %% 5 == 0) fb[i] <- "Buzz" else fb[i] <- i } fb }
  • 29.
  • 30. fb2 <- function(n) { sapply(1:n, function(i) { if (i %% 3 == 0 && i %% 5 == 0) "FizzBuzz" else if (i %% 3 == 0) "Fizz" else if (i %% 5 == 0) "Buzz" else i }) }
  • 31.
  • 32.
  • 33.
  • 34.
  • 35. fb3 <- function(n) { isFizz <- rep(c(F,F,T), length=n) isBuzz <- rep(c(F,F,F,F,T), length=n) isNumber <- !isFizz & !isBuzz fizz <- ifelse(isFizz, "Fizz", "") buzz <- ifelse(isBuzz, "Buzz", "") number <- ifelse(isNumber, 1:n, "") paste(fizz, buzz, number, sep="") }
  • 36.
  • 37.
  • 38.
  • 39.
  • 40. > N <- 100 > benchmark(fb1(N), fb2(N), fb3(N), order="relative", replications=10000) test elapsed relative 3 fb3(N) 4.172 1.000000 2 fb2(N) 6.669 1.598514 1 fb1(N) 7.779 1.864573
  • 41. > N <- 10000 > benchmark(fb1(N), fb2(N), fb3(N), order="relative", replications=100) test elapsed relative 3 fb3(N) 2.907 1.000000 2 fb2(N) 7.823 2.691090 1 fb1(N) 8.200 2.820777
  • 42. > N <- 1000000 > benchmark(fb1(N), fb2(N), fb3(N), order="relative", replications=5) test elapsed relative 3 fb3(N) 28.287 1.000000 1 fb1(N) 46.198 1.633188 2 fb2(N) 52.223 1.846184
  • 43.
  • 44.
  • 45.
  • 46.
  • 47. library(compiler) # Installed by default library(inline) # Needs manual installation fbcpp <- cxxfunction( signature(ns="integer"), body=src, # Shown in the next slide plugin="Rcpp") fb1.c <- cmpfun(fb1) fb2.c <- cmpfun(fb2) fb3.c <- cmpfun(fb3) fbcpp.c <- cmpfun(fbcpp)
  • 48. int n = Rcpp::as<int>(ns); Rcpp::CharacterVector fb(n); for (int index = 0; index < n; index++) { int i = index + 1; if (i % 3 == 0 && i % 5 == 0) fb[index] = "FizzBuzz"; else if (i % 3 == 0) fb[index] = "Fizz"; else if (i % 5 == 0) fb[index] = "Buzz"; else { char s[11]; // Integer is 10 or less digit sprintf(s, "%d", i); fb[index] = s; } } return(fb);