Dodaj wpis w tym temacie
Spis tematów | Strona: 1 2 ... 324 325 326 ... 554 555 Wyślij wiadomość do admina |
Przewiń wpisy ↓ | moje ... oprogramowanie |
2020-04-28 (21:15)![]() Data rejestracji: 2016-05-12 Ilość postów: 8724 ![]() | wpis nr 1 288 947 [ CZCIONKA MONOSPACE ] "lecimy szóstki od pierwszej do ostatniej" Wszystkie z v czy wszystkie z ilość linii*(k po 6) ? --- wpis edytowano 2020-04-28 21:17 --- |
2020-04-28 (21:21)![]() Data rejestracji: 2005-11-07 Ilość postów: 22656 ![]() | wpis nr 1 288 949 [ CZCIONKA MONOSPACE ] wszystkie z v czyli wszystkie z os bo tu os=v for l1 := 1 to os - 5 do begin p[1] := l1; for l2 := l1 + 1 to os - 4 do begin p[2] := l2; for l3 := l2 + 1 to os - 3 do begin p[3] := l3; for l4 := l3 + 1 to os-2 do begin p[4] := l4; for l5 := l4 + 1 to os - 1 do begin p[5] := l5; for l6 := l5 + 1 to os do begin p[6] := l6; potem pętla [repeat] aż i osiągnie ilegen czyli ilegen=ile linii coveru czyli jak niżej i:=1; repeat --> czyli sprawdzamy czy 6-liczb <> 0 --> co oznacza że wszystkie 6-liczb w tablicy o-1 jedynkowej to 1,1,1,1,1,1 if ((tabbest[i, p[1]]<>0)and (tabbest[i, p[2]]<>0) and (tabbest[i, p[3]]<>0) and (tabbest[i, p[4]]<>0) and (tabbest[i, p[5]]<>0) and (tabbest[i, p[6]]<>0))and(maxtr<ilegen ) then break else inc(maxtr); inc(i); until( maxtr>=ilegen) ; --- wpis edytowano 2020-04-28 21:23 --- |
2020-04-28 (21:25)![]() Data rejestracji: 2005-11-07 Ilość postów: 22656 ![]() | wpis nr 1 288 950 [ CZCIONKA MONOSPACE ] ja wiem że powinienem przelecieć te co są i nadać im jakiś index a potem lecieć if index=0 ale tego nie zrobiłem ![]() |
2020-04-28 (21:26)![]() Data rejestracji: 2016-05-12 Ilość postów: 8724 ![]() | wpis nr 1 288 951 [ CZCIONKA MONOSPACE ] Ja w swojej mam inny pomysł, który po przełożeniu na pascala może być interesujący ![]() A do tego korzystam tylko z jednej jednowymiarowej tablicy. Posługuję się adresami. |
2020-04-28 (21:28)![]() Data rejestracji: 2005-11-07 Ilość postów: 22656 ![]() | wpis nr 1 288 952 [ CZCIONKA MONOSPACE ] no to string albo variant a zapisujesz pewnie wszystko jako string czyli może być też w excelu variant |
2020-04-28 (21:32)![]() Data rejestracji: 2005-11-07 Ilość postów: 22656 ![]() | wpis nr 1 288 959 [ CZCIONKA MONOSPACE ] fair_play wszystko zależy od pomysłu czasami proste odwołanie załatwia wszystko a wiele dodatkowych ifów pogrąża czas obliczeń ja nie mogę Cię prosić o Twoje pomysły bo to Twoje autorskie rozwiązania. sam widzisz że validator ma gorsze czasy niż mój program ale ja nie zamierzam na tym zarabiać i chyba nawet to niemożliwe spytaj Pasko ile zarobił na oprogramowaniu, gdyby na to liczyć to byś........ umarł z głodu --- wpis edytowano 2020-04-28 21:35 --- |
2020-04-28 (21:36)![]() Data rejestracji: 2016-05-12 Ilość postów: 8724 ![]() | wpis nr 1 288 962 [ CZCIONKA MONOSPACE ] na razie byte adr0 = Application.WorksheetFunction.Combin(liczb, traf) ReDim maska(adr0) For y = 1 To zakładów 'Cells(1, 41) = y For x1 = 1 To skreśleń - 5 l1 = mat(y, x1) If liczb - l1 > 5 Then adr1 = adr0 - Application.WorksheetFunction.Combin(liczb - l1, 6) Else adr1 = adr0 End If For x2 = x1 + 1 To skreśleń - 4 l2 = mat(y, x2) If liczb - l2 > 4 Then adr2 = adr1 - Application.WorksheetFunction.Combin(liczb - l2, 5) Else adr2 = adr1 End If For x3 = x2 + 1 To skreśleń - 3 l3 = mat(y, x3) If liczb - l3 > 3 Then adr3 = adr2 - Application.WorksheetFunction.Combin(liczb - l3, 4) Else adr3 = adr2 End If For x4 = x3 + 1 To skreśleń - 2 l4 = mat(y, x4) If liczb - l4 > 2 Then adr4 = adr3 - Application.WorksheetFunction.Combin(liczb - l4, 3) Else adr4 = adr3 End If For x5 = x4 + 1 To skreśleń - 1 l5 = mat(y, x5) If liczb - l5 > 1 Then adr5 = adr4 - Application.WorksheetFunction.Combin(liczb - l5, 2) Else adr5 = adr4 End If For x6 = x5 + 1 To skreśleń l6 = mat(y, x6) adr6 = adr5 - (liczb - l6) maska(adr6) = 1 ' maska(adr6) = maska(adr6) + 1 Next Next Next Next Next Next Next brak = 0 For y = 1 To adr0 If maska(y) = 0 Then brak = brak + 1 Next gwarancja = (adr0 - brak) / adr0 mat() to maska zakładów, a traf to oczywiście 6 jeśli użyć zaremowanej linii maska(adr6) = maska(adr6) + 1 to mamy ilość poszczególnych krotności wystąpienia szóstki jednak ta tablica adresów ogranicza pamięć dlatego pytałem o binarne operatory, bo wtedy można listę adresów podzielić przez 8 (ilość bitów w bajcie --- wpis edytowano 2020-04-28 21:51 --- |
2020-04-28 (21:46)![]() Data rejestracji: 2005-11-07 Ilość postów: 22656 ![]() | wpis nr 1 288 967 [ CZCIONKA MONOSPACE ] fair_play cokolwiek wkleisz dziś odpowiem dopiero jutro bo naprawdę ...... na dziś za chwilkę kończę --> z komputerem |
2020-04-28 (21:50)![]() Data rejestracji: 2005-11-07 Ilość postów: 22656 ![]() | wpis nr 1 288 968 [ CZCIONKA MONOSPACE ] widzę potencjał ale po 3 drinkach zawsze ......coś widzę ![]() dzięki za wstawki ,jutro odpowiem jak się --> temu .....dokładniej przyjrzę pozdrawiam |
2020-04-28 (22:28)![]() Data rejestracji: 2016-05-12 Ilość postów: 8724 ![]() | wpis nr 1 288 983 [ CZCIONKA MONOSPACE ] Opiszę krótko ideę. 1. Tworzę matrycę zakładów - mat() 2. Obliczam ilość kombinacji (v po 6) i deklaruję tablicę adresów maska() as BYTE o takim rozmiarze. (i tutaj powstaje problem pamięci) 3. Dla każdej linii rozpisu dla każdej kolejnej "szóstki" obliczam jej adres i pod tym adresem inkrementuję komórkę tablicy adresów. 4. Skanuję tablicę adresów i sumuję ilość poszczególnych wartości w kolejnych jej komórkach. wartość 0 - brak szóskti wartość > 1 oznacza że występuje przypisana temu adresowi szóstka o odczytanej krotności wystąpień w rozpisie. I to wszystko Mając konkretny adres brakującej szóstki w razie potrzeby łatwo odtworzyć tworzące ją liczby, ale to już inna procedura Zapomniałem dodać, że ustawiam Option Base 1 ![]() --- wpis edytowano 2020-04-28 22:35 --- |
2020-04-28 (22:47)![]() Data rejestracji: 2005-11-07 Ilość postów: 22656 ![]() | wpis nr 1 288 985 [ CZCIONKA MONOSPACE ] To mniej więcej tak jak działam na danych jakie mogę ująć w tablicach wielowymiarowych i tak do punktu 2 punkt 3 przemyślę jutro bo to....coś nowego pozdrawiam |
2020-04-29 (01:44)![]() Data rejestracji: 2005-11-07 Ilość postów: 22656 ![]() | wpis nr 1 289 003 [ CZCIONKA MONOSPACE ] fair_play W programie mam zadeklarowaną ogromną pamięć dla 6 tablic: tr6: array [1 .. 21, 2 .. 22, 3 .. 23, 4 .. 24, 5 .. 25, 6 .. 26]of integer; tr5: array [1 .. 45, 2 .. 46, 3 .. 47, 4 .. 48, 5 .. 49] of integer; tr4: array [1 .. 96, 2 .. 97, 3 .. 98, 4 .. 99] of integer; tr3: array [1 .. 97, 2 .. 98, 3 .. 99] of integer; tr2: array [1 .. 98, 2 .. 99] of integer; Twoja procedura również opiera się na odwołaniu do maska(adr0) .......czyli kolejnej tablicy której rozmiar będzie mniejszy ,ale musi zawierać co najmniej --> =Combine(liczb, traf)..aby odnotować index kolejnej szóstki -->czyli paskalowskie Combination(v,6); aby na końcu sprawdzić czy index[csn] danej 6-ki został odczytany For y = 1 To adr0 If maska(y) = 0 Then brak = brak + 1 Next To jest na ten moment problem i dlatego wcześniej ,obliczenia gwarancji w tablicach oparłem o ich możliwy rozmiar sumaryczny a ponieważ nic więcej się....."nie zmieści" dla V którego tablice nie pomieszczą zrobiłem tylko sprawdzenie......wolne strasznie bo bez odwołania do indeksów gdybym chciał teraz to pozmieniać to albo kompletne przerobienie z specjalizacją dla k albo zrobienie osobnych programików dla gwar 6,gwar 7 itd. Zawsze chodzi o braki sprzętowe, albo o pamięć, i również jej umiejętną alokację Chyba sobie na razie odpuszczę przeróbki, bo musiałbym sporo pozmieniać , aby zrobić --> przestrzeń pamięciową, bo pamięć zasadnicza nie jest zwalniana jedynie ta lokalna..... nie mniej zainteresowałeś mnie trochę choć podobne rozwiązania mam już w excelu tam dla każdej 6-ki jest obliczany csn co nieco spowalnia , ale głównym problemem dla dużych liczb była i jest jest własnie --> tablica csn-ów czyli indeksów dobrej nocki |
2020-04-29 (09:48)![]() Data rejestracji: 2016-05-12 Ilość postów: 8724 ![]() | wpis nr 1 289 028 [ CZCIONKA MONOSPACE ] 777ch> Mój dziadek mawiał również "kto rano wstaje...ten się nie wyśpi", ale zaryzykowałem. ![]() Pisałem, że przy tej metodzie krytyczną sprawą jest dostępna pamięć, ale... Swego czasu, jeszcze w czasach "ATARI" pisałem programy bezpośrednio w kodzie maszynowym bez assemblera (Motorola 6502), Do dziś pamiętam kody tego procesora. Np skok bezwzględny oznaczała instrukcja 4C xx xx, wywołanie procedury 20 xx xx, gdzie xx xx to adresy. ![]() I tam przy użyciu operatorów AND i OR można było sprawdzić czy jest ustawiony, lub ustawić odpowiedni bit w komórce pamięci Np AND 30 sprawdza czy jest ustawiony 6-ty bit, a OR 30 ustawia ten bit (nawet jeśli jest już ustawiony. Nie wiem czy w Pascalu można operować na bitach, ale mając do dyspozycji 8 lub 16 bitów można podzielić tablicę adresów na 8 lub 16 części, za pomocą MOD i DIV zapalać odpowiedni jej bit i w ten sposób zmniejszyć zapotrzebowanie na pamięć 8-mio lub 16-to krotnie. A pomijając kwestię pamięci to jak wygląda mój pomysł pod względem czasu obliczeń ? Pozdrawiam ![]() --- wpis edytowano 2020-04-29 10:03 --- |
2020-04-29 (10:34)![]() Data rejestracji: 2016-05-12 Ilość postów: 8724 ![]() | wpis nr 1 289 034 [ CZCIONKA MONOSPACE ] 777ch> Przysłowie dziadka się sprawdziło bo oczywista pomyłka ![]() AND 30 sprawdza czy są ustawione jednocześnie 5-ty i 6-ty bit, a OR 30 ustawia te bity nawet jeśli są już ustawione. Do sprawdzania i ustawiania pojedyńczych bitów powinno być AND 01, 02, 04,08,10,20,40, 80 (kod szestnastkowy). |
2020-04-29 (12:04)![]() Data rejestracji: 2005-11-07 Ilość postów: 22656 ![]() | wpis nr 1 289 050 [ CZCIONKA MONOSPACE ] HEJ Manipulacje bitami,działania na ciągach bitów to ..... obawiam się biała kartka w moim kajecie . Dziadek ma zawsze rację. ------------ A pomijając kwestię pamięci to jak wygląda mój pomysł pod względem czasu obliczeń ? ------------ pomysł jest dobry...... tylko komu i na co to potrzebne ......... żartuję sobie ,i ..... jeszcze śpię --- wpis edytowano 2020-04-29 12:10 --- |
2020-04-29 (12:06)![]() Data rejestracji: 2005-11-07 Ilość postów: 22656 ![]() | wpis nr 1 289 051 [ CZCIONKA MONOSPACE ] Ten mały Bit ,może być nośnikiem informacji, ale trzeba mieć z tym jakieś obycie Muszę zapewne ....iść na kurs. ![]() |
2020-04-29 (12:43)![]() Data rejestracji: 2005-11-07 Ilość postów: 22656 ![]() | wpis nr 1 289 056 [ CZCIONKA MONOSPACE ] fair_play Zapewne zaliczasz dodatkową drzemkę ![]() sądzę ,że tablice wielowymiarowe,choć pamięciożerne to ....jednak rozwiązanie superszybkie ,bo to właściwie operacje wypełnienia na bazie linii coveru a potem tylko policzenie pustych Twoja wiedza w temacie bitów ,może pozwoli Ci na uzyskanie podobnych czasów, bez drastycznego obciążania pamięci.... co na pewno jest interesujące, ja w temacie bitów jestem jak winda... na poziomie "0" miłego dnia,idę [drugi raz] z psem, potem kawa --- wpis edytowano 2020-04-29 12:44 --- |
2020-04-29 (13:10)![]() Data rejestracji: 2016-05-12 Ilość postów: 8724 ![]() | wpis nr 1 289 058 [ CZCIONKA MONOSPACE ] 777ch> Gdyby zrezygnować z obliczania krotności występowania danej szóstki w rozpisie,a pozostać tylko przy sprawdzaniu jej występowania to Excelowską zabawę z bitami można by zorganizować tak (dla uproszczenia przedstawię ideę na małych liczbach ![]() Powiedzmy że mamy do dyspozycji 800 000 pamięci i tworzymy dwubajtową (16 bitów) tablicę adresów o tym rozmiarze. Tym sposobem mamy do dyspozycji 800 000 * 16 = 12 800 000 dostępnych adresów. Jak zapisać w niej adr6=2 345 678 ? Obliczamy wiersz matrycy n= QUOTIENT(2 345 678:800 000), n=2 czyli zapiszemy szóstkę w drugim wierszu matrycy (na drugim bicie). A na jakiej pozycji ? wyliczamy ją jako adres=MOD(adr6:800 000) -> adres=745 678 I teraz cała zabawa ![]() Ponieważ nie dysponujemy binarnym OR musimy go spreparować. Pod wyliczonym adresem 745 687 dodajemy wartość 2^(n-1) -> tzn 1 w pierwszym wierszu, 2 w drugim, 4 w trzecim, 8 w czwartym itd Ale najpierw musimy sprawdzić czy już tam nie dodaliśmy tej wartości (nie zarejestrowaliśmy już takiej "szóstki"). I tutaj cały problem jak to sprawdzić. Jeszcze nie wymyśliłem ![]() Może dodawać 2^(n-1) +1 żeby nie była to wielokrotność 2 ? Popróbuję ![]() Pozdrawiam --- wpis edytowano 2020-04-29 13:20 --- |
2020-04-29 (13:31)![]() Data rejestracji: 2005-11-07 Ilość postów: 22656 ![]() | wpis nr 1 289 061 [ CZCIONKA MONOSPACE ] Piszesz ciekawie ..pisz dalej ![]() musimy sprawdzić czy już tam nie dodaliśmy tej wartości (nie zarejestrowaliśmy już takiej "szóstki" no a zapytanie pod adres to już operacja i ułamki czasu jadę do sklepu ..... proza życia ![]() |
2020-04-29 (13:43)![]() Data rejestracji: 2016-05-12 Ilość postów: 8724 ![]() | wpis nr 1 289 065 [ CZCIONKA MONOSPACE ] No właśnie w tym cały problem. Operatory binarne AND i OR zwracają wartość liczbową a nie logiczną "True, False". Np 7 AND 8 = 0, a 7 AND 10 = 2 7 OR 8 = 15, a 7 OR 3 = 7 oczywiście podane tytaj "liczby" są traktowane dwójkowp: 7 > 0000|0111 8 > 0000|1000 operator AND (iloczyn binarny) "mnoży" poszczególne bity (sprawdza czy na danej pozycji w obu porównywanych wartościach oba bity są ustawione (1), a więc w efekcie otrzymamy 0000|0000 operator OR (suma binarna) "porównuje" bity na określonych pozycjach więc wystarczy że dany bit chociaż w jednej wartości jest ustawiony to jest on ustawiony i w sumie. Dlatego 7 OR 8 => 0000|0111 OR 0000|1000 = 0000|1111 = 15 ![]() Lubiłem tę zabawę ![]() --- wpis edytowano 2020-04-29 14:00 --- |
| Dodaj wpis w tym temacie | Spis tematów | Wyniki lotto | Strona: 1 2 ... 324 325 326 ... 554 555 Wyślij wiadomość do admina |