Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/25: Рейтинг темы: голосов - 25, средняя оценка - 4.96
26 / 26 / 5
Регистрация: 29.05.2013
Сообщений: 151

Проверьте задание

10.09.2013, 13:02. Показов 4662. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Изучаю Java. Нашел здесь же на форуме простенькие задания и на них тренируюсь. Если у кого есть время - покритикуйте, пожалуйста.

Общие требования к заданиям
Приложение должно быть написано на языке Java 1.6 без использования дополнительных библиотек – только стандартные классы + интерфейсы, относящиеся к заданию.

Вместе с текстом заданий высылаются интерфейсы – по одному на каждое задание. Они должны быть реализованы в классах с определенными именами, которые, в свою очередь, должны иметь публичные конструкторы без аргументов. Исходный код необходимо прокомментировать и упаковать в zip-архив.

Плюсом будет stateless реализация.

Задание:
Заданы две последовательности X1, X2,..., Xn и Y1, Y2,…, Yk произвольных элементов (java.lang.Object). Определить, можно ли получить последовательность X путем вычеркивания некоторых элементов из Y?
В качестве входных параметра в метод передаются два списка: первый – список Xi, второй – список Yi.

Название интерфейса
com.tsystems.javaschool.tasks.Subsequenc e
Имя класса
com.tsystems.javaschool.tasks.Subsequenc eImpl
Имя архива
subsequense.zip

Пример
Subsequence s = new SubsequenceImpl();
boolean b = s.find(Arrays.asList("A", "B", "C", "D"), Arrays.asList("BD", "A", "ABC", "B", "M", "D", "M", "C", "DC", "D"));
System.out.println(b); // Результат: true

Интерфейс из задания:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/**
 * Java School at T-Systems CIS, 2012
 */
package com.tsystems.javaschool.tasks;
 
import java.util.List;
 
/**
 * Interface for Subsequence task
 */
public interface Subsequence {
 
    /**
     * Checks if it is possible to get a sequence which is equal to the first
     * one by removing some elements from the second one.
     * 
     * @param x
     *            first sequence
     * @param y
     *            second sequence
     * @return <code>true</code> if possible, otherwise <code>false</code>
     */
    @SuppressWarnings("rawtypes")
    boolean find(List x, List y);
 
}
Моя реализация:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class SubsequenceImpl implements Subsequence
{
       public SubsequenceImp ()
       {}
       
       public boolean find (List x,List y)
       {
           boolean flag=true;
           
           int k=0;
           for (int i=0;i<x.size();i++)
           {
               if (!flag) {break;}
               flag=false;
               for (int j=k;j<y.size();j++)
               {
                   if (y.get(j).equals(x.get(i)))
                   {
                       k=j+1;
                       flag=true;
                       break;
                       
                   }
               }
           }
           return flag;
       }
 
}

При запуске кода из примера вроде раотает корректно.
Несколько вопросов: можно ли оптимизировать алгоритм; для чего в задании требуется конструктор без параметров (в силу задания его ж вообще можно пропустить, создаст компилятор, инициализировать в классе нечего); правильно ли вышла у меня стейтлесс реализация и возможна ли вообще для этого задания реализация стейтфул как таковая?
Спасибо.

Добавлено через 42 секунды
67 просмотров и ни одного комментария)) Все так плохо, ни у кого нет времени или я нарушил своей темой какое-то негласное правило?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.09.2013, 13:02
Ответы с готовыми решениями:

Проверьте верно ли сделано задание (задание для ослабленных детей)
Схема дана на фото, нужно найти скорости точек А и В изображенных на схеме, проверьте мое решение пожалуйста !!!

Проверьте задание
Кому не сложно подскажите правильно ли я сделал задание. Данна деталь в изометрии, нужно построить ее в трех видах. Правильно ли я выбрал...

проверьте задание
Написать программу, которая: а) для группы людей создает записи - имя, фамилия, дата рождения (число, месяц, год); б) выводит на экран...

7
10.09.2013, 13:22

Не по теме:

Задание, как Неуловимый Джо из анекдота, причем он неуловимый не потому что быстрый...

0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
11.09.2013, 00:32
немного оптимизации

Java
1
2
3
4
        @Override
        public boolean find(List<?> x, List<?> y) {
            return y.containsAll(x);
        }
0
26 / 26 / 5
Регистрация: 29.05.2013
Сообщений: 151
11.09.2013, 02:24  [ТС]
mutagen, не подходит, у вас получается проверка "является ли подмножеством", без учета порядка. Задание предполагает порядок: "Определить, можно ли получить последовательность X путем вычеркивания некоторых элементов из Y?" Тут и мой "косяк", не сохранилось форматирование примера при копипасте примера из ПДФ:
"Subsequence s = new SubsequenceImpl();
boolean b = s.find(Arrays.asList("A", "B", "C", "D"), Arrays.asList("BD", "A", "ABC", "B", "M", "D", "M", "C", "DC", "D"));
System.out.println(b); // Результат: true"

ЗЫ. Чем отличается синтаксис List<?> x в вашем примере от List x? У Хорстманна, к-рого изучаю, такого пока не встречал, Гугл молчит. Просматривая доки по java, я подумал, что это синоним Object.
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
11.09.2013, 10:42
Цитата Сообщение от ldkldk Посмотреть сообщение
Чем отличается синтаксис List<?> x в вашем примере от List x? У
читайте про Generics
0
26 / 26 / 5
Регистрация: 29.05.2013
Сообщений: 151
12.09.2013, 00:02  [ТС]
Еще одно задание сделал.

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

В качестве входных параметра в метод передаются два файла: первый – входной, второй – выходной. Метод возвращает true тогда и только тогда, когда обработка файла прошла успешно. В случае возникновения ошибок программа должна вернуть false.

Не гарантируется, что данные файлы существуют. В случае, если выходной файл не существует, он должен быть создан. Если он существует, необходимо дописать результат выполнения программы, без перезаписи уже содержащейся там информации.

Интерфейс:

Java
1
2
3
public interface DuplicateFinder {
    boolean process(File sourceFile, File targetFile);
}
Мое решение:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
public class Task3 {
 
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws FileNotFoundException {
        DuplicateFinder d=new DuplicateFinderImpl();
        d.process(new File("a.txt"),new File("b.txt"));
        
        // TODO code application logic here
    }
}
 
class DuplicateFinderImpl implements DuplicateFinder
{
    public boolean process (File sourceFile, File targetFile)
    {
        List<String> list=new ArrayList<String>();
        /** Читаем из файла строки в обобщенній список*/
        try
        {
          Scanner in=new Scanner(sourceFile);
          while (in.hasNext()) list.add(in.nextLine());
          in.close();
        }
        catch(Exception e){System.out.print(e.getMessage()); return false;}
       
        /** Формируем из полученного выше списка list упорядоченную карту:
 ключ - элемент list, значение - кол-во повторений єтого элемента в list*/
        Map<String,Integer> map=new TreeMap<String,Integer>();
        for(String s:list)
        {
            map.put(s,Collections.frequency(list, s));
        }
       
        /** Пишем в конец файла из map*/
        try
        {
          FileWriter out=new FileWriter (targetFile,true);
          for(Map.Entry<String,Integer> entry:map.entrySet()) 
           out.write(entry.getKey()+" "+"["+entry.getValue()+"]"+"\n");
          out.close();
        }
        catch(Exception e){System.out.print(e.getMessage()); return false;}
        
        return true;
    }
 
 
}
0
 Аватар для exiqa
487 / 333 / 71
Регистрация: 24.12.2011
Сообщений: 591
12.09.2013, 00:11
ldkldk, ужасное форматирование кода, даже смотреть неохота. Не экономьте на пробелах, переносах строк, кавычках... от этого программа быстрее работать не будет
1
26 / 26 / 5
Регистрация: 29.05.2013
Сообщений: 151
12.09.2013, 01:16  [ТС]
Интерфейс:

Java
1
2
3
4
public interface DuplicateFinder 
{
    boolean process(File sourceFile, File targetFile);
}
Мое решение:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
public class Task3 
{
 
    /**
     * @param args the command line arguments
     */
 
    public static void main(String[] args) throws FileNotFoundException 
    
    {
        DuplicateFinder d=new DuplicateFinderImpl();
        d.process (new File("a.txt"), new File("b.txt"));
        
    }
}
 
class DuplicateFinderImpl implements DuplicateFinder
{
    public boolean process (File sourceFile, File targetFile)
    {
        List<String> list = new ArrayList<String>();
       
      /** Читаем из файла строки в обобщенній список*/
       
        try
        {
           Scanner in = new Scanner (sourceFile);
 
           while ( in.hasNext() )  
              list.add ( in.nextLine() );
 
           in.close();
        }
 
        catch ( Exception e ) 
        {
           System.out.print ( e.getMessage() );
           return false;
        }
       
        /** Формируем из полученного выше списка list упорядоченную карту:
 ключ - элемент list, значение - кол-во повторений єтого элемента в list*/
 
        Map <String, Integer> map = new TreeMap <String, Integer>();
 
        for (String s : list)
        {
            map.put ( s, Collections.frequency(list, s) );
        }
       
        /** Пишем в конец файла из map*/
 
        try
        {
            FileWriter out = new FileWriter ( targetFile, true );
 
            for ( Map.Entry <String,Integer> entry : map.entrySet() ) 
               out.write ( entry.getKey() + " " + "[" + entry.getValue() + "]" + "\n" );
 
            out.close();
        }
        
        catch ( Exception e )
        {
           System.out.print ( e.getMessage() );
           return false;
        }
        
        return true;
    }
 
 
}
Поправил, вроде)) Кнопка редактирования предыдущего меседжа почему-то недоступна.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.09.2013, 01:16
Помогаю со студенческими работами здесь

Английский. Проверьте задание?
Вот есть задание, необходимо проверить его: подчеркнул только глаголы. правильно ли?? Перепишите задание на форум

Проверьте задание по начертательной геометрии
Доброго времени суток! Проверьте, пожалуйста, правильно ли я выполнил задание? Если нет, то помогите его сделать. Уже не знаю как. Само...

Проверьте, пожалуйста, правильно ли сделано задание
Добрый день! Проверьте, пожалуйста, правильно ли сделано задание. Текст задания - Выдать название, адрес и минимальную цену за билет...

Проверьте пожалуйста, правильно ли я сделал задание
Вот задание Дано действительное х. Вычислить \frac{(x-1)(x-3)(x-7)K(x-63)}{(x-2)(x-4)(x-8)K(x-64)} { {...

Проверьте пожалуйста 16 задание в файле, если не правильно, укажите на ошибки
Вот)))


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru