Ich versuche meine Hand bei Euler Problem 4 in Haskell. Es fragt nach dem größten Palindrom, das durch Multiplikation zweier dreistelliger Zahlen entsteht. Das Problem war einfach genug, und ich dachte, dass mein Haskell-fu der Aufgabe gewachsen war, aber ich bekomme ein Ergebnis, das, um es milde auszudrücken, uneinheitlich aussieht.
Hier ist mein Palindrom-Detektor (der einfach zu programmieren war):
%Vor%Von hier an ist es eine einfache Frage, eine Funktion zu schreiben, um zu erkennen, wenn ein Produkt ein Palindrom bildet (und möglicherweise eins von einem der Multiplikanden zu subtrahieren und über eine Brute-Force-Suche zu rekrutieren, wenn dies nicht der Fall ist). Hier ist meine sehr vereinfachte Version davon, abgespeckte und eine IO-Aktion zum Debuggen zurückgeben:
%Vor%Hier sind zwei separate Ausgaben in GHCi:
%Vor%Mit anderen Worten, der Aufruf von isPalindrome wird in der case-Anweisung von findPal immer auf true ausgewertet, auch wenn er falsch sein sollte.
Was sehe ich hier nicht?
Ich denke, du musst "True" und "False" groß schreiben. Ich habe keinen Haskell-Interpreter zur Hand, aber wahrscheinlich deklarierst du gerade eine neue Variable "wahr", um gleich "pal" zu sein
Könnte es sein, dass Sie in findPal True
und False
anstelle von true
und false
schreiben?
EDIT: Ok, von dem frühen Vogel hier gründlich geschlagen ...
Tags und Links haskell