[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Возможно ли оптимизировать или уменьшить код
japanxt2
Мой примитивнейший шифратор, прошу сказать где что можно убрать или добавить
<form action="" method="post">
<
input name="name" type="text">
<
input name="go" type="submit">
</
form>
<?php
function
coder($str)
{
$lenstr=strlen($str);
for ($x=0;$x<$lenstr;$x++)
{
$result.= ord($str{$x}).'X';
}
return $result;
}

function decoder($str)
{
$mstr = explode('X',$str);
if (count($mstr)<>1){
$lenmstr=count($mstr)-1;
for ($x=0;$x<$lenmstr;$x++)
{
$str_m[$x]= chr($mstr[$x]);
}
$result =implode('',$str_m);
} else {$result='';}
return $result;
}
echo 'Закодированное число: '.coder($_POST['name']).'<br><br>';
echo 'Раскодированое число: '.decoder($_POST['name']).'<br><br>';
?>




Спустя 3 минуты, 48 секунд (15.03.2010 - 00:04) waldicom написал(а):
Учитывая, что код не работает как надо, то можно добавить пару символов сюда, а можно убрать парочка оттуда...

Спустя 3 минуты, 53 секунды (15.03.2010 - 00:08) japanxt2 написал(а):
waldicom он полностью работает как надо, я говорил что доработать в функциях, кстати дополнительный вопрос, как мне уменьшить шифрованный код в размерах, а то как то великоват smile.gif

Спустя 3 минуты, 14 секунд (15.03.2010 - 00:12) waldicom написал(а):
Цитата (japanxt2 @ 14.03.2010 - 23:08)
waldicom он полностью работает как надо, я говорил что доработать в функциях

Блажены верущие... Тут или у меня PHP неправильный, либо одно из двух...
В функциях можно доработать логику, чтобы они (функции) работали как надо...

Спустя 1 минута, 4 секунды (15.03.2010 - 00:13) japanxt2 написал(а):
dry.gif Ну так скажи где у тебя ERROR вылазит

Спустя 7 минут, 39 секунд (15.03.2010 - 00:20) krasilich написал(а):
А кто сказал что там эррор????
С точки зрения синтаксиса все верно, с точки зрения логики - нет (если мы правильно поняли задумку, конечно)

По идее функцией coder мы получаем зашифрованное число, так? А потом расшифровываем его ф-ей decoder?

так вот для начала передай в функцию декодер то что ты получишаешь в функции кодер, и оцени насколько "верно" работает код

Спустя 1 минута, 12 секунд (15.03.2010 - 00:21) japanxt2 написал(а):
krasilich
в том и дело что он работает идеально

Спустя 53 секунды (15.03.2010 - 00:22) waldicom написал(а):
Не смешите мои тапочки...

Спустя 3 минуты, 30 секунд (15.03.2010 - 00:26) japanxt2 написал(а):
Смотри ввожу я в поле

Мама купила маше игрушку

Нажимаю кнопку, получаю зашифрованный код

50X48X52X88X50X50X52X88X50X51X54X88X50X50X52X88X51X50X88X50X51X52X88X50X52X51X88X50X51X57X88X50X51X50X88X50X51X53X88X50X50X52X88X51X50X88X50X51X54X88X50X50X52X88X50X52X56X88X50X50X57X88X51X50X88X50X51X50X88X50X50X55X88X50X52X48X88X50X52X51X88X50X52X56X88X50X51X52X88X50X52X51X88X

Ввожу его в это же поле, получаю

расшифрованный код

Мама купила маше игрушку

Если у тебя не так работает то скажи пожалуйста буду благодарен, если все также работает тогда не люби мне мозги

Спустя 3 минуты, 30 секунд (15.03.2010 - 00:29) waldicom написал(а):
$testvar = 555;
$encoded = coder($testvar);
$decoded = decoder($encoded);
if($decoded == $testvar){
echo("Мои функции верх совершенства");
}else{
echo("Мои функции унылые говняшки");
}

И почитай вывод скрипта...

Спустя 5 минут, 3 секунды (15.03.2010 - 00:34) japanxt2 написал(а):
мой дорогой друг waldicom, функции предназначались для кодирования строк если вы не поняли !


$testvar = '555';//Вот тут типоооо Она страковая переменная
$encoded = coder($testvar);
$decoded = decoder($encoded);
if($decoded == $testvar){
echo("Мои функции верх совершенства");
}else{
echo("Мои функции унылые говняшки");
}


А выводит у меня

Мои функции верх совершенства laugh.gif Я гений
ПРОБЛЕМУ ВАШЕГО НЕПОНИМАНИЯ СКРИПТА, МЫ НАДЕЮСЬ РЕШИЛИ??? Так давайте посоветуйте наконец что-нибудь дельное, конечно это моя ошибка гнустного нуба не объяснить вам пользователям из группы экспертов как работает скрипт, мне искренне жаль что так получилось в следующий раз буду говорить какие данные у меня приходят через $_POST tongue.gif !

Спустя 4 минуты, 53 секунды (15.03.2010 - 00:39) waldicom написал(а):
Цитата из первого поста (выделено красным и увеличен шрифт мной):

Цитата
echo 'Закодированное число: '.coder($_POST['name']).'<br><br>';


Цитата из предыдущего поста (выделено красным и увеличен шрифт мной):
Цитата
... функции предназначались для кодирования строк если вы не поняли !


Ага, строк... Или чисел... ну в общем автор сам еще не понял, для чего...


Это уже не говоря о том, что функции должны работать для всех аргументов (или обрабатывать их правильно или сигнализировать о том, что что-то пошло в кось)...

Спустя 7 минут, 43 секунды (15.03.2010 - 00:47) japanxt2 написал(а):
Мой касяк я уже написал, но данная функция мне нужна только для строк, так давайте отбросим наши разногласия и пойдем по теме заданной мной в начале

Спустя 8 минут, 6 секунд (15.03.2010 - 00:55) Nikitian написал(а):
Цитата (japanxt2 @ 14.03.2010 - 21:08)
как мне уменьшить шифрованный код в размерах, а то как то великоват smile.gif


<?php
$str='50X48X52X88X50X50X52X88X50X51X54X88X50X50X52X88X51X50X88X50X51X52X88X50X52X51X88X50X51X57X88X50X51X50X88X50X51X53X88X50X50X52X88X51X50X88X50X51X54X88X50X50X52X88X50X52X56X88X50X50X57X88X51X50X88X50X51X50X88X50X50X55X88X50X52X48X88X50X52X51X88X50X52X56X88X50X51X52X88X50X52X51X88X';
echo$str.'<hr />'.gzcompress($str,9).'<hr />'.gzuncompress(gzcompress($str,9));

Для коротких строк уменьшения не будет, даже наоборот.

Спустя 24 минуты, 25 секунд (15.03.2010 - 01:19) japanxt2 написал(а):
Nikitian спасибо, нормально сжимает

Спустя 11 часов, 17 минут, 38 секунд (15.03.2010 - 12:37) qpayct написал(а):
ну прямо мистер Икс laugh.gif

Спустя 2 часа, 40 минут, 42 секунды (15.03.2010 - 15:18) japanxt2 написал(а):
qpayct biggrin.gif вообще не говори X Рулиз

Спустя 26 минут, 44 секунды (15.03.2010 - 15:45) qpayct написал(а):
всё невозможное возможно
function coder($str) {
for ($x=0; $x<strlen($str); $x++)
$result.= ord($str{$x}) .'X';
return $result;
}

function decoder($str) {
$mstr = explode('X', $str);
if (count($mstr) > 0) {
foreach ($mstr as $key => $val)
$mstr[$key] = chr($val);
$result = implode('',$mstr);
} else return 0;
return $result;
}
а так вообще согласен с экспертами - оно нафик никому не надо

Спустя 6 часов, 28 минут, 36 секунд (15.03.2010 - 22:13) japanxt2 написал(а):
У меня еще вопрос как сжать вот такую строку

53706f6e74616e6961206665617420415a55204f4e414a4920534f5241204d495453554d455445525520414e4154414e49

То есть убрать повторяющие символы, и при том не сделать ее бинарной, она должная иметь строковый тип

Спустя 10 минут, 46 секунд (15.03.2010 - 22:24) sergeiss написал(а):
japanxt2 - это несложно smile.gif
Алгоритм простой:
1. Преобразовать строку в массив, каждый элемент состоит из одного символа.
2. Используем array_unique()
3. Преобразуем полученный массив в строку.

Всего 4 коротких строки получается smile.gif

Спустя 5 минут, 11 секунд (15.03.2010 - 22:29) japanxt2 написал(а):
sergeiss это не то, мне другое нужно sad.gif ладно буду думать,

Спустя 53 секунды (15.03.2010 - 22:30) sergeiss написал(а):
japanxt2 - я чегой-то не понял... Если тебе ответ не нужен, то чего спрашиваешь тогда? Или я что-то не понял?

Спустя 31 минута, 46 секунд (15.03.2010 - 23:02) japanxt2 написал(а):
Ладно тогда вот новый вопрос, взял тут функцию из c++ и переделал в php, функция сжатие строки RLE алгоритмом

function rle($str1)
{
$str='';$ch='';
for ($i = 0; $i < strlen($str1);$i++ ) // от 0 до длины строки
{
$ch = substr($str1,$i, 1); // получаем текущий символ из строки str1
$k = 0; //счетчик количества повторяющихся символов
if ($i == (strlen($str1) - 1)) // если последний символ
{
$str.= $ch;
break; //выходим из цикла
}
if (substr($str1,$i + 1, 1) == $ch)
{
for ($j = $i; $j < strlen($str1); $j++)
{
if (substr($str1 ,$j, 1) == $ch)//если текущий символ равен символу из строки ch
{
$k++;//увеличиваем счетчик
}
else
break
; //выходим из цикла
}
$i = $j;
}
else
$i++;
if ($k != 0)
$str.= $k.$ch;
else
$str.= $ch;

}
return $str;
}


На вход даем aaaaarooow
Должны получить 5ar3ow
А получаем 5a3o

ph34r.gif Не могу найти где логика теряется


А кстати здесь вообще ужс

function out_rle($str1)
{
$str = ""; $ch = "";$s = "";$symb = "";
$k = 0;
for ($i = 0; $i < strlen($str1);$i++ )
{
$ch = substr($str1,$i, 1); // текущий символ i
$k = 0;
$s = "";
if (preg_match("/[0-9]/",$ch)) // если символ ch является цифрой
{
for ($j = $i; $j < strlen($str1); $j++)
{
if (preg_match("/[0-9]/",substr($str1,$j, 1))) // если текущий символ j является цифрой
{
$s.= substr($str1,$j, 1);
}
else
break
;
}
$symb = substr($str1,$j, 1); // получаем букву
$i = $j + 1;
}
else
$i++;
if (strlen($s) != 0)
{
for ($j = 0; $j < $s; $j++) // декодирование буквы
$str.= $symb;
}
else
$str.= $ch;
}
return $str;
}
?>

Спустя 14 часов, 52 минуты, 8 секунд (16.03.2010 - 13:54) japanxt2 написал(а):
Че вообще нету вариантов??

Спустя 5 часов, 9 минут, 28 секунд (16.03.2010 - 19:03) Игорь_Vasinsky написал(а):
Цитата
if($decoded == $testvar){
echo("Мои функции верх совершенства");
}else{
echo("Мои функции унылые говняшки");


мне понравилось, здесь вообще много юморного

на вопрос можно ли оптимизировать:

сменить функцию шифрования на более короткую, соответственно и функц дешифровки будет меньше.

Ты сам выбераешь алгоритм.

Спустя 3 минуты, 28 секунд (16.03.2010 - 19:07) qpayct написал(а):
Цитата (japanxt2 @ 15.03.2010 - 22:02)
А кстати здесь вообще ужс

а в чём этот ужос заключается, извини, неуловил

Спустя 1 час, 29 минут, 28 секунд (16.03.2010 - 20:36) japanxt2 написал(а):
Игорь_Vasinsky
предложи что нибудь, хотя бы алгоритм, и что бы результат был отображен только латинецей и цифрами
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.