Zadałem niedawno Czytelnikom blogu prościutką zagadkę o zwierzętach.
Chodziło o to, żeby z konfiguracji Koń - Osioł przejść do konfiguracji Koń - Małpa używając wyłącznie czterech możliwych przekształceń:
- Za Osła można wstawić Małpę, o tak: KO => KOM
- Całą kolejkę zwierzaków stojących za Koniem można zduplikować, o tak: KOOMMOOM ==> KOOMMOOMOOMMOOM ==> KOOMMOOMOOMMOOMOOMMOOMOOMMOOM i tak dalej
- Trzy stojące po sąsiedzku Osły można zastąpić jedną Małpą: KOOOMMOOMOOOO ==> KMMMOOMOM
- Dwie Małpy stojące obok siebie można usunąć z kolejki: KOMMOOOMMOMMMMOM ==> KOOOOOMMOM
Zagadka jest przewrotna, ponieważ nie da się jej rozwiązać.
A oto dlaczego:
Na początku zagadki mamy jednego Osła.
Na końcu ma zostać zero Osłów.
Zero jest podzielne przez trzy.
Jeden - nie jest.
Żadne z czterech podanych przekształceń nie zmienia podzielności przez trzy liczby Osłów: przekształcenia numer 1 i 4 nie zmieniają liczby Osłów, przekształcenie numer 2 podwaja ilość Osłów, a więc mnoży przez dwa. Mnożenie przez dwa liczby niepodzielnej przez trzy daje w wyniku inną liczbę również niepodzielną przez trzy. Z kolei przekształcenie numer 3 likwiduje trzy Osły z kolejki. Odjęcie trójki od liczby niepodzielnej przez trzy daje w wyniku inną liczbą niepodzielną przez trzy.
Krótko mówiąc ile byśmy nie kombinowali, NIGDY nie uzyskamy zera Osłów.
Wszystkich Czytelników próbujących bezskutecznie rozwiązać zagadkę metodami tradycyjnymi serdecznie przepraszam 😉
Biedny ten Twoj aniol… Z malpami pewnie by sobie poradzil, ale te uparte osly!… Ha ha! 😉
O właśnie, dlatego pisałem, że mi się graf za bardzo rozrasta, nie było możliwości udanej redukcji [p]osłów i/lub małp…
Nie potrafiłem tak ładnie zdefiniować problemu, ale faktycznie po wczorajszym błędzie ćwiczyłem jeszcze przez dłuższą chwilę i doszedłem do miejsca w którym nie umiałem wygenerować tej cholernej trójki 😉
Ale przynajmniej głową trochę człowiek poruszał 🙂
To nie dobrze, że nie ma rozwiązania. Napisałem kawałek kodu [rekurencja] do sprawdzenia brute forcem, dałem ograniczenie do 25 poziomu zagnieżdżenia [powyżej tego pojawiały się błędy z pamięcią].
I teraz nie wiem, czy kod jest dobry.
Jeżeli nie znalazł rozwiązania to jest dobry 🙂
Niedobrze napisałem słowo niedobrze. Niedobrze mi z tym i za to przepraszam
Brzmisz jak główny bohater przypowieści o dziewannie…