programy rozwiązujące zagadkę napisano m.in. w językach Lisp., C++ (kod źródłowy programu). (kod źródłowy)., Pythonprogram w języku Python (kod źródłowy). oraz innych.
Złożoność obliczeniowa algorytmu wynosi n!k gdzie n to liczba domów (liczba kolumn tabeli), k to liczba klas cech możliwych do przypisania (liczba wierszy tabeli).
Algorytm ewaluujący reguły Algorytm zmniejszający wielokrotnie złożoność obliczeń próbuje odwzorować ciąg myślowy wykonywany przez człowieka rozwiązującego zagadkę. Algorytm polega na rekurencyjnym ewaluowaniu reguł (zdań z treści zadania) poprzez umieszczanie cech tylko w możliwych w danym momencie domach, zachowując relację pomiędzy dwoma cechami wynikającymi z ewaluowanej reguły. Ewaluacja reguły 1: W domu pierwszym umieszczamy Norwega: Dom1(Norweg). Ewaluacja reguły 2: Wyznaczamy wszystkie możliwe domy dla Anglika oraz oznaczamy ten dom jako czerwony. Dom 1 jest już zajęty przez Norwega, mamy więc 4 warianty: Dom1(Norweg), Dom2(Anglik,czerwony), Dom1(Norweg), Dom3(Anglik,czerwony), Dom1(Norweg), Dom4(Anglik,czerwony), Dom1(Norweg), Dom5(Anglik,czerwony). Ewaluacja reguły 3 dla wariantu 2.1: Ustalamy kolory sąsiednich domów na zielony i biały.