Skocz do zawartości

Raalsky

Użytkownicy
  • Postów

    52
  • Dołączył

  • Ostatnia wizyta

Odpowiedzi opublikowane przez Raalsky

  1. Amaterasu, fajnie, na to to ja też wpadłem. Problemem stało się dla mnie przekształcenie tekstu. Potrzebowałbym znać podmiot, orzeczenie, synonimy danego słowa oraz najlepiej przekształcić to potem na bezokoliczniki lub id nadrzędnego słowa (bezokolicznika czy mianownika).

     

    Ma ktoś może bazę (nawet dość małą) synonimów w hierarchizowanej formie?

  2. Witam

     

    Poszukuję materiałów nt. przetwarzania języka naturalnego. Chciałbym stworzyć coś na podobieństwo Siri czy S-Voice jednak przeznaczeniem jest tutaj system sterowania domem. Jestem w stanie przetwarzać mowę na tekst z dość dobrymi wynikami oraz odczytywać odpowiedzi. Tekst jest już posegmentowany i poprawny ortograficznie. Poniżej coś, co chciałbym ostatecznie otrzymać:

    - Ustaw budzik na godzinę 6:30

    - [budzik został nastawiony]

    - Obudź mnie o godzinie 6:30

    - [budzik został nastawiony]

     

    itp.

     

    Mając grupę formuł czyli np. odnajdowanie czegoś, budzik itp. Chciałbym wyciągnąć kontekst i wymagane informacje niezależnie od formy zadanego pytania/polecenia.

     

    Google daje krótkie materiały lub odsyła do stron z ofertami zaprojektowania tego typu rozwiązań.

     

    Pozdrawiam i liczę na skromne podpowiedzi.

  3. Poszukuję ciekawszych artykułów na temat tworzenia silnika fizyki 2D/3D. Zależy mi głównie części teoretycznej jak radzić sobie z różnymi wektorami sił działających na ciało i implementację tego ewentualnie najlepszą strukturę danych. Język polski/angielski. Myślę, że temat przyda się innym.

  4. Tablica ma ograniczenie z tego powodu, że w pamięci przechowywana jest jako szereg komórek. Czyli tablica o rozmiarze n=10 zajmie w pamięci 10 kolejnych miejsc. System nie zawsze może znaleźć wystarczającą ilość wolnego miejsca i to sprawia, że mamy ograniczenia dla tablic. Najbezpieczniejszy rozmiar tablicy to coś koło 10^6.

     

    Listy wyglądają tak, że kolejne jej elementy trzymają się za rączki :D. Mamy element oraz wskaźnik na następny element tej listy, który może być w dowolnym miejscu w pamięci. Dlatego ograniczeniem dla list jest wyłącznie ilość pamięci jaką posiadamy.

     

    @down: Luzik, porównałem tylko zwykłą tablicę, a listę.

  5. Musiałbyś tutaj wykorzystać metrykę miejską, tzn. obrócić punkt o 45* otrzymując, że poruszanie się "izometryczne" stanie się normalnym. Musimy pamiętać o obracaniu przy każdym przemieszczeniu się. Nie mam tutaj GM'a więc nie mam jak tego pokazać. Mogę jednak jeszcze dodać miły wzorek na obrót punktu o 45*:

     

    x=x-y;
    y=x+y;

     

    Musisz trochę pokombinować z tym.

  6. To może lepiej jak nie lubisz pisać: Utwórz sprita pomniejszonego o 1px w każdą stronę czy jak tam chcesz i użyj go jako maski dla danego obiektu -> Masz to jako pole wyboru poniżej wyboru obrazka. Nie pamiętam czy GM dysponuje jakimś systemem tworzenia nowych obrazków i transformacji ich, bo można by wtedy wykorzystać raczej niezbyt skomplikowany kod, aby każdy wybrany obiekt od razu miał tak utworzoną klasę.

     

    @down: aaaa.... bo to tylko dla prostokątów...

  7. Witam

     

    Mam w C++ dość doświadczenia, aby przejść trochę dalej i wybrać jakąś bibliotekę "okienkową". W Pythonie używałem kiedyś GTK, ale podobno w C++ jest dość niekomfortowy na początek. W C++ myślałem o Qt, ale jakoś mi się nie podoba. Czy macie jakieś inne propozycje lub czy moglibyście wymienić swoje doświadczenia związane z GTK lub Qt? Dodam, że programuję pod Ubuntu z Gnome 3.

     

    Pozdrawiam

  8. Ja nie mówię, że to źle działa. Problem nie był z samym "this", ale z kolejnością definiowania struktur. Podałem poprawnie działający kod. Problem jest taki:

    struct a;
    struct b {
        a * parent;
        void bla( a * p ) {
            p->val = 4;
        };
    };
    struct a {
        int val;
        b * son;
    }

     

    I tutaj będzie problem. Bo, aby uniknąć problemów to najpierw definiuję tylko "wspomnienie" o strukturze A. Potem W strukturze B używam wskaźnika na A oraz mam metodę, która używa jakiejś właściwości z A, którą dopiero definiuję później. Czy jest możliwość, aby najpierw zdefiniować tak jakby część struktury, a potem dopisać do tego całą resztę?

     

    @up: spokojnie, użyłem tego szukając błędu. Poprzedni fragment wyglądał tak jak powinien "p->parent".

  9. Okej, problem leży trochę w innym miejscu. Daję pełny kod:

    #include <iostream>
    #include <vector>
    
    using namespace std;
    
    //Opakowanie strutkur w przestrzeń nazw "world"
    
    namespace world {
        //Preinformowanie kompilatora o użytych strukturach
        struct stTown;
        struct stHouse;
        struct stMan;
    
        //Struktura ulicy
        struct stStreet {
            //Nazwa ulicy
            string name;
            //Wektor wskaźników na domy
            vector<stHouse *>house;
            //Miasto do którego przynależy
            stTown * parent;
    
            //Konstruktor
            stStreet( string tName , stTown * p = NULL ) {
                name = tName;
                parent = p;
            };
        };
    
        //Typ do przechowywania informacji o płci danej osoby
        enum enSex { MALE , FEMALE };
    
        //Struktura miasta
        struct stTown {
            //Każde miasto ma swoją nazwę np. "Warszawa"
            string name;
            //Wektor wskaźników na ulice
            vector<stStreet *>street;
    
            //Konstruktor
            stTown ( string tName ) {
                name = tName;
            };
            //Dodawanie ulicy
            void push_street( stStreet * p ) {
                street.push_back( p );
                street.back()->parent = this;
            }
            //Usuwanie ulicy
            void pop_street( stStreet * p ) {
                vector<stStreet *>::iterator it;
                int i;
    
                for( i=0; i<street.size(); i++ ) {
                    if( street[i] == p )
                        break;
                }
    
                it = street.begin()+i;
                street.erase(it);
            }
        };
    
        //Struktura domu
        struct stHouse {
            //Numer domu
            int number;
            //Wektor wskaźników na mieszkańców
            vector<stMan *>in;
    
            //Konstruktor
            stHouse( int tNumber ) {
                number = tNumber;
            };
        };
    
        //Struktura mieszkańca
        struct stMan {
            //Płeć
            enSex sex;
            //Wiek
            int age;
            //Imię
            string firstname;
            //Nazwisko
            string lastname;
            //Dom
            stHouse * home;
    
            //Konstruktor
            stMan( string tFirstname , string tLastname , int tAge , enSex tSex ) {
                firstname = tFirstname;
                lastname = tLastname;
                age = tAge;
                sex = tSex;
            };
            //Przyłącz do domu
            void bind( stHouse * p ) {
                home = p;
                stMan * c = this;
                p->in.push_back( c );
            };
        };
    
        //Globalne wektory zawierające same struktury
        vector<stTown>gTown;
        vector<stStreet>gStreet;
        vector<stHouse>gHouse;
        vector<stMan>gMan;
    };

     

    Problem leży po stronie kolejności definiowania struktur itp. Gdy chcę się odwołać do właściwości, która jeszcze nie istnieje, ale mam zdefiniowany "nagłówek" struktury to kompilator wywala błąd. Ehh, dość ciężkie było do znalezienia.

  10. Witam

     

    Mam strukturę "street", która oznacza ulicę. Ma właściwość jaką jest parent, czyli do jakiego "miasta" przynależy, czyli wskaźnik na strukturę "town". W strukturze "town" mam wektor wskaźników na ulice oraz metodę, która dodaje kolejne wskaźniki do tego wektora. Chciałbym, aby przy każdym dodawaniu ulicy dana ulica miała ustawianego "ojca" na strukturę town dla której została wywołana ta metoda. Brzydkim rozwiązaniem byłoby wrzucanie tego przez argumeny metody, bo podobne metody mam jeszcze przy kilku strukturach. Poszukuję czegoś typu "this" z klas, ale dla struktur.

     

    struct town;
    
    struct street {
        town * parent;
    };
    
    struct town {
        vector<street *>streets;
        void push_street( street * p ) {
            streets.push_back( p );
            p->parent = WSKAŹNIK NA AKTUALNĄ STRUKTURĘ
        }
    }

  11. DMZ to strefa zdemilitaryzowana. To co tam się znajdzie nie wyjdzie do wewnętrznej sieci :D. Zrób przekierowanie portów (takie jakie używa Twój serwer). Najlepiej jeśli na początek będzie się bawił MMO na sieci lokalnej (ustawiasz ip serwerowi takie jakie ma on w sieci lokalnej i tyle).

     

    Edit: @down: pierwsze słyszę, aby DMZ grzebał w portach.

  12. Na obozie informatycznym miałem dylemat z kolegami z OIG'a i OI. Chodziło o to czy można zainicjować tablicę gdzie jej rozmiar będzie równy wartości danej zmiennej - tab[n]. Ja z kolegą z OIG'a byliśmy za tym - sam bardzo często to praktykuję. Koledzy z OI twierdzili, że to jest błąd. Skończyło się na tym, że pokazałem kod źródłowy i jak to działa. Temat jednak mnie trochę zaciekawił i chciałbym wiedzieć jak wy inicjujecie coś takiego jak proste tablice. Dałem 3 możliwości jakie ja najczęściej stosuję. Jeśli ktoś zna inne to proszę pisać.

     

    Według mnie argumentem za używaniem tab[n] czyli tablicy w której to rozmiar byłby równy wartości danej zmiennej jest to, że w przypadku np. skryptu po stronie serwera (WWW etc.) gdzie kod jest uruchamiany tyle razy ile mamy zapytań do serwera - dane mają różny rozmiar i jedne mogą zużyć mniej pamięci niż inne, ale przy praktyce stosowanej przez finalistów OI kosz zużycia pamięci przy każdym zapytaniu byłby taki sam.

     

    Rozumiem, gdyby pisali w C, a nie w C++...

  13. Tak myślałem. Więc poczytaj o ifstream. Widziałem przykłady z plikami wykonywalnymi, ale nie chciało mi się jakoś tego analizować.

     

    Edit: Też myślałem o czymś takim jak zapisanie wyjścia do pliku, ale to zdecydowanie kiepskie rozwiązanie. W np. PHP to pamiętam, że była funkcja, która uruchamiała program z danym wejściem i wywalała wyjście, które można było pobrać do zmiennej.

     

    Kolejna biblioteka: http://www.cplusplus.com/reference/iostream/fstream/

     

    Przy każdej pokazują jak zrobić odczyt z wyjścia programu.

     

    Przydałby się przykład w którym będzie pokazane jak odczytywać i zapisywać dane - taka komunikacja z innymi aplikacjami np. jedna aplikacja odbiera dane, wpisuje je na wejściu do programu, który je sortuje i odczytuje następnie z wyjścia posortowany ciąg. Wszędzie widzę tylko przykłady jak oczytać coś ala hello world.

  14. http://www.cplusplus.com/reference/iostream/stringstream/

     

    Poczytaj o sstream itp.

     

    Po prostu zamiast iostreamowego "cin" i "coat" używasz własnego strumienia jako wejście/wyjście.

     

    #include <iostream>
    #include <sstream>
    #include <string>
    using namespace std;
    
    int main () {
    
      stringstream oss;
      string mystr;
    
      oss << "Sample string";
      mystr=oss.str();
    
      cout << mystr;
    
      return 0;
    }

    -> http://www.cplusplus.com/reference/iostrea...ringstream/str/

     

    Edit: Nie jestem pewien czy Ciebie dobrze zrozumiałem. Podaj jak uruchamiasz dany program.

     

    Edit2: Powinna Ciebie zainteresować też biblioteka "ifstream".

  15. Dodawaj kolejne id do stosu? Pewnie to wiesz, ale instance_create zwraca id danego obiektu. Ewentualnie tablica asocjacyjna i sobie je jakoś nazywaj.

     

    Indeksy rosną bodajże o stałą wartość w GM, więc jedynie musisz wiedzieć który to był obiekt z kolei. Wytłumacz trochę bardziej swój problem.

×
×
  • Dodaj nową pozycję...