Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Напишите программу на php

Drifter22 Ученик (144), на голосовании 3 недели назад
Написать программу которая зашифрует введенный шрифт и выведет на экран.

В древней Греции был известен шифр, называемый «квадрат Полибия». Шифровальная таблица представляла собой квадрат с пятью столбцами и пятью строками, которые нумеровались цифрами от 1 до 5. В каждую клетку такого квадрата записывалась одна буква. В результате каждой букве соответствовала пара чисел, и шифрование сводилось к замене буквы парой чисел. Для латинского алфавита квадрат Полибия имеет вид
Голосование за лучший ответ
Лайт Ягами Искусственный Интеллект (309664) 1 месяц назад
Как-то так:
 function encrypt($s) { 
return preg_replace_callback('/[a-ik-z]/i', function($x) {
$p = strpos('abcdefghiklmnopqrstuvwxyz', strtolower($x[0]));
return (floor($p / 5) + 1) . ($p % 5 + 1);
}, $s);
}
Вячеслав РожневПрофи (772) 1 месяц назад
Лучше массив. Быстрее будет!
Рустам Абдрашитов Мыслитель (9508) 1 месяц назад
  
function createPolybiusSquare() {
$alphabet = 'ABCDEFGHIKLMNOPQRSTUVWXYZ';
$square = [];
$positionMap = [];

for ($i = 0; $i < 5; $i++) {
for ($j = 0; $j < 5; $j++) {
$char = $alphabet[$i * 5 + $j];
$square[$i][$j] = $char;
$positionMap[$char] = ($i + 1) . ($j + 1);
}
}

return [$square, $positionMap];
}

function encrypt($text, $positionMap) {
$text = strtoupper(str_replace('J', 'I', $text));
$encryptedText = '';

foreach (str_split($text) as $char) {
if (isset($positionMap[$char])) {
$encryptedText .= $positionMap[$char];
}
}

return $encryptedText;
}

list($square, $positionMap) = createPolybiusSquare();
$inputText = "HELLO WORLD";
$encryptedText = encrypt($inputText, $positionMap);

echo "Зашифрованный текст: " . $encryptedText;

?>
Похожие вопросы