[Zadanie rekrutacyjne 3] Dzielenie z resztą

Data publikacji: 2016-03-22 | Tagi:

Dziś zajmiemy się dzieleniem z resztą. Zadanie trywialne, ale można je wykonać na kilka sposobów.

Rozpoczynamy od najbardziej oczywistego rozwiązania, czyli wzoru matematycznego:

In [1]: a = 5; b = 2

In [2]: c = a / b

In [3]: r = a - c * b

In [4]: print(c, r)
(2, 1)

Wynikiem dzielenia a przez b jest 2, a resztą z tego dzielenia jest 1.

Kolejne rozwiązanie - nieco bardziej pythoniczne.

In [1]: a = 5; b = 2

In [2]: print(a / b, a % b)
(2, 1)

W tym przykładzie wykorzystujemy tylko operator % (modulo) oraz / (dzielenie całkowite) pythona.

W końcu ostatni przykład, korzystający z funkcji divmod.

In [1]: a = 5; b = 2

In [2]: print(divmod(a, b))
(2, 1)

Które z tych rozwiązań uznałbym za najlepsze - tradycyjnie już ostatnie. Jeśli mamy możliwość skorzystania z funkcji wbudowanych w pythonie, to warto z nich korzystać, ponieważ będą z reguły dużo szybsze, niż algorytmy pisane od zera.

Akurat w tym przypadku różnica w czasach wykonania wszystkich propozycji jest znikoma, ale podążając drogą Zen pythona pierwszą odrzucam ze względu na Simple is better than complex - za dużo zmiennych, za dużo działań. Natomiast drugą odrzucam ze względu na There should be one-- and preferably only one --obvious way to do it - skoro mamy wbudowaną funkcję, to należy z niej skorzystać.


Oceń ten post:
Podziel się:

comments powered by Disqus

IT w obrazkach: