Pokaż wiadomości

Ta sekcja pozwala Ci zobaczyć wszystkie wiadomości wysłane przez tego użytkownika. Zwróć uwagę, że możesz widzieć tylko wiadomości wysłane w działach do których masz aktualnie dostęp.


Wiadomości - Krzysiek K.

Strony: 1 2 3 4 5 [6] 7 8 9 10 ... 865
76
Cytuj
Problem OP zdecydowanie dałoby się rozwiązać przy pomocy CH
Tylko dla najprostszych przypadków, takich jak przykład w pierwszym poście, gdzie otoczka jest wypukła. W ogólności nie ma na to żadnej gwarancji i obszary zamknięte kropkami mogę mieć dowolny kształt, niekoniecznie wypukły. Wtedy siłą rzeczy algorytm znajdowania wypukłej otoczki w niczym nie pomoże.

77
Na pierwszy rzut oka wygląda mi na to podobny problem do obliczania otoczki wypukłej
Proponuję wykonać drugi rzut. Tutaj chodzi o zupełnie coś innego.

78
Cytuj
Natomiast za chwilę umieszczę filmik jak to działa i wykrywanie metodą w lewo nie działa (przynajmniej u mnie) - bo np. przypadek jest taki że zapętla na kropkach sąsiadująch (np. tworzących prostokąt 3x4).
Znaczy źle zaimplementowałeś, albo źle wystartowałeś. Musisz wystartować "podróżnika" tak, by jego lewą ścianą była kropka dopiero co postawiona.

79
Cytuj
(w metryce manhatan - chyba tak to mogę nazwać)
Nie możesz. :) W metryce Manhattan odległość po skosie wyniesie 2.

Cytuj
Czyli na wejściu mamy wyżej omówioną tablicę, a na wyjściu mam dostać listę wielokątów (listę posortowanych tablic punktów) dla czerwonego gracza i drugą listę wielokątów dla niebieskiego gracza, jak również aktualny stan punktowy dla danej tablicy wejściowej.
Myślę że powinieneś pójść w kierunku algorytmu on-line (analiza w momencie postawienia kropki), bo kolejność stawiania kropek jest ważna (kropki odcięte nie mogą zamykać innych). Przykładowo algorytm mógłby dostać na wejściu szachownicę z kropek i nie znając kolejności nie dało by się nic o takim układzie powiedzieć.

Cytuj
Jak to najlepiej zrobić (czyli w prosty i wydajny sposób)?
Prosty i wydajny - flood fill. W momencie stawiania kropki próbujesz wystartować flood fill'a z każdego sąsiadującego pola na którym nie mamy własnej kropki (czyli puste i przeciwnicy). Flood fill wypełnia i jest ograniczony tylko kropkami tego gracza i brzegiem planszy. Flood przechodzi tylko w podstawowych 4 kierunkach (żeby dało się ograniczyć pole "na skos"). Jeśli flood nie dotknął brzegu planszy, to znaczy że mamy zamknięte pole - wszystkie pola wewnątrz flood'a można zaznaczyć jako zajęte, a kropki przeciwnika policzyć jako punkty i zaznaczyć jako nieaktywne.

Co do wielokąta: po udanym flood fillu można zacząć od pola z którego wystartował i przejść całe pole trzymając się lewej ściany (własnych punktów) aż wrócimy do początku. I mamy posortowaną listę wierzchołków wielokąta. Potem oczywiście trzeba to ztriangulować (np. metodą ear clipping), bo wielokąt nie musi być przecież wypukły.

80
Cytuj
Jeśli to projekt tylko dla ciebie, to GPL nie przeszkadza. A w ogóle to na takim procku za wiele chyba nie można oczekiwać.
Projekt własny, ale mam nadzieję że komercyjny.

Cytuj
Może TEA - Tiny Encryption Algorithm (albo upgrade typu XXTEA):
https://en.wikipedia.org/wiki/Tiny_Encryption_Algorithm
W XXTEA trochę dużo rund się robi, więc AES-128 może być już szybszy. Poza tym *TEA są przygotowane pod 32-bitowce.

Cytuj
Jest jeszcze np. libcrypto++. Nie wiem czy działa na avr, ale kod jest chyba w public domain:
https://en.wikipedia.org/wiki/Crypto%2B%2B
Nie mam problemu "skąd" wziąć algorytm (większość ma referencyjne implementacje public domain, które łatwo na AVR przenieść). Mam problem "który" oraz czy będzie wystarczająco szybki by na AVR 8..16 MHz zaszyfrować lub odszyfrować strumień 115200 kbps i jeszcze coś na boku robić (w szczególności obsługiwać peryferia przez które ten strumień przepływa - nie ma DMA, są tylko przerwania).

Cytuj
Pytanie czy chcesz sam implementować, czy wolisz mieć podane;)
Zależy co przez to rozumiesz. Nie mam problemu z przeportowaniem kawałka kodu na AVR.

Cytuj
"One does not simply implement their own crypto".

Serio, "nie implementuj własnego crypto" to wskazówka, którą można znaleźć wszędzie.
I stąd ten wątek powstał. I dlatego też jeśli wszystko inne zawiedzie to wolał bym od wymyślania użyć RC4, który był łamany tyle razy, że wiadomo że jest niebezpieczny, ale też wiadomo jakich błędów z nim nie robić.

Inna kwestia że RC4 nie rozwiązuje kompletnie kwestii zapewnienia autentyczności pakietów (bit flipping attack).

81
Zawsze możesz poprosić o komercyjną licencję.
Nie wiem jak tutaj to wygląda, ale widziałem cenniki podobnych bibliotek. Raczej nie przejdzie w tym przypadku. :)

82
http://point-at-infinity.org/avraes/
Całkiem fajne, acz cóż z tego, skoro to GPL.

Czekam na jakieś inne propozycje.

83
C++ / Odp: C++ lista jednokierunkowa
« dnia: Listopad 07, 2015, 12:53:49 »
Cytuj
BTW jak już mówimy konkretnie o encjach w grach, to jak wtedy robiłeś referencje między nimi? guid?
Najprościej jak się da - lista obiektów to w istocie lista wskaźników na obiekty. Każdy obiekt może być oznaczony jako usunięty oraz ma pole instance_id. Obiekty nigdy nie są zwalniane w trakcie gry - są jedynie zwracane do puli. Do dostępu do obiektów służą dedykowane smart pointery, które trzymają wskaźnik na obiekt oraz spodziewaną wartość instance_id i jeśli obiekt jest usunięty lub instance_id się nie zgadza to udają NULLa. instance_id oczywiście jest inkrementowane przy każdym nowym użyciu tego samego obiektu.


btw. Co do samego usuwania obiektów, to nieco nakłamałem - mam też drugą metodę usuwania, gdzie po prostu zaznaczam obiekty jako usunięte i raz na klatkę listę przechodzę usuwając "dziury".

84
Projektowanie kodu / Odp: Dialogi
« dnia: Listopad 07, 2015, 12:43:45 »
Cytuj
plik xml z drzewem dialogów
Jeśli nie planujesz pisać edytora i edytować to ręcznie, to są dużo lepsze i prostsze formaty do tego celu (np. JSON). Można by też pomyśleć np. o GML (format tekstowy do zapisu grafów) z uwagi na to, że są do tego darmowe edytory (np. yEd) gdzie w takiej sytuacji graf dialogów sobie po prostu wyklikasz.

85
Matematyka i fizyka / Proste, szybkie i bezpieczne szyfrowanie pakietów.
« dnia: Listopad 07, 2015, 12:39:17 »
Hej!

Poszukuję algorytmu, który byłby w stanie zaszyfrować strumień danych na dość ograniczonym CPU - 8-bit AVR (coś typu Arduino). Planowana prędkość transmisji to 115200 kbps, czyli jakieś 11 kB/s. CPU pracuje z taktowaniem 8-16 MHz, ale musi robić jeszcze parę innych rzeczy. Dodatkowe ograniczenie: jest tylko 1 kB RAM. Pasowało by więc coś pokroju RC4, ale jak na RC4 wyszedł WEP, to chyba wszyscy wiedzą. :)

Wszelkie propozycje/pytania/sugestie mile widziane. :)

Pozdrawiam,
KK

86
C++ / Odp: C++ lista jednokierunkowa
« dnia: Listopad 06, 2015, 19:47:36 »
Do nieuporządkowanych kolekcji akurat fajny jest wektor, jak potrzebujesz dowolny dostęp, dodawanie w amortyzowanym O(1) oraz usuwanie w O(1) (zastąp ostatnim + pop).
Polecam. Używałem chyba w każdej jednej gierce co robiłem (za wyjątkiem okresu nauki, rzecz jasna) do listy encji. :)

87
C++ / Odp: C++ lista jednokierunkowa
« dnia: Listopad 06, 2015, 15:41:11 »
Cytuj
Jest to bardzo abstrakcyjna struktura (fakt że nie mogę na szybko znaleźć jej zastosowania - chociaż może jako "nieskończona" kolejka nie-blokująca by znalazła jakieś zastosowanie), ale mimo wszystko wydaje mi się, że jest to lista.
Powiedziałbym raczej, że jest to struktura danych oparta na liście, ale z teoretycznego punktu widzenia, już inna od listy (tak jak stos można zrobić na liście, ale nie każda lista jest stosem i nie każdy stos jest listą).

88
C++ / Odp: C++ lista jednokierunkowa
« dnia: Listopad 06, 2015, 15:06:58 »
Cytuj
Inna rzecz, że wszystko rozwiązuje się trzymaniem wskaźnika na przedostatni element (samo trzymanie ostatniego rozwiąże dodawanie, ale potencjalnie usuwanie ostatniego jest znowu powolne - z przedostatnim da się to zrobić O(1)).
Z trzymaniem przedostatniego elementu usuwanie ostatniego elementu jest nadal O(n), bo po usunięciu musisz znaleźć element, który w tej chwili stał się przedostatnim.

Cytuj
W szczególności lista nie definiuje Ci kolejności elementów.
Jeszcze nie spotkałem się z listą, która nie definiuje kolejności elementów. Może być tak, że kolejność cię nie obchodzi i implementujesz zbiór na liście, ale sama lista jakąś kolejność ma i, jak napisałem, nie spotkałem się jeszcze z implementacją listy, która ten fakt stara się ukryć.

Do poczytania:  https://en.wikipedia.org/wiki/List_%28abstract_data_type%29

Wiem, że Wikipedia to nie publikacja godna cytowania, ale skoro piszą w pierwszym zdaniu że:
    "a list or sequence is an abstract data type that represents an ordered sequence of values"

to nie sądzę żeby tak gruby błąd uszedł uwadze kogoś, kto się zna na rzeczy.

89
C++ / Odp: C++ lista jednokierunkowa
« dnia: Listopad 05, 2015, 20:42:37 »
Cytuj
Głupi to jest pomysł z przechodzeniem całej listy przy dodawaniu nowego elementu.
Dlatego w liście jednokierunkowej można też trzymać wskaźnik na ostatni element. Dodawanie elementu na początek rzeczywiście może się w niektórych sytuacjach nie sprawdzić (np. gdy przy zaliczeniu psor zapyta się, czemu elementy wyświetlają się w odwrotnej kolejności).

90
Cykliczne Warsztatowe Compo / Odp: "Zrozumieć programowanie" - compo!
« dnia: Listopad 04, 2015, 11:57:22 »
Cytuj
Jeśli O(1) to znaczy że względem niczego. Ewentualnie może miałeś na myśli O(n) względem liczby pikseli - co by miało jakiś tam sens
Cóż, dawno nie używałem tej notacji i wyszło. Chodziło mi oczywiście o O(n).

Cytuj
chociaż nijak nie potrafię sobie wyobrazić 100% dokładnego algorytmu o takiej złożoności
Jak pisałem - miotła. A w miotle beam tree w którym przedziały są określone wektorami o współrzędnych całkowitych. Drzewo przedziałowe w teoretycznie jest O(log N), ale tutaj przechodzimy elementy po kolei, więc można startować z poprzedniej znalezionej pozycji, więc może się udać dostęp O(1) dla pojedynczego piksela jak się dobrze zakombinuje.

Strony: 1 2 3 4 5 [6] 7 8 9 10 ... 865