Auf der Suche nach dem schnellsten FizzBuzz in Python

Einführung

Ich habe mich gefragt, was der schnellste FizzBuzz ist, also habe ich einige codiert.

Weise

Messen Sie für die Funktion, die FizzBuzz standardmäßig von 1 bis 100 ausgibt, die Zeit, zu der es 100 Mal ausgeführt wird. Drucken Sie den Ausdruck auch bei Zeitmessung nicht aus.

FizzBuzz Problem

Schreiben Sie ein Programm, das Zahlen von 1 bis 100 druckt. Wenn es sich jedoch um ein Vielfaches von 3 handelt, drucken Sie "Fizz" anstelle einer Zahl. Wenn es sich um ein Vielfaches von 5 handelt, drucken Sie "Buzz". Wenn es sich um ein Vielfaches von 3 und 5 handelt, drucken Sie "Fizz Buzz".

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

Zeitmessmethode

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

Vorerst orthodox.

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

In Bezug auf das Web habe ich versucht, die Anzahl der Ausführungen zu reduzieren, wenn if durch Verschachtelung von if ausgeführt wurde.

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

Ich machte eine Liste der restlichen 15.

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

Ich habe die Liste von main3 im Voraus manuell eingegeben.

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

Ich habe einmal versucht zu drucken.

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

Erstens habe ich alles für und wenn versucht.

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

Ich habe versucht, nur eine Zeile der Druckerklärung abzugeben.

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"

Ergebnis

main5 wurde der schnellste. Immerhin scheint das Drucken einige Zeit zu dauern.

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

Ergänzung

Die Funktion, die main6 () erstellt hat.

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()

Die Funktion, die main7 () erstellt hat

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

Auf der Suche nach dem schnellsten FizzBuzz in Python
Überprüfung der Grundlagen von Python (FizzBuzz)
FizzBuzz in Python
Google sucht mit Python nach der Zeichenfolge in der letzten Zeile der Datei
Überprüfen Sie das Verhalten des Zerstörers in Python
Das Ergebnis der Installation von Python auf Anaconda
Grundlagen zum Ausführen von NoxPlayer in Python
Dichotomie mit Python
der Zen von Python
Lineare Suche in Python
Binäre Suche in Python
Geben Sie die Anzahl der CPU-Kerne in Python aus
[Python] Sortieren Sie die Liste von pathlib.Path in natürlicher Reihenfolge
Holen Sie sich den Aufrufer einer Funktion in Python
Passen Sie die Verteilung jeder Gruppe in Python an
Zeigen Sie das Ergebnis der Geometrieverarbeitung in Python an
Kopieren Sie die Liste in Python
Finden Sie den Bruchteil des in Python eingegebenen Werts heraus
Finden Sie die Lösung der Gleichung n-ter Ordnung mit Python
Lösen von Bewegungsgleichungen in Python (odeint)
Ausgabe in Form eines Python-Arrays
Suchen Sie nach dem Wert der Instanz in der Liste
[Python] Untersuchen Sie die Eigenschaften der Titel der Top-Websites in den Google-Suchergebnissen
Erleben Sie die gute Berechnungseffizienz der Vektorisierung in Python
Auf dem Weg zum Ruhestand von Python2
Fizzbuzz in Python (in einer Zeile)
So ermitteln Sie die Anzahl der Stellen in Python
Auf der Suche nach dem besten zufälligen Punktstereogramm (RDS).
Finde Fehler in Python
Die Geschichte des Aufbaus der schnellsten Linux-Umgebung der Welt
Objektäquivalenzbeurteilung in Python
Binäre Suche in Python / C ++
Algorithmus in Python (Dichotomie)
Lernen Sie das Entwurfsmuster "Chain of Responsibility" in Python
Implementieren Sie die Lösung der Riccati-Algebra in Python
Reproduzieren Sie das Ausführungsbeispiel von Kapitel 4 von Hajipata in Python
Verwenden wir die offenen Daten von "Mamebus" in Python
Implementierte den Algorithmus von "Algorithm Picture Book" in Python3 (Heap Sort Edition)
[Python] Gibt alle Kombinationen von Elementen in der Liste aus
Implementierung der schnellen Sortierung in Python
Rufen Sie die URL des HTTP-Umleitungsziels in Python ab
Ein Memorandum über die Umsetzung von Empfehlungen in Python
Über die Funktionen von Python
Reproduzieren Sie das Ausführungsbeispiel von Kapitel 5 von Hajipata in Python
Um das Äquivalent von Rubys ObjectSpace._id2ref in Python zu tun
Überprüfen Sie die atrophische Natur der Wahrscheinlichkeitsverteilung in Python
Die Kraft der Pandas: Python
Versuchen Sie, COVID-19 Tokyo-Daten mit Python zu kratzen
Finden Sie die scheinbare Breite einer Zeichenfolge in Python heraus
Lassen Sie uns das Ausführungsergebnis des Programms mit C ++, Java, Python messen.
Überprüfen Sie die Funktionsweise von Python für .NET in jeder Umgebung
[Memo] Das Geheimnis kumulativer Zuweisungsanweisungen in Python-Funktionen
Berechnen Sie mit Python Millionen von Stellen in der Quadratwurzel von 2
Lassen Sie das Gleichungsdiagramm der linearen Funktion in Python zeichnen
Implementierte den Algorithmus von "Algorithm Picture Book" in Python3 (Bubble Sort)
Holen Sie sich die Anzahl der spezifischen Elemente in der Python-Liste
Python - Ermitteln Sie die Anzahl der Gruppen im regulären Ausdruck