• 0.40

  • +0.16

dwajot
  • dwajot
  • 2
Да, тут хорошо когда ты еще без семьи и можешь себе позволить уйти с работы. Курс JavaRush можно пройти и работая, а вот если захочешь сделать что-то свое (не hello world), то тут нужно много мремени. Я допустим на каждый проект постратил где-то по 3 полных месяца сутра до вечера (с выходными).
dwajot
  • dwajot
  • 0
Нет, это не моя статья. Spring я не использовал, та и orm для базы данных тоже — чистые sql запросы.
dwajot
  • dwajot
  • 0
Первые 8 месяцев обучения я работал и было только немного времени после работы — результат прошел все лишь 20 уровней JavaRush. Потом я бросил работу, что бы интенсивнее заняться обучением и как оказалось не зря. Если вы точно планируете дальше работать разработчиком, видити что у вас это получается и если возможность бросить работу и заниматься, то я бы так советовал.
dwajot
  • dwajot
  • 0
Не то, что бы на позицию друга, ибо он уже дорос до уровня мидл за полтора года. Меня берут как джуниора на испытательный срок — завтра первый день.
dwajot
  • dwajot
  • 0
Да, скоро напишу!
dwajot
Хотелось бы спросить, почему такие ограничение на написание блога? Нужно 5 рейтинга! Я уже курс давно прошел и хотел бы поделиться своим дальнейшим развитием и проэктами, которые делаю. В общем надеюсь вы пересмотрите политику написания статей.
dwajot
  • dwajot
  • 1
Поздравляем. Вы зарегистрированы на реальный проект. УРА-УРА!!!:)
dwajot
  • dwajot
  • 1
в idea 16 создается пустой, там писали в коментах под тем видео, что бы так создать, нужно сначала мавен проэкт создать, а потом спринг подключать. Я и так пробовал, но как-то все равно криво получалось. Оно знаешь, когда все наугад делаешь без изначального обучения, как мы на джавараше все с хелло ворлд учили, а показали бы нам сразу потоки или нити, тоже какждый бы себя тупым почувствовал:) удачи тебе, если что спрашивай, я уже вчера сдал на проверку:)
dwajot
  • dwajot
  • 2
у меня было то же самое — пол дня потратил, даже скачал idea 14 что бы создать проэкт — хотел делать по этому видеоуроку тыц но что-то изначально создать никак не выходило, поэтому я скачал проэкт этого видеоурока и на счастье он у меня открылся, потом я его досмотрел — чуть-чуть понял что к чему и начал этот проэкт переделывать под то задание, что нам нужно.
dwajot
  • dwajot
  • 0
все отбой — реализовал благодаря этому туториалу:) Может вам поможет:)
dwajot
  • dwajot
  • 0
Я пробовал. Вот собственно мой интерфейс.UserDao
Вот класс.UserDaoImpl
После удаления все равно айдия подсвечивает что методы не унаследованы. Методы вот эти.методы
А после их унаследования пишет тоже самое, что они не унаследованы, а сами методы подсвечиватся вот так.

Я еще не прописывал депенденси вот с этой ссылки Ссылка.
И еще сопутствующий вопрос по их прописанию POM и Spring configuration я понимаю где прописать, а вот JPA configuration я у себя в проэкте не могу найти.
dwajot
  • dwajot
  • 0
Все же решил делать через Spring Data JPA пользуясь этим туториалом Your text to link...
У меня вопрос — я стопорюсь на таком моменте, в интерфейсе UserDao я делаю extend JpaRepository<User, Long>, потом соответственно в классе UserDaoImpl, который наследует этот интерфейс подсвечивает, что нужно переопределить целую кучу методов(я их посчитал их 24). Ну это ладно, но когда начинаешь переопределять, то половина их них подсвечивается красным и пишет, что Method does not override method from its superclass. Вот на этом моменте начинается заминка и не могу двинуться дальше.
dwajot
  • dwajot
  • 0
Осталось прикрутить только пейджинг и вот не знаю как лучше. Начал пробовать через Spring Data JPA, но что-то не очень пошло(нужно было много чего подключать в депенденси и я забросил это дело, что бы не сломать уже то, что сделал:))Ну а по большому счету от неопытности. Почитал что можно реализовать через displaytag. Тоже не очень получилось. Буду раз любым советам, ну а пока еще что-то поковыряю.
dwajot
  • dwajot
  • 1
Спасибо тебе большое! Именно в этом и была крыса зарыта! Мне после длительного перерыва сложно было снова вникать в эту задачу, но я порешал:)
dwajot
  • dwajot
  • 0
Можно закрывать.
dwajot
  • dwajot
  • 0
Долго сидел думал над этой задачей и вроде удалось решить — вывод правильный. Создал отдельный метод для каждого прохода. Поставил даже проверку на 1 символ(хотя в условии четко сказано, что должно быть слово)- тестирование никак не проходит.
Подскажите, пожалуйста, что еще упустил и на что нужно обратить внимание.

public class Solution {
    public static void main(String[] args) {
        int[][] crossword = new int[][]{
                {'f', 'd', 'e', 'r', 'l', 'k'},
                {'u', 's', 'a', 'm', 'e', 'o'},
                {'l', 'n', 'g', 'r', 'o', 'v'},
                {'m', 'l', 'p', 'r', 'r', 'h'},
                {'p', 'o', 'e', 'e', 'j', 'j'}
        };
        detectAllWords(crossword, "home", "same","h","rrh","erl","ngr");
        /*
Ожидаемый результат
home - (5, 3) - (2, 0)
same - (1, 1) - (4, 1)
         */
    }
    public static List<Word> detectAllWords(int[][] crossword, String... words) {
        List<Word> list = new ArrayList<>();
        String name = "";
        for (String s : words) {
            name = s;
            Word w = new Word(name);
            char[] cr = name.toCharArray();
            for (int i = 0; i < crossword[0].length; i++) {
                for (int j = 0; j < crossword.length; j++) {
                    if (crossword[j][i] == cr[0]) {
                        w.setStartPoint(i, j);
                        if(cr.length==1){
                           list.add(w);
                            break;
                        }
                        if (roadUpRight(crossword, w)) {
                            list.add(w);
                            break;
                        }
                        if (roadUpLeft(crossword, w)) {
                            list.add(w);
                            break;
                        }
                        if (roadDownRight(crossword, w)) {
                            list.add(w);
                            break;
                        }
                        if (roadDownLeft(crossword, w)) {
                            list.add(w);
                            break;
                        }
                        if (roadRight(crossword, w)) {
                            list.add(w);
                            break;
                        }
                        if (roadLeft(crossword, w)) {
                            list.add(w);
                            break;
                        }
                        if (roadUp(crossword, w)) {
                            list.add(w);
                            break;
                        }
                        if (roadDown(crossword, w)) {
                            list.add(w);
                            break;
                        }
                    }
                }
            }
        }
        for (Word w : list) {
            System.out.println(w.toString());
        }
        return list;
    }

    public static boolean roadUpRight(int[][] crossword, Word word) {
        if (word.startX + 1 == crossword[0].length || word.startY - 1 == -1) {
            return false;
        }
        char[] cr = word.text.toCharArray();
        int c = 1;
        int j = word.startY - 1;
        for (int i = word.startX + 1; i < crossword[0].length; i++) {
            if (crossword[j][i] == cr[c]) {
                c++;
                word.setEndPoint(i, j);
                if (c == cr.length)
                    return true;
                if (j - 1 >= 0) {
                    j--;
                } else {
                    return false;
                }
            } else {
                return false;
            }
        }
        return false;
    }
    public static boolean roadUpLeft(int[][] crossword, Word word) {
        if (word.startX - 1 == -1 || word.startY - 1 == -1) {
            return false;
        }
        char[] cr = word.text.toCharArray();
        int c = 1;
        int j = word.startY - 1;
        for (int i = word.startX - 1; i >= 0; i--)
            if (crossword[j][i] == cr[c]) {
                c++;
                word.setEndPoint(i, j);
                if (c == cr.length)
                    return true;
                if (j - 1 >= 0) {
                    j--;
                } else {
                    return false;
                }
            } else {
                return false;
            }
        return false;
    }
    public static boolean roadDownRight(int[][] crossword, Word word) {
        if (word.startX + 1 == crossword[0].length || word.startY + 1 == crossword.length) {
            return false;
        }
        char[] cr = word.text.toCharArray();
        int c = 1;
        int j = word.startY + 1;
        for (int i = word.startX + 1; i < crossword[0].length; i++)
            if (crossword[j][i] == cr[c]) {
                c++;
                word.setEndPoint(i, j);
                if (c == cr.length)
                    return true;
                if (j < crossword.length) {
                    j++;
                } else return false;
            } else return false;
        return false;
    }
    public static boolean roadDownLeft(int[][] crossword, Word word) {
        if (word.startX - 1 == -1 || word.startY + 1 == crossword.length) {
            return false;
        }
        char[] cr = word.text.toCharArray();
        int c = 1;
        int j = word.startY + 1;
        for (int i = word.startX - 1; i >= 0; i--)
            if (crossword[j][i] == cr[c]) {
                c++;
                word.setEndPoint(i, j);
                if (c == cr.length)
                    return true;
                if (j < crossword.length) {
                    j++;
                } else return false;
            } else return false;
        return false;
    }
    public static boolean roadRight(int[][] crossword, Word word) {
        if (word.startX + 1 == crossword[0].length) {
            return false;
        }
        char[] cr = word.text.toCharArray();
        int c = 1;
        for (int i = word.startX + 1; i < crossword[0].length; i++)
            if (crossword[word.startY][i] == cr[c]) {
                c++;
                word.setEndPoint(i, word.startY);
                if (c == cr.length)
                    return true;
            }
        return false;
    }
    public static boolean roadLeft(int[][] crossword, Word word) {
        if (word.startX - 1 == -1) {
            return false;
        }
        char[] cr = word.text.toCharArray();
        int c = 1;
        for (int i = word.startX - 1; i >= 0; i--)
            if (crossword[word.startY][i] == cr[c]) {
                c++;
                word.setEndPoint(i, word.startY);
                if (c == cr.length)
                    return true;
            }
        return false;
    }
    public static boolean roadUp(int[][] crossword, Word word) {
        if (word.startY - 1 == -1) {
            return false;
        }
        char[] cr = word.text.toCharArray();
        int c = 1;
        for (int j = word.startY - 1; j >= 0; j--)
            if (crossword[j][word.startX] == cr[c]) {
                c++;
                word.setEndPoint(word.startX, j);
                if (c == cr.length)
                    return true;
            }
        return false;
    }
    public static boolean roadDown(int[][] crossword, Word word) {
        if (word.startY + 1 == crossword.length) {
            return false;
        }
        char[] cr = word.text.toCharArray();
        int c = 1;
        for (int j = word.startY + 1; j < crossword.length; j++)
            if (crossword[j][word.startX] == cr[c]) {
                c++;
                word.setEndPoint(word.startX, j);
                if (c == cr.length)
                    return true;
            }
        return false;
    }
    public static class Word {
        private String text;
        private int startX;
        private int startY;
        private int endX;
        private int endY;

        public Word(String text) {
            this.text = text;
        }
        public void setStartPoint(int i, int j) {
            startX = i;
            startY = j;
        }

        public void setEndPoint(int i, int j) {
            endX = i;
            endY = j;
        }
        @Override
        public String toString() {
            return String.format("%s - (%d, %d) - (%d, %d)", text, startX, startY, endX, endY);
        }
    }
}