ALGORITHMEN - Teil XXVIII (=28): Läuft! Was? Ja! Nein!! Doch! Ohhhh ...

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Info! Wir feiern Geburtstag! - 20 Jahre Paules-PC-Forum.de

    Unsere Datenschutzerklärung wurde aktualisiert. Mit der Nutzung unseres Forums akzeptierst Du unsere Datenschutzerklärung. Du bestätigst zudem, dass Du mindestens 16 Jahre alt bist.

    • ALGORITHMEN - Teil XXVIII (=28): Läuft! Was? Ja! Nein!! Doch! Ohhhh ...

      ... lautet der Ausruf mancher Programmierer, die aus Erfahrung noch 20 Fehlermeldungen erwartet hatten. Manchmal klappt´s ja doch! :-D

      Willkommen im 28. Kapitel der Algorithmen-Reihe!
      HP255G7:Win10pro2.004,4*AMD Ryzen3200U@2.60GHz,6+2GB-RadeonVega/237GBSSD:intlDVDRW,3xUSB3 ext4TB-HDX,XProfanX3+Xasm/Xpse
    • Kleine Hiobsbotschaft: Mein Provider seit 27 Jahren, die privatisierte Österreichische Post & Telekom, seit dem Einstieg eines mexikanischen Multimillionärs "A1" genannt und offenbar auf Kapitalisten-Kurs, hat mir den mit privaten Member-Seiten verbundenen Webspace gekündigt, ohne dass sich am monatlichen Tarif etwas geändert hätte. Ich habe daher momentan keinen Webspace, um das elektronische Inhaltsverzeichnis zu den Algorithmen-Kapiteln I bis 27 samt dem Beamer-Schnellöffnungsprogramm bereitzustellen.

      "Diese Schweinerei muss eine andere werden!" - Bin auf der Suche nach einem freundlichen Provider.
      Gruss
    • Lösung zum JaNeinDochOh-(JANDO)-Rätsel 1
      ----------------------------------------
      Spoiler anzeigen

      Geg.: 1,2,2,3,3,3,4,4,4,4,...
      Ges.: Arithmetisches Mittel der ersten 55 Terme (Terme sind durch Beistriche getrennt).

      Die Folge 1,2,2,3,3,3,4,4,4,4,... hat 1+2+3+4+...+(n-1)+n Terme.
      Mittels des kleinen Gauß schauen wir, für welches n die 55 Terme zustandekommen:
      n * (n+1) / 2 = 55
      n^2 + n = 110, normalisiert:
      n^2 + 1*n - 110 = 0
      Mitternachtsformel:
      n_1,2 = -p/2 +\- Sqrt((p/2)^2 - q )
      Da uns nur positive n interessieren:
      n = -1/2 + Sqrt( 1/4 - (-110)) = Sqrt(110.25)-0.5 = 10
      Mit n = 10 hat obige Folge genau 55 Terme.


      Damit können wir nun weiterarbeiten:
      Da ein Durchschnittswert der ersten 55 Terme gefragt ist, müssen wir alle Elemente der Folge aufaddieren.
      Die Folge wird somit zur "Reihe":
      1 + 2+2 + 3+3+3 + 4+4+4+4 + ...
      Das kann man auch schreiben als
      1^2 + 2*2 + 3*3 + 4*4 + ... , bzw.
      1^2 + 2^2 + 3^2 + 4^2 + ... bis + n^2
      oder als Formel ausgedrückt:
      SUMME(i=1..n, i^2)
      Dafür aber gibt es (wie mittlerweile bekannt) auch eine elegante Formel:
      SUMME(i=1..n, i^2) = n * (n+1) * (2*n+1) / 6


      Mit n = 10, wie oben berechnet, ergibt sich eingesetzt:
      10*11*21 / 6 = 5*11*21/3 = 5*11*7 = 35*11 = 385 als Summe.


      Antwort: Das arithmetische Mittel der ersten 55 Terme dieser Folge ist 385 / 55 = 7
      ====================================================
    • Abt. Zu schweres Rätsel - gelöst per Programm
      ==============================
      Ungelöst gebliebenes Rätsel eines Mathematik-Kopfrechenwettbewerbs; selbst compiliertes XProfan benötigt 2,5 min zur vollständigen Auflistung aller Lösungen. Das Rätsel:

      Du erhältst 12 gleich große Holzplättchen mit den Ziffern 0 bis 9 sowie einem Malzeichen und einem "="-Zeichen darauf. Bilde aus allen Plättchen eine korrektes Produkt aus einer zweistelligen Zahl mal einer dreistelligen Zahl, die eine fünfstellige Zahl ergibt.

      Quellcode

      1. WindowTitle "Gegeben sei die Menge der 10 Ziffern: Welche Anordnungen xx * xxx = xxxxx gibt es?"
      2. WindowStyle 24:cls $a0a044:Print "\n Berechnung läuft ... (ca. 4 min)\n"
      3. Declare t$,t$[],n&,k&,j&,u&,v&,e%,z&,q$, tm&
      4. e%=1:z&=0:q$=" ":font 2
      5. t$="0 1 2 3 4 5 6 7 8 9"
      6. t$=trim$(t$):t$=translate$(t$," "," "):case instr("|",t$):q$="|"
      7. t$=translate$(t$," ","|"):t$[]=explode(t$,"|"):n&=SizeOf(t$[])
      8. clearclip:tm&=&gettickcount
      9. While e%:inc z&
      10. if (val(t$[0]+t$[1])*val(t$[2]+t$[3]+t$[4]))=val(t$[5]+t$[6]+t$[7]+t$[8]+t$[9])
      11. case t$[5]<>"0":print " "+t$[0]+t$[1],"*", t$[2]+t$[3]+t$[4],"=", t$[5]+t$[6]+t$[7]+t$[8]+t$[9]+" "
      12. case t$[5]<>"0":putclip t$[0]+t$[1]+" * "+t$[2]+t$[3]+t$[4]+" = "+t$[5]+t$[6]+t$[7]+t$[8]+t$[9]+"\n"
      13. endif
      14. if n&<2:e%=0:break:endif
      15. k&=n&-2:While t$[k&]>=t$[k&+1]:Dec k&:case k&<0:break:EndWhile
      16. if k&<0:e%=0:break:endif
      17. j&=n&-1:While t$[j&]<=t$[k&]:dec j&:EndWhile
      18. t$=t$[k&]:t$[k&]=t$[j&]:t$[j&]=t$:u&=k&+1:v&=n&-1
      19. :While u&<v&:t$=t$[u&]:t$[u&]=t$[v&]:t$[v&]=t$:inc u&:dec v&:EndWhile
      20. EndWhile
      21. tm&=&gettickcount-tm&
      22. print "\n Alle in Zwischenablage! Rechendauer ";tm&,"ms"
      23. waitinput
      Alles anzeigen
    • Abt. Schwerkrafttheorie ohne Dunkle Materie
      ============================
      Schon wieder eine Weltbild-Änderung? Einem Vorschlag von Physiker Mordehai MILGROM (IL) zufolge kommt man durch ergänzende Terme bei galaxisgroßen Strukturen zu einer Schwerkraft-Theorie, die den Newtonschen Gesetzen bei Nichtrelativistischen Geschwindigkeiten weitestgehend entspricht. Seine MOND-Theorie (Modified Newtonian Dynamics) funktioniert folgenermaßen:

      Aus F=m*a wird F=m*µ*a²/a0 ,

      aus F=F*m1*m2/r² wird F=G*m1*m2/(µ*a*r²/a0)

      wobei der Mittelwert µ=0.011 +/- 0.013 bisher nur mit Standardabweichung von Sigma=0.11 bestimmt wurde. Diese Theorie hat ihre Probleme, beispielsweise sagt sie eine Geschwindigkeit von Gravitationswellen deutlich unterhalb der Lichtgeschwindigkeit voraus (Durch die LIGO-Messungen widerlegt), andererseits behebt sie durch die saubere Unterscheidung von "träger Masse" von "Gravitativer Masse" einen Punkt, dessen Gleichheit auf unserer Erde schon früh die Physiker\innen verwunderte. Zurückgeführt wird das auf einen "Gravitationsfeld-Verdichtungseffekt" durch den Einfluss naher Galaxien - was nun an über 150 Galaxien nachgewiesen wurde!

      Quelle: Youtube (engl.)
    • Lösung zu JANDO-2
      ----------------------
      Spoiler anzeigen

      Aufgabe: Min(X) und Sqrt(24*X) sollen ganzzahlig sein.

      Ansatz:
      Für X=24 wäre die Ganzzahligkeit der Quadratwurzel garantiert.
      Aber ist das auch das kleinstmögliche X?

      Formulieren wir um: Sqrt(24*X)=a ==> 24*x = a^2
      Das klappt, weil wenn a ganzzahlig ist, ist es auch a^2.

      Da auch X ganzzahlig, gilt: X = a^2 / 24
      Das bedeutet, 24 ist ein Teiler von a^2.
      Sind vielleicht große Teiler von 24 auch Teiler von X ?

      Wir testen:
      X = 24/2 = 12: 24*12 = 288 ... keine Quadratzahl, da 17^2=289
      X = 24/3 = 8: 24 * 8 = 192 ... nö, auch nicht,13^2=169, 14^2=196
      X = 24/4 = 6: 24 * 6 = 144 ... HA! Das ist doch 12 x 12, eine QUADRATZAHL!

      Antwort: Das kleinstmögliche X ist X = 6
      ---------------------------------------------
    • Abt. Interessante Links
      ==============
      Wer sich per "Dynamischer Zeitablauf in Video-Form" über die Marktanteile der TOP-Firmen im Bereich Computer, Mobilphone, Laptops, Spielekonsolen seit den Achzigerjahren bis 2020 informieren lassen will, ist im Youtube-Kanal von Captain Gizmo goldrichtig. Musikuntermalung inklusive, und spannend wie ein Pferderennen: LINK

      Ähnliches Konzept über die jeweils zeitgenössische Medienlandschaft: DataIsBeautiful LINK

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von p. specht ()

    • Abt. Zahlentheorie: Quadratzahlen
      ======================
      Quadrate von ganzen Zahlen sind bekanntlich immer positive ganze Zahlen. Weniger bekannt ist, daß die QuersummenQuersumme - betrieben bis zu einer einstelligen Ziffer (Die sog. Ziffernwurzel) - bei Quadratzahlen nie bestimmte Ziffern annehmen kann. Man kann dadurch selbst an vielstelligen Zahlen (zB solche, die selbst den Windows-Desktoptaschenrechner überfordern würden) manchmal sofort erkennen, daß sie keine Quadratzahlen sind. Das nachstehende Programm berechnet diese "verbotenen" Ziffernwurzeln.

      Weitere Details zu Quadratzahlen finden sich HIER.

      Quellcode

      1. WindowTitle " Check eines Quadratzahl-Vortests"
      2. WindowStyle 24
      3. declare ww$,zw&,z&[9]
      4. z&[]=&index
      5. cls $FFA000
      6. print "\n Überprüfung läuft!"
      7. whileloop 10000
      8. ww$=str$(sqr(&Loop))
      9. Repeat
      10. zw&=0
      11. whileloop len(ww$)
      12. zw&=zw&+val(mid$(ww$,&Loop,1))
      13. endwhile
      14. ww$=str$(zw&)
      15. until len(ww$)=1
      16. z&[zw&]=0:print zw&;
      17. endwhile
      18. cls $FFFF00
      19. Print "\n Folgende Ziffernwurzeln (Ziffernsummensummensummen..)"
      20. print " kommen in Quadratzahlen nie vor (Geprüft bis 10000²):\n\n ";
      21. font 2:whileloop 0,9:case z&[&Loop]:print z&[&Loop],:endwhile
      22. beep:waitinput
      23. '1524157875019052
      Alles anzeigen

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von p. specht ()

    • Abt. Zahlentheorie 2: Dreieckszahlen
      =======================
      Im Gegensatz zu Quadratzahlen folgen Dreiecksrzahlen der Gesetzmäßigkeit Z = n*(n+1)/2 - eine Formel, die der kleine Gauß in der Volksschule bereits kannte (... weshalb sie auch Gaußzahlen genannt werden - bitte nicht zu verwechseln mit Gaußschen Zahlen in der komplexen gaußschen Zahlenebene!). Genau wie bei Quadratzahlen gibt es hier auch wieder "verbotene" Ziffernwurzeln. Ein gegenüber oben etwas modifiziertes Programm berechnet diese bei Dreieckszahlen nie vorkommenden Quersummenquersummen.
      Gruss

      P.S.: Weitere Details HIER.

      Quellcode

      1. WindowTitle " Check eines Gausszahl-Vortests"
      2. WindowStyle 24
      3. declare ww$,zw&,z&[9]
      4. z&[]=&index
      5. cls $FFA000
      6. print "\n Überprüfung läuft!"
      7. whileloop 10000
      8. ww$=str$(int(&Loop*(&Loop+1)*0.5))
      9. Repeat
      10. zw&=0
      11. whileloop len(ww$)
      12. zw&=zw&+val(mid$(ww$,&Loop,1))
      13. endwhile
      14. ww$=str$(zw&)
      15. until len(ww$)=1
      16. z&[zw&]=0:print zw&;
      17. endwhile
      18. cls $FFFF00
      19. Print "\n Folgende Ziffernwurzeln (Ziffernsummensummensummen...ziffer)"
      20. print " kommen in Gausszahlen nie vor (Geprüft bis 10000²/2):\n\n ";
      21. font 2:whileloop 0,9:case z&[&Loop]:print z&[&Loop],:endwhile
      22. beep:waitinput
      Alles anzeigen

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von p. specht ()

    • Abt. JANDO-03
      ==========
      Wächter Joe soll alle 17 Gänge eines Einkaufszentrums überwachen. Dazu fährt er am Abend mit der Straßenbahn ins Einkaufszentrum, begeht alle Gänge, und am Morgen holt ihn seine Frau an einem beliebigen Eingang wieder ab. Das ebenerdig gebaute Einkaufszentrum hat 12 Geschäfte (A bis L), die durch Gänge und Quergänge verbunden sind. Der Floorplan sieht so aus:

      Quellcode

      1. A---B---C
      2. | | |
      3. D---E---F
      4. | | |
      5. G---H---I
      6. | | |
      7. J---K---L
      Natürlich will er dabei so wenig wie möglich wandern - Schuhe sind schließlich teuer! Joe ist klar, dass er nicht umhin kommt, manche Gänge zweimal zu begehen. Die Wege zwischen den Geschäften sind alle gleich lang. Alle Wege müssen begangen werden, was durch Magnetkarten kontrolliert wird. Joe kann an einem beliebigen Punkt beginnen und an einem beliebigen Eingang abgeholt werden. Aufgabe: Finde einen kürzesten Weg, etwa durch Angabe der Reihenfolge der Geschäfte.