Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Rozmowy na temat prac konkursowych
Forum PHP.pl > Inne > Opinie, ogłoszenia, pytania > Konkursy
Stron: 1, 2, 3
rzymek01
Wydzielone z: http://forum.php.pl/index.php?s=&showt...st&p=803748 - DeyV

------------------------



nie mam jak zainstalowac, na płycie mam live bez żadnego serwera nic, a jak chce cos instalowac typu serwer etc to chce już zainstalowanego systemu

PS. nie ma co juz kombinowac, pozostawię starą wersję co wysłałem juz jakis czas temu z tą moją funkcją, która w językach kompilowanych na pewno działałaby szybciej, ale php jest interpretowany i tutaj z tym jest różnie :/

Już jest północ to można pisać o zadaniach biggrin.gif
flashdev
Cytat(rzymek01 @ 3.11.2010, 23:49:13 ) *
Już jest północ to można pisać o zadaniach biggrin.gif


Spieszy Ci się zegarek winksmiley.jpg

Edit:
No i koniec konkursu.
rzymek01
no co ty, juz mam 2 po biggrin.gif
Pawel_W
no to nie wiem, wklejamy? biggrin.gif
rzymek01
co mogę napisać,
patrząc z czysto algorytmicznego punktu widzenia, istotne części programu to:
1. generowanie fibo
2. dekodowanie ciągu
3. szukanie parametrów

ad1. tutaj jedyne co wymyśliłem, to liczenie każdego wyrazu ciągu modulo 36, aby od razu mieć pozycje w alfabecie i nie wyobrażam sobie poza tym liczenia fibo bez modulo 36, bo nie wiem jaki typ danych pomieściłby np. milionowy + jeden wyraz ciągu

ad2. i ad3. tutaj wymysliłem coś takiego, że dekoduje od lewej i od prawej równolegle i od razu porównuje czy to co odkodowałem to przypadkiem nie cyfra, bo w całym ciągu moga wystąpić tylko cyfry przy parametrach,
zaletą jest to, że o ile parametry nie znajdują się na samym środku, to nie muszę dekodować całego ciągu i ogolnie w miare szybko znajduje parametry,
wadą tego rozwiązania jest język PHP biggrin.gif, tzn. własna funkcja napisana PHP jest zawsze wolniejsza od wbudowanych, także nie wiem, czy akurat w przypadku PHP nawet preg_match by nie było szybsze, teoretycznie nie, ale trzeba miec na uwadze co napisalem wyzej

Generowanie prostokątów mam po bozemu, idę sobie po kolei jak każą, operacje to same dodawania i raz na obieg modulo, także O(K*W), ale przy ograniczeniu K i W do 20, sądze, że ten fragment kodu ma być po prostu poprawny i nie jest aż tak istotna złozoność budowania tych postokątów

PS. no i złożoność mojego programu:
n - długość ciągu
punkty 1,2 i 3 w czasie O(2n)=O(n)
prostokąty w czasie O(3*K*W)=O(K*W)
flashdev
Cytat(Pawel_W @ 4.11.2010, 00:10:00 ) *
no to nie wiem, wklejamy? biggrin.gif


Dekodowanie ciągu:

  1. $length = strlen($argv[1]);
  2.  
  3. $rot_str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
  4. $rot_arr = array('A' => 0, 'B' => 1, 'C' => 2, 'D' => 3, 'E' => 4, 'F' => 5, 'G' => 6, 'H' => 7, 'I' => 8, 'J' => 9, 'K' => 10, 'L' => 11, 'M' => 12, 'N' => 13, 'O' => 14, 'P' => 15, 'Q' => 16, 'R' => 17, 'S' => 18, 'T' => 19, 'U' => 20, 'V' => 21, 'W' => 22, 'X' => 23, 'Y' => 24, 'Z' => 25, '0' => 26, '1' => 27, '2' => 28, '3' => 29, '4' => 30, '5' => 31, '6' => 32, '7' => 33, '8' => 34, '9' => 35);
  5. $rot_len = 36; //strlen($rot_str);
  6.  
  7. $prev1 = $length;
  8. $prev2 = 0;
  9. for( $i = 0; $i < $length; ++$i ){
  10. $curr = ($prev2 + $prev1)%$rot_len;
  11. $prev2 = $prev1;
  12. $prev1 = $curr;
  13. $argv[1][$i] = $rot_str[($rot_arr[$argv[1][$i]] - $curr + $rot_len ) % $rot_len];
  14. }
  15.  
  16. $params = array();
  17. preg_match('/K([0-9])+/', $argv[1], $params['k']);
  18. preg_match('/W([0-9])+/', $argv[1], $params['w']);
  19. preg_match('/A([0-9])/', $argv[1], $params['a']);
  20. preg_match('/Z([0-9])/', $argv[1], $params['z']);
  21.  
  22. $cols = $params['k'][1] + 0;
  23. $rows = $params['w'][1] + 0;
  24. $min = $params['a'][1] + 0;
  25. $max = $params['z'][1] + 0;


W sumie, tej części kody nawet nie optymalizowałem. Udało się komuś pozbyć tej pętli? smile.gif
Testowałem wersję z array_map, ale była nawet trochę wolniejsza dla krótkich oraz długich ciągów.
Pawel_W
http://wklej.org/hash/d9a8df00ee8/

no to ja zaszaleje, cały kod smile.gif
starach
Cytat(Pawel_W @ 4.11.2010, 00:15:46 ) *
http://wklej.org/hash/d9a8df00ee8/

no to ja zaszaleje, cały kod smile.gif
Wszystkie zmienna walnął z pojedyńczych liter ale o define('LF', "\n") już zapomniał. ;P

Ładny kod. Niestety ja zdążyłem napisać tylko dekodowanie fib'a i mnie choroba do reszty rozłożyła... nadal jestem ledwo ciepły, ale ciekawość wzięła górę. winksmiley.jpg
dr_bonzo
Pawel_W - wyprzedziles moj kod, ale chyba brakuje ci "\n" za 3cim prostokatem
flashdev
Cytat(Pawel_W @ 4.11.2010, 00:15:46 ) *
http://wklej.org/hash/d9a8df00ee8/

no to ja zaszaleje, cały kod smile.gif


Zrobiłem po 5 testów w każdej serii po 500 pomiarów dla Twojego i mojego dekodowania.
Kod
Domyslne wejscie: 'I3OHUI5Y0UXU7VQS9U63C'

Twoje:
av:    0.00082    sd:    0.00265
av:    0.00068    sd:    0.00030
av:    0.00083    sd:    0.00052
av:    0.00071    sd:    0.00035
av:    0.00075    sd:    0.00038

moje:
av:    0.00094    sd:    0.00093
av:    0.00060    sd:    0.00031
av:    0.00057    sd:    0.00030
av:    0.00058    sd:    0.00029
av:    0.00062    sd:    0.00034

Dluzszy ciag wejsciowy: str_repeat('I3OHUI5Y0UXU7VQS9U63C', 1e3)

Twoje:
av:    0.00078    sd:    0.00050
av:    0.00066    sd:    0.00031
av:    0.00067    sd:    0.00035
av:    0.00067    sd:    0.00031
av:    0.00067    sd:    0.00034

moje:
av:    0.00059    sd:    0.00031
av:    0.00062    sd:    0.00033
av:    0.00059    sd:    0.00031
av:    0.00060    sd:    0.00032
av:    0.00057    sd:    0.00026


Trudno powiedzieć żeby były jakieś znaczące różnice.

Edit:
Poniżej podaję kod, którym mierzę czasy. Może się komuś przyda.
http://wklej.org/id/412325/
dr_bonzo
Zrob dluzsze pomiary. Oficjalne testy sa po 1000 razy. U mnie daje to jakies 48s dla pojedynczego odpalenia ciagu z instrukcji.
flashdev
Cytat(dr_bonzo @ 4.11.2010, 00:39:15 ) *
Zrob dluzsze pomiary. Oficjalne testy sa po 1000 razy. U mnie daje to jakies 48s dla pojedynczego odpalenia ciagu z instrukcji.


Zrobiłem 4 * 5 serii po po 500 pomiarów, czyli w sumie 4 * 2500 pomiarów.
Funkcję, którą mierzę czas podałem już wcześniej. Wykorzystuję require.

Aha i av to średnia oczywiście z tych 500 pomiarów, a sd to odchylenie standardowe.
dr_bonzo
ah, niedoczytalem
flashdev
Cytat(Pawel_W @ 4.11.2010, 00:15:46 ) *
http://wklej.org/hash/d9a8df00ee8/

no to ja zaszaleje, cały kod smile.gif


@Pawel_W bardzo fajnie to zrobiłeś z jednym preg`iem. Ale sam już się nie brałem za optymalizację tego bo nie wiem czy był sens. Wie ktoś może dokładnie jakie jest ograniczenie co do długości paramteru podawanego przy wywołaniu programu w linii poleceń?
dr_bonzo
@Pawel_W

Kod
preg_match_all('#([KWAZkwaz]{1}[0-9]{1,2})#', $d, $m);


A co jak w odkodowanym kodzie bedzie "....K32XXXXXW7XXXX..."

to jaka wartosc bedzie miec K ?
8rol
@Pawel_W, spróbuj uruchomić swój skrypt z parametrem SLK92YNR (tj. K5W5A2Z7). Wydaje mi się, że coś jest wtedy nie tak.
flashdev
Cytat(8rol @ 4.11.2010, 00:52:23 ) *
@Pawel_W, spróbuj uruchomić swój skrypt z parametrem SLK92YNR (tj. K5W5A2Z7). Wydaje mi się, że coś jest wtedy nie tak.


Sprawdziłem, działa dobrze:

Kod
array(4) {
  ["K"]=>
  string(1) "5"
  ["W"]=>
  string(1) "5"
  ["A"]=>
  string(1) "2"
  ["Z"]=>
  string(1) "7"
}
zegarek84
http://wklej.org/id/412327/
dr_bonzo
A to moj kod: http://paste-it.net/public/je4eef6/
8rol
dr_bonzo, wydaje mi się, że masz pewien problem z odbieraniem parametrów, dla przykładu: TN156JBHY (k5aw6a2z7).
ayeo
No to i ja wkleję mojego zamulatora biggrin.gif Ale mi nie wyszło biggrin.gif Masakra tongue.gif

http://snippie.net/snip/1304797a

A wszyscy mówili, żeby potestować, zoptymalizować biggrin.gif
Daimos
No więc poniżej i mój kod winksmiley.jpg Trochę nawalone pętli, ale szedłem wierszami

http://wklej.org/id/412341/

Może znajdzie się chętny, co by wrzucił wszystkie nasze prace, które tu udostępnimy na jeden serwer i odpalił testy jakieś? winksmiley.jpg
askone
Gdy patrzę na Wasze kody to mam dziwne odczucie, że chyba troszkę namieszałem z moim rozwiązaniem. Czyżby myśl, iż nie sprawdziłem wszystkiego dokładnie była prawdziwa...

Fragment kodu (w pracy mam tylko to) dekodującego parametry:
  1. /**
  2.   * Dekoduje zaszyfrowany ciąg parametrów wejściowych.
  3.   * @uses modifiedFibonacci($base)
  4.   * @param string $paramsString
  5.   * @return string
  6.   */
  7. function decodeParamsString($paramsString)
  8. {
  9. $rotString = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
  10. $rotOffsetArray = array(
  11. "A" => 0, "B" => 1, "C" => 2, "D" => 3, "E" => 4, "F" => 5, "G" => 6, "H" => 7,
  12. "I" => 8, "J" => 9, "K" => 10, "L" => 11, "M" => 12, "N" => 13, "O" => 14, "P" => 15,
  13. "Q" => 16, "R" => 17, "S" => 18, "T" => 19, "U" => 20, "V" => 21, "W" => 22, "X" => 23,
  14. "Y" => 24, "Z" => 25, "0" => 26, "1" => 27, "2" => 28, "3" => 29, "4" => 30, "5" => 31,
  15. "6" => 32, "7" => 33, "8" => 34, "9" => 35
  16. );
  17. $decodedString = "";
  18. $fibonacciArray = array_slice(calculateModFibonacci(strlen($paramsString), 36), 1);
  19.  
  20. $paramsArr = str_split($paramsString);
  21. for($i = 0; $i < count($paramsArr); $i++)
  22. {
  23. $offset = $rotOffsetArray[$paramsArr[$i]] - $fibonacciArray[$i];
  24. $offset = ($offset < 0)? 36 - abs($offset) : $offset;
  25. $decodedString .= $rotString[$offset];
  26. }
  27.  
  28. return $decodedString;
  29. }
  30. /**
  31.   * Buduje tablicę wartości zmodyfikowanego ciągu Fibonacciego.
  32.   * Każda wartośc ciągu dzielona jest modulo $modulo celem wyliczenia pzesuniącia względnego.
  33.   * @param int $base
  34.   * @param int $modulo
  35.   * @return array
  36.   */
  37. function calculateModFibonacci($base, $modulo)
  38. {
  39. list( $cur, $nxt, $inc, $seq ) = array( $base, $base, 0, array() );
  40.  
  41. do
  42. {
  43. $inc++;
  44. $seq[] = $cur % $modulo;
  45. $add = $cur + $nxt;
  46. $cur = $nxt;
  47. $nxt = $add;
  48. }
  49. while ( $inc <= $base );
  50.  
  51. return $seq;
  52. }
rolka
Mój kod: http://snippie.net/snip/b349642b
Tym testuję: http://snippie.net/snip/0da66426 - trochę jak stary kowboj, ale daje rozsądne wyniki i minimalizuje przypadkowość (przydało by się tylko jeszcze więcej iteracji)

Jak się okazuje o kilku rzeczach zapomniałem, kilku nie przewidzialem. Zobaczymy smile.gif
Z kilku tricków jestem zadowolony:
    - dekodując wystarczyło odwrócić ciąg smile.gif reszta kodu była dokładnie taka sama jak przy kodowaniu
    - działa dla ciągu dowolnej długości (trick z sumą modulo dla 2 poprzednich wyrazów - tu pomysł ayeo podsunął)
    - do generowania prostokątów użyłem jednej pętli - generuję wszystkie 3 na raz

Mam nadzieję, że procedura testowa będzie w miarę miarodajna. Natomiast jeśli będzie taka jak w regulaminie to może wygrać każdy kogo kod przejdzie 1 etap smile.gif

Powodzenia!
Daimos
Cytat(Pawel_W @ 4.11.2010, 00:15:46 ) *
http://wklej.org/hash/d9a8df00ee8/

no to ja zaszaleje, cały kod smile.gif



Cytat(rolka @ 4.11.2010, 08:19:42 ) *
Mój kod: http://snippie.net/snip/b349642b
Tym testuję: http://snippie.net/snip/0da66426 - trochę jak stary kowboj, ale daje rozsądne wyniki i minimalizuje przypadkowość (przydało by się tylko jeszcze więcej iteracji)

Jak się okazuje o kilku rzeczach zapomniałem, kilku nie przewidzialem. Zobaczymy smile.gif
Z kilku tricków jestem zadowolony:
    - dekodując wystarczyło odwrócić ciąg smile.gif reszta kodu była dokładnie taka sama jak przy kodowaniu
    - działa dla ciągu dowolnej długości (trick z sumą modulo dla 2 poprzednich wyrazów - tu pomysł ayeo podsunął)
    - do generowania prostokątów użyłem jednej pętli - generuję wszystkie 3 na raz

Mam nadzieję, że procedura testowa będzie w miarę miarodajna. Natomiast jeśli będzie taka jak w regulaminie to może wygrać każdy kogo kod przejdzie 1 etap smile.gif

Powodzenia!

Nie wiem czy zauważyłeś, ale zapomniałeś o wielkości znaków (i3ohui5y0uXU7VqS9u63C nie idzie)
W każdym razie świetny kod, według moich kiepskich testów (bo na windowsie winksmiley.jpg to bijesz na ryj moje rozwiązanie smile.gif
dr_bonzo
Cytat(8rol @ 4.11.2010, 02:28:03 ) *
dr_bonzo, wydaje mi się, że masz pewien problem z odbieraniem parametrów, dla przykładu: TN156JBHY (k5aw6a2z7).


Zalozylem, moze i blednie, ze litery od parametrow wystapia tylko raz :/
----
Moj benchmark (oczywiscie srodowisko dalekie od laboratoryjnego - ale generalnie nic na kompie sie nei dzialo i nie dotykalem myszki smile.gif)

Czasy wygladaja na identyczne, zmieniaja sie z kazdym uruchomieniem.

Kod
$ php benchmark.php 100
Running 100 times, with code I3OHUI5Y0UXU7VQS9U63C
     4.506s - dr_bonzo.php // dr_bonzo
     4.583s - Pawel_W.php // Pawel_W
     4.499s - zegarek84.php // zegarek84
     4.604s - ayeo.php // ayeo
     4.510s - my-salsa.php // my salsa
     4.511s - rolka.php // rolka
     4.484s - cichy.php // cichy
     4.505s - phpion.php // phpion
     4.601s - flashdev.php // flashdev
rolka
Cytat(my salsa @ 4.11.2010, 08:29:42 ) *
Nie wiem czy zauważyłeś, ale zapomniałeś o wielkości znaków (i3ohui5y0uXU7VqS9u63C nie idzie)


Aaaaaa! Wysłałem przez przypadek kod bez strtoupper przy $argv sciana.gif
dr_bonzo
Wolne uwagi

- NIEWAZNE: co jak wypełniaczami są polskie krzaki i jak zachowa się strlen() ( alfabet to litery alfabety lacinskiego oraz cyfry )
- co jak parametry zdefiniowane sa kilka razy "K10.....K7" - wlasciwie to nie powinny - bo nie sprecyzowano ktory parametr wtedy wybrac
- co jak K W A Z moga byc tez wypelniaczami?

Moje próby rozwiązań

- wygenerować wszystkie rozwiązania, zapisać w tablicach/stringu w zmiennej i odczytywać zamiast wyliczać (!wolne)
- to samo ale zapisac na koncu pliku z kodem + __halt_compiler() + odczyt odpowiedzi znajdujacych sie zaraz za kodem; mniej parsowania dla php (!nie mozna odczytywac z plikow)
- uzyc pamieci wspoldzielonej - przy pierwszym odpaleniu wrzucic odpowiedzi do ramu a przy kolejnych je odczytywac, ale ze wzgledu ze potrzebowalem min 8MB pamieci, a jej ilosc zalezy od konfiguracji systemu i nie zostala podana, to porzucilem to rozwiazanie. Dla testu poprawnosci to rozwiazanie nie musi byc szybkie (!niepewne rozwiazanie).
phpion
Cytat(dr_bonzo @ 4.11.2010, 09:41:33 ) *
- co jak parametry zdefiniowane sa kilka razy "K10.....K7" - wlasciwie to nie powinny - bo nie sprecyzowano ktory parametr wtedy wybrac

Wypełniaczami mogą być tylko litery, więc taka sytuacja nie zajdzie.
Cytat
Kody parametrów zostają umieszczone w większym ciągu, gdzie miejsca wokół kodów parametrów zostaną wypełnione losowymi literami.
ayeo
Coś z tymi testami jest nie tak jeśli mój kombajn jest porównywalny ze skryptem @zegarek84, @dr_bonzo czy @rolka tongue.gif
krowal
@phpion, też zrobiłem osobny sposób dla przypadku gdy a == z smile.gif
Moimi trikami było:
- generowanie wszystkiego w jednej pętli + pętla zagnieżdżona (generalnie iteracji wychodzi tyle samo co u ciebie winksmiley.jpg )
- spiralę jako jedyny prostokąt wypełniam w tablicy (tu się martwię czy podoła z rozwiązaniami innych)
- wiersze robię przez odwrócenie ciągu sekwencji, pocięcie go na kawałki o długości równej ilości kolumn i zlepienie w stringa oddzielonego "\n"
- wężyk robię przez dokładanie znaku z całej sekwencji, index wklejanego znaku obliczam na podstawie aktualnej wartości w i k w kolejnych iteracjach

oto mój kod: http://wklej.org/hash/298032511ac/ smile.gif

ps. phpion, oddałeś rozwiązanie z tym czymś na początku? :
  1. // Obliczenie dlugosci wejscia.
  2. $j = 7;


edit:
@ayeo ja próbowałem u siebie zrobić testy kilku rozwiązań i przy wywoływaniu skryptów w ten sposób (.bat pod win):
nie wiem czy to jest dobrze, nie znam się na batowych skryptach winksmiley.jpg (ściągnąłem gotowca z jakiejś strony)
  1. @echo off
  2. timer
  3. for /l %%i in (1 1 100) do (
  4. php -f plik_testowy.php I3OHUI5Y0UXU7VQS9U63C > test.txt
  5. )
  6. timer /s
też wszystkie rozwiązania miały te same czasy, chyba to nie jest miarodajne.
phpion
Cytat(krowal @ 4.11.2010, 09:48:45 ) *
ps. phpion, oddałeś rozwiązanie z tym czymś na początku? :
  1. // Obliczenie dlugosci wejscia.
  2. $j = 7;

Na początku mam phpDoca, ale wywaliłem go wrzucając kod w sieć. Ale generalnie tak: jedna z pierwszych moich linijek to właśnie $j = 7, a co?
krowal
Sądząc po tym jak później tego używasz to nie powinno być:
  1. $j = strlen($argv[1])
?

edit. sorry nie zauważyłem, że później zmieniasz to $j winksmiley.jpg
phpion
Można też tak, jak najbardziej, ale while() jest szybszy od strlen() smile.gif tak przynajmniej wyszło z moich testów. Do tego nie ma co jechać od 0, bo minimalna długość ciągu to 8:
  1. $in = 'K1W1A1Z1'; // Podalem odkodowany, ale zakodowany bedzie mial tyle samo znakow.
  2.  
  3. $j = 7;
  4.  
  5. while (isset($in{++$j}));
  6.  
  7. echo $j;
krowal
Ech teraz kolejne dwa tygodnie czekania smile.gif
dr_bonzo
Jeszcze raz wklejam

Krotszy kod: I3OHUI5Y0UXU7VQS9U63C
Dluzszy kod: HB0EHYIJ4QXQQJCYDEUB8MXMMB0EHYIJ4QXQQJCYDEUB8MXMMB0EHYIJ4QXQQJCYDEUB8MXMMB0EHYIJ
4QXQQWFYDEUB8MXMMB0EHYIJ4QXQQJCYDEUB8MXMMB0EHYIJ4QXQQJCYDEUYDPXMMB0EHYIJ4QXQQJCY
D
EUB8MXMMB0EHYIJ4QXQQJCYDEUB8MXMMB0EHYIJ60WVTJCYDEUB8MXMMB0EHYIJ4QXQQJCYDEUB8MXMM
B
0EHYIJ4QXQQJCYDEUB8MXMMB0EHYIJ4QXQQ

Kod
Validating for code I3OHUI5Y0UXU7VQS9U63C
dr_bonzo
---8<--------------------------------------------------
123456
234567
132171
765432

455667
364751
273142
112233

321765
432176
543217
654321
--------------------------------------------------8<---
Pawel_W
---8<--------------------------------------------------
123456
234567
132171
765432

455667
364751
273142
112233

321765
432176
543217
654321--------------------------------------------------8<---
zegarek84
---8<--------------------------------------------------
123456
234567
132171
765432

455667
364751
273142
112233

321765
432176
543217
654321
--------------------------------------------------8<---
ayeo
---8<--------------------------------------------------
123456
234567
132171
765432

455667
364751
273142
112233

321765
432176
543217
654321
--------------------------------------------------8<---
my salsa
---8<--------------------------------------------------
123456
234567
132171
765432

455667
364751
273142
112233

321765
432176
543217
654321
--------------------------------------------------8<---
rolka
---8<--------------------------------------------------
123456
234567
132171
765432

455667
364751
273142
112233

321765
432176
543217
654321
--------------------------------------------------8<---
cichy
---8<--------------------------------------------------
123456
234567
132171
765432

455667
364751
273142
112233

321765
432176
543217
654321
--------------------------------------------------8<---
phpion
---8<--------------------------------------------------
123456
234567
132171
765432

455667
364751
273142
112233

321765
432176
543217
654321--------------------------------------------------8<---
krowal
---8<--------------------------------------------------
123456
234567
132171
765432

455667
364751
273142
112233

321765
432176
543217
654321
--------------------------------------------------8<---
flashdev
---8<--------------------------------------------------
123456
234567
132171
765432

455667
364751
273142
112233

321765
432176
543217
654321
--------------------------------------------------8<---


Kod
Validating for code HB0EHYIJ4QXQQJCYDEUB8MXMMB0EHYIJ4QXQQJCYDEUB8MXMMB0EHYIJ4QXQQJCYDEUB8MXMMB0EHYIJ
4QXQQWFYDEUB8MXMMB0EHYIJ4QXQQJCYDEUB8MXMMB0EHYIJ4QXQQJCYDEUYDPXMMB0EHYIJ4QXQQJCY
D
EUB8MXMMB0EHYIJ4QXQQJCYDEUB8MXMMB0EHYIJ60WVTJCYDEUB8MXMMB0EHYIJ4QXQQJCYDEUB8MXMM
B
0EHYIJ4QXQQJCYDEUB8MXMMB0EHYIJ4QXQQ
dr_bonzo
---8<--------------------------------------------------
01234567012345670123
34567012345670123454
27012345670123456765
16345670123456701076
05270123456701232107
74163456701234543210
63052701234567654321
52741634567010765432
41630527012321076543
30527416345432107654
27416305276543210765
16305274107654321076
05274163210765432107
74163054321076543210
63052765432107654321
52741076543210765432
41632107654321076543
30543210765432107654
27654321076543210765
10765432107654321076

34343434343434343434
25252525252525252525
16161616161616161616
07070707070707070707
70707070707070707070
61616161616161616161
52525252525252525252
43434343434343434343
34343434343434343434
25252525252525252525
16161616161616161616
07070707070707070707
70707070707070707070
61616161616161616161
52525252525252525252
43434343434343434343
34343434343434343434
25252525252525252525
16161616161616161616
07070707070707070707

76543210765432107654
32107654321076543210
76543210765432107654
32107654321076543210
76543210765432107654
32107654321076543210
76543210765432107654
32107654321076543210
76543210765432107654
32107654321076543210
76543210765432107654
32107654321076543210
76543210765432107654
32107654321076543210
76543210765432107654
32107654321076543210
76543210765432107654
32107654321076543210
76543210765432107654
32107654321076543210
--------------------------------------------------8<---
Pawel_W
---8<--------------------------------------------------

--------------------------------------------------8<---
zegarek84
---8<--------------------------------------------------
Array


Array


Array
--------------------------------------------------8<---
ayeo
---8<--------------------------------------------------


--------------------------------------------------8<---
my salsa
---8<--------------------------------------------------
--------------------------------------------------8<---
rolka
---8<--------------------------------------------------
01234567012345670123
34567012345670123454
27012345670123456765
16345670123456701076
05270123456701232107
74163456701234543210
63052701234567654321
52741634567010765432
41630527012321076543
30527416345432107654
27416305276543210765
16305274107654321076
05274163210765432107
74163054321076543210
63052765432107654321
52741076543210765432
41632107654321076543
30543210765432107654
27654321076543210765
10765432107654321076

34343434343434343434
25252525252525252525
16161616161616161616
07070707070707070707
70707070707070707070
61616161616161616161
52525252525252525252
43434343434343434343
34343434343434343434
25252525252525252525
16161616161616161616
07070707070707070707
70707070707070707070
61616161616161616161
52525252525252525252
43434343434343434343
34343434343434343434
25252525252525252525
16161616161616161616
07070707070707070707

76543210765432107654
32107654321076543210
76543210765432107654
32107654321076543210
76543210765432107654
32107654321076543210
76543210765432107654
32107654321076543210
76543210765432107654
32107654321076543210
76543210765432107654
32107654321076543210
76543210765432107654
32107654321076543210
76543210765432107654
32107654321076543210
76543210765432107654
32107654321076543210
76543210765432107654
32107654321076543210
--------------------------------------------------8<---
cichy
---8<--------------------------------------------------
01234567012345670123
34567012345670123454
27012345670123456765
16345670123456701076
05270123456701232107
74163456701234543210
63052701234567654321
52741634567010765432
41630527012321076543
30527416345432107654
27416305276543210765
16305274107654321076
05274163210765432107
74163054321076543210
63052765432107654321
52741076543210765432
41632107654321076543
30543210765432107654
27654321076543210765
10765432107654321076

34343434343434343434
25252525252525252525
16161616161616161616
07070707070707070707
70707070707070707070
61616161616161616161
52525252525252525252
43434343434343434343
34343434343434343434
25252525252525252525
16161616161616161616
07070707070707070707
70707070707070707070
61616161616161616161
52525252525252525252
43434343434343434343
34343434343434343434
25252525252525252525
16161616161616161616
07070707070707070707

76543210765432107654
32107654321076543210
76543210765432107654
32107654321076543210
76543210765432107654
32107654321076543210
76543210765432107654
32107654321076543210
76543210765432107654
32107654321076543210
76543210765432107654
32107654321076543210
76543210765432107654
32107654321076543210
76543210765432107654
32107654321076543210
76543210765432107654
32107654321076543210
76543210765432107654
32107654321076543210
--------------------------------------------------8<---
phpion
---8<--------------------------------------------------

--------------------------------------------------8<---
krowal
---8<--------------------------------------------------


--------------------------------------------------8<---
flashdev
---8<--------------------------------------------------

Warning: str_split(): The length of each segment must be greater than zero in /Users/drbonzo/php-konkurs-jesien-2010/flashdev.php on line 40

Warning: implode(): Invalid arguments passed in /Users/drbonzo/php-konkurs-jesien-2010/flashdev.php on line 79




Warning: chunk_split(): Chunk length should be greater than zero in /Users/drbonzo/php-konkurs-jesien-2010/flashdev.php on line 109
--------------------------------------------------8<---
krowal
@dr_bonzo, dzięki za rozwianie wątpliwości smile.gif
Pozostaje tylko mieć nadzieję, że kody nie będą aż tak długie i integer wytrzyma winksmiley.jpg
flashdev
Jednak czytanie ze zrozumieniem to przydatna umiejętność.
"kolumny i wiersze w zakresie 3 – 20"
W ogóle nie zauważyłem tej linijki i optymalizowałem swoje prostokąty na rozmiary nawet 1000x1000 i większe. Miałem nadzieję, że będą takie duże w testach, żeby to miało sens.

@dr_bonzo, jeżeli chce Ci się to możesz też dorzucić do tych testów mój kod -> http://wklej.org/id/412411/
dr_bonzo
@flashdev - dodane (patrz na 2 gorne posty)
flashdev
Cytat(dr_bonzo @ 4.11.2010, 12:11:08 ) *
@flashdev - dodane (patrz na 2 gorne posty)


No to widzę, że zaszalałem...
ayeo
Ale strzeliłem babola! W najprostszym momencie biggrin.gif Pokonkursowane biggrin.gif
l0ud
Moje "cudo" tongue.gif

http://wklej.org/id/412490/
sever88
Mój kod:
http://pastebin.com/AbQs4AjL

Nie mam żadnych specjalnych tricków.
Kolejne cyfry wrzucam na wybrane pozycje w stringu. Kod rozkodowuję na bieżąco sprawdzając czy jest interesujący znak. Tworzenie prostokątów jest dosyć sprawne, ale wynik w głównej mierze będzie zależał od rozszyfrowywania.
Pierwsza połowa kodu odpowiada za szyfr mimo że na to nie wygląda, po prostu są wykorzystywane te same nazwy zmiennych w obu częściach programu smile.gif

@phpion - fajne sztuczki wymyśliłeś, Twój kod wygląda mi na faworyta smile.gif
damc
Ktoś jest zainteresowany tym, jak zrobić pierwszy prostokąt bez wpisywania do tablicy?
rzymek01
Wiem, że teraz trochę naciągam, ale proszę o dołączenie moich dwóch kodów do testow tongue.gif

1. szukanie parametrów za pomocą preg_match:
http://wklej.to/J6KB
2. własna funkcja do szukania:
http://wklej.to/xKl4

PS. po fakcie patrzę, że moglem troche lepiej zoptymalizowac tongue.gif
PS2. proponuje testować na ciągu długości tak przynajmniej 10000-100000
askone
Obiecany kod: http://wklej.org/id/412654/

Fajnie jeśli udało by się go sprawdzić w testach porównawczych;)
Demio
http://wklej.org/id/412657/

Mój kod. Pozdrawiam.
Pawel_W
widzę, że dużo osób tu stosuje pętlę for, a to jest przecież ogromne opóźnienie w stosunku do while smile.gif
dr_bonzo
Jakis dowod?
kaliberx
Cytat(sever88 @ 4.11.2010, 15:21:35 ) *
Mój kod:
http://pastebin.com/AbQs4AjL

Nie mam żadnych specjalnych tricków.


Nie ma to jak skromność. Według moich pomiarów masz najszybszy program ze wszystkich tu wysłanych.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.