[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: 2 Легенькие задачки
Страницы: 1, 2, 3, 4
mytest
Здравствуйте форумчани!

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

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

2) Трамвайный билетик. Все знают старую славянскую традицию, вычислить серийные шестизначные номера трамвайных билетиков на признак счастливости. Считается билетик счастливым, если сумма первых 3-ёх и последних 3-ёх цифр совпадает. Организовать такую программу, в которой пользователь вводит число, а программа ему выдаёт ответ, счастливое оно или нет.
Michael
Ты учишься или мы?
Если ты, то показывай свои варианты решения и что не получается.

_____________
There never was a struggle in the soul of a good man that was not hard
Arh
я учусь)

Вторая

$t = '123321'; //ticket
if(($t['0']+$t['1']+$t['2']) == ($t['3']+$t['4']+$t['5'])) {
echo 'Счастливое :)';
} else {
echo 'Несчастное :(';
}


_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Игорь_Vasinsky
2я)
первую не понял не фига))

 function beHappy($number){
if(!preg_match("#[0-9]{6}#"))
return 'Не правильный билет))';
else{

$temp = array_chunk(preg_split("##is", (int)$number, -1, PREG_SPLIT_NO_EMPTY), 3);

if(array_count_values(array_flip($temp[0])) != array_count_values(array_flip($temp[1])))
return 'Не счасливый(';
else
return
'Счасливый билет!!!';
}
}


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Zzepish
Arh
Подправлю под универсализацию

$t = '1233213312312332152321'; //ticket
$t1=$t['0']+$t['1']+$t['2'];
$t2=$t[strlen($t)-1]+$t[strlen($t)-2]+$t[strlen($t)-3];
if($t1 == $t2){
echo 'Счастливое :)';
} else {
echo 'Несчастное :(';
}
Игорь_Vasinsky
Zzepish
т.е. средние цифры не считаются? как так.

по традиции - берут первую половину номера и вторую половину номера - считают суммы и сравнивают.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
OleKh
Цитата (mytest @ 25.02.2013 - 16:32)
1) Задача о голландском национальном флаге (Э.Дейкстра).


$array = array('red', 'white','red', 'blue','blue','blue', 'white', 'red', 'white');
natsort ($array);
$array_new = array();
$blue_array = array();
foreach ($array as $key=>$flag){
if ($flag =='blue') {
$blue = $flag;
unset ($flag);
$blue_array [] = $blue;
} else {
$array_new [] = $flag;
}

}

$result = array_merge ($array_new, $blue_array);
echo "<br>";
print_r ($result );
echo "<br/>";
Arh
Цитата (Zzepish @ 25.02.2013 - 18:04)
Arh
Подправлю под универсализацию

$t = '1233213312312332152321'; //ticket
$t1=$t['0']+$t['1']+$t['2'];
$t2=$t[strlen($t)-1]+$t[strlen($t)-2]+$t[strlen($t)-3];
if($t1 == $t2){
  echo 'Счастливое :)';
} else {
  echo 'Несчастное :(';
}

Тогда уж как то так

$t = '1234554321'; //ticket
$a = strlen($t)-1;
$b = $a/2;
$t1 = 0;
$t2 = 0;
for($i=0;$i<=$a;$i++) {
if($i<=$b) {
$t1 += $t[$i];
} else {
$t2 += $t[$i];
}
}


if($t1 == $t2){
echo 'Счастливое :)';
} else {
echo 'Несчастное :(';
}


_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.