Hallo Gravitar Darf ich mal fragen welches Programm benutzt du um die Keystrokes auf dem Bildschirm zu zeigen? Vielen dank für alle deine Videos, die sind sehr interessant und die Erklärungen sind sehr detailliert und verständlich. Ich bin neu bei Python und deine Videos sind sehr hilfreich.
Hi, danke für die Blumen. Die Anzeige der Keystrokes kannst du direkt in Visual Studio Code einschalten. Mit CTRL+Shift+P öffnest du die Kommando-Auswahl. Dort dann als Suchbegriff "Screencast" eingeben und "Developer: Toggle Screencast Mode" auswählen. Fertig.
Wieder einmal ein unterhaltsames und inspirierendes Video! Vielen Dank. Nachdem ich das Rätsel meiner Tochter gestellt hatte, kam nach dem Lösen die Frage, ob das nur bei 36 funktioniert. Da musste das Programm noch etwas erweitert werden und siehe da, es funktioniert auch bei 40, 72, 90 und 96 (gerechnet bis 100). Bei 90 gibt es sogar zwei Zwillings-Hausnummern. Zum Schluss doch noch eine Frage: Bei der list comprehension tue ich mich immer noch sehr schwer. Im folgenden Beispiel habe ich keine Möglichkeit mit einer list comprehension gefunden: varianten = [v for v in combinations_with_replacement(range(1,100),3) if math.prod(v)
Ja, geht. Ob das dann immer lesbar ist, ist allerdings fraglich. dictSum = {alter:[sum(v) for v in varianten if math.prod(v) == alter] for alter in range(1,100)}
@@Gravitar Tatsächlich ☺. Wenn ich es richtig sehe, eine doppelte list comprehension, wer kommt denn auch auf so etwas 😀. Vielen dank für die schnelle Antwort! Gruß Jörg
Warum machste kein Patreon Konto auf, dann wäre es auch leichter mit dem Spenden ;D Sonst ne schönes Video, hab mir fast alle angesehen und dabei sehr viel lernen können ;D
Schön dass es dir gefällt. Vielleicht biete ich auch noch mal irgendwann ein Patreon Konto mit Mehwerten (Live-Videos, Ask me anything, Detailbetrachtungen bestimmter Themenstellung etc.) nur für Mitglieder an. Aber im Moment reicht mir dieser Kanal mit einer kleinen, aber feinen Gemeinschaft von Followern total.
ich schreib mal kein kommentar sondern denke nur laut ... :) als erstes musste ich daran denken wie ich damals überlegt hatte och ich würd auch gern programieren das is voll mein ding das war die zeit wo eine 3d engine als solches noch nicht erfunden war und man statt mit exponenten oder einem include math bits in den speicher registern verschoben hat (an der cpu vorbei damit die nicht belastet wird) etwas was später leider nicht mehr möglich war ... warum hab ich aufgehört .. es war im grunde diese ich nenn sie mal ekelige lösung der zukunft das zunhemnd probleme durch brute force gelöst wurden .. statt checkbits zu negieren wurden um ein program mit einer serien nummer zu cracken einfach alle nummern durch probiert. irgendwie wirkte das sehr langweilig und ich hab dann aufgehört damit. alles mit brute force .. genau dieser gedanke kam mir auch bei dem och multiplizieren wir einfach mal eben alles und gucken dann bei welcher das gesuchte ergebniss ne 36 is das mag heut zu tage so üblich sein aber schön find ich das nicht oder ? bin ich da zu pingelig ? is mein denken da genau der grund warum das nicht so gemacht wird weil man kann das wohl sagen wir "eleganter" oder "anders" lösen auchn ohne ein math include aber vermutlich hat man am ende wirklich 200 zeilen code da stehen die keiner mehr versteht wenn er sich das wirrwarr ansieht und das nur um die cpu zu entlasten die ohnehin nur ne nano sekunde brauch für die lösung . es is heute und das sfid ich ein bisschen schade garnicht mehr notwendig effizient zu sein is egal dann macht man einfach mehr cpu power mehr speicher mehr dies das is ja alles heute genuch vorhanden. is ja auch effizent so man will ja das ergebniss wie man dahin kommt is am ende wurscht. jedenfalls für leute die probleme lösen wollen is das ziel das problem gelöst zu haben und ich glaub das is der grund warum ich am ende kein guter programierer geworden wäre .. für mich war der weg wie das problem gelöst is immer wichtiger als die lösung als solches .. mit so einem wie mir kann man nich arbeiten weil jemand der auf mein ergebniss wartet bekommt ständig nur den satz zu hören "warte das kann man noch besser machen" ... aber das sind nur so gedanken die ich hatte. das rätsel selbst kam mir etwas einfach vor und vor allem hätte ich da auch wieder das haar in der suppe gesucht von wegen ja was is wenn zwei töchter erst geplatn sind für in 2 und 4 jahren also minus 4 jahre alt sind oder wer sagt denn das der mathematiker sich nicht verrrechnet oder aber kurzsichtig is und die hausnummer überhaupt richtig erkennt ... weiß der vater überhaupt das alter seiner töchter un verrechnet sich grad nich selbst ? die älteste kann auch 2 minuten älter sein ... und wenn er bei rätsels lösung kauft will er ja ohnehin einen haben das kommt noch dazu. aber da höre ich besser auf wenn um so länger ich darüber nachdenke ob die geige überhaupt gehört wird und der vater lügt weil man niemanden spielen hört mache ich doch zur abwechslung mal etwas sinnvolles und schreibe einfach nur einen kleinen kurzen kommentar unter das video das mir trotz meiner verworrenen gedanken gefallen hat :) und ich mir so dachte warte 556 views nur da hilft es dem video vermutlich dem youtube algorithmuss gegenüber mehr aufmerksamkeit zu erzeugen wenn man da nen kommentar hinterlässt also schreib ich halt doch mal in kurz und knappen worten drunter das mir das video gefallen hat :D so .. in diesem sinne vielen dank für die unterhaltsamen 20 minuten die sich gelohnt haben auch wenn ich noch nicht genau weiß wie ich überhaupt auf das video aufmerksam wurde
Hi, ja klar kann man auch versuchen auf bit-Ebene die prozessoreffizienteste Lösung zu konstruieren. Da würde sich dann vermutlich Assembler dafür eignen. Bei Python - als high-level Programmiersprache - liegt die Zielsetzung eher darin, einen für Menschen einfach zu schreibenden Code anzubieten, der viele Implementierungsdetails (z.B. Kombinatorikvarianten mit den Itertools) im Hintergrund verbirgt und so schnell zu einer Lösung führt. Die Ausführungsgeschwindigkeit steht hier klar nicht im Vordergrund. Trotzdem fiesel ich an den vorgestellten Programmen auch eine ganze Weile herum, um einen möglichst kurzen, dennoch verständlichen Weg zu finden. Also kann man auch hier lange über benötigte Datentypen (List vs. Tuple vs. Set vs. Dictionary etc.) und den damit verbundenen Auswirkungen nachdenken.
So schön kann man Mathematik mit dem Leben kombinieren^^
Danke für die unterhaltsame Einführung in die Möglichkeiten von itertools. Schönen Sonntag noch!
Nettes Rätsel!
Hallo Gravitar
Darf ich mal fragen welches Programm benutzt du um die Keystrokes auf dem Bildschirm zu zeigen?
Vielen dank für alle deine Videos, die sind sehr interessant und die Erklärungen sind sehr detailliert und verständlich.
Ich bin neu bei Python und deine Videos sind sehr hilfreich.
Hi, danke für die Blumen. Die Anzeige der Keystrokes kannst du direkt in Visual Studio Code einschalten. Mit CTRL+Shift+P öffnest du die Kommando-Auswahl. Dort dann als Suchbegriff "Screencast" eingeben und "Developer: Toggle Screencast Mode" auswählen. Fertig.
Viele Dank für die schnelle Antwort!
Gibt es vielleicht diese Funktion auch in PyCharm?
Wieder einmal ein unterhaltsames und inspirierendes Video! Vielen Dank.
Nachdem ich das Rätsel meiner Tochter gestellt hatte, kam nach dem Lösen die Frage, ob das nur bei 36 funktioniert. Da musste das Programm noch etwas erweitert werden und siehe da, es funktioniert auch bei 40, 72, 90 und 96 (gerechnet bis 100). Bei 90 gibt es sogar zwei Zwillings-Hausnummern.
Zum Schluss doch noch eine Frage: Bei der list comprehension tue ich mich immer noch sehr schwer. Im folgenden Beispiel habe ich keine Möglichkeit mit einer list comprehension gefunden:
varianten = [v for v in combinations_with_replacement(range(1,100),3) if math.prod(v)
Ja, geht. Ob das dann immer lesbar ist, ist allerdings fraglich.
dictSum = {alter:[sum(v) for v in varianten if math.prod(v) == alter] for alter in range(1,100)}
@@Gravitar Tatsächlich ☺. Wenn ich es richtig sehe, eine doppelte list comprehension, wer kommt denn auch auf so etwas 😀.
Vielen dank für die schnelle Antwort!
Gruß Jörg
Warum machste kein Patreon Konto auf, dann wäre es auch leichter mit dem Spenden ;D Sonst ne schönes Video, hab mir fast alle angesehen und dabei sehr viel lernen können ;D
Schön dass es dir gefällt. Vielleicht biete ich auch noch mal irgendwann ein Patreon Konto mit Mehwerten (Live-Videos, Ask me anything, Detailbetrachtungen bestimmter Themenstellung etc.) nur für Mitglieder an. Aber im Moment reicht mir dieser Kanal mit einer kleinen, aber feinen Gemeinschaft von Followern total.
ich schreib mal kein kommentar sondern denke nur laut ... :) als erstes musste ich daran denken wie ich damals überlegt hatte och ich würd auch gern programieren das is voll mein ding das war die zeit wo eine 3d engine als solches noch nicht erfunden war und man statt mit exponenten oder einem include math bits in den speicher registern verschoben hat (an der cpu vorbei damit die nicht belastet wird) etwas was später leider nicht mehr möglich war ... warum hab ich aufgehört .. es war im grunde diese ich nenn sie mal ekelige lösung der zukunft das zunhemnd probleme durch brute force gelöst wurden .. statt checkbits zu negieren wurden um ein program mit einer serien nummer zu cracken einfach alle nummern durch probiert. irgendwie wirkte das sehr langweilig und ich hab dann aufgehört damit. alles mit brute force .. genau dieser gedanke kam mir auch bei dem och multiplizieren wir einfach mal eben alles und gucken dann bei welcher das gesuchte ergebniss ne 36 is das mag heut zu tage so üblich sein aber schön find ich das nicht oder ? bin ich da zu pingelig ? is mein denken da genau der grund warum das nicht so gemacht wird weil man kann das wohl sagen wir "eleganter" oder "anders" lösen auchn ohne ein math include aber vermutlich hat man am ende wirklich 200 zeilen code da stehen die keiner mehr versteht wenn er sich das wirrwarr ansieht und das nur um die cpu zu entlasten die ohnehin nur ne nano sekunde brauch für die lösung . es is heute und das sfid ich ein bisschen schade garnicht mehr notwendig effizient zu sein is egal dann macht man einfach mehr cpu power mehr speicher mehr dies das is ja alles heute genuch vorhanden. is ja auch effizent so man will ja das ergebniss wie man dahin kommt is am ende wurscht. jedenfalls für leute die probleme lösen wollen is das ziel das problem gelöst zu haben und ich glaub das is der grund warum ich am ende kein guter programierer geworden wäre .. für mich war der weg wie das problem gelöst is immer wichtiger als die lösung als solches .. mit so einem wie mir kann man nich arbeiten weil jemand der auf mein ergebniss wartet bekommt ständig nur den satz zu hören "warte das kann man noch besser machen" ... aber das sind nur so gedanken die ich hatte. das rätsel selbst kam mir etwas einfach vor und vor allem hätte ich da auch wieder das haar in der suppe gesucht von wegen ja was is wenn zwei töchter erst geplatn sind für in 2 und 4 jahren also minus 4 jahre alt sind oder wer sagt denn das der mathematiker sich nicht verrrechnet oder aber kurzsichtig is und die hausnummer überhaupt richtig erkennt ... weiß der vater überhaupt das alter seiner töchter un verrechnet sich grad nich selbst ? die älteste kann auch 2 minuten älter sein ... und wenn er bei rätsels lösung kauft will er ja ohnehin einen haben das kommt noch dazu. aber da höre ich besser auf wenn um so länger ich darüber nachdenke ob die geige überhaupt gehört wird und der vater lügt weil man niemanden spielen hört mache ich doch zur abwechslung mal etwas sinnvolles und schreibe einfach nur einen kleinen kurzen kommentar unter das video das mir trotz meiner verworrenen gedanken gefallen hat :) und ich mir so dachte warte 556 views nur da hilft es dem video vermutlich dem youtube algorithmuss gegenüber mehr aufmerksamkeit zu erzeugen wenn man da nen kommentar hinterlässt also schreib ich halt doch mal in kurz und knappen worten drunter das mir das video gefallen hat :D
so .. in diesem sinne vielen dank für die unterhaltsamen 20 minuten die sich gelohnt haben auch wenn ich noch nicht genau weiß wie ich überhaupt auf das video aufmerksam wurde
Hi, ja klar kann man auch versuchen auf bit-Ebene die prozessoreffizienteste Lösung zu konstruieren. Da würde sich dann vermutlich Assembler dafür eignen.
Bei Python - als high-level Programmiersprache - liegt die Zielsetzung eher darin, einen für Menschen einfach zu schreibenden Code anzubieten, der viele Implementierungsdetails (z.B. Kombinatorikvarianten mit den Itertools) im Hintergrund verbirgt und so schnell zu einer Lösung führt. Die Ausführungsgeschwindigkeit steht hier klar nicht im Vordergrund.
Trotzdem fiesel ich an den vorgestellten Programmen auch eine ganze Weile herum, um einen möglichst kurzen, dennoch verständlichen Weg zu finden. Also kann man auch hier lange über benötigte Datentypen (List vs. Tuple vs. Set vs. Dictionary etc.) und den damit verbundenen Auswirkungen nachdenken.