• ,

Тестовое задания для Trainee

Вобщем-то простенькое тестовое задание на позицию Trainee Functional Developer, так сказать, для затравки. Я проходил собеседование 2 года назад, поэтому не думаю, что сделаю что-то страшное выложив задание.
  • ,

level07.lesson09.task04 У кого быстрее алгоритм работает? Конкурс.

Интересно, полагаю, будет посмотреть на самые быстродействующие алгоритмы решения этой задачи. Естественно, что число записей в списке должно быть таким, чтобы время выполнения программы на компьютере можно было бы легко вычислить. Так создадим единый список из ста тысяч строк и сравним время выполнения…

N.B.!
1. Согласно пункту 2.2. предложенной задачи: «удваивать все слова содержащие букву «л».», для единообразия станем так:

На входе:
роза
лира
лоза
ложка
коза
кора
коралл
сорока
носорог
финал

На выходе:
лира
лоза
лоза
ложка
ложка
коза
коралл
финал
финал


2. Список один и тот же, и хотя он формируется путем десяти тысячекратного повторения из десяти строк, считаем его случайным.
3. Срок самостоятельной публикации конкурсных вариантов решения этой задачи истекает 5 февраля 2017 года в 12 часов дня (время московское).
4. Каждый участник форума может самостоятельно оценить быстродействие предложенных вариантов на своем компьютере и поставить «плюсик» тому, кого он считает победителем в этом конкурсе."


/*
ТЕКСТ КОНКУРСНОЙ ЗАДАЧИ СО ВСЕМИ КОРРЕКТИРОВКАМИ ИСХОДНОЙ ЗАДАЧИ level07.lesson09.task04:
*/


/*

2. Метод fix должен:
2.1. удалять из списка строк все слова, содержащие букву «р»
2.2. удваивать все слова содержащие букву «л».
2.3. если слово содержит и букву «р» и букву «л», то оставить это слово без изменений.
2.4. с другими словами ничего не делать.
Пример:
роза
лира
лоза
ложка
коза
кора
коралл
сорока
носорог
финал
...
Выходные данные:
лира
лоза
лоза
ложка
ложка
коза
коралл
финал
финал
...
*/



import java.util.ArrayList;

public class ManipulationsWithTheList {

    public static void main(String[] args) throws Exception
    {
        long startTime = System.currentTimeMillis();

        ArrayList<String> list = new ArrayList<String>();

        for (int i = 0; i < 10000 ; i++) {
            list.add("роза");
            list.add("лира");
            list.add("лоза");
            list.add("ложка");
            list.add("коза");
            list.add("кора");
            list.add("коралл");
            list.add("сорока");
            list.add("носорог");
            list.add("финал");
        }

        list = fix(list);

        for (String s : list)
        {
            System.out.println(s);
        }

        long timeSpent = System.currentTimeMillis() - startTime;

        System.out.println("Эта программа выполнялась " + timeSpent + " миллисекунд.");
    }

    public static ArrayList<String> fix(ArrayList<String> list)
    {
        //напишите тут ваш код

    }
}


Дополнение от 31.01.2017
Уважаемые коллеги!
Настоятельно прошу еще раз ознакомиться со всеми условиями конкурсной задачи. Особо отмечу следующее:
на входе упорядоченная коллекция строк;
на выходе также должна быть упорядоченная коллекция строк (вывод её в консоль используется исключительно для визуального подтверждения верности произведенных манипуляций с исходной псевдослучайной коллекцией);
— сколько времени выполнялся метод fix, просьба, вывести в консоль дополнительно.

Ссылки на все конечные полные тексты программ участвующих в конкурсе будут находиться в самом первом сообщении темы. Просьба к участникам опубликовать их в своих сообщениях с пометкой: «НА КОНКУРС», чтобы я смог бы их собрать вместе и опубликовать.

Конкурсанты:
Torin текст программы содержит отклонения от конкурсной задачи
JuriMik текст программы
Javin текст программы
Himeg текст программы
Тестирование

Проводилось на:
Intel Core i7-2600 CPU @ 3.4 GHz x 4, RAM 16 GB

Windows 7 professional x64
JRE 1.8.0_121
IDE Eclipse Java EE IDE for Web Developers. Version: Neon.1a Release (4.6.1)

Linux Mint 17 Cinnamon 64-bit (v. 2.2.16) 3.13.0-24-generic
JRE 1.8.0_25
IDE Eclipse Java EE IDE for Web Developers. Version: Neon.2 Release (4.6.2)

Средние арифметические значения времени выполнения метода fix (в миллисекундах) подсчитывались по десяти попыткам:

Конкурс от Зойдберга

Я всегда мало общался с людьми, у меня никогда не было друзей, под моими постами никто никогда не ставил лайки и никто не делился ими с друзьями. Поэтому, теперь, когда у меня появилась возможность хотя бы немного поруководить проектом, я решил исполнить свою мечту — организовать небольшой социальный конкурс. Заключается он в следующем:

Как только под главной страницей сайта JavaRush (http://javarush.ru/) появится более 1000 шарингов (поделится с друзьями), произойдет что-то очень интересное =)

Вас ждет множество приятных сюрпризов! Слава Зойдбергу =)