Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: CodeChallange #1
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
soliniak
Coś dla "ambitniejszych" użytkowników serwisu wink.gif
Czy jest ktoś w stanie napisać skrypt (i nie mam na myśli metod bruteforce tongue.gif) który mógłby rozwiązać poniższą zagadkę? smile.gif
Ja sam nie jestem w stanie czegoś takie zrobić, a zastanawia mnie jakby taki kod mógł wyglądać wink.gif

Pozdrawiam
Crozin
Bardzo prosto jest dojść do wyniku drogą eliminacji kolejnych cyfr z różnych kodów.
Kod
062
Riggs
Trochę treść zadania jest nieprecyzyjna bo np 3 reguła mówi, że 2 cyfry są prawidłowe ale w złych miejscach a @Crozin użył tych 3 cyfr do kodu.
Crozin
Ups... pomyliłem się przy wpisywaniu wyniku tutaj. :-)
Kod
042
!*!
Internet podpowiada kodem

  1. $index = "01246";
  2. $base = strlen($index);
  3. $len = 3;
  4.  
  5. $x = array();
  6.  
  7. for ($i = 0, $l = pow(strlen($index), $len); $i < $l; $i++) {
  8. $x[] = str_pad(dec2any($i, $base, $index), $len, "0", STR_PAD_LEFT);
  9. }
  10.  
  11. function dec2any( $num, $base=62, $index=false ) {
  12. if (! $base ) {
  13. $base = strlen( $index );
  14. } else if (! $index ) {
  15. $index = substr( $index ,0 ,$base );
  16. }
  17. $out = "";
  18. for ( $t = floor( log10( $num ) / log10( $base ) ); $t >= 0; $t-- ) {
  19. $a = floor( $num / pow( $base, $t ) );
  20. $out = $out . substr( $index, $a, 1 );
  21. $num = $num - ( $a * pow( $base, $t ) );
  22. }
  23. return $out;
  24. }
  25.  
  26. echo '<pre>';
  27. echo count($x);
  28. print_r($x);


I nie możesz wykluczyć bruteforce od strony programistycznej, a to że da się to rozwiązać w głowie to inna bajka wink.gif
Niree
Cytat(!*! @ 5.12.2016, 11:08:29 ) *
Internet podpowiada kodem

  1. $index = "01246";
  2. $base = strlen($index);
  3. $len = 3;
  4.  
  5. $x = array();
  6.  
  7. for ($i = 0, $l = pow(strlen($index), $len); $i < $l; $i++) {
  8. $x[] = str_pad(dec2any($i, $base, $index), $len, "0", STR_PAD_LEFT);
  9. }
  10.  
  11. function dec2any( $num, $base=62, $index=false ) {
  12. if (! $base ) {
  13. $base = strlen( $index );
  14. } else if (! $index ) {
  15. $index = substr( $index ,0 ,$base );
  16. }
  17. $out = "";
  18. for ( $t = floor( log10( $num ) / log10( $base ) ); $t >= 0; $t-- ) {
  19. $a = floor( $num / pow( $base, $t ) );
  20. $out = $out . substr( $index, $a, 1 );
  21. $num = $num - ( $a * pow( $base, $t ) );
  22. }
  23. return $out;
  24. }
  25.  
  26. echo '<pre>';
  27. echo count($x);
  28. print_r($x);


I nie możesz wykluczyć bruteforce od strony programistycznej, a to że da się to rozwiązać w głowie to inna bajka ;)


Wyjaśnisz proszę, dlaczego $index = "01246"; ? tongue.gif z czystej ciekawości, nigdy podobnego kodu nie widziałem.
!*!
Tylko te liczby występują w powyższym przykładzie
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-2025 Invision Power Services, Inc.