Тест на логику мышления

Я собрал на этой странице несколько задач, которые можно давать на собеседовании.

1) нужно вывести последовательность чисел от 1 до 100 в виде лесенки, то есть на первой строке 1, на второй 2,3, на третей 4,5,6 на четвертой 7,8,9,10 и т.д.

2) Заполнить матрицу 5 на 7 уникальными случайными числами и вывести на экран матрицу и суммы по столбцам и по строкам.

Решение:

<?php
$a = 0;
for($i = 1; $a < 100; $i++){
	for($n = 0; $n < $i && $a < 100; $n++){
		$a++;
		echo $a;
	}
	echo "<br>\n";
}

echo '<hr><pre>';

$a = $b = $uniq = array();
for($i = 0; $i < 5; $i++){
	
	$a[ $i ] = array();
	
	for($n = 0; $n < 7; $n++){
		
		while(true){
			$x = rand (1, 777);
			if( !isset($uniq[ $x ]) ){
				$uniq[ $x ] = true;
				break;
			}
		}
		
		$a[ $i ][ $n ] = $x;
		
		if( !isset($b[ $n ]) ){
			$b[ $n ] = array();
		}
		$b[ $n ][] = $x;
	}
}

echo '<table border="1"><tr>';
for($i = 1; $i < 8; $i++){
	echo '<td>'.$i.'</td>';
}
echo '<td>sum</td></tr>';

foreach($a as $k => $v){
	echo '<tr>';
	foreach($v as $r){
		echo '<td>'.$r.'</td>';
	}
	echo '<td>'.array_sum($v).'</td></tr>';
}

echo '<tr>';
for($n = 0; $n < 7; $n++){
	echo '<td>'.array_sum($b[$n]).'</td>';
}
echo '<td>sum</td></tr>';

echo '</table>';

В результате получим:

1
23
456
78910
1112131415
161718192021
22232425262728
2930313233343536
373839404142434445
46474849505152535455
5657585960616263646566
676869707172737475767778
79808182838485868788899091
9293949596979899100


1 2 3 4 5 6 7 sum
442 708 743 181 95 365 294 2828
189 523 728 84 107 72 512 2215
452 232 516 162 352 417 364 2495
161 702 182 234 609 565 224 2677
5 768 377 446 699 342 626 3263
1249 2933 2546 1107 1862 1761 2020 sum

Удачки.

Оцени публикацию:
  • 3,7
Оценили человек: 3
Теги : собеседование

Похожие статьи:

Справочники и учебники:


Комментарии посетителей:
  • Или как вариант решение 1 задачи без вложенного цикла:
    $buf = 1;
    $step = 2;
    for ($i = 1; $i <= 100; $i++)
    {
       echo $i;
       if ($buf == $i)
       {
           $buf += $step++;
           echo "<br/>n";
       }
    }
    18 сентября 2014, 09:09 коммент полезен : 0 # Max s
  •       Всего 3 цикла против 8 и 1 вложенное условие против 2.



           $uniq=[];
          while(sizeof($uniq)<42){
                 $number = rand(1,4400);
                
                 if(!isset($uniq[$number])){
                        array_push($uniq,$number);
                 }
          }

          echo "<table><tr>";
          for($n=1;$n<=7;$n++){
                 echo "<td>".$n."</td>";
          }
          echo "<td>SUM</td></tr>";

          $counter=0;
          $n_iterator=0;
          $total  =0;


          for($u=0;$u<6;$u++){
                 echo "<tr>";

                 for($m=$n_iterator;$m<=$n_iterator+6;$m++){
                        $total+=$counter;
                        echo "<td>".$uniq[$m]."</td>";
                        $counter+=$uniq[$m];             
                 }
                
                 echo "<td>".$counter."</td></tr>";
                 $n_iterator+=7;
                 $counter=0;      
          }
         
          echo "</table>";
          echo "<span><i>Total:</i> "+$total+"</span>";
    28 января 2015, 21:46 коммент полезен : 0 # Alex (гость)
  • А что бы не было такого извращения:

          if( !isset($uniq[ $x ]) ){
                               $uniq[ $x ] = true;
                               break;
                        }

    Не плохо было бы написать так:

          $uniq=[];
          while(sizeof(array_unique($uniq))<6*7){
                 array_push($uniq, rand(1,4000));
          }

    28 января 2015, 21:53 коммент полезен : 0 # Alex (гость)
  •       С корректировками


           $uniq=[];
          while(sizeof(array_unique($uniq))<42){
                 array_push($uniq, rand(1,4000));
          }

          $sum_column=[0,0,0,0,0,0,0];

          echo "<table><tr>";
          for($n=1;$n<=7;$n++){
                 echo "<td>".$n."</td>";
          }
          echo "<td>SUM</td></tr>";


          $total = $counter = $column = $n_iterator = 0;      
          $sum_column=[0,0,0,0,0,0,0];

          for($u=0;$u<6;$u++){
                 echo "<tr>";

                 for($m=$n_iterator;$m<=$n_iterator+6;$m++){
                        $total+=$counter;
                        echo "<td>".$uniq[$m]."</td>";
                        $counter+=$uniq[$m];
                        $sum_column[$column]+=$uniq[$m];
                        $column++;             
                 }
                
                 echo "<td>".$counter."</td></tr>";
                 $n_iterator+=7;
                 $counter=0;
                 $column=0;      
          }
          echo "<tr>";
          foreach ($sum_column as $key => $value) {
                 echo "<td>".$value."</td>";
          }
          echo "</tr>";

          echo "</table>";
          echo "<span><i>Total:</i> "+$total+"</span>";
    28 января 2015, 22:14 коммент полезен : 0 # Alex (гость)
Предложения и пожелания:
Ваше имя:
Ваш E-mail:
Сколько будет Οдин + Τри
Главная
X

Новые заметки:

Про что мы забываем когда делаем оценку задачи по времени

Список вопросов для собеседования разработчика по телефону

Symfony2 авторизация без Doctrine2 для чайника

Phpstorm7 LiveEdit

Жесткий хабр или не хабр, тогда кто?

Яндекс.Деньги мошенничество

Как узнать какие страницы в поиске яндекса или это секрет

Последние комменты:

Yapro CMS:

Здравствуйте, Гость | Войти | Регистрация | Карта сайта | RSS ленты | Ошибка в тексте? Выделите её мышкой и нажмите: Ctrl + Enter

youtube.com/watch?v=7hFivbgIEqk

При полном или частичном использовании материалов данного сайта, ссылка на сайт "yapro.ru" обязательна как на источник информации.
Автоматический импорт материалов и информации с сайта запрещен.
Copyrights © 2007 - 2018 YaPro.Ru

Главная » Веб-мастеру » PHP »