На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Serafim, fatalist
Страницы: (2) 1 [2]  все  ( Перейти к последнему сообщению )  
    > Object-PBFP.NET#$&^++ 5.2, почти BrainF*ck , :lol:
      сам компиль большой, встроен прямо в HTML, причём там есть некоторые лишние вещи, вроде стека (пока бегаешь влево\вправо, можно буковки, которые потом понадобятся - отправить в стек, а потом извлечь - через двоеточие указывая смещение в стеке (прямо как в ассемблере блин :lol: ))

      Добавлено
      Короче там явно больше 150 байт

      Добавлено
      Цитата Sunny @
      Serafim
      Не, ну ты хоть скажи на каком этапе сейчас, у меня пока 157 байт, меньше не получается

      а ты что, тоже этим издевательством заразился? :lol:
        В общем что получилось:
        ExpandedWrap disabled
          <?
          /*
          Create by Sunny (e-boxes@list.ru, 288-681-633)
          Simply brain fuck
          */
           
          function obfuscate($code){
              $code = preg_replace("~//.+\n~isU", "", $code);
              $code = str_replace(array("\n", "\t", " "), "", $code);
              return $code;
          }
           
          // vars
          $s = array(
             'a','b','c','d','e',
             'f','g','h','i','j',
             'k','l','m','n','o',
             'p','q','r','s','t',
             'u','v','w','x','y',
             'z','1','2','3','4',
             '5','6','7','8','9',
             '0','"','(',')','=',
             '+','-','*','>','<',
             '.','/',',',':','!',
             '[',']','_','$','{',
             '}','а','б','в','г',
             'д','е','ё','ж','з',
             'и','й','к','л','м',
             'н','о','п','р','т',
             'у','ф','х','ц','ч',
             'ш','щ','ь','ы','ъ',
             'э','ю','я','\\','A',
             'B','C','D','E','F',
             'G','H','I','J','K',
             'L','M','N','O','P',
             'Q','R','S','T','U',
             'V','W','X','Y','Z',
             ' ',';');
          $d = ">>>>^<<^>>>>>^>>>>>>>^v<<^v>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>^v>>>>>>>^>v>>>>^>>>>>>>^^>>>^v<<^v>>>>>>>>>>>>>>>>>>>>>>^<<<<<<<<^>>>^<<<<<<^v>>>^v>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>^v<^";
           
          // first variant
          $first = '
          $a = str_split($d); // split crypt string
          $i = 0; // index
          while($b = each($a)){ // array while
              if($b[1] == ">"){ // next iteration
                  $i++;
                  continue;
              }
              if($b[1] == "v"){ // clear index
                  $i = 0;
                  continue;
              }
              if($b[1] == "<"){ // back iteration
                  if($i <= 0){
                      $i = count($s);
                  }
                  $i--;
                  continue;
              }
              echo $s[$i];
          }
          ';
           
          // second variant
          $second = '
          $a = str_split($d); // split crypt string
          $i = 0; // index
          while($b = each($a)){ // array while
              switch($b[1]){
                  case ">": // next iteration
                      $i++;
                      break;
                  case "v": // clear index
                      $i = 0;
                      break;
                  case "<": // back iteration
                      if($i <= 0){
                          $i = count($s);
                      }
                      $i--;
                      break;
                  default:
                      echo $s[$i];
              }
          }
          ';
          ?>
          First variant (<?=strlen(obfuscate($first));?>b):<br>
          <?=obfuscate($first);?><br>
          <?eval($first);?><br><br>
           
          Second variant (<?=strlen(obfuscate($second));?>b):<br>
          <?=obfuscate($second);?><br>
          <?eval($second);?>


        Результат:
        ExpandedWrap disabled
          First variant (167b):
          $a=str_split($d);$i=0;while($b=each($a)){if($b[1]==">"){$i++;continue;}if($b[1]=="v"){$i=0;continue;}if($b[1]=="<"){if($i<=0){$i=count($s);}$i--;continue;}echo$s[$i];}
          echo "hello world";
           
          Second variant (157b):
          $a=str_split($d);$i=0;while($b=each($a)){switch($b[1]){case">":$i++;break;case"v":$i=0;break;case"<":if($i<=0){$i=count($s);}$i--;break;default:echo$s[$i];}}
          echo "hello world";
          ОМГ :lol: У меня 1.66 КБ
          Код передаётся через POST['compile'] :)
          ExpandedWrap disabled
            <?php
            $foobar = array('/','\\','>','<','!','^','v');
            $sym    = array(
                'a','b','c','d','e',
                'f','g','h','i','j',
                'k','l','m','n','o',
                'p','q','r','s','t',
                'u','v','w','x','y',
                'z','1','2','3','4',
                '5','6','7','8','9',
                '0','"','(',')','=',
                '+','-','*','>','<',
                '.','/',',',':','!',
                '[',']','_','$','{',
                '}','а','б','в','г',
                'д','е','ё','ж','з',
                'и','й','к','л','м',
                'н','о','п','р','т',
                'у','ф','х','ц','ч',
                'ш','щ','ь','ы','ъ',
                'э','ю','я','\\','A',
                'B','C','D','E','F',
                'G','H','I','J','K',
                'L','M','N','O','P',
                'Q','R','S','T','U',
                'V','W','X','Y','Z',
                ' ',';');
             
            # v         -   сбрасывает счётчик на ноль
            # >         -   переносит каретку влево
            # <         -   переносит каретку вправо
            # \         -   отправляет данные в стек
            # /         -   вытаскивает данные из стека
            # !         -   меняет местами последний и предпоследний элемент стека
            # ^         -   отправляет символ в программный стек
             
            $kar = 0; // Каретка
            $stack = array();
             
            if(isset($_POST['compile'])){
                $prog = @$_POST['compile'];
                if($ep = trim(str_replace($foobar, '', $prog))){ die('Unexpected symbol: '.$ep[0]); }else{ echo 'Compile complete: '.time(); }
                $exec = '';
                
                for($i=0; $i<strlen($prog); $i++){
                    if($prog[$i] == '>'){
                        $kar==count($sym)?$kar=0:$kar++;
                    }else if($prog[$i] == '<'){
                        $kar==0?$kar=count($sym)-1:$kar--;
                    }else if($prog[$i] == 'v'){
                        $kar=0;
                    }else if($prog[$i] == '^'){
                        $exec .= $sym[$kar];
                    }
                }
                eval($exec);
                echo '<hr/>['.$exec.']';
            }
            ?>


          Добавлено
          ой, это не то :rolleyes:

          Добавлено
          а ну пофиг, тоже работает :lol:
            Serafim
            Проверок всяких много, у меня немного проще и проверка на switch'е висит, на 10кб меньше чем if/else.
            Сообщение отредактировано: Sunny -
              Дык яж не на размер, у меня там всё откомменчено ещё. Тем более это не Бреинфак ;) Сам как бы придумываю)

              Добавлено
              У меня как бы творческий процесс

              Добавлено
              Цитата Sunny @
              Проверок всяких много

              Патамушта почти полноценный компиль :crazy:
                Ну как минимум массив значений можно хранить в строке, и обращаться к символу, а не к элементу, это как известно идентично в случае PHP и одно-байтовой кодировки.
                  Pr0[)!9Y, угу, согласен :yes: Только у меня юникод :(

                  Добавлено
                  Сделал что-то вроде категорий, т.е. теперь это матрица. Добавил стек (точнее обычный массив, но из-за схожести с с ассемблерным стеком, в который набиваются всякие временные числа, буду называть так) и сдвиг. Новые символы:
                  # v - переносит каретку вниз (mas[*][*])
                  # > - переносит каретку вправо(mas[*][*])
                  # < - переносит каретку влево(mas[*][*])
                  # ^ - переносит каретку вверх (mas[*][*])
                  # % - обнуляет каретку (позиция 0,0 - mas[0][0])
                  # * - отправляет данные в стек (stack[] = mas[x][y])
                  # & - вытаскивает данные из стека в программный (exec[] = stack[0])
                  # : - указывает сдвиг в стеке (в формате "&:2" - (exec[] = stack[&:X]))
                  # ! - отправляет символ в программный стек (на выполнение)


                  ExpandedWrap disabled
                    <?php
                    $matrix =
                    array(
                        array('1','2','3','4','5','6','7','8','9','0'),
                        array(
                            '"','(',')','=','+','-','*','>','<','.',
                            '/',',',':','!','[',']','_','$','{','}',
                            ' ', ';'
                        ),
                        array(
                            'a','b','c','d','e','f','g','h','i','j',
                            'k','l','m','n','o','p','q','r','s','t',
                            'u','v','w','x','y','z'
                        ),
                        array(
                            'A','B','C','D','E','F','G','H','I','J',
                            'K','L','M','N','O','P','Q','R','S','T',
                            'U','V','W','X','Y','Z'
                        ),
                        array(
                            'а','б','в','г','д','е','ё','ж','з','и',
                            'й','к','л','м','н','о','п','р','c','т',
                            'у','ф','х','ц','ч','ш','щ','ь','ы','ъ',
                            'э','ю','я'
                        ),
                        array(
                            'А','Б','В','Г','Д','Е','Ё','Ж','З','И',
                            'Й','К','Л','М','Н','О','П','Р','С','Т',
                            'У','Ф','Х','Ц','Ч','Ш','Щ','Ь','Ы','Ъ',
                            'Э','Ю','Я'
                        )
                    );
                     
                    # v         -   переносит каретку вниз
                    # >         -   переносит каретку вправо
                    # <         -   переносит каретку влево
                    # ^         -   переносит каретку вверх
                    # %         -   обнуляет каретку
                    # *         -   отправляет данные в стек
                    # &         -   вытаскивает данные из стека
                    # :         -   указывает сдвиг в стеке
                    # !         -   отправляет символ в программный стек
                     
                        /// V - Вертикальный сдвиг (число)
                        /// H - Горизонтальный сдвиг (число)
                        /// S - Системный стек (массив)
                        /// P - Программный стек (строка)
                    $stack['v'] =   0;
                    $stack['h'] =   0;
                    $stack['s'] =   array();
                    $stack['p'] =   '';
                        /// Массив системных символов
                    $sysNames = array('v', '>', '<', '^', '*', '&', ':', '!', '%');
                        /// $programm - программа на выполнение
                    $programm = @$_POST['compile'];
                     
                    if($exec =  trim(str_replace($sysNames, '', str_replace($matrix[0], '', $programm)))) die('Undefined symbol: '.$exec[0]);
                     
                    for($i=0; $i<strlen($programm); $i++){
                        switch($programm[$i]){
                            case 'v':
                                $stack['v']==count($matrix)-1?$stack['v']=0:$stack['v']++;
                                break;
                            case '^':
                                $stack['v']==0?$stack['v']=count($matrix)-1:$stack['v']--;
                                break;
                            case '>':
                                $stack['h']==count($matrix[$stack['v']])-1?$stack['h']=0:$stack['h']++;
                                break;
                            case '<':
                                $stack['h']==0?$stack['h']=count($matrix[$stack['v']])-1:$stack['h']--;
                                break;
                            case '%':
                                $stack['h']=0;
                                $stack['v']=0;
                                break;
                            case '*':
                                $stack['s'][]=$matrix[$stack['v']][$stack['h']];
                                break;
                            case '&':
                                if($programm[$i+1] == ':'){
                                    $stackNum = '';
                                    for($j=0;(int)$programm[$i+2+$j];$j++){
                                        $stackNum .= (string)$programm[$i+2+$j];
                                    }
                                }else{
                                    $stackNum = 0;
                                }
                                $stack['p'] .= $stack['s'][$stackNum];
                                unset($stackNum);
                                break;
                            case '!':
                                $stack['p'] .= $matrix[$stack['v']][$stack['h']];
                                break;
                        }
                    }
                     
                    $result['eval']     = $stack['p'];
                    $result['stack']    = $stack['s'];
                    $result['programm'] = $programm;
                    ?>
                    Новый вариант "Привет мир!" :lol:
                    Цитата
                    vv>>>>!*<<!>>>>>!*>>>>>>>!*^>>>>>>!*%v!*v&:1&>>>>>>>>>>>!!&:2&:3>>>>>>>>>>>!&:2<<<<<!<<<<<<!%vv>>>!&:4^<<<<!


                    Добавлено
                    Минимизированная полная версия компилятора (1351 байта :D ):
                    ExpandedWrap disabled
                      <?php $m=array(array('1','2','3','4','5','6','7','8','9','0'),array('"','(',')','=','+','-','*','>','<','.','/',',',':','!','[',']','_','$','{','}','',';'),array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'),array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'),array('а','б','в','г','д','е','ё','ж','з','и','й','к','л','м','н','о','п','р','c','т','у','ф','х','ц','ч','ш','щ','ь','ы','ъ','э','ю','я'),array('А','Б','В','Г','Д','Е','Ё','Ж','З','И','Й','К','Л','М','Н','О','П','Р','С','Т','У','Ф','Х','Ц','Ч','Ш','Щ','Ь','Ы','Ъ','Э','Ю','Я'));$s['v']=0;$s['h']=0;$s['s']=array();$s['p']='';$z=array('v','>','<','^','*','&',':','!','%');$p=@$_POST['compile'];if($e=trim(str_replace($z,'',str_replace($m[0],'',$p))))die('Undefined symbol:'.$e[0]);for($i=0;$i<strlen($p);$i++){switch($p[$i]){case'v':$s['v']==count($m)-1?$s['v']=0:$s['v']++;break;case'^':$s['v']==0?$s['v']=count($m)-1:$s['v']--;break;case'>':$s['h']==count($m[$s['v']])-1?$s['h']=0:$s['h']++;break;case'<':$s['h']==0?$s['h']=count($m[$s['v']])-1:$s['h']--;break;case'%':$s['h']=0;$s['v']=0;break;case'*':$s['s'][]=$m[$s['v']][$s['h']];break;case'&':if($p[$i+1]==':'){$g='';for($j=0;(int)$p[$i+2+$j];$j++)$g.=(string)$p[$i+2+$j];}else$g=0;$s['p'].=$s['s'][$g];break;case'!':$s['p'].=$m[$s['v']][$s['h']];break;}}$result['eval']=$s['p'];$result['s']=$s['s'];$result['p']=$p;


                    Добавлено
                    Компилятор (интерпретатор) в рабочем состоянии доступен там же:
                    ht_tp://gamecomunity.ru/compile.php
                    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                    0 пользователей:


                    Рейтинг@Mail.ru
                    [ Script execution time: 0,0418 ]   [ 15 queries used ]   [ Generated: 5.05.24, 12:50 GMT ]