Python Challenge aus dem Vorstellungsgespräch - Winkel zwischen zwei Zeigern

preview_player
Показать описание
Heute sehen wir uns eine Frage aus einem Python Job Interview an - könnt ihr sie lösen? * *Meine Website mit allen anderen Kanälen und Newsletter* *:

_Discord:_

_Unterstützt mich - Danke!:_
Рекомендации по теме
Комментарии
Автор

Hatte die Frage in nem Bewerbungsgespräch bei Ernst & Young. Hab länger dafür gebraucht zu realisieren dass der Stundenzeiger sich mitdreht als das ganze zu berechnen :D

ArtlantisDE
Автор

Cooles Video, macht immer Spaß dir zuzusehen auch als E-Techniker der nur selten programmiert :D Aber hab hier glaub sogar mal einen kleinen Fehlerteufel entdeckt:
Die Version mit dem %180 am Ende funktioniert nicht bei allen Werten. Nur die mit der min-Funktion klappt immer :D
Beispiel: Bei einer Winkeldifferenz von zum Beispiel 200 - 10 kommt 190 raus. ->> 190%180 liefert 10, dabei wäre der gewünschte Winkel 170.

xImHazard
Автор

Man kann das ganze noch ein bisschen eleganter lösen, wenn man bemerkt, dass der Stundenzeiger pro Stunde 30° vorwärtsgeht, und der Minutenzeiger 360° -> der Winkel verändert sich um 330° pro Stunde. Damit vereinfacht sich das ganze zu folgendem Programm:
>>> def rot(h, m):
H = h+m/60
angle_dif = (H*330)%360
return min(angle_dif, 360-angle_dif)

maximusmj
Автор

Das ist wirklich mal eine Aufgabe, die man fast komplett ohne Programmierkenntnisse schaffen kann. Finde ich auch mal gut sowas.

rickmanplayer
Автор

Auf diese Aufgabe habe ich eine andere Lösung gefunden:
def rotation(h, min):
min_ang = min * 6
h_ang = h * 30 + min_ang / 12
return min_ang - h_ang if min_ang - h_ang >= 0 else (min_ang - h_ang) * -1
bzw. funktioniert das nur für 12h, für 24h wäre es dann:
def rotation(h, min):
if h > 12:
h -= 12
min_ang = min * 6
h_ang = h * 30 + min_ang / 12
return min_ang - h_ang if min_ang - h_ang >= 0 else (min_ang - h_ang) * -1

platt-bs
Автор

Ich hätte eine Idee was du als Playlist machen könntest: Warum nicht Lua? :D

mustafa_
Автор

def rotation(h, m):
h %= 12
return abs(h*30 + m/2 - m*6)

urhj
Автор

Coole Aufgabe, kurz und knackig verpackt!
Zeigt auch, wie eine erst etwas knifflig wirkende Aufgabe dann doch fix gelöst sein kann :)

Danke für das Video!

IngenieurwerdenmitBen
Автор

Ich habe eine kleine Frage:

def r(hours, minutes):
h_per_minute = 360/(12*60)
m_per_minute = 360/60
h = (h_per_minute * (hours * 60 + minutes)) % 360
m = (m_per_minute * minutes) % 360
angel = min(abs(h-m), 360 - abs(h-m))
return angel


def r_other(hours, minutes):
h_per_minute = 360/(12*60)
m_per_minute = 360/60
h = (h_per_minute * (hours * 60 + minutes)) % 360
m = (m_per_minute * minutes) % 360
angel = (abs(h-m)) % 180
return angel

Beide Funktionen (aus dem Video) sollten ja eigentlich immer denselben Wert liefern, bei hours = 12 und minutes = 45 gibt die 1.Funktion allerdings 112.5 zurück, während die andere 67.5 zurückgibt. Habe ich mich irgendwo vertippt oder hat dieses Problem eine andere Ursache?

anonymoususer
Автор

könntest du bitte erklären wie hashcat auf kali linux geht ich würde mich freuen.

ATAT-dvtv
Автор

Ich hab am Anfang nur vergessen die Minuten mitzurechnen bei h per minutes.
Ich hab aber den angle mit einer if schleife gemacht:

def rotation(hours, minutes):
degreeHours = (360/(12*60)) * (60 * hours + minutes)
degreeMinutes = minutes * (360/60)

if degreeMinutes < degreeHours:
return degreeHours - degreeMinutes
elif degreeMinutes > degreeHours:
return degreeMinutes - degreeHours
else:
return 0

basti