Ich verwende Rekursion, um zwei Zahlen zu vergleichen (ex 123 ist das gleiche mit 123) und speichern, wie viele Ziffern sie gemeinsam haben (ex 123 im Vergleich zu 123 hat 3 und mit 124 hat 2).Haskell vergleichen Problem
Während mein Programm diese Nummer findet, möchte ich Bedingungen für jede Situation setzen (zB wenn sie 2 Ziffern im gemeinsamen Ausgabewert haben 44 oder wenn sie 3 etwas anderes machen), aber es wird kein Vergleich gemacht. Kann mir bitte jemand erklären was und warum das passiert. Hier ist mein Code:
dg :: Int->Int->Int
dg 0 0 = 0
dg x y = if (c==2) then 23 else 24 -- c = common digits
where c = digits (x `div` 10) (y `div` 10) + if (x `mod` 10 == y `mod` 10) then 1 else 0
betreibe ich Umarmungen Löschen der „if“ Bedingung, Eingang geben 10 10 ist der Ausgang 2, aber wenn ich es auf verlassen und erneut ausführen es, es geht bis 24 (während 23 korrekt ist). Ich bin wirklich verwirrt.
Ich würde drehen Sie beide Zahlen in '[Char]' und dann verglichen glücklich die Listen, smth wie 'gemeinsame l1 l2 = [ e1 | e1 <- l1, elem e1 l2] ', obwohl es eine O (n^2) -Leistung hat. Der Vergleich der Listen ist besonders effizient, wenn Sie nur die Menge der gemeinsamen Elemente und nicht die Reihenfolge beachten. Sie können die beiden Listen sortieren. – 9000
Was sind 'Ziffern'? Und warum benutzt du Umarmungen? – melpomene