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

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

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

youtube.com/watch?v=7hFivbgIEqk

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

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