czwartek, lipca 08, 2010

Nigdy nie zapominaj o FSM! ;-)

Swego czasu na jednej z rozmów kwalifikacyjnych dostałem bojowe zadanie by napisać pewien prosty programik. Prosty, ale nie trywialny.

Rozwiązanie dla małych N, czy raczej dla małego zakresu, tak powiedzmy do miliarda/rozmiaru pamięci miałem gotowe w ciągu minuty.

Pokazałem, zostałem pochwalony za chytrość ;-) i poproszony o przedstawienie rozwiązania, które nie byłoby ograniczone rozmiarem pamięci, a jedynie rozmiarem danych wejściowych.

Zacząłem kodować i utknąłem na zestawie warunków ;-)

Zapomniałem o starej dobrej FSM, Finite State Machine czy jak kto woli maszynie stanów skończonych. Okazało się, że będąc zestresowany nie umiałem połapać się w zawiłościach problemu ;-)

Mój mózg ewidentnie wolał się zajmować szukaniem tego tygrysa, którego się wystraszyłem niż jakimiś pierdołami ;-)

Jakoś wybrnąłem, ale gdybym pamiętał o użyciu w takim momencie FSM to byłoby dużo łatwiej.

FSM ma też inne zalety, można jej używać zawsze gdy jest dużo warunków, to zdecydowanie ułatwi ;-)

Pomaga też w przekazywaniu takich rzeczy jak algorytm nietechnicznym ;-)

Przydaje się też gdy dostajesz bojowe zadanie opracowania jakiegoś procesu ;-) Bo proces to też maszyna stanów :-)

OK, blogowanie z tramwaju jest trudne... ale możliwe dzięki mojemu programikowi :-)




Podobne postybeta
Tygrysy
Maszyna stanów kontra labirynt ;-)
W jakiej firmie warto pracować?
TDD [Test Driven Development] - genialne, ale trudne :-)
Wyważanie otwartych drzwi