| |
|
|
- Seite 1 - |
|
Frank Abbing | Vielleicht ist so ein Thread mal nett. Jemand stellt eine Programmier-Aufgabe und der Rest versucht, eine kurze und gute Lösung zu finden... Die beste Lösung könnte zu den Code-Snippets gepackt werden.
Meine Aufgabe für heute ist:
Finde eine kurze und schnelle Lösung um festzustellen, ob ein Directory leer ist oder nicht! |
|
|
| |
|
|
| |
|
- Seite 2 - |
|
|
Frank Abbing | Hehe, Dieter hat auch meine API-Methode gepostet. Schnell und kurz. Die ShlWapi ist ein Feuerwerk an nützlichen und auch unerwarteten Funktionen! Jetzt darf gerne jemand Anderes eine Aufgabe posten. |
|
|
| |
|
|
|
| Deine ja?
| Sortiere moeglichst performant 200 reelle Zufallszahlen mit 8 stelliger Genauigkeit nach rnd()*1000 (xprofan 11) natuerlich, also wie es ein Mensch tun wuerde. | |
|
|
|
| |
|
|
|
Jörg Sellmeyer | KompilierenMarkierenSeparierenRandomize
Declare s$
Window 0,0 - 400,%maxy
Var h& = Create("ListBox",%hwnd,1,1,10,200,%maxy - 80)
WhileLoop 200
AddString(h&,Format$("00#." + MkStr$("#",8),Rnd() * 1000))
Wend
While 1
WaitInput
Locate 1,29
s$ = Format$("00#." + MkStr$("#",8),Rnd() * 1000)
DeleteString(h&,Rnd(GetCount(h&)))
AddString(h&,s$)
SelectString(H&,-1,s$)
Print s$
Wend
|
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 26.08.2008 ▲ |
|
|
|
|
| Ich gebs ja zu, war eine bloede Idee! Der naechste bitte... |
|
|
| |
|
|
|
Jörg Sellmeyer | So, weiter gehts:
Es sollen aus einer Zahl die einzelnen Dezimalwerte ermittelt werden. Ich stelle hier als Start mal die Methode mit Strings hin. Das Ganze soll aber mathematisch werden. Eine Art TestBit mit 4bit. Also, die Zahl soll in jedem "Bit" vier Zustände repräsentieren (0,1,2,3) und achtstellig sein. KompilierenMarkierenSeparieren Wie gesagt, keine Stringlösungen, sondern rein mathematisch und mit nicht mehr als diesen 8 Schleifendurchläufen. |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 28.08.2008 ▲ |
|
|
|
|
Frank Abbing | Wieso lässt du das 1000 mal durchlaufen? Übrigens ist deines doch eine Stringlösung, oder? MID$ ist nunmal eine Stringfunktion... |
|
|
| |
|
|
|
Jörg Sellmeyer | Das mit der 1000er-Schleife hatte ich vergessen rauszunehmen.
Frank Abbing
Übrigens ist deines doch eine Stringlösung, oder?
Jörg Sellmeyer
Ich stelle hier als Start mal die Methode mit Strings hin. Das Ganze soll aber mathematisch werden.
Also: Hast Du eine mathematische Lösung? |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 28.08.2008 ▲ |
|
|
|
|
Sebastian Sprenger | Gehts jetzt wirklich um 2 Bits pro Ziffer und 8 Ziffern pro Zahl oder einfach um einen Mid$-Ersatz? Naja wie auch immer: KompilierenMarkierenSeparierenAlte Prozedur ErmittleZahl einfach ersetzen... |
|
|
| Profan² 7.0e, XProfan 9, 11.2a, FreeProfan32 Windows Vista Home Premium 32-Bit, 2.8 Ghz, 4 GB RAM Windows Me, 1.8 Ghz, 256 MB RAM | 28.08.2008 ▲ |
|
|
|
|
Frank Abbing | |
|
| |
|
|
|
Jörg Sellmeyer | Ich poste mal meine Lösung. Die braucht für 1000 Durchgänge ~1500 - ~2000 ms (deshalb auch die 1000er Schleife) Die Stringlösung brauch nur ~1000 - 1500ms. Eure benötigen ~2800 - ~3500ms Ich dachte, mathematisch könnte es noch schneller gehen. Die Idee dahinter ist: Ich möchte Strings per Sendmessage an ein anderes Programm übergeben. Die Strings bestehen aus bis zu 16 Zeichen (könnte man je acht Stellen über &wparam und &lparam schicken). Es sind immer nur vier unterschiedliche Zeichen, darum die Zahlen von 0-3 pro Dezimalstelle. KompilierenMarkierenSeparieren Die Zahlen werden rückwärts ausgegeben aber das spielt keine Rolle.
Das mit dem Lg(Zahl&), um die Anzahl der Stellen rauszubekommen, gefällt mir! Allerdings ist mir nicht klar, warum Du das noch durch Lg(10) teilst. Der ist doch 1 oder? |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 28.08.2008 ▲ |
|
|
|
|
Frank Abbing | |
|
| |
|
|
|
Sebastian Sprenger | Jörg Sellmeyer
warum Du das noch durch Lg(10) teilst. Der ist doch 1 oder? Echt, ist er das? *ausprobier* Ja, er ist. Gut zu wissen. Man kann ja den Logarithmus zu einer bestimmten Basis (in meinem Fall 10) errechnen, aber wenn die Lg-Funktion bei 10 sowieso 1 ausgibt, kann's ja weggelassen werden. |
|
|
| Profan² 7.0e, XProfan 9, 11.2a, FreeProfan32 Windows Vista Home Premium 32-Bit, 2.8 Ghz, 4 GB RAM Windows Me, 1.8 Ghz, 256 MB RAM | 29.08.2008 ▲ |
|
|
|