1. JavaScript / Говнокод #18109

    +142

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    function num_to_sxg($n) {
     $s = "";
     $m = "0123456789ABCDEFGHJKLMNPQRSTUVWXYZ_abcdefghijkmnopqrstuvwxyz";
     if ($n===undefined || $n===0) { return 0; }
     while ($n>0) {
       $d = $n % 60;
       $s = strcat($m[$d],$s);
       $n = ($n-$d)/60;
     }
     return $s;
    }
    
    function num_to_sxgf($n, $f) {
     $s = num_to_sxg($n);
     if ($f===undefined) { 
       $f=1; 
     }
     $f -= strlen($s);
     while ($f > 0) { 
       $s = strcat("0",$s); 
       --$f; 
     }
     return $s;
    }
    
    function sxg_to_num($s) {
     $n = 0;
     $j = strlen($s);
     for ($i=0;$i<$j;$i++) { // iterate from first to last char of $s
       $c = ord($s[$i]); //  put current ASCII of char into $c  
       if ($c>=48 && $c<=57) { $c=$c-48; }
       else if ($c>=65 && $c<=72) { $c-=55; }
       else if ($c==73 || $c==108) { $c=1; } // typo capital I, lowercase l to 1
       else if ($c>=74 && $c<=78) { $c-=56; }
       else if ($c==79) { $c=0; } // error correct typo capital O to 0
       else if ($c>=80 && $c<=90) { $c-=57; }
       else if ($c==95) { $c=34; } // underscore
       else if ($c>=97 && $c<=107) { $c-=62; }
       else if ($c>=109 && $c<=122) { $c-=63; }
       else { $c = 0; } // treat all other noise as 0
       $n = 60*$n + $c;
     }
     return $n;
    }

    Угадайте, какой это язык и что пил автор.

    http://ideone.com/87cVrr

    http://ideone.com/Z8j7ve

    Запостил: solnze_dar, 02 Мая 2015

    Комментарии (11) RSS

    • Годно, мне нравится. Код не дублируется, логика клиента и сервера идентична, просто рай и Node.js.
      Ответить
      • >>Код не дублируется

        Вспомнилось

        Паттерн - это когда вместо 5 одинаковых строк коды вы пишете 50, но разных
        Ответить
    • Чуть не забыл. Взято отсюда:
      http://tantek.pbworks.com/w/page/19402946/NewBase60

      Саму кодировку предполагалось использовать в сокращателе URL. Она не содержит трудноразличимых символов, поэтому автор предполагает, что закодированный ID легко набирается с распечатки.
      Ответить

    Добавить комментарий