ALGORITHMEN TEIL X: Das hat uns noch gefehlt!

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

    • ALGORITHMEN TEIL X: Das hat uns noch gefehlt!

      Abt. Willkommen im Kapitel X. des totalen Algorithmen-Wahnsinns
      ==========================================
      Nur zur Erinnerung: Hier darf jeder seinen Altmüll entsorgen, nach Herzenslust Programme austesten und seinen Computer über die Dachfirste jagen bis zum Abwinken. Er wird Dinge erfahren, die er nie wissen wollte und deshalb nie zu fragen wagte. Er wird Fehler-Meldungen und Abstürze ignorieren lernen und sich fragen, wer da wen gerade progammiert: Er seinen Computer oder schon umgekehrt?
      Das Alles ohne jede Gewähr - und ohne Gewehr auch, hoffentlich!
      Gruss

      P.S. Wo immer ich hier "er" gesagt habe, meine ich natürlich auch ein herzliches "sie"! Mein Computsie besteht darauf! :oops:
      Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,xpse,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB3
    • Themenübersicht zum vorherigen Algorithmen-Kapitel IX
      ====================================
      Spoiler anzeigen

      ---------------------------------------------------------------------------
      Algorithmen, Teil IX.: Computer und andere Haustiere
      ---------------------------------------------------------------------------
      THEMENÜBERSICHT zum vorherigen Kapitel IX
      ---------------------------------------------------------------------------
      XPROFAN
      ASSEMBLER
      DATUM UND ZEIT
      GRAFIK
      MULTIMEDIA

      MATHEMATIK
      Hilfsfunktionen
      Arithmetik
      Statistik
      Geometrie
      Algorithmen
      Differentialgeometrie
      Zahlentheorie
      Höhere Funktionen
      Kombinatorik
      Logik

      EDV
      CODES
      WINDOWS
      SYSTEM
      SICHERHEIT

      PHYSIK & TECHNIK
      CHEMIE
      MECHANIK
      ELEKTRONIK
      ASTRONOMIE

      WIRTSCHAFT
      MEDIZINISCHES
      KULTUR & SOZIALES
      QUIZ, RÄTSEL, HUMOR
      ---------------------------------------------------------------------------
      ---------------------------------------------------------------------------
      Detailübersicht zum vorherigen Kapitel IX
      ---------------------------------------------------------------------------
      09#001 Abt. Algorithmen Teil IX. feierlich eröffnet
      09#040 Abt. HUCH Wie sieht's denn hier aus? (Neue Forumsgestaltung)
      09#132 Inhaltsverzeichnis Chronologisch

      XPROFAN
      09#006 Abt. Werterückgabe-Trick aus Procs mittels Arrays in Parameters
      09#007 M.Wodrich zu OGL-Werteübergabe
      09#008 Abt. Namenlose Proc in XProfan
      09#043 Abt. Mysterien von XProfan (Durcken nicht zugewiesener Werte etc)
      09#044 Noch Skurriler: Volkmar mit einer eigenartigen Variante ohne Return
      09#045 XProfan macht Sachen!!! Quellentext-Zeilennummer des Endproc ausgeben!
      09#046 Volkmar: Tab() geht auch ohne Print !!!
      09#047 Heinz_Brill klärt implizieten Typenwandel
      09#086 Abt. Catch me if you can: XProfans PRINT-Befehl mit DRAWTEXT mischen!
      09#116-118 Abt. Problem mit %matchpos (XProfan 11.2a) von RGH gelöst
      09#120 Abt. Fehler in der INT()-Funktion (Nur FreeProfan-64bit!)
      09#121-122 Volkmar bestätigt INT()-Problem, Meldung im 64-bit-Thread

      ASSEMBLER
      09#080 Abt. XPIA reloaded (letzte Adresse vor Rückzug von FrAbbing)
      09#081 Abt. XPIA-Funktionstest
      09#083 RGH's Hinweis auf Blindlink
      09#084 ALLERLETZTE GÜLTIGE ADRESSE VON XPIA VOR RÜCKZUG

      DATUM UND ZEIT
      09#004 Beitrag M.Wodrich betr. Timer
      09#005 Klärung betr. Oneshot-Funktion von Waitinput n&
      09#009 Abt. Anzahl Tage zwischen zwei Datumsangaben (1901-2099)
      09#012 _Joerg_s Beispiel Anzahl Tage zw. Datum noch einfacher
      09#088 Abt. Halbwertszeit von Radioaktiven Belastungen bestimmen
      09#089 Abt. Näherungsformeln für Islamisches und Jüdisches Kalenderjahr
      09#092 Abt. Schaltjahrsregeln nicht genau genug? ;-)
      09#127 Abt. Minimalistische Eieruhr (Sekundengenau)

      GRAFIK
      09#005 Abt. Spiralo Bildschirmschoner - rekursiv
      09#072 Abt. Schmiegekreis-Bildschirmschoner

      MULTIMEDIA
      09#021 Admin: Anleitung zum Herunterladen von Videos leider zu löschen

      MATHEMATIK
      ---------
      Hilfsfunktionen
      09#026 Abt. Übersichtlichere Tabelleneingabe via Programmtext
      09#027 Abt. Aha-Erlebnisse bezüglich Rechengenauigkeit von Profan
      09#028 Abt. Mathematica- bzw. wxMaxima-Matrizendarstellung entziffern
      09#033 Abt. Neues aus der TOP 500-Supercomputerliste
      09#036 _Joerg_: Links zu unterhaltsamen Mathe: Weißes Licht
      09#049 Abt. Altgriechische Zahlwortvorsätze und Lateinische Zahlworte
      09#060 Abt. Lehrreiche Links
      09#102 Abt. Beweis durch langes Anschauen, mit Linkempfehlung

      Arithmetik
      09#035 Abt. Brüche im Exact-Floatingpoint-System
      09#034 Abt. Beschleunigte Eigenmultiplikation einer Matrix
      09#041 Abt. Flattermann: Modeerscheinung "Formel für Batman-Logo" u.a.
      09#125 Abt. Polynom 6. Grades lösen (wie der 1. Microprozessor überhaupt)
      09#130 Abt. Quadratur des Kreises (numerisch & geometrisch nach Kochansky)

      Statistik
      09#038 Abt. Statistik in der Empirischen Sozialforschung: Z-Normierung
      09#087 Abt. Wahrscheinlichkeit von Geburtstagskoinzidenz nach Gruppengröße

      Geometrie
      09#039 Abt. Kegelschnitt-Typ und -Parameter aus Gleichung ermitteln
      09#058 Abt. Gute Näherung für die Gauss'sche Fehlerfunktion Erf(x)
      09#065 Abt. Wir machen die Gärtner-Ellipse
      09#066 Abt. Diverse Ellipsengleichungen
      09#067 Abt. Ellipsenbogenlänge analytisch per 4. Näherungsformel
      09#070 Abt. Ellipsenumfang: Näherungsformel von Ramanujan
      09#071 Abt. Schmiegekreis an Ellipse
      09#074 Abt. Keine Schonzeit für Astroiden
      09#077 Abt. Numerische Exzentrizität der Ellipse
      09#079 Abt. Die Diophantische Gleichungen des Diophantus von Alexandria
      09#103 Linkliste: Basis der Darstellenden Geometrie
      09#130 Abt. Quadratur des Kreises (numerisch & geometrisch nach Kochansky)

      Algorithmen
      09#048 Abt. BiSection-Algorithmus: Teile und herrsche!
      09#051 Abt. Kettenbruchentwicklung (hier von Pi)
      09#061 Abt. Wurzelbehandlung (Heron)
      09#075 Abt. Historische Algorithmen: Exp und LN aus Nicht-FPU-Zeiten
      09#111 Abt. Exponential-Ersatzfunktion (Version 2, historisch)

      Differentialgeometrie
      09#064 Abt. Grundregeln des Differenzierens

      Zahlentheorie
      09#050 Abt. Sqrt(2) auf 2001 Digits. Aber was gibt Sqrt(2)^Sqrt(2) ?
      09#053 Abt. x^x (x hoch x)-Grenzen von XProfan (Win-Rechner: 2889^2889)
      09#054 Abt. Sophomorefunktion x^x im Bereich>1 ohne Lambert-W-Funktion
      09#095 Abt. Fibonacci-Zahlen mit negativem Zahlenbereich

      Höhere Funktionen
      09#076 Abt. Ellipsenumfang: Unvollständige Elliptische Integrale
      09#082 Linkliste: Spezielle mathematische Funktionen Online berechnen
      09#085 Aufklärung einer Falschmeldung (Abramowitz / Stegun)
      09#091 Abt. Arithmetisch-geometrisches Mittel AGM(a,b) berechnen

      Kombinatorik
      09#112 Abt. Kombinationen ohne Wiederholung: Knuth's X-7, aber schneller!
      09#087 Abt. Wahrscheinlichkeit von Geburtstagskoinzidenz nach Gruppengröße

      Logik
      09#113 Abt. "Logik" (Grundsatzartikel)
      09#108-110 Abt. Kombiniere!: Keine Kombinatorik-Formelsammlung als Programm
      09#131 Abt. Dem Aristoteles seine Logik (... Jedem seine Logik!)

      CODES
      09#059 Abt. Interessante Links betreffend Datencodes in Matrixform
      09#114 Abt. Ziffernsumme (Summe der Einzelziffern einer großen Zahl)
      09#115 Abt. Checksummen nach Fletcher (leicht & doch noch CRC-ähnlich)
      09#119 Abt. CRC16-Wordstream-Test

      WINDOWS
      09#029 Abt. Fenster putzen bzw. "Windows pflegen"
      09#062 Abt. Ordnung muß sein: XCopy-Befehl aus Dos-6.2 noch verfügbar
      09#073 Abt. Tricks: Erweiterte Suche unter modernen Windows-Versionen
      09#090 Abt. Browserstatistik Mitte 2015
      09#100 Abt. Den Windows-Desktoprechner Calc in Programmen nutzen

      SYSTEM
      09#016 AHT: Prozesspfad ohne Rechte auf den Prozess ermitteln
      09#032 AHT: Registrywerte komplett lesen, ohne Rechte dazu zu haben
      09#096-099 AHT: Abt. Alternate Data Streams mit X2 listen: ADS & AMSI

      SICHERHEIT
      09#017-020 AHT u.v.a.: Thema Gibt es INFORMATIONSSICHERHEIT ?

      PHYSIK & TECHNIK
      ----------------
      CHEMIE
      09#093 Abt. Atommassen-Angaben zusammen mit Isotopen
      09#094 Abt. XProfan-Liste mit Relativen Atommassen (Stabd 2015)

      MECHANIK
      09#030 Abt. Schleudergang-Kräfte einer Waschmaschine
      09#052 Abt. Zahnrad-Problem von Huygens

      ELEKTRONIK
      09#031 Abt. Kenndaten älterer Elektronik-Bauelemente + Online-Datenbank
      09#124 Abt. CADC - Der ALLERerste Microprozessor überhaupt

      ASTRONOMIE
      09#037 Abt. Größenordnungen im All
      09#055 Abt. Kosmologie: Doch kein Urknall?
      09#056 Abt. Linksdrehend: Warum sich Materie gegen Antimaterie durchsetzte
      09#057 ...oder genau umgekehrt?
      09#063 Abt. Spaß mit Zahlen: Größenordnungen betr. Dunkle Energie

      WIRTSCHAFT
      09#078 Abt. Doch wieder vertont: Goldkurs und Griechenland (Juli 2015)
      09#104 Profan: Unglückselige Bedeutung von "Profanity" im Englischen
      09#105 Volkmars Kommentar zu "Profanity"
      09#126 Abt. LBMA-Goldpreis Eur/Unze Feingold Jan-Sept.2015 vertont
      09#128 Abt. Spickheftchen im Format DIN A8: Bastelanleitung und Formelfrage

      MEDIZINISCHES
      09#022 Abt. Wampe weg: Datenquellen für Kalorien-Rechner, Sharwareübersicht
      09#023 Abt. Kalorien je Gramm in Speisen
      09#024 Link: Nährwerttabellen inkl. Vitamin- und Mineralstoffangaben
      09#042 FrAbbings Gewichts-Prohezeihung (hat sich inzwischen leider erfüllt)

      KULTUR & SOZIALES
      09#107 Abt. Warum Demokratie manchmal nicht funktioniert: Das Arrow-Theorem
      09#123 Abt. Zukunft der Arbeit (mit interessantem Youtube-Link)

      QUIZ, RÄTSEL, HUMOR
      09#106 Das Schatzinsel-Rätsel ('Die 10 Goldkisten')
      ---------------------------------------------------------------------------
      Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,xpse,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB3
    • Abt. Gunkl-Zahlen
      ===========
      Der Wiener Kabarettist Günther Paal firmiert seit langem unter dem Pseudonym GUNKL und produziert dabei (meine persönliche Meinung) schräg-intellektuellen bis arg-nerdigen Humor zum Todlachen. Das zeigt auch seine Homepage, wo er unter der Rubrik "Tipps zum Tag" seine skurril-sprachorientierten Beobachtungen zum Besten gibt.

      Der Gunkl-Tipp vom 22.10.2015 stellte dabei eine mathematische Herausforderung dar, die es lohnt, ausführlicher geprüft zu werden: Ergebnis sind die (zumindest von mir sogenannten) GUNKL-Zahlen, die vermutlich die gesamte Mathematik der westlichen Welt aus den Angeln zu heben nicht drohen werden.

      Die schräge Aufgabe lautete wie folgt: "Finden sie ein paar vierstellige Zahlen, die, durch alle möglichen zweistelligen Zahlen, die sich aus d_e_n vier Z_i_f_f_e_r_n basteln lassen, dividiert, eins ergeben". Herausforderung angenommen!
      Gruss

      P.S.: Die Probe liefert: 0000=0*0=Triviale Lösung; 0126=6*21; 0153=3*51; 0688=8*86; 1260=21*60; 1395=15*93; 1435=41*35; 1530=51*30; 1827=87*21; 2187=27*81; 6880=86*80

      Quellcode

      1. WindowTitle "Gunkelzahlen finden (Brute force-Methode)"
      2. ' Problemstellung von http://www.gunkl.at/tips-system/archiv.php, dort aus:
      3. ' Gunkl-Tipp vom 22.10.2015: Finden sie ein paar vierstellige Zahlen, die,
      4. ' durch alle möglichen zweistelligen Zahlen, die sich aus den vier Z i f f e r n
      5. ' basteln lassen, dividiert, eins ergeben.
      6. ' Specht's Vermutung: Gemeint dürften Zahlen nach folgendem Muster sein: 1234 / 23 / 14 = 1 ?
      7. Windowstyle 24:CLS:font 0
      8. declare v&,v$,t&,h&,z&,e&, tt&,hh&,zz&,ee&, z1&,z2&,p$[],i&[23,3],z$,k&,z1o&,z2o&
      9. p$[]=explode("0123,0132,0213,0231,0312,0321,1023,1032,1203,1230,1302,1320,1023,1032,1203,"+\
      10. "1230,1302,1320,2013,2031,2103,2130,2301,2310,3012,3021,3102,3120,3201,3210,",",")
      11. :whileloop 0,23:k&=&Loop:z$=p$[k&]:whileloop 0,3:i&[k&,&Loop]=val(mid$(p$[k&],&loop+1,1))
      12. 'print i&[k&,&Loop],
      13. endwhile :'print
      14. endwhile :clear p$[]
      15. Clearclip:Cls ' Vierstellige Zahl aus 4 Ziffern bilden:
      16. Whileloop 0,9:t&=&loop:Whileloop 0,9:h&=&loop:Whileloop 0,9:z&=&loop:Whileloop 0,9:e&=&loop
      17. v&=t&*1000+h&*100+z&*10+e&:v$=right$("0000"+str$(v&),4):print v$:locate %csrlin-1,1
      18. ' DIESE Ziffern permutieren:
      19. z1o&=99:z2o&=99
      20. whileloop 0,23
      21. tt&=val(mid$(v$,i&[&Loop,0]+1,1))
      22. hh&=val(mid$(v$,i&[&Loop,1]+1,1))
      23. zz&=val(mid$(v$,i&[&Loop,2]+1,1))
      24. ee&=val(mid$(v$,i&[&Loop,3]+1,1))
      25. ' Zweiergruppen bilden
      26. z1&=10*tt&+hh&
      27. z2&=10*zz&+ee&
      28. ' Test und ggf. Ausgabe
      29. if (v&=z1&*z2&) and (((z1&<>z1o&) and (z2&<>z2o&)) and ((z1&<>z2o&) and (z2&<>z1o&)) )
      30. print v$,z1&,z2&,if(v&=0,"Triviale Lösung"," Probe: "+format$("%g",v&/z1&/z2&))
      31. putclip v$+" "+str$(z1&)+" "+str$(z2&)+if(v&=0,"Triviale Lösung","")+";\n"
      32. z1o&=z1&:z2o&=z2&
      33. endif
      34. endwhile
      35. z1o&=99:z2o&=99
      36. endwhile:endwhile:endwhile:endwhile:locate %csrlin,1:print " OK. ":waitinput:End
      Alles anzeigen

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

    • Abt. Stein´scher GGT-Algorithmus auf Double Precision Float gebracht
      ============================================
      Der Steinsche Algorithmus stellt eine Verbesserung gegenüber dem berühmten Euclidischen Algorithmus zur Ermittlung des Größten Gemeinsamen Teilers GGT von zwei Ganzzahlen dar, weil er keine Divisionen verwendet, sondern im Prinzip mit Schiebeoperationen auskommt.

      Es gibt meines Erachtens allerdings keinen Grund, warum man solche Algorithmen nicht auch auf Floatingpoint-Variable anwenden können sollte: Der GGT von Pi() und 2*Pi() ist schließlich Pi(). Dazu war es nur nötig, den Steinschen Algo ein bisschen aufzupeppen und ihm eine Integerfunktion für XProfans Float-Variablen sowie eine Modulo-2 Funktion für Floats mitzugeben.

      Gruss

      P.S.: Vielleicht lassen sich so ja gewisse Verwandtschaften zwischen Naturkonstanten entdecken??

      Quellcode

      1. WindowTitle "Stein´scher Algorithmus auf Double-Precision Floats gebracht"
      2. ' (CL) Copyleft 2015-11 by P. Specht, Wien; OHNE JEDWEDE GEWÄHR!
      3. WindowStyle 24:font 2:Declare w$,a!,b!:set("decimals",17)
      4. Loop:
      5. Cls:print "\n Divisor: ";:input w$
      6. if right$("0000000000000000"+w$,16)>"9007199254740992"
      7. print " Err! Max 9007199254740992":beep:waitinput :goto "Loop":endif
      8. a!=val(w$):print " Dividend: ";:input w$
      9. if right$("0000000000000000"+w$,16)>"9007199254740992"
      10. print " Maximal 9007199254740992":beep:waitinput :goto "Loop":endif
      11. b!=val(w$)
      12. print "\n Größter Gemeinsamer Float-Teiler GGFT nach Stein: ";
      13. print format$("%g",SteinFloat(a!,b!))
      14. beep:waitinput :Goto "Loop"
      15. Proc SteinFloat :parameters a!,b!
      16. declare k&,erg!,t!:if (a!=0) or (b!=0):erg!=0:goto "SteinFloatExit":endif
      17. WhileNot (Mod2f(a!) or Mod2f(b!))
      18. a!=IntS(a!/2):b!=IntS(b!/2):inc k&
      19. endwhile :if Mod2f(a!):t!= -1*b! :else :t!=a!:endif
      20. while t!<>0
      21. whilenot Mod2f(t!):t!=IntS(t!/2):endwhile
      22. if t!>0:a!=t!:else :b!= -1*t!:endif :t!=a!-b!
      23. endwhile :erg!=a!*(2^k&)
      24. SteinFloatExit:
      25. return erg!
      26. EndProc
      27. proc IntS :parameters x!
      28. declare ds&,int$:ds&=get("decimals"):set("decimals",17)
      29. int$=substr$(str$(x!),1,"."):set("decimals",ds&):return val(int$)
      30. endproc
      31. proc Mod2f :parameters x!:var ds&=get("decimals"):set("decimals",17)
      32. var g!=x!/2:g!=not(g!=IntS(g!)):set("decimals",ds&):return int(g!)
      33. endproc
      Alles anzeigen
    • Ergänzung zu oben: Es gibt einige ungünstige Zahlenverhältnisse, die das obige Programm scheinbar nicht terminieren lassen. Ursache ist u.a. der Umstand, dass zur binären Darstellung mancher Zahl aufgerundet werden muss, die der anderen Zahl dagegen nur abgerundet dargestellt werden kann. Dadurch bleibt stets ein nicht verschwindender Rest. Weiters gibt es Zahlenverhältnisse, die zu langsam konvergieren um in sinnvoller Zeit zur Abbruchbedingung zu gelangen.

      Zur Abhilfe teste ich gerade Zählschleifen mit anschließender Präzisionssenkung, muss das aber noch im Detail anschauen. Eine weitere Idee ist ´laufende Kommaverschiebung synchron im Zähler und Nenner´. Davon unberührt bleibt noch das Problem, daß man Zahlen wie Pi (unendlich viele Kommastellen) auch binär nur mit endlicher Stellenzahl annähern kann.

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

    • Abt. Die Tücken von Floatingpoint-Variablen
      ===========================
      Die Umsetzung von XProfans dezimaler Floatwerte in Binäre Darstellung und zurück erfordert einiges Know How über dabei möglicherweise auftretende Tücken. Um die angewendeten Verfahren konket überprüfen zu können, ist neben der Kenntnis der entsprechenden Norm IEEE 754 (ANSI/IEEE Std 754-1985; IEC-60559:1989 – International version) die konkrete Umsetzung in der Windows/Intel-Speicherhaltung (`Little Endian`) sowie allfällige Abweichungen in den jeweils verwendeten Mathe-Paketen der verschiedenen XProfan-Version nötig. So kann dann auch die Herkunft des manchmal erscheinenden Ergebniswertes NaN (Not a Number!) erklärt werden, welcher in IEEE 754 noch viel detaillierter definiert ist: Er stammt aus Delphi, bei 64bit-Versionen z.B. auch aus Freepascal heraus. Mit dem nachstehenden Machwerk sollen erste Schritte zur Einarbeitung ermöglicht werden.
      Gruss

      Quellcode

      1. WindowTitle "Double Precision Floats binär dargestellt":font 2
      2. '
      3. Windowstyle 24:Window %maxx*0.125,%maxy*0.125 - %maxx*0.75,%maxy*0.75
      4. set("decimals",17):set("numwidth",30):print
      5. declare x![],b# : dim b#,8
      6. var n&=0
      7. x![n&]=0
      8. inc n&:x![n&]=1
      9. inc n&:x![n&]=2
      10. inc n&:x![n&]= -1
      11. inc n&:x![n&]=val("-1e-1")
      12. inc n&:x![n&]= -2
      13. inc n&:x![n&]=10
      14. inc n&:x![n&]=Pi()
      15. inc n&:x![n&]=val("-1e-306")
      16. inc n&:x![n&]=2^-306
      17. inc n&:x![n&]=val("-1.0e-308")
      18. inc n&:x![n&]=val("-1.0e-309")
      19. inc n&:x![n&]=val("-1.0e-310")
      20. inc n&:x![n&]=val("-2.0e-310")
      21. inc n&:x![n&]=val("-3.0e-310")
      22. inc n&:x![n&]=val("%10000000000000000000000000000000")
      23. inc n&:x![n&]=9007199254740992
      24. whileloop 0,sizeof(x![])-1
      25. float b#,0=x![&Loop]:show_bin(b#,x![&Loop])
      26. endwhile
      27. dispose b#
      28. waitinput
      29. End
      30. proc show_bin :parameters b#,x!
      31. declare i&,w&:print " "+format$("%g",x!),tab(26);
      32. whileloop 7,0,-1:i&=&Loop
      33. w&=byte(b#,i&)
      34. if i&=7
      35. print bin$(w&>127)+" "+right$("0000000"+bin$(w& & 127),7)+" ";
      36. elseif i&=6
      37. print right$("0000"+bin$(w&>>4),4)+if(x!=0," o."," l.")+right$("0000"+bin$(w& & 15),4)+" ";
      38. else
      39. print right$("00000000"+bin$(w&),8),
      40. endif
      41. endwhile
      42. var w$=right$("0000000"+bin$(byte(b#,7) & 127),7)+right$("0000"+bin$(byte(b#,6)>>4),4)
      43. print "..*2^"+format$("%g",val("%"+w$)-1023)
      44. print
      45. endproc
      Alles anzeigen
    • Abt. Rundtisch-Permutationen und Ringsymmetrien
      ================================
      Für Reihenaufstellung gilt die bekannte Permutationsformel x = n ! (sprich "n Faktorielle"), nämlich x = n * (n-1) * (n-2) * ... bis 1 herunter. Mit 1 zu multiplizieren ändern aber natürlich nichts mehr am Ergebnis, also ist die eigentliche Runterzählgrenze die 2.

      Bei Sitzordnungen an Rundtischen unterscheidet man aber nicht, ob Tisch und Sesseln gedreht im Restaurant stehen oder nicht. Es gibt daher um eine volle Drehung (=n Plätze) weniger unterschiedlichen Anordnungsmöglichkeiten, daher lautet die Formel x = (n-1)*(n-2)*... *2 bzw.
      "Faktorielle von (n-1)".

      Bei Armreifen mit am Ring gleichverteilten Schmucksteinen ist als weiterer Faktor zu berücksichtigen, daß der Ring ja auch umgedreht auf den Tisch gelegt werden kann. Rückläufige Anordnungen der Steine werden daher von rechtläufigen nicht unterschieden, die Formel lautet daher x = (n-1)*(n-2)*... * 3 bzw. x = 1/2 * Faktorielle von (n-1). Das nachstehene Progi zeigt, wieviele Unikate solcher Schmuckreifen hergestellt werden können.

      Gruss

      Quellcode

      1. WindowTitle upper$(" R I N G S Y M M E T R I E : "+\
      2. "A r m r e i f s c h m u c k s t e i n m u s t e r p r o b l e m")
      3. AppendMenubar 100, "von homepages.fh-friedberg.de/boergens/problem/problem_01_09loe.htm"
      4. Declare i&
      5. Cls
      6. print "\n Eine Firma verkauft goldene Armreifen mit verschiedenfarbigen"
      7. print " Schmucksteinen gleichverteilt am Umfang. Wievielen Käufern kann"
      8. print " bei n unterschiedlichen Schmucksteinen garantiert ein Unikat "
      9. print " betreffend das Muster, das die Steine bilden, verkauft werden ?"
      10. print " [Taste]":waitinput :cls:print:font 2
      11. print " Anzahl der Schmucksteine Anzahl möglicher Unikate ":print
      12. whileloop 29:i&=&Loop
      13. print mkstr$(" ",20-len(str$(i&)))+str$(i&);tab(32);
      14. print translate$(format$("%g",round(faku(i&-1)/2,0)),"E0"," * 10 ^ ")
      15. endwhile
      16. waitinput:Print " Ciao!"
      17. waitinput 4000:End
      18. proc faku :parameters i&:var prod!=1
      19. whileloop i&:prod!=prod!*&Loop:endwhile:return prod!
      20. endproc
      Alles anzeigen

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

    • Abt. Weihnachten naht
      ==============
      Bevor noch diverse adipöse Jahresendfiguren wieder den Schornstein verstopfen, möchte ich mit Computerhilfe ein Rätsel lösen, das mich seit nunmehr 10 Jahren verfolgt: Ziffernrätsel haben sich bisher meinem Verständnis erfolgreich entzogen. Zwar waren einige wenige Gesetzmäßigkeiten klar, so etwa
      - daß Überträge entweder 0 oder 1 sein können, aber nicht mehr. Oder
      - daß eine Endziffer nur dann wieder die selbe Endziffer ergeben kann, wenn die zu addierende Zahl 0 und der Übertrag 0 sind oder aber die zu addierende Zahl 9 und der Übertrag 1. Auch der Umstand,
      - daß jedes Zahlensymbol eine von den anderen Symbolen wohlunterscheidbare Ziffer repräsentieren muß, und
      - daß die erste Ziffer einer Zahl nicht 0 sein kann, sondern höchstens 1 bis 9,
      das war mir bekannt. Dennoch hat das alles in meiner Vorstellung die vermutete Unzahl möglicher kombinatorischer Möglicheiten nicht wesentlich beschränkt. Das Rätsel, um das es hier konkret geht, lautet:

      K I N D E R
      _ + L E I N
      --------------
      K O M M E T

      Anbei das lösende Machwerk dazu.
      Gruß

      P.S.: Um Rechenzeit zu sparen, wurde der Umstand genutzt, daß für das obige Rätsel I=0 und daher O=1 aus der Angabe evident werden. Diese zwei besetzten Ziffern müssen daher auch beim Rest der Stellenvariablen nicht mehr geprüft werden.

      Quellcode

      1. WindowTitle "Brute Force Attack auf das Kinder+lein=kommet Problem"
      2. 'Quelle: http://homepages.fh-friedberg.de/boergens/problem/problem_01_12.htm
      3. font 2:declare k&,i&,n&,d&,e&,r&,l&,o&,m&,t&,count&
      4. cls':Window 0,0-%maxx,%maxy
      5. clearclip
      6. i&=0:o&=1 ' ... aus Angabe evident, spart 3/4 Rechenzeit
      7. whileloop 2,9:k&=&Loop
      8. whileloop 2,9:n&=&Loop:case n&=k&:continue
      9. whileloop 2,9:d&=&Loop:case (d&=n&) or (d&=k&):continue
      10. whileloop 2,9:e&=&Loop:case (e&=d&) or (e&=n&) or (e&=k&):continue
      11. whileloop 2,9:r&=&Loop:case (r&=e&) or (r&=d&) or (r&=n&) or (r&=k&):continue
      12. whileloop 2,9:l&=&Loop:case (l&=r&) or (l&=e&) or (l&=d&) or (l&=n&) or (l&=k&):continue
      13. whileloop 2,9:m&=&Loop
      14. case (m&=l&) or (m&=r&) or (m&=e&) or (m&=d&) or (m&=n&) or (m&=k&):continue
      15. whileloop 2,9:t&=&Loop
      16. case (t&=m&) or (t&=l&) or (t&=r&) or (t&=e&) or (t&=d&) or (t&=n&) or (t&=k&):continue
      17. if (k&*100000+i&*10000+n&*1000+d&*100+e&*10+r& + l&*1000+e&*100+i&*10+n& )\
      18. = (k&*100000+o&*10000+m&*1000+m&*100+e&*10+t&)
      19. print ".";
      20. if (k&<>i&) and (k&<>n&) and (k&<>d&) and (k&<>e&) and (k&<>r&) and (K&<>l&) and (k&<>o&) and \
      21. (k&<>m&) and (k&<>t&) AND (i&<>n&) and (i&<>d&) and (i&<>e&) and (i&<>r&) and (i&<>l&) and \
      22. (i&<>o&) and (i&<>m&) and (i&<>t&) AND (n&<>d&) and (n&<>e&) and (n&<>r&) and (n&<>l&) and \
      23. (n&<>o&) and (n&<>m&) and (n&<>t&) AND (d&<>e&) and (d&<>r&) and (d&<>l&) and (d&<>o&) and \
      24. (d&<>m&) and (d&<>t&) AND (e&<>r&) and (e&<>l&) and (e&<>o&) and (e&<>m&) and (e&<>t&) AND \
      25. (r&<>l&) and (r&<>o&) and (r&<>m&) and (r&<>t&) AND (l&<>o&) and (l&<>m&) and (l&<>t&) AND \
      26. (o&<>m&) and (o&<>t&) AND (m&<t&)
      27. 'print "k=";k&,"i=";i&,"n=";n&,"d=";e&,"r=";r&,"l=";l&,"o=";o&,"m=";m&,"t=";t&
      28. print
      29. print k&;i&;n&;d&;e&;r&
      30. print " ";l&;e&;i&;n&
      31. print "------"
      32. print k&;o&;m&;m&;e&;t&
      33. inc count&
      34. putclip str$(count&)+": k="+str$(k&)+",i="+str$(i&)+",n="+str$(n&)+",d="+str$(e&)+\
      35. ",r="+str$(r&)+",l="+str$(l&)+",o="+str$(o&)+",m="+str$(m&)+",t="+str$(t&)+"\n"
      36. endif
      37. endif
      38. endwhile
      39. endwhile
      40. endwhile
      41. endwhile
      42. endwhile
      43. endwhile
      44. endwhile
      45. endwhile
      46. print " FERTIG."
      47. print "\n Anzahl gefundener Lösungen: ";count&
      48. print " Details in der Zwischenablage!"
      49. beep
      50. waitinput
      51. waitinput
      52. end
      Alles anzeigen

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

    • Abt. ABSCHLUSSARBEITEN
      ==================
      Das Jahr 2015 neigt sich dem Ende zu. Neue Aufgaben warten 2016 und werden vollen Einsatz fordern, sodaß für mein bisheriges Profan-Hobby künftig nur wenig bis gar keine Zeit bleiben wird. Mit einem lachenden und einem weinenden Auge muß ich die Betreuung dieser Kolumne (begonnen ca. 2005 - lange vor dem von Frank Abbing initiierten Umzug auf Paules PC-Forum) nun per Jahresende in die Hände anderer interessierter Profaner legen.

      Ein großes DANKE an alle mitwirkenden Beitragsverfasser, alle Leser und Besucher! Es war eine wirklich schöne Zeit mit Euch! Ich wünsche Euch allen Gesundheit, das nötige Quentchen Glück, Frohe Festtage und einen Guten Rutsch ins Neue Jahr 2016!

      Gruss, Euer
      P. Specht

      P.S.: Eine Gesamtübersicht über alle in den "ALGORITHMEN"-Kapiteln I bis X behandelten Themen findet sich in gezippter Form HIER. (Durch die lettzte Boardumstellung können alte Beitragsnummern um 1 - 2 Positionen versetzt sein - bitte ggf. prüfen!)
      Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,xpse,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB3

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

    • Danke, Frank! Bisher lässt es sich ganz gut an. Hoffe, Dir geht es auch gut!

      Ich darf heute ausnahmsweise wieder mal etwas auf unserer Mathe-Müllkippe deponieren (Geht um Stoffbahnen, die nicht mühsam jedesmal aufgerollt werden müssen, weil flach in Faltlagen aufbewahrt. Leider läßt sich das in der Praxis nicht so einfach realisieren wie ursprünglich angedacht).
      Gruss

      P.S.: Leute, Ihr lasst aus! Was'n los mit Euch?

      Quellcode

      1. WindowTitle upper$("Faltlagen-Code für Blattbahnen erstellen")
      2. WindowStyle 24 '(CL) CopyLeft by P. Specht, Wien. OHNE JEDWEDE GEWÄHR!
      3. declare n&,d!,f&,i&,k&,w&,m&,L&[]'(Nullinitialisierung vorausgesetzt)
      4. start:
      5. cls:beep
      6. print "\n Wie oft wird gefaltet? F = ";:input f&
      7. print " Wie dick ist eine Lage? d = ";:input d!
      8. set("decimals",0):n&=2^f&
      9. print "\n Es entstehen 2^";f&;" = ";n&;" Lagen."
      10. set("decimals",2)
      11. case d!>0:print " Die Ballenhöhe beträgt theoretisch ";d!*n&;" Einheiten."
      12. print "\n Es kommen folgende Lagenverbindungskennzahlen übereinander zu liegen."
      13. print " Dabei wird stets nach oben (vorne) gefaltet. Die Ausgabe erfolgt von "
      14. print " der untersten Lagezahl zur obersten. Welche Lagen miteinander zusammen-"
      15. print " hängen ist durch die numerisch aufsteigende Lagereihenfolge erkennbar. \n"
      16. print " [ Berechnung läuft ... ]";:locate %csrlin,1
      17. casenot sizeof(L&[]):clear L&[]
      18. setsize L&[],n&
      19. m&=n&-1
      20. whileloop 0,m&:i&=&Loop
      21. w&=Setbit(w&,0,Testbit(i&,0))
      22. whileloop 1,f&-1:k&=&Loop
      23. w&=setbit(w&,k&,XOR(Testbit(w&,0),Testbit(i&,f&-k&)))
      24. endwhile
      25. L&[i&]=w&
      26. w&=0
      27. endwhile
      28. font 2:print " ";
      29. whileloop 0,m&
      30. print L&[&Loop]; 'tab(10);right$(mkstr$("0",f&-1)+bin$(L&[&Loop]),f&)
      31. case &Loop<m&:print ",";
      32. case %pos>60:print "\n ";
      33. case &Loop=m&:print " "
      34. endwhile
      35. waitinput
      36. goto "start"
      Alles anzeigen
    • Freut mich, Frank. Auch Volkmar hält ja noch die Stellung!

      Hier noch etwas Trashware für unsere Müllkippe, mit Hinweis auf ein Youtube-Video, das zeigt wie das ursprünglich eigentlich wirklich aussehen sollte. Leider, Zeitmangel...

      Gruss

      Quellcode

      1. WindowTitle upper$("Moduloide")
      2. '(TW) Trashware by P. Specht, Wien; OHNE JEDWEDE GEWÄHR!
      3. ' Quelle: https://www.youtube.com/watch?v=qhbuKbxJsk8
      4. WindowStyle 24:randomize:Window 0,0-%maxx,%maxy
      5. declare i&,j&,k&,n&,co&,r!,s!,faktor!:font 2:CLS
      6. declare x&[],y&[],pi2!,u!,xh&,yh&:set("decimals",2)
      7. pi2!=pi()*2:xh&=width(%hwnd)\2:yh&=height(%hwnd)\2
      8. r!=yh&*0.96
      9. whileloop 80,220:i&=&Loop ' 200
      10. MCLS %maxx,%maxy,$FFFFFF
      11. usebrush 0,0:usepen 0,3,rgb(255,0,0)
      12. whileloop 3*i&:faktor!=&Loop/15
      13. StartPaint -1
      14. cls
      15. locate 1,1:print i&;"-Eck mit Faktor ";faktor!;
      16. s!=pi2!/i&:u!=0
      17. while u!<pi2!
      18. x&[n&]=xh&+r!*cos(u!)
      19. y&[n&]=yh&-r!*sin(u!)
      20. 'usepen 0,3,rgb(255,0,0)
      21. 'ellipse x&[n&]+3,(y&[n&]+3) - x&[n&]-3,y&[n&]-3
      22. drawtext x&[n&],y&[n&],n&
      23. u!=u!+s!
      24. inc n&
      25. endwhile
      26. if n&>1
      27. co&=rgb(rnd(180),rnd(256),10*faktor!)
      28. whileloop n&-1:j&=&Loop
      29. k&=(j&*faktor!) mod (n&-1)
      30. usepen 0,2,co&
      31. line x&[j&],(y&[j&]) - x&[k&],y&[k&]
      32. endwhile
      33. endif
      34. EndPaint:MCopyBMP 0,0 - %maxx,%maxy > 0,0;0
      35. 'waitinput 150
      36. n&=0:clear x&[],y&[]
      37. endwhile
      38. endwhile
      39. beep:print "ok":waitinput :End
      Alles anzeigen
    • Faszinierendes YouTube-Video. So macht Mathematik Spaß!

      Gruß
      Roland

      Nachtrag: Und natürlich musste ich auch Deine XProfan-Umsetzung ausprobieren. Gelungen!
      Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD / ATI Radeon HD4770 512 MB / Windows 7(32) - XProfan X3
      AMD Athlon II X2 2,9 GHz / 3 GB RAM / 500 GB HDD / ATI Radeon 3000 (onboard) / Windows 10(64) - XProfan X3


      http://www.xprofan.de
    • Danke, RGH! Ja, der Typ hat was am Kasten - auch seine anderen Mathe-Videos bringen es stets auf den Punkt bzw. geben gute Anregungen!

      Unicode
      =====
      Mich dagegen hat vor kurzem erstmals Unicode interessiert (Einleitendes Zeichen in Textfiles $FFFE). Dazu habe ich mal versuchsweise einen Dateigenerator für mehrere (alle?) Unicode-"Planes" erstellt. Nicht ausgereift - bitte Pfade stets selbst checken und anpassen. Wer die Datei mit dem Windoof-Editor bzw. Notepad öffnet (Das dauert ein wenig!), der findet doch einige neue Zeichen, die ganz brauchbar erscheinen.
      Gruss

      P.S.: Die Chinesen sind dem Vernehmen nach mit der Sortierreihenfolge nicht zufrieden...

      Brainfuck-Quellcode

      1. WindowTitle upper$("unicode-generator")
      2. ' OHNE JEDWEDE GEWÄHR! PFADE GGF. SELBST ANPASSEN!
      3. WindowStyle 24:cls:font 2:randomize
      4. var user$=getenv$("USERNAME"):declare i&,j&
      5. var MaxCodePlane&=255
      6. print "\n Kontrolle: Ist Ihr Benutzername = ";chr$(34);user$;chr$(34);"?"
      7. print "\n Falls nicht: Bitte A B B R E C H E N !":waitinput
      8. assign #1,"C:\\Users\\"+User$+"\\Desktop\\all_ucod.txt"
      9. rewrite #1
      10. print #1,chr$($FE);chr$($FF); 'Unicode-Kennung
      11. whileloop 0,MaxCodePlane&:i&=&Loop
      12. whileloop 0,255:j&=&Loop
      13. print #1,chr$(i&);chr$(j&);
      14. print #1,chr$(0);chr$(32);
      15. casenot j& mod 64:print #1,chr$(0);chr$(13);chr$(0);chr$(10);
      16. endwhile
      17. print #1,chr$(0);chr$(13);chr$(0);chr$(10);
      18. print #1,chr$(0);chr$(13);chr$(0);chr$(10);
      19. endwhile
      20. print #1,chr$(0);chr$(0);chr$(0);chr$(0);
      21. close #1
      22. print "\n\n Datei liegt am Desktop.\n BYE!"
      23. beep:waitinput 2000
      24. end
      25. progend
      26. Unicode ASCII
      27. -----------------------
      28. CR 000D 0D
      29. LF 000A 0A
      30. CRLF 000D,000A 0D,0A
      31. NEL*0085 85
      32. VT 000B 0B
      33. FF 000C 0C
      34. LS 2028 n/a
      35. PS 2029 n/a
      Alles anzeigen
    • Die Zwei-Kreise-Frage
      ==============
      Gegeben sei ein großer, fester Kreis mit Radius R; Auf dessen Umfang rollt ein kleinerer Kreis mit einem Radius von genau r = R / 3 ohne Schlupf ab. Welche Anzahl an Umdrehungen macht der kleine Kreis bei genau einer Umrundung des großen Kreises?

      Zur Verwirrung noch einige Antwortmöglichkeiten: 2, 3, 3 1/2, 4, 5, 5 1/2, 6 oder 6 1/2

      Spoiler anzeigen
      Nicht weitersagen: Die Antwort, die jedem sofort einfällt, ist 3. DAS STIMMT ABER NICHT!
      Spoiler anzeigen
      Begründung: Gemessen werden die Umdrehungen ja weiterhin im x/y-Koordinatensystem des großen Kreises, und der wird ja dabei genau 1 x umrundet. Die Lösung 3 würde sich auf ein Polarkoordinatensystem mit dem Mittelpunkt des großen Kreises beziehen. Es kommt also die Umdrehung um den großen Kreis noch dazu, und die korrekte Antwort ist daher 3 + 1 = 4. Die zusätzliche Umdrehung gilt für alle Radiusverhältnisse. Wer´s nicht glaubt: Mit zweii gerändelten Münzen ausprobieren!