Добрый день. Есть массив который состоит из индексов - код символа, и значения - буквы. PHP: $arr = []; for ($i=65; $i<=90; $i++) { $x = chr($i); $arr[$i] = $x; } $index =89; //это буква Y $index +=2; $index = 91; Предпоследнее значение это буква Y с кодом 89. Мне нужно чтобы при изменении кода символа например на 2, мы прибавляли к значению 89+2 смотрели что такого значения нету, в массиве и бежали к 65 элементу. Кажись пока писал задачу понял как решить. Но все равно может кто-то подскажет идею получше.
Не совсем так. Я уже решил. PHP: $arr = []; for ($i=65; $i<=90; $i++) { $x = chr($i); $arr[$i] = $x; } $n = 2; $index =89+$n; // 89 это символ Y if(array_key_exists($index, $arr)){ echo "$arr[$index]"; }else{ $index = 65; echo "$arr[$index]"; }
Те же яйца, но сбоку, собственно А теперь расскажи, что вообще задумал, в общем контексте. А то само по себе это выглядит странно и немного индусово. Мб есть более верное решение.
вообщем ситуация следующая, нашел я интересный портал(не буду рекламить, так как наврное это запрещенно) со всякими задачками ну и была там задача такого плана. Есть строка "BORN IN 2015!". Эту строку надо "закодировать" 1) сместить каждый символ на один 2) от каждой цифры отнять 9 Результат CPSO JO 7984! 3) потом каждый нечетный символ сделать заглавным 4) перевернуть строку Конечный результат: "!4897 Oj oSpC" У меня вышел косяк с алфавитом, вместо того чтобы искать код символа в алфвите я брал просто следующий код в таблице ascii. Мое решение выглядит вот так PHP: echo "4897 NkTrC Hq fT67 GjV Pq aP OqTh gOcE CoPcTi aO\n"; echo "<br>"; $input = "MY GRANMA CAME FROM NY ON THE 23RD OF APRIL 2015"; function playPass($str, $n=2) { $arr = []; for ($i=65; $i<=90; $i++) { $x = chr($i); $arr[$i] = $x; } $result = ""; $length = strlen($str); for($i=0;$i<$length;$i++){ $letter = $str[$i]; if(ctype_alpha($letter)){ // echo $str[$i]."\n"; $key = array_keys ($arr, $str[$i]); $tmp = $key[0]; $index = $tmp + $n; if(array_key_exists($index, $arr)){ $letter = chr($index); }else{ $index = 65; $letter = chr($index); } } if(ctype_digit($letter)){ $letter = (int)$str[$i]; $letter -=9; $letter = abs($letter); } //Result 1-2-3 $result .= $letter; } $result = strtoupper($result); $result = ucfirst($result); $r = ""; for ($j=0; $j <strlen($result) ; $j++) { if($j%2){ $r .= strtolower($result[$j]); }else{ $r .= $result[$j]; } } $r = strrev($r); return $r; } echo playPass($input); Первый вывод это то что должно получиться, второй то что получилось. Возможно кто-то предложит вариант по лучше. Eng version task shift each letter by a given number but the transformed letter must be a letter (circular shift), replace each digit by its complement to 9, keep such as non alphabetic and non digit characters, downcase each letter in odd position, upcase each letter in even position (the first character is in position 0), reverse the whole result. Example: your text: "BORN IN 2015!", shift 1 1 + 2 + 3 -> "CPSO JO 7984!" 4 "CpSo jO 7984!" 5 "!4897 Oj oSpC"
Наоборот, такое тут любят, мб новичкам пригодится. Не стесняйся, вбрасывай ссыль. Тут не любят рекламу пластиковых окон, дилдосов, казино и прочего не тематического. А ссылки в тему - это же ссылки в тему, все ок.
Офигенская тема! Спасибо --- Добавлено --- Прошел вступление на JS и чот сайт перестал загружаться. Крашится в хроме. В мозиле, вроде, работает при этом. Чудеса.
Ну я только пхп пробовал, понравилось. Раз пошла такая пьянка. то вот Вам еще больше таких ресурсов. http://theasder.github.io/learning/...sites-to-sharpen-your-programming-skills.html