Пользователь
Сообщений: 612
Проживание:
Регистрация: 11-08-2006
Status: Offline
|
Цитата:
Сообщение от Suhov
Даже как то теряюсь, как ещё донести свою мысль-то...
Представьте задачу, ну например такую: дан список, каждый элемент которого это map (не знаю как по русски, пусть будет отображение), из целого в список, который в свою очередь состоит из целых или null. Напишите функцию, возвращающую максимальное количество нечётных элементов во вложенных списках. В функцию передаётся первый упомянутый список.
Как по-Вашему, есть ли смысл вставлять в поиск гугла весь текст этой задачи? Если да, то обоснуйте, иначе я Вас никогда не пойму.
Касательно этой задачи я могу нагуглить, например, некоторые конкретные вещи, в которых не хочу ошибиться, если не уверен, ну типа List<Map<Int, List>> или надо всё таки List<Map<Int, List<Int>>> и тд. Но искать решение целиком???? Зная, что тебя пишут, и что смысл этого интервью проверить твои программистские навыки, а не навыки гуглера!
Я никого не ищу, я соискателем иногда выступаю, но разумеется могу рассуждать с точки зрения нанимателя, почему бы и нет? Не знаю про процент соглашающихся, по моему мнению вся сфера рекрутинга в ИТ движется именно к такому формату.
|
Решение на Java (16 строчек кода), но фактически это одно единственное выражение (expression) и 0 statements
PHP код:
import java.util.Objects;
import org.junit.Test;
import io.vavr.Tuple;
import io.vavr.Tuple2;
import io.vavr.collection.HashMap;
import io.vavr.collection.List;
import io.vavr.collection.Map;
import io.vavr.control.Option;
public class Exam {
@Test
public void doIt() {
List<Integer> in_l1 = List.of(1, 2, 4, null, 2, 45, null, 10);
List<Integer> in_l2 = List.of(1, 2, 4, null, 2, 45, null, 10, 20, 30, 71, 12);
List<Integer> in_l3 = List.of(1, null, 2, 45, null, 10, 20, 30, 12, null, 100, 21, 121);
List<Integer> in_l4 = List.of(1, 2, 4, null, 2, 45, null, 10, 20, 30, 71, 12, 123, 434, 11, 32);
HashMap<Integer, List<Integer>> m1 = HashMap.of(1, in_l1, 2, in_l2);
HashMap<Integer, List<Integer>> m2 = HashMap.of(4, in_l1, 12, in_l2);
HashMap<Integer, List<Integer>> m3 = HashMap.of(10, in_l1);
HashMap<Integer, List<Integer>> m4 = HashMap.of(15, in_l4, 2, in_l1, 3, in_l2);
HashMap<Integer, List<Integer>> m5 = HashMap.of(2, in_l4, 7, in_l1, 13, in_l3);
System.out.println(maxEvenList(List .of(m1, m2, m3, m4, m5)));
}
private List<Tuple2<Integer, List<Integer>>> maxEvenList(final List<Map<Integer, List<Integer>>> input) {
return input
.filter(Objects::nonNull)
.map(m -> {
return m.mapValues(list -> {
List<Integer> even_list =
list
.filter(Objects::nonNull)
.filter(i -> i%2 == 0)
.toList();
return Tuple.of(even_list.size(), even_list);
})
.maxBy(Tuple2::_1)
.map(s -> Tuple.of(s._1(), s._2._2));
})
.filter(Option::isDefined)
.map(Option::get)
.toList();
}
}
Результат:
Цитата:
List((2, List(2, 4, 2, 10, 20, 30, 12)), (12, List(2, 4, 2, 10, 20, 30, 12)), (10, List(2, 4, 2, 10)), (15, List(2, 4, 2, 10, 20, 30, 12, 434, 32)), (13, List(2, 10, 20, 30, 12, 100)))
|
Вечером напишу на Elixir.
-----------------
Буква Ё обязательно должна быть в написании слов, а то букв станет 32, а не 33, как сейчас. Кому-то это выгодно. Кому? Врагам Русского народа! (с)
|