Forum strony www.multipasko.pl [Regulamin]


Dodaj wpis w tym temacie
Spis tematów
Login:

Hasło:
Strona: 1 2 ... 532 533 534 ... 560 561
Wyślij wiadomość do admina

Przewiń wpisy ↓

moje ... oprogramowanie

2025-02-01 (10:10)

status 777ch
Data rejestracji: 2005-11-07
Ilość postów: 23087

1386
wpis nr 1 550 803
[ CZCIONKA MONOSPACE ]

fair_play
wpis nr 1 550 636
grypa


no to życzę zdrówka kolego fair_play

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

muszę stwierdzić że Twoje rozwiązanie
jest znacznie szybsze
ale ....... zaimplementowałem tylko dla warranty 5
do programiku korelacje_777ch__fairplay_v4
który jest jednak takim warsztatem czyli beta na maxa
bo w nim z marszu próbuję co mi wpadnie do głowy
więc choc działa ,to co niektóre rzeczy
--> to pomysły mocno chybione



======czas w korelacje_777ch__fairplay_v4======

C(69,25,5,5)=99,9923388441158 % brak[861]
Brak {861} starszy proces by fair_play[maska]
Sprawdzono zbiór = 11238513 kombinacji
Gwar..[5]= 99,9923388441158 %
cover=630-linii
Time calculated : 0,771194703289548 ms

======czas wg nowej procedury [adresy]======

-- Gwar.5 if [5] --*1
C(69,25,5,5)=99,9923388441158 % brak[861]
Brak {861} new proces by fair_play[adresy]
Sprawdzono zbiór = 11238513 kombinacji
Gwar..[5]= 99,9923388441158 %
cover=630-linii
Time calculated : 0,394106227321262 ms
2025-02-01 (13:59)

status fair_play
Data rejestracji: 2016-05-12
Ilość postów: 8971

14865
wpis nr 1 550 847
[ CZCIONKA MONOSPACE ]



777ch>
Dziękuję za życzenia, jest poprawa, ale choroba musi swoje potrwać

Mam pytanie:
Jeśli masz taki warunek:
IF a=b OR c=d OR e=f OR g=h OR ......... THEN
To program sprawdza wszystkie porównania czy już przy pierwszej nierówności przerywa sprawdzanie?

Istotne dla kolejności ustawienia warunków.
Najbardziej prawdopodobną nierówność dać na początek.
2025-02-01 (14:20)

status fair_play
Data rejestracji: 2016-05-12
Ilość postów: 8971

14865
wpis nr 1 550 849
[ CZCIONKA MONOSPACE ]


kleszek> poczta
2025-02-01 (14:20)

status Jacek_K1961
Data rejestracji: 2017-03-29
Ilość postów: 13821

15220
wpis nr 1 550 850
[ CZCIONKA MONOSPACE ]

Fair_play
Może porównaj po czasie wykonywania w pętli z milion razy. Przed daj działanie gdzie wynikiem będzie tylko A=B, potem porównaj dla ostatniego warunku np. tylko Y=Z, ale daj ich dużo ??? Jeżeli będą "takie same" to by sugerowało, że sprawdza całą linię warunków.

--- wpis edytowano 2025-02-01 14:22 ---

2025-02-01 (14:45)

status Jacek_K1961
Data rejestracji: 2017-03-29
Ilość postów: 13821

15220
wpis nr 1 550 859
[ CZCIONKA MONOSPACE ]

Fair_play
Mnie wychodzi "ten sam"/podobny czas. 4,367s i 4,368s dla sprawdzania 1.000.000.000

--- wpis edytowano 2025-02-01 14:48 ---

2025-02-01 (15:15)

status fair_play
Data rejestracji: 2016-05-12
Ilość postów: 8971

14865
wpis nr 1 550 865
[ CZCIONKA MONOSPACE ]


Jacku, ile masz "OR" w linii warunku?
I jak ustawisz tak dane że nie sprawdza się już pierwszy, a następnie tak, że nie sprawdza się dopiero ostatni dostajesz taki sam czas?
2025-02-01 (15:22)

status Jacek_K1961
Data rejestracji: 2017-03-29
Ilość postów: 13821

15220
wpis nr 1 550 867
[ CZCIONKA MONOSPACE ]

... a to odpowiedź z SI:
W wyrażeniu typu If A=B Or C=D Or F=J Then, w zależności od używanego języka programowania, sprawdzanie warunków może różnić się nieco, ale w większości przypadków działa to w ten sposób:

W większości języków programowania, takich jak VBA, Python, czy JavaScript, operator Or działa z tzw. krótkim-circuitingiem (ang. short-circuit evaluation). Oznacza to, że po napotkaniu pierwszego warunku, który jest prawdziwy, nie sprawdza się już pozostałych warunków.
Przykład:
Jeśli warunek A=B jest prawdziwy, wtedy pozostałe warunki (C=D i F=J) nie będą już sprawdzane, ponieważ cała instrukcja If już zostanie uznana za prawdziwą.


... a ja tak to zrobiłem:
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
Dim A, B, C, D, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z As Integer
Dim mainStopwatch As Stopwatch = New Stopwatch()
A = 31 : B = 1 : C = 2 : D = 3 : F = 4 : G = 5 : H = 6 : I = 7 : J = 8 : K = 9 : L = 10 : M = 11 : N = 12 : O = 13 : P = 14 : Q = 14 : R = 16 : S = 17 : T = 18 : U = 19 : V = 20 : W = 21 : X = 22 : Y = 23 : Z = 24
mainStopwatch.Start()
For xxx = 1 To 1000000000
If A = B Or B = C Or C = D Or D = F Or F = G Or G = H Or H = I Or I = J Or J = K Or K = L Or L = M Or M = N Or N = O Or O = P Or P = Q Then
' NIC
End If
Next
mainStopwatch.Stop()
MsgBox("Czas całkowity: " & mainStopwatch.Elapsed.TotalSeconds & " s")
' 4,367 S
End Sub
Na początku A=1, drugi raz zmieniłem A=31 a Q na 14

Najlepiej dla pewności spróbuj sam.

Czas dla A=B 4,355 i P=Q 4,368

--- wpis edytowano 2025-02-01 15:28 ---

2025-02-01 (15:26)

status fair_play
Data rejestracji: 2016-05-12
Ilość postów: 8971

14865
wpis nr 1 550 868
[ CZCIONKA MONOSPACE ]

777ch>
Ale mi chodzi o to czy jeżeli w linii warunków miałbyś 100 "OR"
to sprawdzanie takiej linii trwałoby tyle samo czasu gdy nie sprawdzałby się już pierwszy warunek czy jak dopiero ostatni.

No widzę że jeśli chodzi o VBA to Jacek z pomocą SI zaspokoił moją ciekawość.
Czy tak samo jest w pascalu?

--- wpis edytowano 2025-02-01 15:30 ---

2025-02-01 (15:29)

status Jacek_K1961
Data rejestracji: 2017-03-29
Ilość postów: 13821

15220
wpis nr 1 550 869
[ CZCIONKA MONOSPACE ]

Gości mam. Sorrki.
2025-02-01 (16:08)

status 777ch
Data rejestracji: 2005-11-07
Ilość postów: 23087

1386
wpis nr 1 550 875
[ CZCIONKA MONOSPACE ]

Ja na dziś już kończę
Jutro przy ..porannej ⏱️kawie
zajrzę 💻
2025-02-01 (18:48)

status fair_play
Data rejestracji: 2016-05-12
Ilość postów: 8971

14865
wpis nr 1 550 894
[ CZCIONKA MONOSPACE ]

777ch>
Ten pomysł wdrożyłem w kwestii pamięci, bo deklaracja tablicy AS Byte zwiększa jej wielkość circa 16 razy, ale to niewiele bo ilość kombinacji ze wzrostem v i t rośnie bardziej.
Myślę nad inną kwestią.
Pisałeś, że nie interesują cię braki jako takie, a tylko ich ilość.
Nad tym się zastanawiam.

Stworzyć tabelę unikalnych np. czwórek, policzyć ich ilość, odjąć od kombinacji i masz ilość braków.
Problem tkwi w słowie "unikalnych".
Wyśmiana tutaj funkcja SQLa daje sobie z tym doskonale radę.
Mając tabelę wszystkich czwórek funkcja:

Select DISTINCT * FROM czwórki INTO CURSOR unikalne
załatwia sprawę.
ile=RECCOUNT() podaje liczbę unikalnych.

No ale to SQL.
Nie wiem jak stworzyć taką funkcję w paskalu na tyle szybką, aby było o czym dyskutować.


--- wpis edytowano 2025-02-01 18:50 ---

2025-02-01 (19:01)

status 777ch
Data rejestracji: 2005-11-07
Ilość postów: 23087

1386
wpis nr 1 550 897
[ CZCIONKA MONOSPACE ]

ilość kombinacji ze wzrostem v i t rośnie bardziej

i to jest zapora czasowa
ja już kiedyś tam..... próbowałem różnych sposobów
ale myślę sobie ,że są rozwiązania.
Ale wybacz ,to katowanie procesorów
a nie ma z tego żadnego pożytku ,
oprócz ewentualnie ... krótkotrwałej satysfakcji.
Myślę ,że już zapewne stosują koledzy w paskalu
-->Parallel Programming Library
czyli równoległe działania

możesz poczytać
tu np.....
https://boringowl.io/blog/multithreading-co-to-jest-i-dlaczego-jest-wazny-w-programowaniu

SQL to nie..... "mój ogródek"


ja już dziś na bank nie wpadam
pozdrawiam

--- wpis edytowano 2025-02-01 19:05 ---

2025-02-02 (02:40)

status MultiTest
Data rejestracji: 2020-08-05
Ilość postów: 6561

16235
wpis nr 1 550 955
[ CZCIONKA MONOSPACE ]

..żeby polecenie SQL "Select DISTINCT * FROM czwórki INTO CURSOR unikalne" (chyba specyficzne dla Visual Fox Pro z lat 90-tych) załatwiało sprawę
to napierw trzeba połączyć się z bazą danych, gdzie musi być tabela o nazwie "Czwórki"(bez polskich znaków) albo "Szostki" składająca się z rekordów i zawierajaca przynajmniej jedną kolumnę z nazwanym polem.

To można prosto zrobić w Excelu, Pascalu i innych językach programowania używając na przykład funkcji która łączy się z bazą, przekazuje zapytanie i zwraca wynik - ilosci identycznych rekordów - do wyświetlenia użytkownikowi.

Gdyby jako tabelę zaimplementować wskazana tu matrycę systemu z LaJolla to wiersze z pobranego pliku z systemem byłyby rekordami i w zależności od dalszej implementacji można na przykład utworzyć 15 pól dla każdego rekordu L1,L2..L15 albo potraktować cały wiersz jako jedno pole.

|1 |2 |3 |4 |5 |6 |8 |12 |13 |20 |23 |24 |31 |32 |38|
'1 2 3 4 5 6 8 12 13 20 23 24 31 32 38'

Jednak system z LaJolla nie zawiera identycznych wierszy więc polecenie szukające duplikatów nic to nie zrobi.
I każdy wiersz w przypadku gwarancji "6" to 5005 unikalnych szóstek.
To kolejne wiersze dodają duplikaty - może warto zwrócić uwagę na różnice które w pascalu wyłapie szybko, choćby porównanie zbiorów TbyteSet w formie setwiersz1 * setwiersz2

Czy tabelę "czworki" albo "szostki" tworzyć z tych 5005 unikalnych szóstek dla każdego wiersza, 2857 *5005 ?
Tu SQL może faktycznie załatwić sprawę
Spróbować z szybką bazą SQLite
Króciutki program w Pascalu:
wrzucić komponent Table do dataModule
Wypełnić tabelę wszystkimi czwórkami lub np.szóstkami jak leci ? // tu może być trochę dłużej
Na końcu jedno proste polecenie SQL
i instrukcja Count := TOTAL_COMBINATIONS - FoundCombinationsCount;

Można też bez SQL i bez trzymania w pamieci ogromniastych tablic.

zdjęcie
2025-02-02 (09:07)

status 777ch
Data rejestracji: 2005-11-07
Ilość postów: 23087

1386
wpis nr 1 550 960
[ CZCIONKA MONOSPACE ]

duplikaty .......

MultiTest

"Duplikat" znaleziony "po raz pierwszy" jest unikatem.
Liczba duplikatów nie załatwia sprawy.
Bo dalej nie znasz ilości [4 czy 5 czy 6]..... które
nie wystepują w zbiorze.

Problem sprowadza sie oczywiscie do czasu
a najwięcej czasu zajmuje przetwarzanie
zbyt [wielu] !!! .......
linii sekwencjina kody.
2025-02-02 (10:54)

status 777ch
Data rejestracji: 2005-11-07
Ilość postów: 23087

1386
wpis nr 1 550 975
[ CZCIONKA MONOSPACE ]

fair_play,kleszek
nowa poczyta ,wersja v9

--uwaga!--
Ta sama nazwa pliku.

Simple SQlite demo with Free Pascal.
https://gist.github.com/pakLebah/277e0875a9ff50b9186fa9e166667add

albo podejrzeć akcję można tu:
https://paklebah.github.io/fpc-sqldb-dan-sqlite.html#demo-program

--- wpis edytowano 2025-02-02 10:56 ---

2025-02-02 (11:26)

status kleszek
Data rejestracji: 2006-05-27
Ilość postów: 4983

2047
wpis nr 1 550 978
[ CZCIONKA MONOSPACE ]

777ch, za program dziękuję. Nie zauważyłem żadnych błędów. Podmiana 1 liczby, czasem da nowego HIT-a, czasem nie, choć im mniej jest braków to tym trudniej uzyskać poprawę. Program na pewno się przyda. Będę śledził Twoje postępy w pracy nad ulepszeniem programu.
Pozdrawiam!
2025-02-02 (13:11)

status fair_play
Data rejestracji: 2016-05-12
Ilość postów: 8971

14865
wpis nr 1 550 991
[ CZCIONKA MONOSPACE ]


777ch>

O jakim programie pisze kleszek?
Rand_warr działa znakomicie i szybko
Jedna tylko uwaga, czy plik.txt nie mógłby być posortowany?
2025-02-02 (13:27)

status 777ch
Data rejestracji: 2005-11-07
Ilość postów: 23087

1386
wpis nr 1 550 993
[ CZCIONKA MONOSPACE ]

Mogę dodać sortowanie
gdy osiągnie [0]
ale to przy kolejnej okazji.
Można w locie zmieniać t=m
w górę i w dół
żeby zobaczyć czy przyrasta pokrycie.

pozdrawiam
2025-02-02 (14:50)

status 777ch
Data rejestracji: 2005-11-07
Ilość postów: 23087

1386
wpis nr 1 551 003
[ CZCIONKA MONOSPACE ]

fair_play

Gdybyś zechciał jeszcze zaangażować "swoje cenne komórki"
w kwestii takiej:

pierwszy raz klikamy warranty..............
a w zasadzie to nie klikamy
tylko zrobimy automat czyli zagnieżdzenie tego polecenia jako wstep !!!
i tu musi powstać zapis
w tablicy jednowymiarowej typu integer dla każdej linii
np:
pierwsza linia coveru --> tabrobo[0][0]:= value = suma unikatów występujacych 1x w linni 1
druga linia coveru --> tabrobo[1][0]:= value = suma unikatów występujacych 1x w linni 2

aby robo sprawdzał warranty tylko tej linii w której miesza liczby

a pokrycie składał z danych dostepnych .....czyli
z sum z pętli

od tabrobo[0][0] do tabrobo[ostatnia linia-1][0]

czyli np tak:

unikaty:=0;//zliczamy unikaty
for liniacov=0 to ostatnialiniacov-1 do
begin
if liniacov<> liniabuforowana then unikaty :=unikaty +tabrobo[ liniacov][0]

end;

i w trakcie :
unikaty:=unikaty + te z tylko i wyłacznie sprawdzanej 1-ej linii w której podmienia;

tyle że jak wyjdzie z tej linni
czyli skoczy do innej ...... to ta linia --> tabrobo[tapodmieniana][0]:= value=unikaty w tej podmienianej przez robo;


i tak w kółko.............



to zdecydowanie przyspieszy podmianę,
wiesz o co biega.......
Ty masz odpowiednie kwalifikacje do napisania takiej procedury
warrant5_robowork

czyli najpierw była by odpalana warranty5
a w trakcje akcji podmian tylko warrant5_robowork

mnie się chwilowo nie chce ,
ale chętnie zaaplikuję gotowe rozwiązanie do paskala.

no to taki temat na tapecie ,oprócz sortowania



--- wpis edytowano 2025-02-02 15:01 ---

2025-02-02 (15:02)

status kleszek
Data rejestracji: 2006-05-27
Ilość postów: 4983

2047
wpis nr 1 551 004
[ CZCIONKA MONOSPACE ]

fair_play, odbierz pocztę
| Dodaj wpis w tym temacie | Spis tematów | Wyniki lottoStrona: 1 2 ... 532 533 534 ... 560 561
Wyślij wiadomość do admina