habe heute eine Programmieraufgabe entdeckt, bei der ich nicht mal einen Ansatz finde, ich wäre aber sehr an der Lösung interessiert. Wäre nett, wenn ihr einen Hinweis für mich hättet.
Die Aufgabenstellung:
Ich habe schon `bit_count()` entdeckt. Ich habe aber nur den Ansatz im Kopf das ich über den Zahlenbereich iteriere und dass ist das, was ich nicht soll.Given two numbers: 'left' and 'right' (1 <= 'left' <= 'right' <= 200000000000000) return sum of all '1' occurencies in binary representations of numbers between 'left' and 'right' (including both)
Example:WARNING: Segment may contain billion elements, to pass this kata, your solution cannot iterate through all numbers in the segment!Code: Alles auswählen
countOnes 4 7 should return 8, because: 4(dec) = 100(bin), which adds 1 to the result. 5(dec) = 101(bin), which adds 2 to the result. 6(dec) = 110(bin), which adds 2 to the result. 7(dec) = 111(bin), which adds 3 to the result. So finally result equals 8.
Wie macht man so was? Habe echt gar keine Idee und auch kein Suchbegriff mit dem ich die Ente füttern könnte. Ich denke dass das schon eine Aufgabe ist, die über die Grundlagen von Python hinausgeht und etwas mehr Programmierhintergrund erfordert. Es gibt immer viele Weg, nur hier sollte man sich wohl vor dem programmieren über die Performance Gedanken machen. Ich bin eigentlich bis jetzt glücklich gewesen, wenn ich strukturierten Code hinbekam, der seine Aufgabe erfüllte, aber nun bin ich sehr neugierig.
Würde mich über Tipps freuen.
Vielen Dank und Grüße
Dennis