ALGORITHMEN - Teil XIX: Stromausfall im Aussenhirn

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

    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.

    • Neu

      Abt. Aufruf-Parameter austesten
      ========================

      Quellcode

      1. ' Kommandozeilenparameter auslesen (PRFellow - Vorlage)
      2. ' Autor 2007 Thomas Hölzer, 2018 To XProfan11.2a p.specht
      3. ' "Prozedur dient zu Testzwecken im Entwicklungsprozeß,
      4. ' um Anzahl, Numerierung und Inhalt der beim Programmstart
      5. ' übergebenen Parameter zu prüfen.
      6. ' Bitte beachten: Bei einem zur EXE gelinkten Programm
      7. ' verschieben sich in XProfan der Parameter-Index um -1 !"
      8. Proc CheckParams
      9. Declare i%,paramstr$
      10. Whileloop 0,%ParCount-1
      11. paramstr$=paramstr$+"Par$("+Str$(i%)+") = "+Par$(i%)+"\n"
      12. EndWhile
      13. MessageBox(paramstr$,"Parametertest", 64)
      14. EndProc
      15. Main:
      16. Cls
      17. CheckParams
      18. End
      Alles anzeigen
    • Neu

      Abt. Ganzzahlige rechtwinkelige Dreieckseiten definierter Differenz ermitteln
      ========================================================

      Quellcode

      1. WindowTitle "Ganzzahlige Dreiecksseiten definierter Differenz ermitteln"
      2. cls:set("numwidth",14):font 2
      3. declare x!,y!,z!,xx!,yy!,zz!,n&,d&
      4. Print "\n Gewünschte Differenz: ";:input d&:print
      5. whileloop 5000:x!=&Loop
      6. whileloop 12000:y!=&Loop
      7. z!=sqrt(sqr(x!)+sqr(y!))
      8. if z!=int(z!)
      9. if abs(z!-y!)=d&
      10. inc n&
      11. print " "+trim$(str$(n&))+". ",int(x!),int(y!),int(z!),int(abs(z!-y!))
      12. sound 2000,25
      13. endif
      14. endif
      15. endwhile
      16. endwhile
      17. beep:print "---"
      18. waitinput
      Alles anzeigen
    • Neu

      Abt. Processor Affinity Mask
      =====================
      Aus der Bescheibung beim CMD> START -Befehl schließe ich vage, daß die Processor Affiinity Mask bei "Hyperthreading eingeschaltet" jeweils aus 2 bit besteht und sich (ohne /NODE Angabe) auf die ersten CPU-Cores bezieht. Die Angaben sind nämlich 0x3 und 0xC, was folgende Konfiguration bedeutet (in Xprofan11-Schreibweise):

      Affinity Mask-Werte für den Fall "Hyperthreading eingeschaltet" (Bei Intel-CPUs der Normalfall):
      $0 % 00 00
      $1 % 00 01 : Logischer Core-0 allein zugeteilt
      $2 % 00 10 : Thread-0 allein zugeteilt
      $3 % 00 11 : Thread-0 und Logischer Core 0 zugeteilt
      $4 % 01 00 : Logischer Core-1 allein zugeteilt
      $5 % 01 01 : Logischer Core-1 und logischer Core-0 zugeteilt
      $6 % 01 10
      $7 % 01 11
      $8 % 10 00 : Aufgabe dem "Thread-1" zugeteilt
      $9 % 10 01 : Thread-1 und Core-0 sollen das bearbeiten
      $A % 10 10 : Thread-1 und Thread-0 zugeteilt
      $B % 10 11
      $C % 11 00 : Thread-1 und Logischer Core-1 zugeteilt
      $D % 11 01
      $E % 11 10
      $F % 11 11 : Zuteilung an alle freien Ressources (auf einem 2-Kerner) ermöglichen

      Die Affinity-Mask erfordert aber dann HEXADEZIMALWERTE !
      Bleibt noch zu klären, was "Logischer Core" uund "Thread-n" eigentlich bedeuten. Wie gesagt: Die Birne raucht!
      Gruss

      P.S.: Internet-Zufallsfund dazu: LINK

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

    • Neu

      Abt. Hyperthreading
      ===============
      Definition laut Wikipedia:

      Zitat: Hyper-Threading Technology (kurz HTT, üblicherweise nur Hyper-Threading und dann HT genannt) ist eine spezielle Implementierung von hardwareseitigem Multithreading in Intel-Prozessoren. Durch mehrere vollständige Registersätze und ein komplexes Steuerwerk werden intern parallel arbeitende Pipeline-Stufen zwei parallelen Befehls- und Datenströmen zugeteilt. Hyper-Threading entspricht konzeptuell dem Simultaneous Multithreading (SMT).[1]
      Zu beachten: Der Prozessorkern kann sowohl einen einzelnen Thread (zweiter Thread abgeschaltet) als auch zwei verschiedene Threads parallel bearbeiten, benötigt im letzteren Fall somit jeweils eigene Seitentabellen. Diese Threads können auch von einem einzigen Prozess stammen und somit im selben Prozesskontext rechnen.
      - Zitat-Ende.
      Gruss

      P.S.: Im TASKMANAGER lässt sich im PROZESSE-Tab bei Auswahl eines Eintrages und rechtem Mausklick unter dem Punkt "Zugehörigkeit festlegen" die logische Zugehörigkeit (= Affinity) eines Prozesses zu den vorhandenen CPU-Kernen manipulieren. Das bezieht sich jedoch nicht auf Threads, sondern auf ganze Prozesse. Der Windows-Betriebssystemeigene Scheduler ist mittlerweile aber sehr ausgefeilt und kommt auch mit den noch wesenlich komplexeren Hyperthreading-Prozessoren zurecht - "herumfiedeln" mit diesen Einstellungen bringt also nur in Sonderfällen etwas, etwa bei parallelen Matrizenberechnungen.


      PPS. Story: Meiner Eriinnerung nach kam es zu dieser Entwicklung durch die Entdeckung eines Tricks bei einem 6504-Prozessorsystem: Der 6504 verlangte eine Taktrate, deren Aus-Zyklus eine Spur länger sein musste als der Ein-Zyklus. Durch Takt-Inversion und leichte Verzögerung des Taktes konnte man einen zweiten Prozessor am selben Adress- und Datenbus betreiben, der eine zweite Aufgabe (Prozess oder Thread = Programmzweig) physisch parallel abarbeiten konnte. Damit wurde die Hardware besser ausgenutzt und die Leistung fast verdoppelt ( - abzüglich Verwaltungs-Overhead).

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

    • Neu

      Abt. Interessante Links
      ==================
      LINK: Ausführlichere Erläuterung des CMD START - und des CMD CALL - Verhaltens bei direkter Eingabe und bei Gebrauch in den guten alten Batch-Files (xxxx.bat). Macht auch den Sinn des /NODE Parameters einigermaßen klar.

      LINK: What isi a NODE in the NUMA Model?

      Auszug: What is a node?
      One of the problems with describing NUMA is that there are many different ways to implement this ((memory sharing)) technology. This has led to a plethora ((Vielfalt)) of "definitions" for node. A fairly technically correct and also fairly ugly definition of a node is: a region of memory in which every byte has the same distance from each CPU. A more common definition is: a block of memory and the CPUs, I/O, etc. physically on the same bus as the memory. Some architectures do not have memory, CPUs, and I/O all on the same physical bus, so the second definition does not truly hold. In many cases, the less technical definition should be sufficient, but often the technical definition is more correct.

      Gruss

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

    • Neu

      Abt. Ausnahmsweise? noch ein Rätsel - AneR 62
      ====================================
      Student Thorsten soll seine Erbtante Mimi abends vom Bahnhof abholen. Er schreckt gerade noch rechtzeitig von seinen Büchern hoch, hat es nun aber plötzlich sehr eilig.
      Leider ist im Bad neben der Waschmaschine das Licht ausgefallen. In der Wäschebox neben der Maschine - soviel ist ihm bekannt - liegen zwei weiße Socken, drei blaue und vier graue Socken. Thorsten weiss weiters, dass drei dieser Socken Löcher haben, kann sich aber nicht mehr daran erinnern, welche das waren.
      Frage: Wie viele Socken muss Throsten mindestens aus der Box nehmen, um sicherzugehen dass er mindestens ein gleichfarbiges Paar ohne Löcher erwischt?
    • Neu

      Abt. AneR 63
      ==========
      In einem regelmäßigen Fünfeck mit Umkreisradius Ru = 1 [m] sind die Distanzen zwischen jeweils 2 Eckpunkten gesucht - bei benachbarten Eckpunkten also die Seitenlänge des Fünfecks, bei nicht-benachbarten eine Quasi-Diagonale (beide ausgedrückt als Faktor des Umkreisradius 1 [m])
    • Neu

      Lösung zu AneR 63 ´Regelmäßiges Fünfeck´ plus Zusatzinfos
      -----------------------------------------------------------
      Spoiler anzeigen

      Ecken-Zentriwinkel gamma = 360° / 5 = 72° sowie 2 * 72° = 144°
      Sin(gamma)=0.951056516, Cos(gamma) = +0.309016994

      Innenwinkel zw. benachb. Seiten: alpha = (5-2) * 180° / 5 = 108°
      Cos(alpha) = 1/4*(1-Sqrt(5)) = -0.309016994

      Antwort zu Frage 1:

      Länge einer Seite: a = r_u * Sqrt((5-Sqrt(5))/2) = r_u * 1.175570505
      Umkreisradius r_u = a / 10 * Sqrt(50+10*Sqrt(5)) = a * 0.850650808

      Inkreisradius r_i = a / 10 * Sqrt(25 + 10 * Sqrt(5)) = a * 0.68819096
      Traversdiagonale d = a/2*(1+Sqrt(5)) = a*1.618033988
      Höhe h = r_u + r_i = a/2*Sqrt(5+2*Sqrt(5)) = a * 1.538841769

      Flächeninhalt:
      F = a^2/4 * Sqrt(25+10*Sqrt(5)) = a^2 * 1.720477401
      F = 5 * Innendreieck = 5/4*a^2*tan(108/2) = a^2 * 1.720477401
      F = 5/8*r_u^2 *Sqrt(10+2*Sqrt(5)) = r_u^2 * 2.377641291
      F = 5/2*r_u^2 * sin(72°) = r_u^2 * 2.377641291

      Eckdistanzen auf dem Umkreis:
      ------------------------------
      P0=(x0=r_u, y0=0)
      P1=r_u*(cos(72°), sin(72°)
      a = P0_P1 = |P1 - P0| = r_u*Sqrt((x1-x0)^2+(y1-y0)^2)
      a = r_u*Sqrt((cos(72°)-1)^2+(sin(72°)-0)^2)
      a = r_u*1.175570505 ==>
      r_u = a * 1/1.175570505 = a * 0.850650808

      Antwort zu Frage 2:
      P2=r_u*(cos(144°),sin(144°) , Verfahren wie zuvor:
      d = P0_P2 = |P2 - P0| = r_u * 1.902113032 = a*1.618033988

      Probe: a/r_u=1.175570505 q.e.d. (siehe oben).
    • Neu

      Abt. AneR 64
      ==========
      Eine Stange mit einem Querschnitt, der einem regelmäßigen Fünfeck mit Seitenlänge 5 cm entspricht, wird fünf mal auf ebenem geraden Boden ohne zu rutschen nach rechts weitergekippt. Welche Wegstrecke legt dabei die linke untere Ecke zurück? (Ergebnisse von AneR 63 dürfen verwendet werden! :haha: )
    • Neu

      @Oldi-40: Dein Ehrgeiz, ohne Werkzeuge ausser den biologisch vorgegebenen auszukommen, ehrt dich, es ist im gegenständlichen Fall aber nicht Bedingung.

      Spoiler anzeigen
      Hinweise:
      -------------
      Kreisumfangsformel U = 2*r*Pi,
      Drehung jeweils um 180°-108°=72° = 1/5 Umfangswinkel.
      Seitenlänge a = 5 cm (!)
      2*Pi ~ 6.2832

      Drehradius r für den ursprünglich links unten befindlichen Eckpunkt:
      - bei der 1. Kippung r = Seitenlänge a,
      - bei weiteren 2 Kippungen: r = Quasi-Diagonale d = a * 1.6180339 = 8.09017 cm
      - bei der vorletzten Kippung wieder r = a
      - bei der letzten Kippung r=0, da im Drehpunkt.

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

    • Neu

      Lösung zu AneR 63
      ==============
      Spoiler anzeigen

      Zurückgelegter Weg des ursprünglich linken unteren Eckpunktes
      bei 5 Kippungen der fünfeckigen Stange nach rechts:
      a) Bei der 1. und 4. Kippung: 2*5*1/5 * 2*Pi = 4*Pi = 12.5663706 cm
      b) Bei der 2. und 3. Kippung: 2*5* 1.6180339*1/5 * 2*Pi = 20.3328 cm
      c) Bei der letzten Kippung r=0, da im Drehpunkt. Weg daher auch 0 cm

      Die gesamte Wegstrecke der Ecke beträgt daher a)+b)+c) = 32.89918 cm

    • Neu

      Abt. Nicht modernisierbar?
      ===================
      Ich wollte die veraltete Schreibweise Edit1& = OR(~WS_CHILD,~WS_VISIBLE) mit anschließendem MoveListToEdit,
      was noch zulässiig ist wenn man PROFALT.INC einbindet,

      auf XProfan-11-Schreibweise ändern: (~WS_CHILD OR ~WS_VISIBLE) und nachfolgendes MoveListToHandle.
      Allein, dies führt zu einer Fehlermeldung "Funktion nicht auf dieses Fensterobjekt anwendbar!"


      Bin am weiterforschen, was da los ist...

      Gruss
    • Neu

      @Oldii-40: Möge der Radius oft 7 sein!


      Abt. AneR 64 ´Mutter´
      ================
      Eine Sechskantmutter ohne Anfasung habe eine Schlüsselweite von 14 mm. Welcher Beilagscheiben-Durchmesser ist für eine satte Auflage mindestens erforderlich?

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

    • Neu

      Lösung zu AneR 64
      ---------------------
      Spoiler anzeigen

      Wir teilen das Sechseck in sechs Dreiecke (durch Linien vom Mittelpunkt zu den Ecken).
      So ein Dreieck ist dann gleichseitig. Gleichseitige Dreiecke haben den Innenwinkel (3 -2)*180 = 60°,
      die Höhe ist daher = Seitenlänge * Sin(60°) = s * Sqrt(3)/2.

      Die Schlüsselweite des Sechsecks (der Mutter) entspricht seinem
      Inkreis und setzt sich zusammen aus 2 * diese Dreieckshöhe,
      der gesuchte Umkreis aus 2 * die Seitenlänge:

      r_i = 2 * s * Sqrt(3)/2

      r_u = 2 * s

      Der Umrkeis ist also um 2/Sqrt(3) größer als die Schlüsselweite von 14 mm,
      sollte also (Antwort:) mindestens 16.1658 mm betragen.

      <klugscheiß on>

      In der Praxis könnte man die Fasenbreite der Mutter abziehen, sodaß eine
      "Unterlegscheibe" gemäß DIN 125 B (Österr.: Beilagscheibe) von Normdurchmesser d2=16 mm
      ausreichen dürfte (- immer vorausgesetzt, der Innendurchmesser d1 der Scheibe ist größer-gleich
      dem Aussendurchmesser des Schraubengewindes, sowie Materialkompatibilität).<klugscheiß off>