kombinacje kolorów...

0

Witam

potrzebuję pomocy w budowie algorytmu, piszę pewną aplikację, na razie nie mogę zdradzić jej finalnej funkcjonalności :) ale utknąłem na takim problemie...

otóż, mam matrycę zbudowaną z pixeli która ma rozmiar 300x300, muszę stworzyć funkcję, która wygeneruje wszystkie możliwe kombinacje zapełnienia jej kolorami (na początek może to być np. 16 kolorów)... pixel po pixelku, wszystkie możliwe kombinacje...

pozdrawiam, czy ktoś może podzielić się jakimś pomysłem?
p.s. potrafię się odwdzięczyć :)

0

Czy wyobrazasz sobie liczbe takich kombinacji?

Jesli nie, to jak sie nie pomylilem to dla 16 kolorow bedzie ich tyle

51048665143419455907108426515682819201016709639403016172988845897839470256549892
09426383867325613524543351416833597764127456946916446081781809010549986553357741
49919022313644125163448958665294227453738486434708826271486702288778636608309092
41413835062294398529773770039005483488983518432593059170459248537716325243702439
27651743845488737416874805848368486492650738383584061192790228759690288354373732
12391543001823461997525404290885893862505930807247831235636308101834627654891900
29175832481515325237901056770741329855563005256232469943989976966419755763438607
51434216573702938766124166198630901624439464793581607521987353750595573887822793
12370581805074643268602210407981760989099419121454680121825587201870338560834519
40430924916208922103020467255826830294891366037746825676802826326857577117644053
03795386293220314902546474539632698134739750566765427099848313932256081872633513
31448312883188148186718489654930906178814001523106834142196250412028188304270621
03465592740473698362808662157285206135254478573739377701998948872589974496581061
74721909842993657489968700917291224846565376

//DOPISANE:
Adamo masz racje, ta liczba wyzej jest tylko dla 30x30 :)

0

zrób jak z brute forcem, najpierw wszystkie pixele kolor na 0, ostatni pixel 300x300 zmień kolor na 1, potem 2 i do 15, jak ma być 16 to zmień na 0 i zajmij się kolejnym od końca pixelem zmieniając na 1 itd, jak dojdziesz do pixela 1x300 to zmień 300x299 (z kolejnej linijki) itd z wszystkimi pixelami, czyli to będzie tyle kombinacji chyba co liczba 1 w systemie szesnastkowym z 90000-1 (300x300) zerami czyli chyba 1*16^90000 czyli raczej duuuużo więcej niż napisał foflik ale ile to nie wiem bo nie mam kalkulatora z takim zakresem :P, więc twój komputer raczej nigdy tego nie zrobi i żaden inny co jest teraz na świecie raczej też nie ;P

// BTW Nawet jakbyś wygenerował te kombinacje to gdzie zapiszesz wynik ? zajmie ci to najmniej 16^90001 bajtów - twardy żaden też chyba nie ma takiej pojemności ani RAM

a musi być inne wyjście dla tego co chcesz zrobić (chociaż nie wiem co chciałeś) - wystarczy odpowiednio długo pomyśleć - jak to ma być jakiś rewolucyjny program którego jeszcze nikt nie wymyślił to znaczy że wymyślenie sposobu nie jest taki prosty, jak chcesz coś takiego robić to tylko dla canvasu 10x10 dwukolorowego

0

No całkiem nieźle...z tego co wiem to będzie 1690000. Nie wiem czy jakiś procek będzie w stanie to wyrysować w rozsądnym czasie. A tu jeszcze piszesz, że na początek dla 16 kolorów. Nie chce myśleć co będzie z 16,7mln kolorów (16,7mln90000) O BOŻE...JAKIE CYFRY :)

0

Liczba oznaczająca ilość różnych obrazów o rozdzielczości 300x300 i 24 bitowej głębi kolorów.
Innymi słowy: 16777216^90000
Czas obliczeń: ~9 minut [1' obliczenia, 8' konwersja na system dziesiętny]
Liczba cyfr: 650227

http://marooned.neostrada.pl/4prog/misc/potega.txt

0

wiem, że te liczby to kolosy, no nic... kombinuje dalej samemu :) to z brute force niezłe, ale umarłbym chyba w oczekiwaniu na wynik pracy :)

0
GraDios napisał(a)

wiem, że te liczby to kolosy, no nic... kombinuje dalej samemu :) to z brute force niezłe, ale umarłbym chyba w oczekiwaniu na wynik pracy :)

no i może nie tylko y, ale też twój syn, wnuczek, prawnuczek, praprawnuczek, praprapra..., prapraprapra i prapraprpapraprapraprapraprapraprawnuczek :P

0

Witam :)
Sam niedawno zajmowałem się bardzo podobnym tematem, ale w moich obliczeniach uwzględniałem tylko 2 kolory - czarny i biały. Matrycę można uznać za nic innego niż bitmapę, więc w moich rozważaniach zajmowałem się bitmapami monochromatycznymi. W takiej bitmapie jeden pixel zajmuje (wg moich wiadomości) 1 bit - czyli na bajcie informacji można zmieścić dane o 8 pixelach. Na wykładzie z chemii nawet z nudów obliczałem sobie ile zajęłyby wszystkie bitmapy czarnobiałe (ale nie chodzi tu nawet o odcienie szarości, tylko o 2 stany pixela :P ) o jakimś rozmiarze.
Nie jestem pewien czy moje rozumowanie było prawidłowe, ale doszedłem do czegoś takiego:

Bitmapa o wymiarach:

1x1 = do opisania 1 pixel, 2 możliwości każda o rozmiarze 1 bita = łączny rozmiar 2 bity
2x2 = do opisania 4 pixele, 16 możliwości każda po 4 bity = łączny rozmiar 64 bity (8 bajtów)
3x3 = do opisania 9 px, 512 możliwości każda po 9 bitów = 576 bajtów

itd. itp. :)

Użyty przeze mnie sposób obliczeń jest banalny (i mam nadzieję że słuszny)

AxB - wymiary bitmapy w pixelach
C - liczba kolorów

C^(AxB) = liczba możliwości

potem trzeba obliczyć ile zajmie każda możliwość, w przypadku 2 kolorów jak już wspominałem jest to 1 bajt na każde 8 pixeli (no i chyba jakieś dodatkowe informacje zapisywane w pliku BMP, ale to już pominąłęm)

Łączna objętość bitmap = liczba możliwości x objętość każdej (ale to już jest chyba oczywiste) :)

Z kolegami obliczaliśmy bardzo ciekawe potęgi liczby 2 - na kalkulatorach skończyła się skala więc mieliśmy na kartkach wyniki potęgowania np. 2^128 liczonego ręcznie :)

Ps.Te moje obliczenia miały pewien sens bo mają czemuś służyć, ale również na razie nie będę zdradzał szczegółów na ten temat :)

0

Może ma szybkiego kompa i jego praprapra...wnuczek dczeka się końca obliczeń :]

Tatusiu, Tatusiu,... a Jasia nowy komputer jest taki szybki, że robi nieskończoną pętlę w 5 minut [!!!] ;)

0

fajny taki program: generuje sie bitmapki [email protected] i nie trzeba chodzic do fotografa:D a co lepsze, mozna wybrac ubranie etc. wsord zdjec mozna znalezc zdjecie nagie zdjecie swojej kolezanki:D

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0