ALGORITHMEN - Teil XX: Zwischen Fersuch und Irrdumm

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

    Info! Wir verlosen 3 x das Nacken- und Schultermassagegerät Optimus New Generation Jade! - Spiel mit!

    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.

    • Abt. EaR 33 ´Wahrheitssuche´
      ============================
      Auf einer Insel gibt es drei Arten von Bewohnern: Stets_Ehrliche, Immer_Lügner und Spassmacher. Spassmacher können sowohl lügen als auch die Wahrheit sagen.

      Du triffst drei Inselbehohner: Elise, Frank und Georg.
      Im Rahmen der Gespräche stellst du fest:

      1) Elise behauptet: "Frank ist ein Spassmacher!"
      2) Frank behauptet: "Georg ist ein Spassmacher!"
      3) Georg behauptet: "Elise ist eine Spassmacherin!"

      Angenommen, genau eine Person lügt, und alle Inselbewohner wissen übereinander Bescheid.
      Wie viele Ehrliche können dann unter den drei Personen sein?
    • Lösung zur EaR 33.1 "Wieviele Ur-Ur-Ur-Ur-Ur-Urgroßmütter hast du?"
      -----------------------------------------------------------------------
      1 Mutter
      2 Großmütter
      4 Urgroßmütter
      8 Ur-Urgroßmütter
      16 Ur-Ur-Urgroßmütter
      32 Ur-Ur-Ur-Urgroßmütter
      64 Ur-Ur-Ur-Ur-Urgroßmütter, und daher:
      128 Ur-Ur-Ur-Ur-Ur-Urgroßmütter
      ========================

      Probe: 6*"Ur"+1*"Groß"=7 Verdopplungen in jeder Generation = 2^7 = 128
      q.e.d.

      P.S.: Annahme: Wenn neue Generationen durchschnittlich alle 33 1/3 Jahre auf die Welt kommen, dann sind Mütter durchschnittlich 33,333 Jahre älter als deine Generation, Großmütter 66,666 Jahre, und diei gesuchten
      Ur-Ur-Ur-Ur-Ur-Urgroßmütter daher 8 * 33 1/3 = 267 Jahre älter als ihr.
    • :roll:
      Spoiler anzeigen

      Wenn auch Lügner immer ehrlich die Unwahrheit sagen dann sind es drei.
      Sonst sind es maximal 2.



      Zum UR-: Es kann nur 2 geben, außer du zählst alle dazwischen mit, dann sind es 2*UR+2 (für die Groß-). Das steht da aber nicht. Und die Mutter gehört erst ab einem bestimmten Ereignis zu den Oma's.

      Und die Annahme vergiß' mal ganz schnell. Eine meiner Großmütter ist genau so alt wie meine Mutter.
      (Und: Gender kippt jede noch so gute Formel)
      Programmieren, das spannendste Detektivspiel der Welt.

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von Michael Wodrich ()

    • Offizielle Lösung zu EaR 33 (2)
      --------------------------------
      Zugegeben, dreiwertige Logik ist nicht wirklich meins. Lesen tut sich das ganze so:
      Spoiler anzeigen

      1. Ohne Beschränkung der Allgemeintheit sei mal angenommen: Frank ist der Lügner.

      2. Frank behauptet, Georg sei Spassmacher. Das ist seine Lüge:
      Daraus folgt: Georg ist KEIN Spassmacher, also entweder Lügner oder ehrlich.

      3. Unsere Anname war, daß es genau einen Lügner gibt, und das war Frank.
      Daher folgern wird: Georg ist aus diesem Blickwinkel also ehrlich!
      Seine Aussage: Elise sei Spassmacherin, trifft also zu.

      4. Demnach könnte Elise gerade lügen oder ehrlich sein.
      Da wir aber angenommen haben, dass nur ein Lügner existiert, nämlich Frank,
      lügt Elise gerade aus Spass: Frank ist ja kein Spassmacher, sondern der Lügner

      5. Unter der Annahme, es gäbe genau einen Lügner, entsteht die Konfiguration
      "Lügner - Ehrlicher - Spassmacher" - das gilt auch reihum.
      Antwort: Es gibt genau einen Ehrlichen in dieser Situation.
      =====================================
    • Korrekte Lösung, Michael!

      Wusstest du übrigens, daß wir verwandt sind? Vor spätestens 27 Generationen, wahrscheinlich früher, hatten wir alle die gleichen Vorfahren. Gibt´s das? Ja: 2 Eltern, 4 Großeltern, 8 Urgroßeltern ...
      2^28 Vorfahren + 2^27 gleichzeitig lebende Vor-Vorfahren = 268.5 Mio + 135 Mio = 403.5 Mio Menschen stellen die Gesamtbevölkerungszahl der damaligen Welt dar. Schränkt man das wegen der schwierigeren Mobilitätsverhältnisse auf Europa ein, dann stellen 25 Generationen zurück den Bevölkerungsstand Europas dar. Wir sind also (etwas weitläufig) Cousins!
      Gruss

      Quellcode

      1. WindowTitle "Exponential-Regression"
      2. WindowStyle 24:Window 0,0-%maxx,%maxy
      3. var xh&=width(%hwnd)\2:var yh&=height(%hwnd)\2
      4. font 2:cls
      5. Declare Data$[]
      6. Data$[0]= \
      7. "Jahr,Weltbevölkerung[Mio],Geburtenrate[1/1000],AbletztePeriodeGelebte[Mrd];"+\
      8. "-50000,0.000002,0,0;"+\
      9. "-8000,5,80,1.1;"+\
      10. "1,300,80,46;"+\
      11. "1200,450,60,26.6;"+\
      12. "1650,500,60,12.7;"+\
      13. "1750,795,50,3.2;"+\
      14. "1850,1265,40,4;"+\
      15. "1900,1656,40,2.9;"+\
      16. "1950,2516,34.5,3.4;"+\
      17. "1995,5760,31,5,4;"+\
      18. "2011,6987,23,2.1"
      19. Data$[1]= \
      20. "Jahr,Bevölkerung[Mio],Wachstumsrate[%/a],Zuwachs[Mio/a],Durchschnittsalter;"+\
      21. "1950,2530,1.86,47.1,23.5;"+\
      22. "1960,3030,1.9,60.6,22.7;"+\
      23. "1970,3690,2.0,76.0,21.5;"+\
      24. "1980,4450,1.8,82.9,22.6;"+\
      25. "1990,5320,1.5,84.2,24.1;"+\
      26. "2000,6130,1.2,77.3,26.3;"+\
      27. "2010,6920,1.2,81.7,28.5;"+\
      28. "2020,7720,0.9,73.3,31.0;"+\
      29. "2030,8420,0.7,63.7,33.2;"+\
      30. "2040,9040,0.6,54.0,34.6;"+\
      31. "2050,9550,0.5,43.1,36.1"
      32. Declare rec$[],tmp$[], dbk&,Z&,S&, i&,j&
      33. Declare A![0--1,50,5]
      34. Whileloop 0,1:dbk&=&Loop
      35. clear rec$[]:rec$[]=explode(Data$[dbk&],";"):Z&=sizeof(rec$[])
      36. clear tmp$[]:tmp$[]=explode(rec$[0],",") :S&=sizeof(tmp$[])
      37. clear A![z&,s&]
      38. font 2:print "\n ";rec$[0];":":print:font 1
      39. whileloop 1,z&-1:i&=&loop
      40. clear tmp$[]:tmp$[]=explode(rec$[i&],",")
      41. whileloop 0,s&-1:j&=&Loop
      42. A![dbk&, i&,j&]=val(tmp$[j&])
      43. print tab(5+j&*15);format$("%g",A![dbk&, i&,j&]);if(j&<(s&-1)," ",""),
      44. endwhile:print:print
      45. endwhile:print
      46. Endwhile
      47. locate 2,90
      48. Whileloop 54
      49. locate %csrlin,90
      50. print int(2000-23.5*&Loop);" ",
      51. print if(&Loop<10," ","");&Loop," Generation"+if(&Loop>1,"en","")+\
      52. " vorher: ",format$("#,0",2^&Loop),"Vorfahren"
      53. endwhile
      54. waitinput
      Alles anzeigen
    • Abt. Exponentielle Regression
      ======================
      Die obigen Bevölkerungs-Tabellen lassen eine gewisse Abschätzung von Zwischenwerten zu. Da man das Wachstumsgesetz von Populationen (- ohne Störungen wie Kriege etc.) aber kennt (Exponentialfunktion y= a*exp(b*x) ), geht das sogar noch etwas genauer, wenn man eine fehlerminimierte Exponentialkurve durch die bekannten Wertepaare legt. Logarithmiert man die y-Werte, kann man dazu die bekannte Methode der kleinsten Quadrate von Gauss verwenden.
      Gruss

      Brainfuck-Quellcode

      1. WindowTitle "Exponential-Regression Y=a*EXP(b*X)"
      2. '(XW) Experimentalware 2019-04 ohne jede Gewähr by P.Specht, Vienna/Austria
      3. 'Q: Internet-Wiki, div. Studienliteratur
      4. WindowStyle 24:Window 0,0-%maxx,%maxy:print:font 2
      5. var xh&=width(%hwnd)\2:var yh&=height(%hwnd)\2
      6. '{Datentabellen nach numerisch konvertieren}
      7. var db&=3 'Anzahl Datentabellen
      8. font 2:cls:Declare Data$[db&-1]
      9. Data$[0] = \
      10. "x-Wert,Testfunktionswert y=1*exp(1*x);"+\
      11. "-1,0.36787944117144232;"+\
      12. "0,1;"+\
      13. "0.1,1.10517091807564762;"+\
      14. "0.2,1.22140275816016983;"+\
      15. "0.5,1.64872127070012815;"+\
      16. "1 ,2.71828182845904524;"+\
      17. "2 ,7.38905609893065023;"+\
      18. "3 ,20.0855369231876677;"+\
      19. "10 ,22026.4657948067165;"+\
      20. "100,2.688117141816135449e+43;"+\
      21. "150,1.3937095806663796973e+65;"+\
      22. "233,1.55100887702963581e+101"
      23. Data$[1]= \
      24. "Jahr,Weltbevölkerung[Mio],Geburtenrate[1/1000],AbLetzterPeriodeGelebte[Mrd];"+\
      25. "-50000,0.000002,0,0;"+\
      26. "-8000,5,80,1.1;"+\
      27. "1,300,80,46;"+\
      28. "1200,450,60,26.6;"+\
      29. "1650,500,60,12.7;"+\
      30. "1750,795,50,3.2;"+\
      31. "1850,1265,40,4;"+\
      32. "1900,1656,40,2.9;"+\
      33. "1950,2516,34.5,3.4;"+\
      34. "1995,5760,31,5,4;"+\
      35. "2011,6987,23,2.1"
      36. Data$[2]= \
      37. "Jahr,Bevölkerung[Mio],Wachstumsrate[%/a],Zuwachs[Mio/a],Durchschnittsalter;"+\
      38. "1950,2530,1.86,47.1,23.5;"+\
      39. "1960,3030,1.9,60.6,22.7;"+\
      40. "1970,3690,2.0,76.0,21.5;"+\
      41. "1980,4450,1.8,82.9,22.6;"+\
      42. "1990,5320,1.5,84.2,24.1;"+\
      43. "2000,6130,1.2,77.3,26.3;"+\
      44. "2010,6920,1.2,81.7,28.5;"+\
      45. "2020,7720,0.9,73.3,31.0;"+\
      46. "2030,8420,0.7,63.7,33.2;"+\
      47. "2040,9040,0.6,54.0,34.6;"+\
      48. "2050,9550,0.5,43.1,36.1"
      49. Declare rec$[],tmp$[], dbkidx&,Z&,S&, i&,j&, A![db&-1, 50,5]
      50. 'Alle Datentabellen einlesen in A![Tabellennummer(0..db&-1), Max.Zeilen, MaxSpalten]
      51. Whileloop 0,2:dbkidx&=&Loop
      52. clear rec$[],tmp$[]
      53. rec$[]=explode(Data$[dbkidx&],";"):Z&=sizeof(rec$[])
      54. tmp$[]=explode(rec$[0],",") :S&=sizeof(tmp$[])
      55. ' font 2:print "\n ";rec$[0];":":print:font 1
      56. whileloop 1,z&-1:i&=&loop
      57. clear tmp$[]:tmp$[]=explode(rec$[i&],",")
      58. whileloop 0,sizeof(tmp$[])-1:j&=&Loop
      59. A![dbkidx&, i&,j&]=val(tmp$[j&])
      60. ' print tab(5+j&*15);format$("%g",A![dbkidx&, i&,j&]);if(j&<(s&-1)," ",""),
      61. endwhile':print:print
      62. endwhile':print
      63. Endwhile
      64. '}
      65. '{Auswahl der Datenspalten der verwendeten Tabelle
      66. Declare dbk&,x![z&],y![z&],retn![9]'= Antwortliste von Proc ExpRegr
      67. Print "\n Tabelle wählen, 0=Testtabelle, max=";int(db&-1)," Gewählt: ";
      68. input dbk&
      69. cls
      70. print "\n Verwendete DatenTabelle: Nr. ";dbk&:print
      71. '--------- Erläuterung:
      72. 'A![dbk&, Zeile, Spalte] mit Spalte x:Jahr, y:Bevölkerung
      73. whileloop 1,z&-1:i&=&loop
      74. x![i&] = A![dbk&, i&,0]
      75. y![i&] = A![dbk&, i&,1]
      76. print " ";i&;".:";tab(8);format$("%g",x![i&]),tab(20);format$("%g",y![i&])
      77. endwhile
      78. 'print z&-1, sizeof(y![])-2 'Check Anzahl
      79. '}
      80. Main:
      81. ExpRegr y![],x![],retn![]
      82. PrtExpRegr retn![]
      83. ToClip:
      84. CLEARCLIP:Whileloop 0,9:PUTCLIP format$("%g",retn![&Loop])+"\n":endwhile
      85. print "\n *** Ergebniswerte in Zwischenablage! ***"
      86. beep
      87. declare x!,y!,a!,b!
      88. a!=retn![1]:b!=retn![2]
      89. lup:
      90. Print "\n\n X-Wert: ";
      91. Input x!
      92. locate %csrlin-1,40
      93. print "Zugehöriger Y-Wert: ";format$("%g",a!*exp(b!*X!))
      94. goto "lup"
      95. waitinput
      96. END
      97. Proc ExpRegr :parameters y![],x![],retn![]
      98. var tm&=&GetTickCount:var n&=Sizeof(y![])-2
      99. declare z![n&],i&,s1!,s2!,s3!,s4!,s5!,s!,a!,b!,k!,f!
      100. Whileloop N&:I&=&Loop
      101. z![i&] = LN(y![i&])
      102. s1!=s1!+x![i&]
      103. s2!=s2!+z![i&]
      104. s3!=s3!+sqr(x![i&])
      105. s4!=s4!+sqr(z![i&])
      106. s5!=s5!+x![i&]*z![i&]
      107. endwhile
      108. b!=(n&*s5!-s2!*s1!)/(n&*s3!-sqr(s1!))
      109. a!=(s2!-b!*s1!)/n&
      110. s1!=b!*(s5!-s1!*s2!/n&)
      111. s4!=s4!-sqr(s2!)/n&
      112. s2!=s4!-s1!
      113. s5!=s1!/s4!
      114. k!=Sqrt(s5!)
      115. s!=Sqrt(s2!/(n&-2))
      116. if s2!<>0
      117. f!=s1!/s2!*(n&-2)
      118. else
      119. f!=1e100
      120. endif
      121. a!=Exp(a!)
      122. clear retn![]
      123. retn![0]=N& 'Wertepaare
      124. retn![1]=a! 'Fehlerminimierte Beiwerte der Gleichung
      125. retn![2]=b! 'Y = a * EXP( b * X )
      126. retn![3]=k! 'Exponentieller Korrelationskoeffizient
      127. retn![4]=s! 'Standardabweichung
      128. retn![5]=s5! 'Statist. Sicherheit: s5>=0.95: wahrscheinlich,
      129. ' >=0.98: signifikant, >=0.995: hochsignifikant
      130. retn![6]=f! 'Tabellen-F-Wert für F-Test
      131. retn![7]=1 'F1 Zählerfreiheitsgrade
      132. retn![8]=N&-2'F2 Nennerfreiheitsgrade
      133. retn![9]=&GetTickCount-tm& 'Berechnungszeit [ms]
      134. 'Implizites return retn![] (byVarAddr)
      135. Endproc
      136. Proc PrtExpRegr :parameters retn![]
      137. print "\n ============================================================="
      138. Print " E R G E B N I S : "
      139. print " ============================================================="
      140. print "\n Wertepaare: ";format$("%g",retn![0])
      141. print "\n Gefundene Gleichung: Y = ";format$("%g",retn![1]);\
      142. " * EXP(";format$("%g",retn![2]);" * X)"
      143. print "\n Expon.Korrelation: ";format$("%g",retn![3])
      144. print "\n Standardabweichung: ";format$("%g",retn![4])
      145. print "\n Statist. Sicherheit: ";format$("%g",retn![5]);" ... Prädikat: ";
      146. if retn![5]<0.95:print " Nicht nachweisbar"
      147. elseif retn![5]<0.98:print " Wahrscheinlich"
      148. elseif retn![5]<0.995:print " Signifikant"
      149. elseif retn![5]>=0.995:print " Hoch-signifikant"
      150. else: print " Unbekannt / Error"
      151. endif
      152. print "\n F-Wert für Tabellen-F-Test: ";format$("%g",retn![6])
      153. print "\n Zähler-Freiheitsgrade F1: ";format$("%g",retn![7])
      154. print "\n Nenner-Freiheitsgrade F2: ";format$("%g",retn![8])
      155. print "\n Rechendauer: ";format$("%g",retn![9]);" ms"
      156. print "\n =============================================================";
      157. EndProc
      Alles anzeigen
    • Abt. Wie das Leben so spielt
      =====================
      Wie das Leben so spielt, ist mir vorige Woche mein Win7-64 Laptop abgeraucht. Ich war aber selber schuld, hatte ihn über Nacht mit Youtube-Videos im Auto-Run Modus gequält, war dabei eingeschlafen und hatte morgens überall feinen weissen Staub im Zimmer - und in der Lunge. Merke: Ein COMPI gehört nicht ins Schlafzimmer! Oder zumindest innen der Staubfilz von Jahren aus den Lüftungskanälen und von den Heat Sinks.

      Aber das ist ja kein Problem, man hat ja noch den Vierkerner-PC. Nur dass der 1 Jahr und 4 Monate nun nicht in Betrieb war. Eingeschaltet, quittierte erst mal AVIRA Antivirus die Lizenz und verweigert seither manuelle Scans und jegliches Update. Lässt sich aber nicht löschen. Naja - wird schon nix passieren. Nur dass auch Windows-Update sich weigerte, Win-7 so lange zurück mit Updates zu versorgen. Naja, wird schon nix passieren...

      Zack: BLUESCREEN. Hochfahren im Protected Mode, schauen was los ist - nix besoneres. Also wieder im Normalmodus hoch, Scan mittels Windows Essientials-Scanner. Der sich nicht updated. Naja - wird wohl nur ein kurzer Stromausfall schuld sein, oder?

      Zack - der nächste Bluesccreen. Das ganze nochmal, nun merkwürdiger Weise mit einem neuen Adimin$ Account - der aber nur Userberechtigung hat. Very merkwürdig. Also Virus-Vollscan mit dem was vor eineinhalb Jahren aktuell war. Und siehe da: Volles Gebimmel: 62 Funde, und bei jedem Scan-Durchgang werden es mehr... Auch wird der Rechner immer langsamer und langsamer ... jetzt auch wieder ... Mit letzter Geduld:
      Gruss

      P.S.: Plane Neukauf eines Compi. Man gönnt sich ja sonst nix.
    • Heya, hier ein Spaßexperiment. Und Wissensquiz: Wie heißt dieses Stück?

      Getestet unter FreeProfan32, XProfan 12.1 und Windows 7. Compiliert besser! Ich weiß leider nicht, wie es unter 3 Ghz läuft. Wenn es mal ruckelt, geht in ein anderes Fenster (Graphen werden solange nicht neugezeichnet). Unter FreeProfan64 funktioniert es irgendwie nicht (waveOutPrepareHeader gibt MMSYSERR_INVALPARAM zurück, sodass alles stumm ist).

      Erstmal die SYNTH.INC:

      Quellcode

      1. declare w#,h&[%voices-1],t&[%voices-1],i%[%voices-1]
      2. dim w#,306* %voices
      3. clear w#
      4. def FillMemory(3) !"KERNEL32","RtlFillMemory"
      5. def waveOutOpen(6) !"WINMM","waveOutOpen"
      6. def waveOutClose(1) !"WINMM","waveOutClose"
      7. def waveOutPrepareHeader(3) !"WINMM","waveOutPrepareHeader"
      8. def waveOutUnprepareHeader(3) !"WINMM","waveOutUnprepareHeader"
      9. def waveOutWrite(3) !"WINMM","waveOutWrite"
      10. def waveOutReset(1) !"WINMM","waveOutReset"
      11. proc TonAus
      12. parameters v%
      13. casenot h&[v%]:return
      14. waveOutReset(h&[v%])
      15. waveOutUnprepareHeader(h&[v%],w#+v%*306+256,32)
      16. waveOutClose(h&[v%])
      17. h&[v%]=0
      18. endproc
      19. proc TonEin
      20. parameters v%,i%,h%
      21. casenot h%:return
      22. i%[v%]=i%
      23. i%=v%*306+256
      24. h%=440*2^((h%-69)/12)*256
      25. long w#,i%+36=h%
      26. long w#,i%+40=h%
      27. i%=w#+i%
      28. TonAus v%
      29. case waveOutOpen(addr(h%),-1,i%+32,0,0,0):return
      30. h&[v%]=h%
      31. waveOutPrepareHeader(h%,i%,32)
      32. t&[v%]=&gettickcount
      33. GenWave
      34. waveOutWrite(h%,i%,32)
      35. endproc
      36. proc Fin
      37. whileloop 0,%voices-1
      38. TonAus &loop
      39. endwhile
      40. dispose w#
      41. endproc
      42. whileloop 0,%voices*306-1,306
      43. long w#,&loop+256=w#+&loop
      44. long w#,&loop+260=256
      45. long w#,&loop+272=12
      46. long w#,&loop+276=-1
      47. word w#,&loop+288=1
      48. word w#,&loop+290=1
      49. word w#,&loop+300=1
      50. word w#,&loop+302=8
      51. TonEin &loop\306,0,1
      52. endwhile
      Alles anzeigen

      Und dann das Hauptprogramm:

      Quellcode

      1. def %voices 6
      2. declare p%,a%,t&,x%,y%,f%,m%[%voices],c%[9],Fade%,Bass%,Hook%,Drum%,NoMorse%,Arp%
      3. def CreatePen(3) !"GDI32","CreatePen"
      4. def CreateSolidBrush(1) !"GDI32","CreateSolidBrush"
      5. def SelectObject(2) !"GDI32","SelectObject"
      6. c%[0]=CreatePen(0,0,$33ff99):c%[5]=CreateSolidBrush($33ff99)
      7. c%[1]=CreatePen(0,0,$33ff33):c%[6]=CreateSolidBrush($33ff33)
      8. c%[2]=CreatePen(0,0,$339966):c%[7]=CreateSolidBrush($339966)
      9. c%[3]=CreatePen(0,0,$335533):c%[8]=CreateSolidBrush($335533)
      10. c%[4]=CreatePen(0,0,$333333):c%[9]=CreateSolidBrush($333333)
      11. usermessages 16
      12. windowtitle "Tasten 1-6 = Stummschaltung"
      13. windowstyle $1A
      14. window 800,600
      15. case $profver>="11":startpaint %hdc
      16. proc GenWave
      17. parameters v%
      18. x%=&gettickcount-t&[v%]
      19. select i%[v%]
      20. caseof 0 ' stumm
      21. p%= 0
      22. a%= 0
      23. caseof 1 ' Bass
      24. p%= 55+x%\9
      25. a%= 60-x%\2
      26. caseof 2 ' Morse
      27. p%= 80
      28. a%= 30
      29. caseof 3 ' Hook
      30. p%= 16+x%\9
      31. a%= 63-x%\11:case a%<24:a%=24
      32. caseof 4 ' Melodie
      33. p%=if(x%<500,110-x%\7,20+x%\30)
      34. a%=80-x%\7
      35. ' Sustain
      36. case not(Hook%) and (a%<20):a%=20
      37. ' Tremolo schnell
      38. y%=x% mod 105:case y%>=56:y%=112-y%
      39. a%=a%+y%*if(x%<500,3,2)\7
      40. ' Tremolo langsam
      41. y%=x% mod 900:case y%>=480:y%=960-y%
      42. a%=a%+y%\20
      43. ' Release
      44. case a%<0:a%=0
      45. caseof 5 ' Piano
      46. p%=140+x%\50
      47. a%= 20-x%\60:case a%<10:a%=10
      48. caseof 6 ' Chor
      49. p%= 50+x% mod 150:case p%>=125:p%=250-p%
      50. a%= 15
      51. caseof 7 ' Xylophon
      52. p%=128
      53. a%= 30-x%\2:case a%<0:a%=0
      54. caseof 8 ' Becken
      55. p%= 0
      56. a%= 64-x%\9:case a%<0:a%=0
      57. caseof 9 ' Trommel
      58. p%=128
      59. a%=127-x%:case a%<0:a%=0
      60. endselect
      61. p%=p% & 255
      62. a%=a%*f%\256
      63. x%=w#+v%*306
      64. y%=m%[v%]
      65. if y% & 2
      66. FillMemory(x% ,256 ,128 )
      67. elseif i%[v%]<8
      68. FillMemory(x% , p%,128-a%)
      69. FillMemory(x%+p%,256-p%,128+a%)
      70. else
      71. dec x%,w#
      72. whileloop x%,x%+p%- 1:byte w#,&loop=128-rnd(a%):endwhile
      73. whileloop x%+p%,x%+255:byte w#,&loop=128+rnd(a%):endwhile
      74. endif
      75. casenot getactivewindow()=%hwnd:return
      76. case (y% & 1)=iskey(49+v%):m%[v%]=(y%+1) & 3
      77. x%=(v% mod 3)*260
      78. y%=v%\3*260
      79. inc p%,x%
      80. SelectObject(%hdc,c%[4])
      81. SelectObject(%hdc,c%[9])
      82. if i%[v%]<8
      83. rectangle x%,y% -x%+256,y%+128-a%:inc y%,128
      84. rectangle p%,y% -x%+256,y% -a%
      85. rectangle x%,y% -p% ,y% +a%
      86. rectangle x%,y%+128-x%+256,y% +a%
      87. SelectObject(%hdc,c%[m%[v%]])
      88. SelectObject(%hdc,c%[m%[v%]+5])
      89. rectangle x%,y% -p% ,y% -a%
      90. rectangle p%,y% -x%+256,y% +a%
      91. else
      92. rectangle x%,y%-x%+256,y%+256:inc y%,128
      93. SelectObject(%hdc,c%[m%[v%]])
      94. whileloop x%,p%- 1:line &loop,y%-&loop,y%-rnd(a%):endwhile
      95. whileloop p%,x%+255:line &loop,y%-&loop,y%+rnd(a%):endwhile
      96. endif
      97. endproc
      98. $I SYNTH.INC
      99. proc Akkord
      100. case %umessage=16:return
      101. parameters i%,1%,2%,3%
      102. TonEin 1,i%,1%
      103. TonEin 2,i%,2%
      104. TonEin 3,i%,3%
      105. endproc
      106. proc Takt
      107. whileloop 0,31
      108. case %umessage=16:break
      109. TonEin 0,1,Bass%+6*(&loop & 2)
      110. if Drum%
      111. casenot &loop:TonEin Drum%,8,20
      112. casenot ((&loop-9) & 24) or (&loop=13) or (Bass%=33):TonEin Drum%,9,80-&loop*4
      113. endif
      114. ifnot NoMorse%
      115. inc f%,Fade%
      116. if not(&loop & 9) or ((&loop & 15)=3) or ((&loop & 15)=12)
      117. TonEin 5,2,74-(Bass%=33) and (&loop=28)
      118. elseif (&loop+10) & 12
      119. TonEin 5,0,1
      120. endif
      121. else
      122. casenot &loop & 3:TonEin 5,4,&(4+&loop\4)
      123. endif
      124. if Hook%
      125. case ((Bass%=38) and (&loop=16)) or (&loop=20) or ((&loop & 27)=26):Akkord 0, 1, 1, 1
      126. case (Bass%=38) and (&loop= 2) :Akkord 3,62,65,69
      127. case (Bass%=38) and ((&loop=18) or (&loop=28)) :Akkord 3,62,67,71
      128. case (Bass%=38) and (&loop=24) :Akkord 3,62,67,72
      129. case (Bass%=33) and ((&loop= 2) or (&loop=24)) :Akkord 3,57,62,67
      130. case (Bass%=33) and (&loop=28) :Akkord 3,57,61,67
      131. endif
      132. case Arp%:TonEin 4,7,&(12+&loop mod 3)
      133. t&=t&+120
      134. case abs(&gettickcount-t&)>300:t&=&gettickcount
      135. getmessage
      136. while &gettickcount<t&
      137. whileloop 0,%voices-1
      138. GenWave &loop
      139. endwhile
      140. endwhile
      141. endwhile
      142. endproc
      143. proc Melodie
      144. Hook%=0:Bass%=38:Takt 0,0,0,69, 0, 0, 0, 0,77,76,74,81,77,74
      145. Takt 0,0,0,69, 0, 0, 0, 0,62,64,65,74,81,77
      146. Akkord 5,60,64,67:Takt 0,0,0,64, 0, 0, 0, 0,60,62,64,79,76,72
      147. Akkord 5,57,62,64:Takt 0,0,0,62, 0,57, 0,50,62,69,79,81,77,74
      148. Takt 0,0,0,76, 0, 0, 0, 0,77,76,74,81,77,74
      149. Takt 0,0,0,69, 0, 0, 0, 0,62,64,65,74,81,77
      150. Akkord 5,60,64,67:Takt 0,0,0,64, 0, 0, 0, 0,60,62,64,79,76,72
      151. Akkord 5,57,62,64:Takt 0,0,0,62, 0,57, 0,50, 0, 0, 0,81,77,74
      152. Akkord 6,62,67,71:Takt 0,0,0,74, 0, 0, 0, 0, 0,74,76,83,79,74
      153. Akkord 6,70,74,77:Takt 0,0,0,77, 0, 0, 0, 0, 0, 0,77,86,81,77
      154. Akkord 6,72,76,79:Takt 0,0,0,79, 0, 0, 0, 0,77,76,74,86,81,77
      155. Bass%=33:Akkord 6,69,73,76:Takt 0,0,0,76, 0, 0, 0, 0,79,77,76,86,81,77
      156. casenot %umessage=16:TonEin 5,4,74
      157. endproc
      158. proc Hook
      159. Hook%=1:Bass%=38:Takt 0,0,0, 0, 0, 0, 0, 0, 0, 0, 0,81,77,74
      160. Takt 0,0,0, 0, 0, 0, 0, 0, 0, 0, 0,81,77,74
      161. Takt 0,0,0, 0, 0, 0, 0, 0, 0, 0, 0,81,77,74
      162. Bass%=33:Takt 0,0,0, 0, 0, 0, 0, 0, 0, 0, 0,86,81,77
      163. endproc
      164. settimer 0
      165. whilenot %umessage=16
      166. clear Hook%,Drum%,Arp%
      167. Bass%=38:Fade%=2:Takt:Takt:Takt:Takt
      168. Fade%=0:Hook
      169. Drum%=4:Hook
      170. NoMorse%=1:Drum%=0:Melodie
      171. Drum%=4:Hook:Hook
      172. Arp%=1:Drum%=0:Melodie
      173. Arp%=0:Drum%=4:Hook
      174. Arp%=1:Drum%=5:Hook:Takt 0,0,0,0
      175. NoMorse%=0:Drum%=1:Hook
      176. Fade%=-1:Hook:Hook
      177. endwhile
      178. killtimer
      179. Fin
      180. whileloop 0,9:deleteobject c%[&loop]:endwhile
      181. case $profver>="11":endpaint
      Alles anzeigen
    • Wie schon Tradition am Ende eines Kapitels, gibt´s hier das chronologische ...

      ALGORITHMEN-TEIL XX - INHALTSVERZEICHNIS (in Teilen A und B)
      ============================================
      20_001 ALGORITHMEN - Teil XX: Zwischen Fersuch und Irrdumm
      20_002 Download-Link Inhalt bisheriger ALGORITHMEN-Kapitel
      20_003 ROSETTA CODE: The twelve days of Christmas
      20_004 200 Jahre Stille Nacht, heilige Nacht
      20_005 Erste Gehversuche um XML zu verstehen
      20_006 Oldi-40: XML ist Murks
      20_007 TS-Soft: XML ist kein Murks + Begründung
      20_008 Schlichtungsversuch
      20_009 Link: Die Gefahren der Gewöhnung (Ch. Sieber)
      20_011 _Ein allerletztes Rätsel EaR 1 ´Modular´
      20_012 _H.Brill löst EaR 1
      20_013 _Offizielles Lösungsproggramm zu EaR 1
      20_014 EaR 2 ´Bruch´
      20_016 Oldi-40 löst EaR 2
      20_018 Deviant Programming: Esotherische Strukturierungsbezeichner
      20_019 Lösung zu EaR 2
      20_020 EaR 3
      20_021 Prog: Erlaubt Windows die Option Ruhezustand?
      20_022 Lösung zu EaR 3
      20_023 PROSIT 11111100011
      20_024 Windows API-Variablentyp ´Variant Union´
      20_025 Dynamisch erweiterbares strukturiertes Bereichsarray
      20_026 Stange-ums-Eck Problem - Beitrag 2
      20_027 Ein allllerletztes Rätsel - EAR 4: Notepad
      20_028 H.BRill: Datei mit Inhalt .LOG - Lösung EaR 4
      20_029 Prog: Run-Befehl per API und Strings mit SendString an NotePad
      20_031 Ein alllllerletztes Rätsel - EaR 5
      20_032 Woran erkennt Notepad UNICODE Dateien
      20_034 Volkmar: Am BOM (Link)
      20_035 TS-Soft: Erklärung BOM-Flag - pro & contra
      20_036 Volkmar: Unklare .txt Endung bei Notepad
      20_037 TS-Soft: Codierungsfragen
      20_039 Lösungen zu EaR 5 und EaR 5a
      20_040 EaR 7 Was macht der ´God Mode´
      20_041 Volkmar löst EaR 7
      20_042 EaR 8 ´ms paint´
      20_043 EaR 9 Promi-Rätsel
      20_044 Volkmar löst EaR 8 und EaR 9
      20_045 Offizielle Lösungen EaR 8 und EaR 9
      20_046 EaR 10 ´Zuverlässigkeitsbericht anfordern´
      20_047 Lösung zu EaR 10
      20_048 EaR 11 ´Beifang`
      20_049 H.Brill: Wie löscht man freien Speicher eines NTFS-Laufwerkes
      20_050 Lösung zu EaR 11
      20_051 H.Brill ergänzt EaR 11-Lösung
      20_052 EaR 12 MS-Paint Cloning & 3D
      20_053 Lösung zu EaR 12
      20_054 Ein alllllllllllllerletztes Rätsel - EaR 13 ´CR LF´
      20_055 Deep Fakes: Fake-Pictures erkennen
      20_056 Manipulation und Desinformation im 21. Jahrhundert
      20_057 Neues von Pythagoras
      20_058 Lösung zu EaR 13
      20_059 Interessante Links: Geschichte Europas: Bevölkerung im Zeitraffer
      20_060 TS-Soft korrigiert: Aus LF wird CR LF !
      20_061 EaR 14 MS-Paintbild in WordPad einbinden
      20_062 Lösung zu EaR 14
      20_063 Prog: Verlegenheitslösung betr. Atomzeitserver
      20_064 Youtube-Link: Bewegungs- und Stil-kopierende Neuronale Netze
      20_065 Prog: Parametrierte Figuren - die Superformel
      20_065 Youtube-Link: Dazzle Bildschirmschoner
      20_066 Prog: Zeitbedarf für Message-abholendes Waitinput stark reduziert
      20_067 Fun-Fact: Wie schnell bewegen sich Programmierer durchs Weltall?
      20_069 Prog: Die Paralellogramm-Gleichung
      20_071 Prog: Speicherverwaltung dreidimensionaler Matrizen
      20_072 ProfAlt.Inc Include für ältere Profan-Sourcecodes, kompaktiert
      20_073 Prog: Torte teilen für Fortgeschrittene
      20_074 Prog: Vier-Ast-Kreuzungen eines vollständigen N-Sterngraphen
      20_075 Beispiel zu N-Sterngraph
      20_076 Prog: Anzahl der Flächenstücke einer N-Eckpunkte-Kreisteilung
      20_077 Mathematische Frustrationsformeln
      20_078 EaR 15 ´Die Superzahl´
      20_079 Lösung zu EAR 15
      20_080 Float-Gefahren mit Beispielen
      20_081 EaR 16 ´Irr Rational´: Tücken der Computerarithmetik
      20_082 Lösung zu EaR 16 mit Computer oder Grips
      20_083 Prog: Konvergenz der Ramanujan-PY Formel testen
      20_084 Beitrag FORMEN ERKENNEN: DAS HU-MOMENT EINES BILDES
      20_085 Prog: Berühmte Zahl erwürfeln
      20_086 Prog: Ist Ruhezustand erlaubt?
      20_087 Prog: Fair teilen bei 3 Beteiligten
      20_088 Link: Aktuelle Elektrosymbole
      20_089 Prog: Großkreisdistanzformel testen
      20_090 Youtube: Wie Computer Dezimalzahlen (nicht) repräsentieren können
      20_091 Prog: Spirograph als Wappengenerator
      20_092 Die 21 Regeln des Samurai
      20_093 EaR 17 Wie lange brauchen 3 Maler für 10 Fassaden
      20_095 Lösung zu EaR 17
      20_097 Harmonisches Mittel


      Folgt Teil B
    • Fortsetzung: Teil B


      20_100 Prog: Leistungsfähigkeit einer Volkswirtschaft absolut vs. Wachstum
      20_101 EaR 18 ´Durchschnittlicher Monat in 1000 Jahren´
      20_103 Antwort zu EaR 18
      20_104 EaR 19 ´Gorillakisten-Logik´
      20_105 EaR 20 ´Von Haus zu Haus-Weglänge´
      20_106 EaR 21 ´Mittelstreichung´ (Ziffernrätsel)
      20_107 Oldi-40 löst EaR 21
      20_108 Prog: Lösung zu EaR 21
      20_111 Auflösung von EaR 19, Lösung zu EaR 20
      20_112 EaR 22 Ziegelvolumen aus Seitenflächen
      20_115 EaR 23 Mindesturlaub für Sonnentage am Stück
      20_116 Lösung zu EaR 22
      20_117 Lösungsweg Nr. 2 zu EaR 22
      20_118 EaR 24 ´Wurzelgewusel´
      20_119 Lösung zu EaR 23
      20_120 Prog - Klassiker: Das N Damen-Problem
      20_121 Lösung zu EaR 24
      20_122 Youtube-Link: The Rise of Surveilance Capitalism
      20_123 Zwischenbilanz: Zugriffsstatistik der Reihe ´Algorithmen´
      20_124 EaR 25 ´8-stelliger Geheimcode´
      20_125 Prog: Auflösung zu EaR 25
      20_126 EaR 26 ´GESUNDE ZAHL´
      20_127 Prog: Webseite unkompliziert begrenzte Zeit anzeigen
      20_128 EaR 27 ´Das geht einfacher!´
      20_129 Lösung Nr. 1 zu EaR 26
      20_131 Lösungsweg Nr.2 zu EaR 26: Mit Logik!
      20_132 Lösung zu EaR 27
      20_133 Prog: HÄNGMÄN (Hangman deutsch)
      20_134 Genauigkeits-Benchmark für verschiedene Verfahren der Matrizen-Inversion
      20_135 Interessante Links: Neue Technologien
      20_136 Physik: Neue Festlegung physikalischer Basiskonstanten
      20_137 Ein allerletztes Rätsel - EaR 28
      20_138 Lösung zu EaR 28
      20_139 EaR 29 ´Wie oft?
      20_140 Verzweifelte200 löst EaR 29
      20_142 Achilles: Rätsel-Link
      20_143 EaR 30 Schallplattenrille
      20_144 Lösung zu EaR 30
      20_145 Links: Liste aktuell populärer SOCIAL MEDIA SERVICES
      20_146 Prüf-Prog: Mathematischer Rekord bei Multiplikativer Persistenz
      20_147 EaR 31 ´Ramanujans kubischer Near-miss´
      20_148 Prog: Thue-Morse: Fairste Spielfolge bezüglich ´Wer darf anfangen´
      20_149 Lösung zu EaR 31
      20_150 Sinusfunktion durch abgekürztes Kopfrechnen ermitteln
      20_151 Wie Piloten den Seitenwind überschlägig berechnen
      20_155 EaR 32 ´Fahrradcode vergessen´
      20_158 Lösung zu EaR 32
      20_159 EaR 33 Ur-Ur-Ur-Ur-Ur-Urgroßmütter
      20_160 Prog: Weitere Mathe-Rekorde - Superpermutation
      20_161 EaR 33 ´Wahrheitssuche auf der Insel´
      20_162 Lösung zur EaR 33.1 Ur-Omis
      20_163 Michael Wodrich löst EaR 33
      20_164 Offizielle Lösung zu EaR 33.2 Insel
      20_165 EaR 34 ´Junge Omi´
      20_166 Michael Wodrich löst EaR 34
      20_167 Prog: Anzahl der Vorfahren: Wir sind alle verwandt!
      20_168 Prog: Exponentielle Regression
      20_169 Wie das Leben so spielt: Compi abgeraucht
      20_170 Professor Chaos Musikprog. und Quiz
      20_171 H.Brill beantwortet 64-bit-Frage von Prof. Chaos
      20_172 ALGORITHMEN_XX-Themenübersicht
      ------------------------------------------------------------------