Показать сообщение отдельно
  #24 (permalink)  
Старый 06.09.2017, 22:32
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,726

<?php
	header('Content-Type: text/html; charset=utf-8');
	ini_set('memory_limit','512M');
	
	function func(array $words,$length){
		if(count($words)%2==1)
			$words[]='';
		
		$words=array_values($words);
		$results=array();
		for($i=0,$j=count($words)-1;$i<$j;$i++,$j--){
			foreach(array($i,$j) as $key)
				if(strlen($words[$key])>=$length){
					$str=substr($words[$key],0,$length);
					$results[$str][]=$words[$key];
				};
		};
		
		return array_map(function($vals){
            return array_unique($vals);
        },array_filter($results,function($vals){
            return count($vals)>1;
        }));

	};

	$array=array();
	$i=1000000;
	while($i--)
		$array[]=mt_rand(0,mt_getrandmax());
		
	$start=microtime(true);
	$res=func($array,3);
	echo 'Найдено ',count($res),' результатов за ',number_format(microtime(true)-$start,3,'.',' '),' сек.';
	exit;

Последний раз редактировалось Nexus, 06.09.2017 в 22:38.
Ответить с цитированием