Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Задачка на любом языке программирования
 
 автор: pavluxa09   (29.06.2012 в 17:29)   письмо автору
 
 

Здравствуйте. Помогите пожалуйста решить одну задачку на любом языке программировании (желательно PHP): в целочисленном двумерном массиве найти наиболее длинную цепочку одинаковых подряд стоящих элементов (кроме нуля) по вертикали либо горизонтали либо по диагоналям ВСЕМ (основной и побочной). Вернуть длину этой цепочки и элемент её составляющей.

Пожалуйста, уже всю голову сломал.

  Ответить  
 
 автор: Vitaleks   (29.06.2012 в 17:58)   письмо автору
 
   для: pavluxa09   (29.06.2012 в 17:29)
 

Показывай, что надумал

  Ответить  
 
 автор: pavluxa09   (29.06.2012 в 19:13)   письмо автору
 
   для: Vitaleks   (29.06.2012 в 17:58)
 

Беру двумерный массив на PHP засовываю в строку при помощи функции json_encode, далее в этой строке ищу при помощи strpos комбинационную линию. Это для поиска по диагонали, а для поиска по вертикали я этот массив переворачиваю и так же само делаю.
Как сделать по диалогоналям есть вариант повернуть массив на 45 градусов и таким же способом, второй вопрос как его повернуть на 45 градусов?

Вот частичная реализация той задачи на практике (игра крестики-нолики) за исключением поиска совпадений в диагоналях которое не получается сделать.

function determineWinner( array & $aArray, $iDigitsCount ) {
    $iResult = -1;
    $iHeight = count( $aArray );
    $iWidth = $iHeight > 0 ? count( $aArray[0] ) : 0;
    if( $iWidth != $iHeight )
        return -2;
    else if( $iWidth < $iDigitsCount )
        return -3;
    
    /* Поиск победителя по горизонтали */
    $sArray = json_encode( $aArray );
    if( strpos( $sArray, implode( ',', array_fill( 0, $iDigitsCount, 1 ) ) ) !== false )
        $iResult = 1;
    else if( strpos( $sArray, implode( ',', array_fill( 0, $iDigitsCount, 2 ) ) ) !== false )
        $iResult = 2;
        
    /* Поиск победителя по вертикали */
    $aTmpArray = array();
    foreach( $aArray as $i => $js )
          foreach( $js as $j => $value )
            $aTmpArray[$j][$i] = $value;
    $sArray = json_encode( $aTmpArray );
    if( strpos( $sArray, implode( ',', array_fill( 0, $iDigitsCount, 1 ) ) ) !== false )
        $iResult = 1;
    else if( strpos( $sArray, implode( ',', array_fill( 0, $iDigitsCount, 2 ) ) ) !== false )
        $iResult = 2;    
    
    return $iResult;

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования