Помогите конвертировать функцию из JS на PHP

solar25

Всем привет. Имеется простенькая функция на JS

Код (Javascript):
  1. function test(var1)
  2. {
  3.     var var_str=«»+Challenge;
  4.     var var_arr=var_str.split(«»);
  5.     var LastDig=var_arr.reverse()[0];
  6.     var minDig=var_arr.sort()[0];
  7.     var subvar1 = (2 * (var_arr[2]))+(var_arr[1]*1);
  8.     var subvar2 = (2 * var_arr[2])+var_arr[1];
  9.     var my_pow=Math.pow(((var_arr[0]*1)+2),var_arr[1]);
  10.     var x=(var1*3+subvar1)*1;
  11.     var y=Math.cos(Math.PI*subvar2);
  12.     var answer=x*y;
  13.     answer-=my_pow*1;
  14.     answer+=(minDig*1)(LastDig*1);
  15.     answer=answer+subvar2;
  16.     return answer;
  17. }

Помогите конвертировать на php 5, готов выдать небольшое вознаграждение. Спасибо

 

don.bidon

цена вопроса?

 

MouseZver

undefined var
— Добавлено —
трахните систему — когда в js прибавляем 4 + 1 = 41, а когда 4 + 2 = 6

 

don.bidon

очевидно, объявлено где-то выше, но у нас же тут такие растакие поставители задач )

 

solar25

Простите так бывает )

Код (Javascript):
  1. <script>
  2. Challenge=770384;
  3. ChallengeId=36220487;
  4. function test(var1)
  5. {
  6.     var var_str=«»+Challenge;
  7.     var var_arr=var_str.split(«»);
  8.     var LastDig=var_arr.reverse()[0];
  9.     var minDig=var_arr.sort()[0];
  10.     var subvar1 = (2 * (var_arr[2]))+(var_arr[1]*1);
  11.     var subvar2 = (2 * var_arr[2])+var_arr[1];
  12.     var my_pow=Math.pow(((var_arr[0]*1)+2),var_arr[1]);
  13.     var x=(var1*3+subvar1)*1;
  14.     var y=Math.cos(Math.PI*subvar2);
  15.     var answer=x*y;
  16.     answer-=my_pow*1;
  17.     answer+=(minDig*1)(LastDig*1);
  18.     answer=answer+subvar2;
  19.     return answer;
  20. }
  21. alert(test(Challenge));
  22. </script>
 

Drunkenmunky

PHP:
  1. <?php
  2.  
  3. function test($var1)
  4. {
  5. $var_arr = str_split($var1);
  6. $LastDig = substr($var1, 1);
  7. $minDig = min($var_arr);;
  8. $subvar1 = (2 * $var_arr[2]) + $var_arr[1];
  9. $subvar2 = (2 * $var_arr[2]) + $var_arr[1];
  10. $my_pow = pow($var_arr[0] + 2, $var_arr[1]);
  11. $x = $var1 * 3 + $subvar1;
  12. $y = cos(M_PI * $subvar2);
  13. $answer = $x * $y;
  14. $answer -= $my_pow;
  15. $answer += $minDig $LastDig;
  16. $answer += $subvar2;
  17.  
  18. return $answer;
  19. }
  20.  
  21. $Challenge = 770384;
  22. $ChallengeId = 36220487;
  23.  
  24. echo test($Challenge);
  25. ?>

P.S. Вам, если, уникальная строка нужна, для 770384, то воспользуйтесь md5(‘770384’);

 

MouseZver

не правильно функционал реализован ) проверяй конечный результат ))
после еще на 1412 челендже проверь :)
— Добавлено —

 

Drunkenmunky

Я так понял, он где преобразует типы, там или умножает на 1 для int, или складывает со строкой.
В PHP этого не нужно.
Аналоги процедур я дал, дальше сам разберется.

 

MouseZver

Вот почему различается качество программистов на обращение тонкостей нюансов.
Логика отработки в языках программирования совершенна разная.

«В PHP этого не нужно.» — абсурд.

 

Drunkenmunky

Дихлофос.
Вам на «С»

 

MouseZver

Отлично. Давай теперь абстрагируемся — Дихлофос что делает ? правильно. Я теперь знаю где таракан обитает.

Ты пытался… ;)

 

solar25

Благодарю за отклик. Но результат другой ( при челлендже 252781882 должно получиться 842606…а получается 2517828 ((

 

Drunkenmunky

Потому, что, как выше заметили, местами в вашем скрипте не преобразуются типы данных.
Для JS это имеет большое значение. То есть в скрипте изначально имеется ошибка.
В версии для PHP её нет.
Отсюда разные результаты.

 

solar25

То есть вы считаете, что порт на php данного js скрипта невозможен?

 

Drunkenmunky

Он уже портирован в коде выше.
Для того чтобы он выдавал тот же результат, нужно сделать те же ошибки, что и в оригинале.
То есть, где строка складывается с числом, её придется преобразовать в 0 или единицу. В зависимости от содержания этой самой строки.

 

solar25

Спасибо за наводки. В JS не было ошибок, а было намудрено намеренно, дабы усложнить задачу.
Сделал так:

PHP:
  1. <?php
  2. $Challenge = 252781882;
  3. $var_arr = str_split($Challenge);
  4. $LastDig = substr($Challenge, 1);
  5. $minDig = min($var_arr);
  6. sort($var_arr);
  7. $subvar1 = (2 * $var_arr[2]) + $var_arr[1]*1;
  8. $subvar2 = (2 * $var_arr[2]) . $var_arr[1];
  9. $my_pow = pow($var_arr[0]*1 + 2, $var_arr[1]);
  10. $x = ($Challenge * 3 + $subvar1)*1;
  11. $y = cos(M_PI * $subvar2);
  12. $answer = $x * $y;
  13. $answer -= $my_pow*1;
  14.  
  15. $answer += ($minDig*1) ($LastDig*1);
  16.  
  17. $answer = $answer . $subvar2;
  18. echo ($answer);
 

Drunkenmunky

Ну, если бы вы так сразу написали, ответ бы получили значительно быстрее.
Но, заодно освоили преобразования типов и конкатенацию, тоже полезно.

 

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *