1. Artikel
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Paules-PC-Forum.de
  2. Forum
  3. Programmierung
  4. XProfan
  5. Algorithmen und Lehrreiches

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

  • p. specht
  • 28. Januar 2021 um 18:58
  • p. specht
    Premium-Mitglied
    Reaktionen
    986
    Beiträge
    5.665
    • 23. März 2021 um 19:56
    • #61

    Abt. Zeit zu gehen

    ===============

    Nach 28 Kapiteln scheint sich unsere Algorithmen-Serie etwas überlebt zu haben. Und seit sie eher versteckt läuft, sank auch die aktive Beteiligung quasi unter Null. Da es Boards gibt, in denen XProfan etwas prominenter vorkommt (und wo das Layout meinen Sehgewohnheiten eher entgegenkommt und nicht rudelweise von Werbung zugepflastert wird), gedenke ich meine Aktivitäten künfitg eher dorthin zu lenken.

    An die Boardbetreiber Dank für die schönen Jahre seit 2009.
    Vor allem aber: Danke all jenen, die mitgemacht haben. Bleibt gesund!

    Gruss

    HP255G7:Win10pro2.004,4*AMD Ryzen3200U@2.60GHz,6+2GB-RadeonVega/237GBSSD:intlDVDRW,3xUSB3 ext4TB-HDX,XProfanX3+Xasm/Xpse

  • EstherCH
    Gast
    • 23. März 2021 um 20:08
    • #62

    Machs gut, pass auf Dich auf und bleib gesund!

  • Michael Wodrich
    Profi
    Reaktionen
    263
    Beiträge
    562
    • 24. März 2021 um 20:14
    • #63

    ;(

    Das ist schade. Mir haben nicht nur Deine Knobeleien gefallen.

    Auch die Wissensbeiträge hatten es immer in sich.

    Ich hoffe, wir sehen/lesen uns in den anderen Foren.

    Bleib gesund

    Programmieren, das spannendste Detektivspiel der Welt.

  • p. specht
    Premium-Mitglied
    Reaktionen
    986
    Beiträge
    5.665
    • 31. März 2021 um 03:24
    • #64

    Der guten Ordnung halber hier noch die Lösung zu Jando-17

    ------------------------------------------------------------------------------

    Spoiler anzeigen

    Die Faktorielle von 5, geschrieben 5 !, ist 5*4*3*2*1 = 20*6 = 120.

    120 hat daher logischerweise die ganzzahlig-restlosen Faktoren 5,4,3,2,1 und ihre Kombnationen:

    120/(5*4)=6, 120/(5*3)=8, 120/(5*2)=12, 120/(5*1)=24

    120/(4*3)=10, 120/(4*2)=15, 120/4=30

    120/(3*2)=20, 120/(3*1)=40

    120/(2*1)=60 und 120/1 = 120,

    mit anderen Worten: 5 ! hat 16 Faktoren: 1,2,3,4,5,6,8,10,12,15,20,24,30,40,60 und 120.

    Anmerkung: 1 und 120 gelten dabei allerdings als "trivial".

    P.S.: Ich suche immer noch einen File-Provider, der den Letztstand des Algorithmen-Gesamtverzeichnisses verteilen hilft, ohne ständig neuerliches Hochladen zu verlangen. Hinweise?

    HP255G7:Win10pro2.004,4*AMD Ryzen3200U@2.60GHz,6+2GB-RadeonVega/237GBSSD:intlDVDRW,3xUSB3 ext4TB-HDX,XProfanX3+Xasm/Xpse

  • p. specht
    Premium-Mitglied
    Reaktionen
    986
    Beiträge
    5.665
    • 7. Mai 2021 um 19:14
    • #65

    Weil interessant: https://docs.microsoft.com/de-de/sysinternals/downloads/

    HP255G7:Win10pro2.004,4*AMD Ryzen3200U@2.60GHz,6+2GB-RadeonVega/237GBSSD:intlDVDRW,3xUSB3 ext4TB-HDX,XProfanX3+Xasm/Xpse

  • p. specht
    Premium-Mitglied
    Reaktionen
    986
    Beiträge
    5.665
    • 25. Juli 2021 um 09:17
    • #66

    Abt, Mathematricks

    ================

    Vereinfache: Kubikwurzel_aus( 1 + (x+1)*x*(x-1) - (1-x) )

    HP255G7:Win10pro2.004,4*AMD Ryzen3200U@2.60GHz,6+2GB-RadeonVega/237GBSSD:intlDVDRW,3xUSB3 ext4TB-HDX,XProfanX3+Xasm/Xpse

  • p. specht
    Premium-Mitglied
    Reaktionen
    986
    Beiträge
    5.665
    • 4. August 2021 um 02:05
    • #67

    Dann muss ich wohl selber:

    Kubikwurzel_aus( 1 + (x+1)*x*(x-1) - (1-x))

    Kubikwurzel_aus( 1 + (x²+x)*(x-1) -1+x)

    Kubikwurzel_aus( 1 + (x²+x)*(x-1) -1+x)

    Kubikwurzel_aus( (x²+x)*(x-1)+x)

    Kubikwurzel_aus( (x²+x)*x-1*(x²+x) +x)

    Kubikwurzel_aus( (x³+x²)- x² - x +x)

    Kubikwurzel_aus( x³+x² - x² )

    Kubikwurzel_aus( x³ )

    gibt vereinfacht: x :oops:

    ================

    HP255G7:Win10pro2.004,4*AMD Ryzen3200U@2.60GHz,6+2GB-RadeonVega/237GBSSD:intlDVDRW,3xUSB3 ext4TB-HDX,XProfanX3+Xasm/Xpse

  • p. specht
    Premium-Mitglied
    Reaktionen
    986
    Beiträge
    5.665
    • 25. September 2021 um 16:44
    • #68

    Man wird doch noch träumen dürfen: Windows XP-2021

    HP255G7:Win10pro2.004,4*AMD Ryzen3200U@2.60GHz,6+2GB-RadeonVega/237GBSSD:intlDVDRW,3xUSB3 ext4TB-HDX,XProfanX3+Xasm/Xpse

  • p. specht
    Premium-Mitglied
    Reaktionen
    986
    Beiträge
    5.665
    • 1. Dezember 2021 um 10:12
    • #69

    Sensation: Wissenschaft bekommt Schneeflockenbildung auch theoretisch in den Griff: Youtube-Link (engl.)

    HP255G7:Win10pro2.004,4*AMD Ryzen3200U@2.60GHz,6+2GB-RadeonVega/237GBSSD:intlDVDRW,3xUSB3 ext4TB-HDX,XProfanX3+Xasm/Xpse

  • p. specht
    Premium-Mitglied
    Reaktionen
    986
    Beiträge
    5.665
    • 12. Dezember 2021 um 10:03
    • #70

    Drag'n'Drop für XProfan-11.2a free:

    Code
    'Profan-Drag und Drop mit MS-Explorer realisieren
    'Orig.-Autor: Thomas Hölzer A.D. 2005, XProfan-11-transponiert by p.specht 2021-12
    Def DragAcceptFiles(2) !"SHELL32","DragAcceptFiles"
    Def DragFinish(1) !"SHELL32","DragFinish"
    Def DragQueryFile(4) !"SHELL32","DragQueryFileA"
    Def Sleep(1) !KERNEL32,Sleep
    Declare ende%,i%,Anzahl&,PFilename#,FileName$
    Dim PFileName#,261' Max_Path +1, Vorsicht bei Profan-Strings (nur 255 Zeichen!)
    Cls
    WindowTitle "Drag&Drop-Beispiel - Beenden mit rechtem Mausklick"
    DragAcceptFiles(%hwnd,1)
    Print "Eine oder mehrere Dateien aus dem Explorer ins Fenster ziehen"
    
    WhileNot ende%
    
        GetMessage
        IF (%message=563)
            anzahl&= DragQueryFile(&WParam,$FFFFFFFF,PFilename#,261);
            i%=0
            While i%<anzahl&
                DragQueryFile(&WParam,i%,PFilename#,261);
                filename$=String$(PFilename#,0)' Vorsicht, max 255 Zeichen
                AddString filename$
                Inc i%
            Wend
    
            DragFinish(&WParam);
            Listbox$(Str$(anzahl&)+" Drag&Drop-Datei(en) empfangen",2)
            Clearlist
    
        Elseif %mousekey=2
            ende%=1
        EndIf
    
    Wend
    
    Dispose PFileName#
    DragAcceptFiles(%hwnd,0)
    End
    Alles anzeigen

    HP255G7:Win10pro2.004,4*AMD Ryzen3200U@2.60GHz,6+2GB-RadeonVega/237GBSSD:intlDVDRW,3xUSB3 ext4TB-HDX,XProfanX3+Xasm/Xpse

  • Online
    RGH
    Fortgeschrittener
    Reaktionen
    652
    Beiträge
    1.536
    • 12. Dezember 2021 um 14:37
    • #71

    Ja, vielleicht sollte ich das in XProfan X5 so einbauen. (Ein paar kleine Verbesserungen für DBase-Dateien hat meine private Version schon.)

    Einen schönen 3. Adventssonntag!

    Gruß

    Roland

    AMD Ryzen 5 5600U with Radeon Graphics 2,3 GHz / 32 GB RAM / 500 + 2000 GB SSD / Windows 11 - XProfan X4a

    Als Backup: MD Athlon II X2 2,9 GHz / 8 GB RAM / 500 + 1000 GB HDD / ATI Radeon 3000 (onboard) / Windows 10(64) - XProfan X4

    http://www.xprofan.de

  • H.Brill
    Stammuser
    Reaktionen
    508
    Beiträge
    1.192
    • 12. Dezember 2021 um 15:48
    • #72

    Hallo Roland,

    schön, daß du mal wieder da bist. :top:

    Wir sind die XProfaner.

    Sie werden von uns assimiliert.

    Widerstand ist zwecklos!

    Wir werden alle ihre Funktionen und Algorithmen

    den unseren hinzufügen.

  • H.Brill
    Stammuser
    Reaktionen
    508
    Beiträge
    1.192
    • 13. Dezember 2021 um 08:36
    • #73
    Zitat von RGH

    Ein paar kleine Verbesserungen für DBase-Dateien hat meine private Version schon.

    Apropos :

    Es wäre auch schön, wenn man mit den dBase-Funktionen besser suchen könnte.

    Ich denke da an eine Art SELECT - Anweisung, wie in SQL, wo man die gefundenen

    Einträge in einer Liste bzw. Gridbox anzeigen/speichern könnte. Das würde das

    ständige Iterieren durch die gesamte DB ersparen.

    Siehe Hilfe :

    Spoiler anzeigen

    db("SQLExec "SELECT * FROM KUNDE WHERE NAME = 'Maier'",1)

    Handelt es sich beim letzten Parameter um das Handle einer Gridbox, wird das Ergebnis

    in diese geschrieben, wobei die Spalten und Überschriften der Tabelle in die Gridbox

    übernommen werden.

    Das wäre doch eine runde Sache. Da gibt es bestimmt noch mehr Ideen.

    Wir sind die XProfaner.

    Sie werden von uns assimiliert.

    Widerstand ist zwecklos!

    Wir werden alle ihre Funktionen und Algorithmen

    den unseren hinzufügen.

  • H.Brill
    Stammuser
    Reaktionen
    508
    Beiträge
    1.192
    • 13. Dezember 2021 um 10:20
    • #74

    Evtl. kann Roland dafür auch das

    db("Find", S,N)

    etwas aufbohren.

    Wir sind die XProfaner.

    Sie werden von uns assimiliert.

    Widerstand ist zwecklos!

    Wir werden alle ihre Funktionen und Algorithmen

    den unseren hinzufügen.

  • Online
    RGH
    Fortgeschrittener
    Reaktionen
    652
    Beiträge
    1.536
    • 14. Dezember 2021 um 15:06
    • #75

    Man kann doch einfach ganz bequem SQL über ODBC auch für dBase-Dateien nutzen! Der nötige ODBC-Treiber ist auf jedem Windows-System vorhanden.

    Gruß

    Roland

    AMD Ryzen 5 5600U with Radeon Graphics 2,3 GHz / 32 GB RAM / 500 + 2000 GB SSD / Windows 11 - XProfan X4a

    Als Backup: MD Athlon II X2 2,9 GHz / 8 GB RAM / 500 + 1000 GB HDD / ATI Radeon 3000 (onboard) / Windows 10(64) - XProfan X4

    http://www.xprofan.de

  • H.Brill
    Stammuser
    Reaktionen
    508
    Beiträge
    1.192
    • 14. Dezember 2021 um 16:24
    • #76

    Da hast du schon Recht. Das habe ich auch vor einiger Zeit schon so gemacht.

    Bloß bekommt das nicht jeder richtig hin, wenn man sein Programm weitergibt.

    Und SQL ist dann auch für den ungeübten Nutzer wieder eine Hürde.

    Der kommt dann besser mit (X)Profans eingebauten dBase-Befehlen zurecht.

    Ich dachte halt, daß sowas mit wenig Arbeit deinerseits machbar wäre, zumal

    du schon für dich ein paar kleine Verbesserungengemacht hast.

    Wir sind die XProfaner.

    Sie werden von uns assimiliert.

    Widerstand ist zwecklos!

    Wir werden alle ihre Funktionen und Algorithmen

    den unseren hinzufügen.

  • H.Brill
    Stammuser
    Reaktionen
    508
    Beiträge
    1.192
    • 18. Dezember 2021 um 11:16
    • #77

    Hallo,

    Da hätte ich für Rolands dBase - Funktionen noch so eine Idee :

    Wäre es möglich, bei db("Find", S, N) und db("Seek", S1, S2[,N])

    die regulären Ausdrücke mit einfließen zu lassen, bzw. bei Bedarf

    zuzuschalten ?

    z.B. daß man mit "M..er" alle findet, die Maier, Meier, Meyer, Mayer

    usw. heißen bzw. in der DBF sind. Das wäre doch ein riesiger Vorteil,

    wenn man die Möglichkeiten der regulären Ausdrücke bedenkt.

    Es geht zwar auch, wenn man durch die DB iteriert und mit InStr()

    das entsprechende Feld abfragt, aber integriert mit db(Seek/Find...)

    wäre es auch schneller.

    Wir sind die XProfaner.

    Sie werden von uns assimiliert.

    Widerstand ist zwecklos!

    Wir werden alle ihre Funktionen und Algorithmen

    den unseren hinzufügen.

  • H.Brill
    Stammuser
    Reaktionen
    508
    Beiträge
    1.192
    • 18. Dezember 2021 um 12:38
    • #78

    Hier mal ein kleines Beispiel mit regex

    Code
    Declare String dbdatei, stdatei, spalten, Handle Edit1, Text1, Btn1, Btn2, Grid1, Grid2
    Declare Long ende, anzahl
    
    spalten = "Nr;0;40;NAME;0;180;ORT;180"
    ende = 0
    dbdatei =  $ProgDir + "Kunden.dbf"
    
    Set("RegEx", 1)
    
    Window 600, 500
    Text1 = Create("Text",    %HWnd, "Name eingeben", 10, 10, 120, 25)
    Edit1 = Create("Edit",    %HWnd, "", 130, 10, 180, 25)
    Btn1  = Create("Button",  %HWnd, "Suchen", 350, 10, 60, 25)
    Btn2  = Create("Button",  %HWnd, "Ende",   450, 10, 60, 25)
    Grid1 = Create("GridBox", %HWnd, spalten, 0, 10, 50, 420, 150)
    Grid2 = Create("GridBox", %HWnd, spalten, 0, 10, 250, 420, 150)
    
    If FileExists(dbdatei)
       anzahl = db("Open", #1,dbdatei)
       db("Use", #1)
       If anzahl < 1
          InitDB()
       Else
          FuelleDB()
       EndIf
    Else
      CreateDB()
      anzahl = db("Open", #1,dbdatei)
      db("Use", #1)
      If anzahl < 1
          InitDB()
       Else
          FuelleDB()
       EndIf
    EndIf
    
    WhileNot ende
      WaitInput
      If Clicked(Btn1)
        ' Suchen
        Suchen()
      ElseIf Clicked(Btn2)
        ende = 1
      EndIf
    EndWhile
    
    Proc InitDB
    Declare String Nr, Name, Ort, zeile, Long x, Handle Grid
    Grid = Create("List", 0)
    AddString(Grid, "100|Müller|Köln")
    AddString(Grid, "101|Meier|Dortmund")
    AddString(Grid, "102|Maurer|Bremen")
    AddString(Grid, "103|Meyer|Essen")
    AddString(Grid, "104|Zimmer|München")
    AddString(Grid, "105|Maier|Hamburg")
    AddString(Grid, "106|Mayer|Kiel")
    AddString(Grid, "107|Meiser|Bonn")
    AddString(Grid, "108|Altmaier|Frankfurt")
    AddString(Grid, "109|Schmitt|Neustadt")
    AddString(Grid, "110|Mayerbär|Dortmund")
    AddString(Grid, "111|Mustermann|Düsseldorf")
    AddString(Grid, "112|Neumann|Berlin")
    AddString(Grid, "113|Schmidt|Neuwied")
    AddString(Grid, "114|Schlaumeier|Hagen")
    AddString(Grid, "115|Neumüller|Siegen")
    
    WhileLoop 0, GetCount(Grid) - 1
      zeile = GetString$(Grid, &LOOP)
      db("AppendBlank")
      db("Put", "NR",   SubStr$(zeile, 1, "|"))
      db("Put", "NAME", SubStr$(zeile, 2, "|"))
      db("Put", "ORT",  SubStr$(zeile, 3, "|"))
      db("PutRec", 0)
    EndWhile
    FuelleDB()
    EndProc
    
    Proc FuelleDB
    Declare String zeile
    db("Go", "|<")
    ClearList Grid1
    WhileNot %dbEOF
      zeile = db("Get", "NR") + "|" + db("Get", "NAME") + "|" + db("Get", "ORT")
      AddString(Grid1, zeile)
      db("Go", ">")
    EndWhile
    EndProc
    
    Proc CreateDB
    Assign #1, $ProgDir + "Kunden.str"
    Rewrite #1
    Print #1, "NR; N; 4; 0"
    Print #1, "NAME; C; 20; 0"
    Print #1, "ORT; C; 20; 0"
    Close #1
    db("Create", $ProgDir + "Kunden.str", dbdatei)
    EndProc
    
    Proc Suchen
    Declare String such, feld, zeile, Long pos
    such = GetText$(Edit1)
    If such <> ""
       ClearList Grid2
       db("Go", "TOP")
       WhileNot %dbEOF
          feld = db("Get", "NAME")
          If InStr(such, feld)
             zeile = db("Get", "NR") + "|" + db("Get", "NAME") + "|" + db("Get", "ORT")
             AddString(Grid2, zeile)
          EndIf
          db("Go", "NEXT")
       EndWhile
    EndIf
    EndProc
    
    db("Close", #1)
    Set("RegEx", 0)
    End
    Alles anzeigen

    Ist für kleine Datenbanken ja ausreichend.

    Wir sind die XProfaner.

    Sie werden von uns assimiliert.

    Widerstand ist zwecklos!

    Wir werden alle ihre Funktionen und Algorithmen

    den unseren hinzufügen.

  • p. specht
    Premium-Mitglied
    Reaktionen
    986
    Beiträge
    5.665
    • 9. Januar 2022 um 22:48
    • #79

    Von der Mühsal des intelligenten Programmierens, hier am Beispiel "Computer soll das Spiel SNAKE beherrschen!": Youtube-Link

    HP255G7:Win10pro2.004,4*AMD Ryzen3200U@2.60GHz,6+2GB-RadeonVega/237GBSSD:intlDVDRW,3xUSB3 ext4TB-HDX,XProfanX3+Xasm/Xpse

  • p. specht
    Premium-Mitglied
    Reaktionen
    986
    Beiträge
    5.665
    • 3. Juli 2022 um 02:22
    • #80

    Das unglaubliche 100-Gefangenen-Rätsel (Youtube, engl.): Riddle

    HP255G7:Win10pro2.004,4*AMD Ryzen3200U@2.60GHz,6+2GB-RadeonVega/237GBSSD:intlDVDRW,3xUSB3 ext4TB-HDX,XProfanX3+Xasm/Xpse

Windows 11

  1. Datenschutzerklärung
  2. Impressum
Community-Software: WoltLab Suite™