Задание: Анаграмма
24 мая 2016, 12:24
Дано:
Число 128574 примечательно тем, что, будучи удвоенным, образует число 257148, которое состоит из тех же цифр, только в другом порядке.
Напишите программу, которая находит и выводит минимальное натуральное число, которое, будучи умноженным на 2, 3, 4, 5 и 6, образует числа, состоящие из тех же цифр, что и исходное.
Решение:
<?php set_time_limit(0); function dr($arg){ echo '<pre>'; echo var_dump($arg); echo '</pre>'; } /** * Class Anagramm * класс поиска "анаграмм" */ class Anagramm { const MIN_LIMIT = 999; const MAX_LIMIT = 99999; /** * основной метод поиска анаграмм * @return возвращает наименьшую анаграмму из найденных */ public static function search(){ $arOperands = array(2,3,4,5,6); $arResult = array(); for ($in = self::MIN_LIMIT; $in <= self::MAX_LIMIT;$in++){ foreach($arOperands as $operand) { $result = self::get($in,$operand); if (self::isCorrect($in,$result)){ $arResult[] = $in; } } } return min($arResult); } protected static function get($in,$operand){ return ($in*$operand); } /** * метод проверки анаграммы на корректность * @param $in * @param $out * @return bool */ protected static function isCorrect($in, $out){ $arIn = str_split($in); $arOut = str_split($out); sort($arIn); sort($arOut); $resultIn = implode($arIn); $resultOut = implode($arOut); if (strcasecmp($resultIn,$resultOut)==0) return true; else return false; } } dr(Anagramm::search()); // выводим найденную анаграмму
Твитнуть
Поделиться
Поделиться
Популярное