[PYTHON] Ecrire FizzBuzz en utilisant map (), reduction (), filter (), récursif

Après avoir pratiqué map (), reduction (), filter (), recurrence, j'ai écrit FizzBuzz en utilisant map (), reduction (), filter (), recursive.

Tout d'abord, j'ai créé une fonction fizzbuzz (n).

def fizzbuzz(n):
  if (n % 15) == 0:
    return "FizzBuzz"
  elif (n % 3) == 0:
    return "Fizz"
  elif (n % 5) == 0:
    return "Buzz"
  else:
    return str(n)

map appelle simplement la fonction ci-dessus.

for s in map(fizzbuzz,range(1,101)):
  print s

Pour réduire (), j'ai créé une fonction mrg.

def mrg(msg,n):
  msg = str(msg)
  if msg == '0':
    return str(fizzbuzz(n))
  else:
    return msg + '\n' + str(fizzbuzz(n))
print reduce(mrg,range(0,101))

À propos de filter (), je l'ai écrit assez de force. Je me demande s'il existe une bonne façon de l'écrire.

ls = range(1,101)
msg = range(1,101)
for i in filter(lambda x: (x%3)==0,ls):
  msg[i-1] = "Fizz"
for i in  filter(lambda x: (x%5)==0,ls):
  if msg[i-1] == "Fizz":
    msg[i-1] += "Buzz"
  else:
    msg[i-1] = "Buzz"

for s in msg:
  print s

Et récursif. Cela semble le plus simple car il n'y a pas de pour.

START = 1
FINISH = 100
def fzbz(n):
  if n == FINISH:
    return fizzbuzz(n)
  else:
    return fizzbuzz(n)+"\n"+fzbz(n+1)
print fzbz(START)

Recommended Posts

Ecrire FizzBuzz en utilisant map (), reduction (), filter (), récursif
Écrivez FizzBuzz sans utiliser "="
Écrivez du code FizzBuzz piloté par les tests à l'aide de Python doctest.
Fusionner le tri en utilisant récursif
Filtre médian utilisant xarray (filtre médian)
Filtre passe-bas avec fermeture