solar25
Всем привет. Имеется простенькая функция на JS
Код (Javascript):
function test(var1) { var var_str=«»+Challenge; var var_arr=var_str.split(«»); var LastDig=var_arr.reverse()[0]; var minDig=var_arr.sort()[0]; var subvar1 = (2 * (var_arr[2]))+(var_arr[1]*1); var subvar2 = (2 * var_arr[2])+var_arr[1]; var my_pow=Math.pow(((var_arr[0]*1)+2),var_arr[1]); var x=(var1*3+subvar1)*1; var y=Math.cos(Math.PI*subvar2); var answer=x*y; answer-=my_pow*1; answer+=(minDig*1)—(LastDig*1); answer=answer+subvar2; return answer; }Помогите конвертировать на php 5, готов выдать небольшое вознаграждение. Спасибо
don.bidon
цена вопроса?
MouseZver
undefined var
— Добавлено —
трахните систему — когда в js прибавляем 4 + 1 = 41, а когда 4 + 2 = 6
don.bidon
очевидно, объявлено где-то выше, но у нас же тут такие растакие поставители задач )
solar25
Простите так бывает )
Код (Javascript):
<script> Challenge=770384; ChallengeId=36220487; function test(var1) { var var_str=«»+Challenge; var var_arr=var_str.split(«»); var LastDig=var_arr.reverse()[0]; var minDig=var_arr.sort()[0]; var subvar1 = (2 * (var_arr[2]))+(var_arr[1]*1); var subvar2 = (2 * var_arr[2])+var_arr[1]; var my_pow=Math.pow(((var_arr[0]*1)+2),var_arr[1]); var x=(var1*3+subvar1)*1; var y=Math.cos(Math.PI*subvar2); var answer=x*y; answer-=my_pow*1; answer+=(minDig*1)—(LastDig*1); answer=answer+subvar2; return answer; } alert(test(Challenge)); </script>
Drunkenmunky
PHP:
<?php function test($var1) { $subvar1 = (2 * $var_arr[2]) + $var_arr[1]; $subvar2 = (2 * $var_arr[2]) + $var_arr[1]; $x = $var1 * 3 + $subvar1; $answer = $x * $y; $answer -= $my_pow; $answer += $minDig — $LastDig; $answer += $subvar2; return $answer; } $Challenge = 770384; $ChallengeId = 36220487; echo test($Challenge); ?>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:
<?php $Challenge = 252781882; $subvar1 = (2 * $var_arr[2]) + $var_arr[1]*1; $subvar2 = (2 * $var_arr[2]) . $var_arr[1]; $x = ($Challenge * 3 + $subvar1)*1; $answer = $x * $y; $answer -= $my_pow*1; $answer += ($minDig*1) — ($LastDig*1); $answer = $answer . $subvar2; echo ($answer);
Drunkenmunky
Ну, если бы вы так сразу написали, ответ бы получили значительно быстрее.
Но, заодно освоили преобразования типов и конкатенацию, тоже полезно.