eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Ilość wypowiedzi w tym wątku: 41

  • 1. Data: 2019-12-06 23:25:55
    Temat: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
    Od: osobliwy nick <o...@g...com>

    Chcę rozwiązywać równania typu:

    a*2^(x+y)+b*g^y = 1

    rozszerzonym algorytmem euklidesa dla losowych x+y=128, będących liczbami naturalnymi
    z zerem. Czy ktoś ma pomysł jak ustalić ile to może średnio zająć komputerowi dla
    całkowitego "g" wynoszącego powiedzmy
    5? Dodam tylko, że nie umiem programować, więc nie jestem w stanie napisać sobie
    żadnych testów (dopiero rozważam zlecenie napisania komuś programu).

    Tutaj jest przykładowa implementacja rozszerzonego algorytmu euklidesa:

    http://www.algorytm.edu.pl/rozszerzony-algorytm-eukl
    idesa.html

    Niestety nie wiem jak policzyć średni przypadek algorytmu. A kombinacji x+y równych
    128 jest 128:

    0+128=128
    1+127=128
    2+126=128
    ...
    64+64=128
    65+65=128
    ...
    128+0=128

    Więc do policzenia byłoby 128 przypadków użycia tego rozszerzonego algorytmu
    euklidesa. Chyba, że można to oszacować jak szybciej?


  • 2. Data: 2019-12-07 20:58:31
    Temat: Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
    Od: g...@g...com

    W dniu piątek, 6 grudnia 2019 23:25:56 UTC+1 użytkownik osobliwy nick napisał:
    > Chcę rozwiązywać równania typu:
    >
    > a*2^(x+y)+b*g^y = 1
    >
    > rozszerzonym algorytmem euklidesa dla losowych x+y=128, będących liczbami
    naturalnymi z zerem. Czy ktoś ma pomysł jak ustalić ile to może średnio zająć
    komputerowi dla całkowitego "g" wynoszącego powiedzmy
    > 5?

    Tak. Napisać program i to zmierzyć.

    (Jeżeli dziedzina jest mała, to można sobie stabelaryzować wynik, i wówczas
    "wyliczenie" zajmie tyle, ile wydobycie danych z tablicy.)

    > Dodam tylko, że nie umiem programować, więc nie jestem w stanie napisać sobie
    żadnych testów (dopiero rozważam zlecenie napisania komuś programu).

    A dlaczego nie rozważysz "nauczenia się programowania"?
    Brzmi to dość górnolotnie, ale nauczenie się jakiegoś języka w stopniu umożliwiającym
    Ci realizację rzeczy, o które pytasz, raczej nie zajmie Ci więcej czasu, niż
    napisanie takiego posta.


  • 3. Data: 2019-12-07 21:44:25
    Temat: Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
    Od: osobliwy nick <o...@g...com>

    W dniu sobota, 7 grudnia 2019 20:58:32 UTC+1 użytkownik g...@g...com napisał:
    > W dniu piątek, 6 grudnia 2019 23:25:56 UTC+1 użytkownik osobliwy nick napisał:
    > > Chcę rozwiązywać równania typu:
    > >
    > > a*2^(x+y)+b*g^y = 1
    > >
    > > rozszerzonym algorytmem euklidesa dla losowych x+y=128, będących liczbami
    naturalnymi z zerem. Czy ktoś ma pomysł jak ustalić ile to może średnio zająć
    komputerowi dla całkowitego "g" wynoszącego powiedzmy
    > > 5?
    >
    > Tak. Napisać program i to zmierzyć.
    >
    > (Jeżeli dziedzina jest mała, to można sobie stabelaryzować wynik, i wówczas
    "wyliczenie" zajmie tyle, ile wydobycie danych z tablicy.)
    >
    > > Dodam tylko, że nie umiem programować, więc nie jestem w stanie napisać sobie
    żadnych testów (dopiero rozważam zlecenie napisania komuś programu).
    >
    > A dlaczego nie rozważysz "nauczenia się programowania"?
    > Brzmi to dość górnolotnie, ale nauczenie się jakiegoś języka w stopniu
    umożliwiającym Ci realizację rzeczy, o które pytasz, raczej nie zajmie Ci więcej
    czasu, niż napisanie takiego posta.

    Chodzi to za mną od dawna, ale to osobny temat. Miałem podstawy C na studiach, ale
    zapomniałem właściwie wszystkiego, nie byłem też szczególnie zdolnym studentem,
    jednocześnie nie miałem też szczególnie zdolnych prowadzących zajęcia (a to wiem od
    kolegów przybyłych do nas z Politechniki, studiujących jednocześnie inne kierunki,
    którzy krytykowali sposób nauczania na moim kierunku). W ostatnich latach zaś każdą
    wolną chwilę poświęcałem na naukę czegoś zupełnie innego - rynków finansowych i
    tradingu. I tak odkładałem to programowanie przez lata. Jednocześnie już na etapie
    analizy i testowania strategii tradingowych potrzebowałem... tak - umieć programować.
    Zleciłem wówczas dosyć szerokie testy i napisanie różnych programów pewnemu
    programiście. Ostatecznie zderzyliśmy się z teorią chaosu i efektem motyla - bo
    wykresy kursów łudząco przypominają błądzenie losowe (proces Wienera) i jest masa
    naukowych teorii i modeli traktująca o efektywności rynków finansowych i zachowaniu
    się kursu. Naiwni wtedy byliśmy, ale przynajmniej zyskałem fajnego znajomego.

    Wracając do tematu. Może to jest ten moment. Na pewno masz rację, że powinienem to
    zrobić. Zwłaszcza, że poznałem z czym to się je i jakieś tam programy kilka lat temu
    nawet pisałem (na studiach i po nich). A już nie pierwszy raz zlecam komuś pisanie
    jakiegoś programu. Kiedyś zleciłem napisanie programu, który będzie poszukiwał liczb
    Crandalla, które nie będą liczbami Wieferich (problem z zakresu matematyki
    teoretycznej). Potrafiłem zostawić komputer odpalony na tydzień czasu, bo wzór, który
    to liczył przebiegał po ogromnej liczbie wariacji wielu zmiennych. Niczego niestety
    nie znalazłem.

    Dzisiaj jednak mam inne już nieco dalej idące plany. Docelowo chcę założyć firmę,
    startup, która ma stworzyć program szyfrujący (na podstawie zaproponowanego przez
    mnie algorytmu) i opatentować to rozwiązanie, czy to w postaci implementacji, czy
    ogólnie algorytmu. Nie sądzę, że będę w stanie zrealizować ten plan samodzielnie,
    jako początkujący programista. Tutaj potrzeba ludzi, którzy robią to od lat, a
    najlepiej takich z doświadczeniem w kryptografii. I wobec konieczności zlecenia
    napisania takiego programu (a na początek testów), czy stworzenia całego
    oprogramowania, uczenie się programowania samodzielnie jest trochę jak zakładanie
    własnego zespołu kolarskiego i jednoczesne uczenie się jazdy na rowerze. Wiadomo, że
    prezes, czy sponsor zespołu sam nigdy na takiej kolarzówce nie będzie się tam ścigał
    razem z zawodnikami, jak bardzo by się nie starał.


  • 4. Data: 2019-12-07 22:38:59
    Temat: Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
    Od: g...@g...com

    W dniu sobota, 7 grudnia 2019 21:44:27 UTC+1 użytkownik osobliwy nick napisał:
    > W dniu sobota, 7 grudnia 2019 20:58:32 UTC+1 użytkownik g...@g...com napisał:
    > > W dniu piątek, 6 grudnia 2019 23:25:56 UTC+1 użytkownik osobliwy nick napisał:
    > > > Chcę rozwiązywać równania typu:
    > > >
    > > > a*2^(x+y)+b*g^y = 1
    > > >
    > > > rozszerzonym algorytmem euklidesa dla losowych x+y=128, będących liczbami
    naturalnymi z zerem. Czy ktoś ma pomysł jak ustalić ile to może średnio zająć
    komputerowi dla całkowitego "g" wynoszącego powiedzmy
    > > > 5?
    > >
    > > Tak. Napisać program i to zmierzyć.
    > >
    > > (Jeżeli dziedzina jest mała, to można sobie stabelaryzować wynik, i wówczas
    "wyliczenie" zajmie tyle, ile wydobycie danych z tablicy.)
    > >
    > > > Dodam tylko, że nie umiem programować, więc nie jestem w stanie napisać sobie
    żadnych testów (dopiero rozważam zlecenie napisania komuś programu).
    > >
    > > A dlaczego nie rozważysz "nauczenia się programowania"?
    > > Brzmi to dość górnolotnie, ale nauczenie się jakiegoś języka w stopniu
    umożliwiającym Ci realizację rzeczy, o które pytasz, raczej nie zajmie Ci więcej
    czasu, niż napisanie takiego posta.
    >
    > Chodzi to za mną od dawna, ale to osobny temat. Miałem podstawy C na studiach, ale
    zapomniałem właściwie wszystkiego, nie byłem też szczególnie zdolnym studentem,
    jednocześnie nie miałem też szczególnie zdolnych prowadzących zajęcia (a to wiem od
    kolegów przybyłych do nas z Politechniki, studiujących jednocześnie inne kierunki,
    którzy krytykowali sposób nauczania na moim kierunku). W ostatnich latach zaś każdą
    wolną chwilę poświęcałem na naukę czegoś zupełnie innego - rynków finansowych i
    tradingu. I tak odkładałem to programowanie przez lata. Jednocześnie już na etapie
    analizy i testowania strategii tradingowych potrzebowałem... tak - umieć programować.
    Zleciłem wówczas dosyć szerokie testy i napisanie różnych programów pewnemu
    programiście. Ostatecznie zderzyliśmy się z teorią chaosu i efektem motyla - bo
    wykresy kursów łudząco przypominają błądzenie losowe (proces Wienera) i jest masa
    naukowych teorii i modeli traktująca o efektywności rynków finansowych i zachowaniu
    się kursu. Naiwni wtedy byliśmy, ale przynajmniej zyskałem fajnego znajomego.
    >
    > Wracając do tematu. Może to jest ten moment. Na pewno masz rację, że powinienem to
    zrobić. Zwłaszcza, że poznałem z czym to się je i jakieś tam programy kilka lat temu
    nawet pisałem (na studiach i po nich). A już nie pierwszy raz zlecam komuś pisanie
    jakiegoś programu. Kiedyś zleciłem napisanie programu, który będzie poszukiwał liczb
    Crandalla, które nie będą liczbami Wieferich (problem z zakresu matematyki
    teoretycznej). Potrafiłem zostawić komputer odpalony na tydzień czasu, bo wzór, który
    to liczył przebiegał po ogromnej liczbie wariacji wielu zmiennych. Niczego niestety
    nie znalazłem.
    >
    > Dzisiaj jednak mam inne już nieco dalej idące plany. Docelowo chcę założyć firmę,
    startup, która ma stworzyć program szyfrujący (na podstawie zaproponowanego przez
    mnie algorytmu) i opatentować to rozwiązanie, czy to w postaci implementacji, czy
    ogólnie algorytmu. Nie sądzę, że będę w stanie zrealizować ten plan samodzielnie,
    jako początkujący programista. Tutaj potrzeba ludzi, którzy robią to od lat, a
    najlepiej takich z doświadczeniem w kryptografii. I wobec konieczności zlecenia
    napisania takiego programu (a na początek testów), czy stworzenia całego
    oprogramowania, uczenie się programowania samodzielnie jest trochę jak zakładanie
    własnego zespołu kolarskiego i jednoczesne uczenie się jazdy na rowerze. Wiadomo, że
    prezes, czy sponsor zespołu sam nigdy na takiej kolarzówce nie będzie się tam ścigał
    razem z zawodnikami, jak bardzo by się nie starał.

    Jest taka książka, "Od dobrego do wielkiego", w której pojawia się koncepcja
    "przywódcy 5 poziomu". Dziwne nazwy na bok, chodzi o to, że autor przeanalizował
    wiele firm, które odniosło spektakularny sukces, i mu wyszło, że najlepsi przywódcy
    byli ekspertami w dziedzinie, w której działała firma.

    (Może brzmi to trywialnie, ale wiele firm zatrudnia jako liderów "etatowych
    menadżerów", którzy "znają się tylko na zarządzaniu" i mają bardzo niewielką wiedzę
    dziedzinową).

    W moim odczuciu programowanie dobrze uczy trzeźwości w odfiltrowywaniu magicznego
    myślenia od tego, co jest rzeczywiście możliwe do wykonania.

    Zwłaszcza te pytania, które zadajesz, po prostu się proszą o to, żebyś to sprawdził
    samodzielnie. To dobry pretekst, żeby przysiąść i odświeżyć sobie wiedzę ze studiów.
    To jest naprawdę na wyciągnięcie ręki.

    Co do "niezbyt zdolnych prowadzących zajęcia", to nie jest to dobra wymówka.
    Ja większości zajęć z polibudy też nie wspominam jakoś rewelacyjnie - na
    uniwersytecie studiowało mi się dużo przyjemniej (zwłaszcza filozofię, ale nawet na
    infie nie było tak źle).

    Ale to na polibudzie mieliśmy jednego profesora, który w kółko mówił, że "albo ktoś
    jest samoukiem, albo nieukiem". Nikt Cię niczego nie nauczy. Sam musisz się nauczyć.
    Dobry nauczyciel może tylko stworzyć okazję do zainteresowania się przedmiotem.

    Dlatego - jasne - dobrze by było, żebyś znalazł sobie jakiegoś magika od
    optymalizacji programu pod konkretny sprzęt, bo tutaj jest dużo szczególików, których
    nie powinieneś musieć poznawać. Ale napisanie programu w C czy chociaż Pythonie
    powinieneś mieć w małym palcu, bo to są proste rzeczy.

    Python nawet wspiera duże liczby, więc w przeciwieństwie do C nie jesteś ograniczony
    rozmiarem rejestrów.


  • 5. Data: 2019-12-08 20:24:26
    Temat: Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
    Od: Maciej Sobczak <s...@g...com>

    > > Dodam tylko, że nie umiem programować,
    >
    > A dlaczego nie rozważysz "nauczenia się programowania"?

    Przychylam się do tej sugestii.

    Wygląda na to, że potrafisz racjonalnie analizować a nawet skonstruować algorytm
    obliczenia czegoś. Właściwie od tego miejsca do napisania programu, który
    demonstruje/testuje Twoje pomysły jest tylko prosty krok rzemieślniczy. Możesz się
    nawet zdziwić gdy zobaczysz, że prezycyjny opis algorytmu jest łatwiejszy w jakimś
    języku programowania, niż w języku naturalnym - a przecież zlecając komuś napisanie
    programu musiałbyś mu najpierw wytłumaczyć, co ma napisać.
    Więc po co sobie utrudniać?

    Oczywiście możesz sobie zatrudnić kiedyś specjalistów od wydziwiania i różnego
    rodzaju oszczędności (czasu, energii elektrycznej, kosztów produkcji/wdrożenia,
    itd.), ale zdolność napisania referencyjnej implementacji i tak będzie Ci potrzebna,
    żebyś mógł być dla swojego zespołu liderem a nie tylko szefem.

    Więc do dzieła. Może nawet faktycznie Python będzie tu racjonalnym wyborem - dla
    Ciebie. Ale biorąc pod uwagę cel, który chcesz osiągnąć, nie zatrudniaj programistów,
    którzy znają tylko Pythona.

    --
    Maciej Sobczak * http://www.inspirel.com


  • 6. Data: 2019-12-11 04:24:33
    Temat: Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
    Od: osobliwy nick <o...@g...com>

    > Jest taka książka, "Od dobrego do wielkiego", w której pojawia się koncepcja
    "przywódcy 5 poziomu". Dziwne nazwy na bok, chodzi o to, że autor przeanalizował
    wiele firm, które odniosło spektakularny sukces, i mu wyszło, że najlepsi przywódcy
    byli ekspertami w dziedzinie, w której działała firma.

    Pytanie, czy firma tworzącą program szyfrujący powinna mieć na czele bardziej
    programistę, czy specjalistę od algorytmów szyfrujących. To rzadko idzie w parze,
    aczkolwiek wiadomo, że najlepiej, aby potrafił jedno i drugie.

    > Co do "niezbyt zdolnych prowadzących zajęcia", to nie jest to dobra wymówka.
    > Ja większości zajęć z polibudy też nie wspominam jakoś rewelacyjnie - na
    uniwersytecie studiowało mi się dużo przyjemniej (zwłaszcza filozofię, ale nawet na
    infie nie było tak źle).
    > Ale to na polibudzie mieliśmy jednego profesora, który w kółko mówił, że "albo ktoś
    jest samoukiem, albo nieukiem". Nikt Cię niczego nie nauczy. Sam musisz się nauczyć.
    Dobry nauczyciel może tylko stworzyć okazję do zainteresowania się przedmiotem.

    To wiadomo. Rzecz w tym, że wówczas po prostu zniechęciłem się nieco do
    programowania. Nauka szła ciężko i prowadzący w tym szczególnie nie pomagali (byli
    opryskliwi). Co więcej wszyscy uczestnicy zajęć byli już po jakichś kursach
    programowania na swoich drugich kierunkach, które studiowali na Politechnice, więc
    łapali wszystko w lot. Ja natomiast stwierdziłem, że chyba nie jestem powołany do
    programowania, skoro tak kiepsko mi idzie w porównaniu z nimi. Fakt, że włożyłem mimo
    wszystko wówczas w to niewiele pracy, raczej niezbędne minimum.


  • 7. Data: 2019-12-11 04:40:26
    Temat: Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
    Od: osobliwy nick <o...@g...com>


    > Przychylam się do tej sugestii.
    >
    > Wygląda na to, że potrafisz racjonalnie analizować a nawet skonstruować algorytm
    obliczenia czegoś. Właściwie od tego miejsca do napisania programu, który
    demonstruje/testuje Twoje pomysły jest tylko prosty krok rzemieślniczy. Możesz się
    nawet zdziwić gdy zobaczysz, że prezycyjny opis algorytmu jest łatwiejszy w jakimś
    języku programowania, niż w języku naturalnym - a przecież zlecając komuś napisanie
    programu musiałbyś mu najpierw wytłumaczyć, co ma napisać.
    > Więc po co sobie utrudniać?

    Miałem taki moment powrotu do programowania. Napisałem nawet pierwszy program od lat.
    Chodziło o ten problem:

    http://cpp0x.pl/forum/temat/?id=22559

    Poległem jednak wtedy. Napisanie tego było dla mnie nie do przeskoczenia, a jak
    zobaczyłem kod, którego oczywiście nie rozumiałem, który ktoś napisał ot tak, po
    krótkim czasie od ręki, stwierdziłem, że raczej żadnym rozsądnym czasie nie osiągnę
    takiego poziomu. Ostatecznie na podstawie tego co mi tam zasugerowano zleciłem komuś
    odpłatnie napisanie tego programu. Programista z tego co pamiętam i tak napisał cały
    kod od początku po swojemu, ale był on nie mniej złożony od tego, który podpowiadano
    mi w wątku.

    I wtedy z poziomu dosyć wysokiej motywacji popadłem w marazm i zostawiłem
    programowanie na kolejne lata.

    > Oczywiście możesz sobie zatrudnić kiedyś specjalistów od wydziwiania i różnego
    rodzaju oszczędności (czasu, energii elektrycznej, kosztów produkcji/wdrożenia,
    itd.), ale zdolność napisania referencyjnej implementacji i tak będzie Ci potrzebna,
    żebyś mógł być dla swojego zespołu liderem a nie tylko szefem.

    No tak, masz rację.

    > Więc do dzieła. Może nawet faktycznie Python będzie tu racjonalnym wyborem - dla
    Ciebie. Ale biorąc pod uwagę cel, który chcesz osiągnąć, nie zatrudniaj programistów,
    którzy znają tylko Pythona.

    Ok. Zmotywowaliście mnie. Będę myślał w takim razie o powrocie do tematu
    programowania. A właściwie o zaczęciu od początku, bo pomimo, że wiem co to
    programowanie, jak to się robi itd., to moje praktycznie umiejętności są znikome. Co
    do języka myślałem o C++, bo często mam do policzenia jakieś matematyczne rzeczy, a
    ten język kojarzy mi się z takimi inżynierskimi i matematycznymi zastosowaniami. Poza
    tym łatwo znaleźć materiały na jego temat.


  • 8. Data: 2019-12-11 12:53:13
    Temat: Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
    Od: g...@g...com

    W dniu środa, 11 grudnia 2019 04:40:28 UTC+1 użytkownik osobliwy nick napisał:
    > > Przychylam się do tej sugestii.
    > >
    > Ok. Zmotywowaliście mnie. Będę myślał w takim razie o powrocie do tematu
    programowania. A właściwie o zaczęciu od początku, bo pomimo, że wiem co to
    programowanie, jak to się robi itd., to moje praktycznie umiejętności są znikome. Co
    do języka myślałem o C++, bo często mam do policzenia jakieś matematyczne rzeczy, a
    ten język kojarzy mi się z takimi inżynierskimi i matematycznymi zastosowaniami. Poza
    tym łatwo znaleźć materiały na jego temat.

    Ja osobiście raczej bym odradzał C++ do Twoich zastosowań.
    Jest to język nadmiernie skomplikowany, i nawet nie za dobrze radzi sobie z liczbami
    (domyślnie implementuje arytmetykę modulo 2^32 albo 2^64)

    Raczej bym polecał albo Racket, bo jest bardzo prosty i jest dla niego dużo dobrych
    materiałów dydaktycznych, a do tego wspiera od razu arytmetykę o dowolnej precyzji
    oraz liczby wymierne. Spośród materiałów dydaktycznych jest książka "How To Design
    Programs", dostępna za darmo tutaj (jakościowo o rzędy wielkości lepsza od
    jakichkolwiek materiałów o C++, z jakimi miałem styczność):

    https://htdp.org/2019-02-24/

    Na podstawie tej książki powstał kurs o systematycznym projektowaniu programów:

    https://www.youtube.com/channel/UC7dEjIUwSxSNcW4PqNR
    QW8w

    Jest też nieco starsza, ale wciąż nie chcąca się zestarzeć książka "Structure and
    Interpretation of Computer Programs" (wydana swego czasu też po Polsku przez WNT jako
    "Struktura i Interpretacja Programów Komputerowych"), udostępniona za darmo na
    stronie MIT:

    https://mitpress.mit.edu/sites/default/files/sicp/in
    dex.html

    Kurs, na potrzeby którego książka została opracowana, również można znaleźć na
    youtubie:

    https://www.youtube.com/watch?v=-J_xL4IGhJA&list=PLE
    18841CABEA24090

    Warto ewentualnie rozważyć język Haskell, który jest bardziej złożony, ale ma dość
    wydajną implementacje, i jest też sobie w stanie poradzić z dużymi liczbami (i pod
    względem składni mocno przypomina klasyczną notację matematyczną).

    Rozwiązanie podlinkowanego przez Ciebie przykładu wyglądałoby tak.
    Najpierw definiujemy sobie iloczyn kartezjański listy list, żeby móc generować ciągi
    wartośći x1, ..., xN:

    cartprod [] = [[]]
    cartprod (xs:xss) = [x:ys | x <- xs, ys <- cartprod xss]

    wyprowadzenie powyższej definicji możesz znaleźć tutaj:
    http://myhaskelljournal.com/cartesian-product-of-lis
    ts/

    następnie definiujemy produkt kartezjański

    cartpow l n = cartprod $ take n $ repeat l

    gdzie (repeat l) tworzy nieskończoną listę powtórzeń listy l, zaś take n bierze tylko
    n początkowych elementów.

    Ponieważ jest u Ciebie warunek, że

    x1 >= x2 >= ... >= xN

    to możemy wybrać tylko te punkty z iloczynu kartezjańskiego, których wartościami są
    nierosnące ciągi:

    nonasc (x:y:zs) = x >= y && nonasc (y:zs)
    nonasc _ = True

    Wreszcie, funkcja budująca zbiory punktów [x1, ..., xN] może mieć postać:

    dom x n = [p | p <- (cartpow [0 .. x] n), nonasc p]

    czyli zbiór wszystkich punktów z potęgi kartezjańskiej, których kolejne współrzędne
    tworzą ciąg nierosnący.

    Można łatwo sprawdzić, że np. (dom 3 2) da nam wartość

    [[0,0],[1,0],[1,1],[2,0],[2,1],[2,2],[3,0],[3,1],[3,
    2],[3,3]]

    I teraz chcemy znaleźć elementy, które spelniają Twoje kryterium.
    Żeby Haskell obsłużył liczby wymierne, trzeba załadować moduł Data.Ratio:

    import Data.Ratio

    Operator dzielenia wymiernego liczb całkowitych jest wówczas wyrażany symbolem %.

    Pozwala to zdefiniować nam zbiór interesujących Cię liczb jako:

    ws x y p = [(sum [(p^xn)%(2^xn) | xn <- seq]) * ((2^(y-1))%(2^(x+y)-p^y))
    | seq <- (dom x (y-1))]

    i wtedy możemy sprawdzić, że wyrażenie (ws 3 3 3) da nam listę

    [8 % 37,
    10 % 37,
    12 % 37,
    13 % 37,
    15 % 37,
    18 % 37,
    35 % 74,
    39 % 74,
    45 % 74,
    27 % 37]

    Jest to inny zbiór od tego, który podałeś w swoim drugim poście, więc możliwe, że źle
    zrozumiałem specyfikację.

    W każdym razie "rozmawiając" sobie z interpreterem Racketa albo Haskella, możesz dość
    łatwo przeszukać interesujące Cię dziedziny.


  • 9. Data: 2019-12-11 20:46:35
    Temat: Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
    Od: Maciej Sobczak <s...@g...com>

    > Ja osobiście raczej bym odradzał C++ do Twoich zastosowań.
    [...]

    A ja bym nie odradzał, bo jeśli pomysł ma ostatecznie zostać skomercjalizowany, to
    *nieuniknionym* targetem będzie właśnie C++.

    Więc jeśli jest już entuzjazm do C++ (w odróżnieniu do wspomnianego Pythona), to nie
    ma powodu, żeby z niego rezygnować.

    > Raczej bym polecał albo Racket,
    [...]
    > Warto ewentualnie rozważyć język Haskell,
    [...]

    No jednak nie powstrzymałeś się. :-)
    W takim razie obowiązkowe:

    https://www.wolfram.com/broadcast/video.php?c=362&v=
    1049

    W temacie eksploracji zagadnień matematycznych Wolfram nie ma merytorycznej
    konkurencji.
    Ale przecież już o tym było. :-)

    --
    Maciej Sobczak * http://www.inspirel.com


  • 10. Data: 2019-12-11 21:47:55
    Temat: Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
    Od: g...@g...com

    W dniu środa, 11 grudnia 2019 20:46:36 UTC+1 użytkownik Maciej Sobczak napisał:
    > > Ja osobiście raczej bym odradzał C++ do Twoich zastosowań.
    > [...]
    >
    > A ja bym nie odradzał, bo jeśli pomysł ma ostatecznie zostać skomercjalizowany, to
    *nieuniknionym* targetem będzie właśnie C++.
    >
    > Więc jeśli jest już entuzjazm do C++ (w odróżnieniu do wspomnianego Pythona), to
    nie ma powodu, żeby z niego rezygnować.

    C++ to język, na którym niestety łatwo się sparzy. A jego nieuniknioność to raczej
    mit. (Jest np. firma tradingowa Jane Street, która do swoich zastosowań wymagających
    duźej wydajności używa języka OCaml. A Mozilla konsekwentnie zastępuje C++a w
    Firefoxie Rustem)

strony : [ 1 ] . 2 ... 5


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: