Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Непайтоновый Пайтон

Anna | 15.06.2014 | нет комментариев

FizzBuzz

Когда я подавал заявку на введение в Hacker School, я столкнулся со дальнейшей задачкой:

Напишите программу, которая выводит числа от 1 до 100 (включительно). Если число делится на 3, выведите Fizz взамен числа. Если оно делится на 5, выведите Buzz. Если оно делится как на 3, так и 5, выведите FizzBuzz. Вы можете применять всякий язык программирования.

(С тех пор работники Hacker School слегка изменили задачку, скорее каждого, для того, Дабы затруднить её решение с поддержкой интернет-поисковиков. Я специально не включил сюда изменённое условие, Дабы минимизировать результат моего поста на гуглобельность.)

Задачка достаточно примитивна и не требует обдумывания, следственно отлично подходит как пример для разых языков и жанров программирования будто Hello, World либо задача на поиск чисел Фибоначчи.

Немножко непайтонового Пайтона

Сегодня я вновь видел эту задачу, когда показывал другу мою заявку в Hacker School, и неожиданно я задумался над тем, как много методов её решения существует лишь только в Пайтоне. Пайтон, исключительно с PEP 8, представляет пользователю совершенные способы написаний пайтонового Пайтона. Но Пайтон не требует пайтоновости, следственно я задумался, в каких жанрах я могу писать.

Внимание: дальше следует дюже непайтоновый Пайтон. Тем не менее, код должен трудиться (с Пайтоном версии 2.7.5).

Присылайте мне свои комментарии либо твиты с исправленями ошибок либо добавленями.

Пайтоновый Пайтон

def fizzbuzz(number):
    if number % 3 == 0 and number % 5 == 0:
        return 'FizzBuzz'
    elif number % 3 == 0:
        return 'Fizz'
    elif number % 5 == 0:
        return 'Buzz'
    else:
        return number

for number in range(1, 101):
    print fizzbuzz(number)

Лисповый Пайтон

fizzbuzz = lambda n: 'FizzBuzz' if n % 3 == 0 and n % 5 == 0 else None
fizz = lambda n: 'Fizz' if n % 3 == 0 else None
buzz = lambda n: 'Buzz' if n % 5 == 0 else None
fizz_andor_maybenot_buzz = lambda n: fizzbuzz(n) or fizz(n) or buzz(n) or str(n)

print reduce(lambda m,n: m 'n' n, map(fizz_andor_maybenot_buzz, range(1, 101)))

Джавовый Пайтон

import sys

class Value(object):
    def __init__(self,value):
        self.setValue(value)

    def setValue(self,value):
        self.value = value

    def getValue(self):
        return self.value

    def toString(self):
        return self.getValue().__str__()

class FizzBuzz(object):
    def __init__(self, n):
        if n % 15 == 0:
            value = 'FizzBuzz';
        elif n % 3 == 0:
            value = 'Fizz';
        elif n % 5 == 0:
            value = 'Buzz';
        else:
            value = str(n);
        self.setValue(value);

    def setValue(self,value):
        self.value = Value(value);

    def getValue(self):
        return self.value;

class FizzBuzzRunner(object):
    def __init__(self, n):
        self.setN(n)

    def setN(self, n):
        self.n = n

    def run(self):
        for i in range(1,self.n):
            sys.stdout.write(FizzBuzz(i).getValue().toString() 'n');

if __name__ == '__main__':
    n = 101;
    FizzBuzzRunner(n).run()

Сишный Пайтон

def main():
    i = 0;
    value = '';

    while i < 100:
        i  = 1
        if i % 15 == 0:
            value = 'FizzBuzz';
        elif i % 3 == 0:
            value = 'Fizz';
        elif i % 5 == 0:
            value = 'Buzz';
        else:
            value = str(i);
        print value;

    return 0;

main();

Кложурный Пайтон

def fizzbuzz(n):
    return 'FizzBuzz' if n % 3 == 0 and n % 5 == 0 else None

def fizz(n):
    return 'Fizz' if n % 3 == 0 else None

def buzz(n):
    return 'Buzz' if n % 5 == 0 else None

def fizz_andor_maybenot_buzz(n):
    print fizzbuzz(n) or fizz(n) or buzz(n) or str(n)

map(fizz_andor_maybenot_buzz, xrange(1, 101))

 

 Источник: programmingmaster.ru
Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB