[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: последовательно выбрать в массиве 3 значения
Страницы: 1, 2, 3
S.Chushkin
Цитата (sergeiss @ 25.11.2014 - 14:10)
М-да... Зачем столько телодвижений?

А действительно, - зачем столько "телодвижений"? ;)
$list = array(718, 720, 721, 725, 726);
$last = 0;
$array_slice = array_slice($list, $last, 3);
$last += 3;
if($last > count($list)) {
$last -= count($list);
$array_slice = array_merge($array_slice, array_slice($list, 0, $last));
}


_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
S.Chushkin
Цитата (mailmoney @ 25.11.2014 - 15:30)
я описал выше вариант, он выглядет так просто...

Если это "просто", то я "папа римский" wink.gif

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
sergeiss
Цитата (Hello @ 25.11.2014 - 15:28)

Цитата
другой вариант, если остановились на 725, то должно получиться 726, 718, 719

Эта часть не работает

Если бы это было ТЗ от ТС, я бы и это сделал легко и просто. Достаточно подумать 3 секунды, затем оформить мой код в виде функции. И если получили в $selected число меньше 3, то тогда просто вызвать еще раз функцию (рекурсивно, т.е. саму из себя), указав ей, что искать надо с самого начала и сколько именно.

Цитата (S.Chushkin @ 25.11.2014 - 15:31)
А действительно, - зачем столько "телодвижений"? wink.gif

Можно и так, наверное smile.gif Вариантов много, но часть из них громоздкие, а другие более компактные.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Valick
Цитата
Твой код не решает задачу.

просто проблема не в коде, а в задаче
это называется майка поверх фуфайки, носить можно, но выглядит ....

_____________
Стимулятор ~yoomoney - 41001303250491
chee

<?php

$numbers = Array(
0 => 718,
1 => 719,
2 => 720,
3 => 721,
4 => 725,
5 => 726
);

$number = 718;

function getAfterNumber(array $numbers, $findNumber, $count = 3)
{
$values = array_values($numbers);
$revertValues = array_flip($values);

if (!isset($revertValues[$findNumber])) {
return array();
}

$pos = $revertValues[$findNumber];

return array_slice($values, $pos, $pos + $count);
}

var_dump(getAfterNumber($numbers, $number));

код рабочий http://3v4l.org/hFdVD

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Hello
chee
$number = 725;

Цитата
Notice: Undefined index: 6 in /in/JkcmM on line 26
array(3) { [0]=> int(725) [1]=> int(726) [2]=> NULL }


_____________
VPS от 5$, первые 2 месяца - бесплатно.
brevis
Удивительно, но во всех вариантах есть какой-то баг. И еще более удивительно, что единственный верно работающий вариант -- это вариант товарища mailmoney , который на вид написан очень тупо.
Прямо какой-то FizzBuzz для PHP-шников.

_____________
Чатик в телеге
Valick
brevis, удивительно что тут вообще есть какие-то варианты


_____________
Стимулятор ~yoomoney - 41001303250491
S.Chushkin
Цитата (brevis @ 25.11.2014 - 18:15)
Удивительно, но во всех вариантах есть какой-то баг.

Где/какие баги в моём варианте?

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
brevis
Цитата (S.Chushkin @ 25.11.2014 - 18:56)
Цитата (brevis @ 25.11.2014 - 18:15)
Удивительно, но во всех вариантах есть какой-то баг.

Где/какие баги в моём варианте?

Он не работает.
По условию задачи нам изначально не известен индекс элемента. Его сначала нужно найти.

_____________
Чатик в телеге
kaww
Цитата (S.Chushkin @ 25.11.2014 - 14:56)
Где/какие баги в моём варианте?

Ну а с моим. С моим что не так? smile.gif
chee
Hello, лол, точно я этого не учел. Что там дальше элементов, то может не быть, но проверку сделать-то просто.


_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
S.Chushkin
Цитата (brevis @ 25.11.2014 - 18:58)
Он не работает.
По условию задачи нам изначально не известен индекс элемента. Его сначала нужно найти.

Вы о чём?
Где Вы видите индексы в алгоритме? (да и в описании задачи то же - где?)

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
brevis
Цитата (kaww @ 25.11.2014 - 19:01)
Цитата (S.Chushkin @ 25.11.2014 - 14:56)
Где/какие баги в моём варианте?

Ну а с моим. С моим что не так? smile.gif

Ну твой вроде бы работает, уговорил.
Единственное -- я ориентировался на решение mailmoney, а у него если элемента в массиве нет -- то возвращается не весь массив, как у тебя, а только 3 первых элемента, что по-моему логично.
Но это конечно не баг. Так что у тебя тоже все ок, молодец.

_____________
Чатик в телеге
brevis
Цитата (S.Chushkin @ 25.11.2014 - 19:04)
Вы о чём?
Где Вы видите индексы в алгоритме? (да и в описании задачи то же - где?)

$list = array(718, 720, 721, 725, 726);
$last = 0; <-------------------- вот здесь и вижу
$array_slice = array_slice($list, $last, 3);
$last += 3;
if($last > count($list)) {
$last -= count($list);
$array_slice = array_merge($array_slice, array_slice($list, 0, $last));
}


_____________
Чатик в телеге
Быстрый ответ:

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