Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: 2 Легенькие задачки

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
mytest
Отправлено: 25 Февраля, 2013 - 17:25:36
Post Id



Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Окт. 2012  


Помог: 0 раз(а)




Здравствуйте форумчани!

Есть 2 легенькие задачки которые нужно решить.

1) Задача о голландском национальном флаге (Э.Дейкстра). В массиве
длины N в случайном порядке находятся элементы ‘к’ (красный), ‘б’
(белый) и ‘c’ (синий). Переставить их в порядке следования цветов
голландского национального флага, чтобы вначале были все красные, затем
белые и после них — синие. Допустимые операции — проверка цвета и
обмен местами значений двух элементов.

2) Трамвайный билетик. Все знают старую славянскую традицию, вычислить серийные шестизначные номера трамвайных билетиков на признак счастливости. Считается билетик счастливым, если сумма первых 3-ёх и последних 3-ёх цифр совпадает. Организовать такую программу, в которой пользователь вводит число, а программа ему выдаёт ответ, счастливое оно или нет.
 
 Top
NoPaper
Отправлено: 25 Февраля, 2013 - 19:28:40
Post Id



Посетитель


Покинул форум
Сообщений всего: 315
Дата рег-ции: Янв. 2012  
Откуда: Минск


Помог: 9 раз(а)




1.
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $arr = array_merge(array_fill(0, rand(1,10), 'к'),array_fill(0, rand(1,10), 'с'),array_fill(0, rand(1,10), 'б'));
  3. shuffle($arr);
  4.  
  5. usort ( $arr  , function($a,$b){
  6.                   if($a=='к' and $b=='к') return 0;
  7.         elseif($a=='к' and $b!='к') return -1;
  8.         elseif($a=='б' and $b=='к')return 1;
  9.         elseif($a=='с')return 1;
  10. } );
  11.  
  12. var_dump($arr);
  13.  

(Добавление)
2.
PHP:
скопировать код в буфер обмена
  1. $num =str_split((string)123411);
  2. $len = sizeof($num)-1;
  3. $res = (($num[0]+$num[1]+$num[2])==($num[$len]+$num[$len-1]+$num[$len-2]));
  4. var_dump($res);
 
 Top
DelphinPRO
Отправлено: 25 Февраля, 2013 - 21:05:47
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




2.
PHP:
скопировать код в буфер обмена
  1. $ticket = '123456';
  2. $ticket = (int) $ticket;
  3.  
  4. $luckyTicket = array_sum(str_split(floor($ticket / 1000))) == array_sum(str_split($ticket % 1000));
  5.  
  6. if ($luckyTicket) {
  7.   echo ':)';
  8. } else {
  9.   echo ':(';
  10. }

Улыбка


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
nerv
Отправлено: 25 Февраля, 2013 - 22:17:30
Post Id



Посетитель


Покинул форум
Сообщений всего: 407
Дата рег-ции: Февр. 2013  
Откуда: Россия


Помог: 9 раз(а)




2. еще вариант

$
PHP:
скопировать код в буфер обмена
  1. ticket = array_chunk( str_split( '321123' ), 3 );
  2.  
  3. if ( array_sum( $ticket[ 0 ] ) === array_sum( $ticket[ 1 ] ) ) {
  4.     echo true;
  5. }


UPD
можно так

PHP:
скопировать код в буфер обмена
  1. $ticket = array_chunk( str_split( '321123' ), 3 );
  2.  
  3. $lucky = !array_diff( $ticket[ 0 ], $ticket[ 1 ] );


UPD2
вариант на 5-ку Радость

PHP:
скопировать код в буфер обмена
  1. $ticket = preg_replace( '/(?!^)(?=.)/', '+', '321123' );
  2.  
  3. $ticket = substr_replace( $ticket, '===', 5, 1 );
  4.  
  5. $lucky = eval( 'return ' . $ticket . ';' );

(Отредактировано автором: 25 Февраля, 2013 - 23:34:08)



-----
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB