À la recherche du FizzBuzz le plus rapide en Python

introduction

Je me suis demandé quel était le FizzBuzz le plus rapide, alors j'en ai codé quelques-uns.

manière

Pour la fonction qui produit FizzBuzz de 1 à 100 en standard, mesurez le temps pendant lequel elle est exécutée 100 fois. Ne mettez pas en commentaire l'impression même lors de la mesure du temps.

Problème FizzBuzz

Écrivez un programme qui imprime des nombres de 1 à 100. Cependant, s'il s'agit d'un multiple de 3, imprimez «Fizz» au lieu d'un nombre, s'il s'agit d'un multiple de 5, imprimez «Buzz», et s'il s'agit d'un multiple de 3 et 5, imprimez «Fizz Buzz».

http://d.hatena.ne.jp/keyword/Fizz-Buzz%CC%E4%C2%EA

Méthode de mesure du temps

import time
dict = {}
for func in [main1, main2, main3, main4, main5,main6, main7]:
  total = 0
  for i in range(100):
    s = time.time()
    func(1,101)
    e = time.time()
    total += e - s
  dict[func.__name__] = total

main1

Pour le moment, orthodoxe.

def main1(start,stop):
  for i in range(start,stop):
    if (i%15) == 0:
      print 'FizzBuzz'
    elif (i%5) == 0:
      print 'Buzz'
    elif (i%3) == 0:
      print 'Fizz'
    else:
      print i

main2

En référence au Web, j'ai essayé de réduire le nombre de fois si était exécuté en imbriquant if.

def main2(start,stop):
  for i in range(start,stop):
    if (i%3) == 0:
      if (i%5) == 0:
        print 'FizzBuzz'
      else:
        print 'Fizz'
    else:
      if (i%5) == 0:
        print 'Buzz'
      else:
        print i

main3

J'ai fait une liste des 15 autres.

def main3(start,stop):
  fizzbuzz_list = []
  for i in range(15):
    if (i%15) == 0:
      fizzbuzz_list.append('FizzBuzz')
    elif (i%5) == 0:
      fizzbuzz_list.append('Buzz')
    elif (i%3) == 0:
      fizzbuzz_list.append('Fizz')
    else:
      fizzbuzz_list.append(0)

  for i in range(start,stop):
    print fizzbuzz_list[i%15] if fizzbuzz_list[i%15] else i

main4

J'ai entré manuellement la liste de main3 à l'avance.

def main4(start,stop):
  fizzbuzz_list = ['FizzBuzz', 0, 0, 'Fizz', 0, 'Buzz', 'Fizz', 0, 0, 'Fizz', 'Buzz', 0, 'Fizz', 0, 0 ]
  for i in range(start,stop):
    print fizzbuzz_list[i%15] if fizzbuzz_list[i%15] else i

main5

J'ai essayé d'imprimer une fois.

def main5(start,stop):
  fizzbuzz = ''
  for i in range(start,stop):
    if (i%3) == 0:
      if (i%5) == 0:
        fizzbuzz += 'FizzBuzz\n'
      else:
        fizzbuzz += 'Fizz\n'
    else:
      if (i%5) == 0:
        fizzbuzz += 'Buzz\n'
      else:
        fizzbuzz += str(i) + "\n"
  print fizzbuzz

main6

En premier lieu, j'ai tout essayé pour et si.

def main6(start,stop):
  print 1
  print 2
  print "Fizz"
  print 4
  print "Buzz"
  print "Fizz"
  print 7
  print 8
  print "Fizz"
  print "Buzz"
  print 11
  print "Fizz"
  print 13
  print 14
  print "FizzBuzz"
  print 16
  print 17
  print "Fizz"
  print 19
  print "Buzz"
  print "Fizz"
  print 22
  print 23
  print "Fizz"
  print "Buzz"
  print 26
  print "Fizz"
  print 28
  print 29
  print "FizzBuzz"
  print 31
  print 32
  print "Fizz"
  print 34
  print "Buzz"
  print "Fizz"
  print 37
  print 38
  print "Fizz"
  print "Buzz"
  print 41
  print "Fizz"
  print 43
  print 44
  print "FizzBuzz"
  print 46
  print 47
  print "Fizz"
  print 49
  print "Buzz"
  print "Fizz"
  print 52
  print 53
  print "Fizz"
  print "Buzz"
  print 56
  print "Fizz"
  print 58
  print 59
  print "FizzBuzz"
  print 61
  print 62
  print "Fizz"
  print 64
  print "Buzz"
  print "Fizz"
  print 67
  print 68
  print "Fizz"
  print "Buzz"
  print 71
  print "Fizz"
  print 73
  print 74
  print "FizzBuzz"
  print 76
  print 77
  print "Fizz"
  print 79
  print "Buzz"
  print "Fizz"
  print 82
  print 83
  print "Fizz"
  print "Buzz"
  print 86
  print "Fizz"
  print 88
  print 89
  print "FizzBuzz"
  print 91
  print 92
  print "Fizz"
  print 94
  print "Buzz"
  print "Fizz"
  print 97
  print 98
  print "Fizz"
  print "Buzz"

main7

J'ai essayé de ne faire qu'une seule ligne de déclaration imprimée.

def main7(start,stop):
  print "1\n2\nFizz\n4\nBuzz\nFizz\n7\n8\nFizz\nBuzz\n11\nFizz\n13\n14\nFizzBuzz\n16\n17\nFizz\n19\nBuzz\nFizz\n22\n23\nFizz\nBuzz\n26\nFizz\n28\n29\nFizzBuzz\n31\n32\nFizz\n34\nBuzz\nFizz\n37\n38\nFizz\nBuzz\n41\nFizz\n43\n44\nFizzBuzz\n46\n47\nFizz\n49\nBuzz\nFizz\n52\n53\nFizz\nBuzz\n56\nFizz\n58\n59\nFizzBuzz\n61\n62\nFizz\n64\nBuzz\nFizz\n67\n68\nFizz\nBuzz\n71\nFizz\n73\n74\nFizzBuzz\n76\n77\nFizz\n79\nBuzz\nFizz\n82\n83\nFizz\nBuzz\n86\nFizz\n88\n89\nFizzBuzz\n91\n92\nFizz\n94\nBuzz\nFizz\n97\n98\nFizz\nBuzz"

résultat

main5 est devenu le plus rapide. Après tout, il semble qu'il faut du temps pour imprimer.

main1 2.381
main2 1.380
main3 2.006
main4 1.723
main5 0.333
main6 1.124
main7 0.336

Supplément

La fonction qui a créé main6 ().

def sub6(start,stop):
  filename = 'fast_fizzbuzz2.py'

  fizzbuzz = 'def main1():\n'
  for i in range(start,stop):
    fizzbuzz += '  print '
    if (i%3) == 0:
      if (i%5) == 0:
        fizzbuzz += '"FizzBuzz"\n'
      else:
        fizzbuzz += '"Fizz"\n'
    else:
      if (i%5) == 0:
        fizzbuzz += '"Buzz"\n'
      else:
        fizzbuzz += str(i) + "\n"
  f = open(filename,'a' )
  f.write(fizzbuzz)
  f.close()

La fonction qui a créé main7 ()

def sub7(start,stop):
  filename = 'fast_fizzbuzz2.py'

  fizzbuzz = 'def main2():\n'
  fizzbuzz += '  print "'
  for i in range(start,stop):
    if (i%3) == 0:
      if (i%5) == 0:
        fizzbuzz += r'FizzBuzz\n'
      else:
        fizzbuzz += r'Fizz\n'
    else:
      if (i%5) == 0:
        fizzbuzz += r'Buzz\n'
      else:
        fizzbuzz += r'%s\n' % str(i)
  fizzbuzz += '"'
  f = open(filename,'a')
  f.write(fizzbuzz)
  f.close()

Recommended Posts

À la recherche du FizzBuzz le plus rapide en Python
Revue des bases de Python (FizzBuzz)
FizzBuzz en Python
Google recherche la chaîne sur la dernière ligne du fichier en Python
Vérifiez le comportement du destroyer en Python
Le résultat de l'installation de python sur Anaconda
Principes de base pour exécuter NoxPlayer en Python
Dichotomie avec Python
le zen de Python
Recherche linéaire en Python
Recherche binaire en Python
Sortie du nombre de cœurs de processeur en Python
[Python] Trier la liste de pathlib.Path dans l'ordre naturel
Récupérer l'appelant d'une fonction en Python
Faites correspondre la distribution de chaque groupe en Python
Afficher le résultat du traitement de la géométrie en Python
Copiez la liste en Python
Découvrez la fraction de la valeur saisie en python
Trouvez la solution de l'équation d'ordre n avec python
Résolution d'équations de mouvement en Python (odeint)
Sortie sous la forme d'un tableau python
Rechercher par la valeur de l'instance dans la liste
[Python] Explorez les caractéristiques des titres des meilleurs sites dans les résultats de recherche Google
Découvrez la bonne efficacité de calcul de la vectorisation en Python
Vers la retraite de Python2
Fizzbuzz en Python (en une ligne)
Comment obtenir le nombre de chiffres en Python
À la recherche du meilleur stéréogramme à points aléatoires (RDS).
Trouver des erreurs en Python
L'histoire de la création de l'environnement Linux le plus rapide au monde
Jugement d'équivalence d'objet en Python
Recherche binaire en Python / C ++
Algorithme en Python (dichotomie)
Apprenez le modèle de conception «Chaîne de responsabilité» en Python
Implémenter la solution de l'algèbre de Riccati en Python
Reproduire l'exemple d'exécution du chapitre 4 de Hajipata en Python
Utilisons les données ouvertes de "Mamebus" en Python
Implémentation de l'algorithme "Algorithm Picture Book" en Python3 (Heap Sort Edition)
[Python] Affiche toutes les combinaisons d'éléments de la liste
Implémentation du tri rapide en Python
Obtenez l'URL de la destination de la redirection HTTP en Python
Un mémorandum sur la mise en œuvre des recommandations en Python
À propos des fonctionnalités de Python
Reproduire l'exemple d'exécution du chapitre 5 de Hajipata en Python
Pour faire l'équivalent de Ruby ObjectSpace._id2ref en Python
Vérifiez la nature atrophique de la distribution de probabilité en Python
Le pouvoir des pandas: Python
Essayez de gratter les données COVID-19 Tokyo avec Python
Découvrez la largeur apparente d'une chaîne en python
Mesurons le résultat de l'exécution du programme avec C ++, Java, Python.
Vérifiez le fonctionnement de Python pour .NET dans chaque environnement
[Mémo] Le mystère des instructions d'affectation cumulative dans les fonctions Python
Calculez des millions de chiffres dans la racine carrée de 2 avec python
Avoir le graphique d'équation de la fonction linéaire dessiné en Python
Implémentation de l'algorithme de "Algorithm Picture Book" en Python3 (Bubble Sort)
Obtenez le nombre d'éléments spécifiques dans la liste python
Python --Trouvez le nombre de groupes dans l'expression regex