Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 12 13 14 15 16 [17] 18 19 20 21 .. 102   вперед  Ctrl
 Re: Где взять опыт?)  [new]
andreykaT
Member

Откуда:
Сообщений: 2214
Кракинг Зе интервью кажется так называется. Это не по джаве это вообще по задачкам
12 апр 19, 08:56    [21860133]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
Sergunka
Member

Откуда:
Сообщений: 1855
asv79
andreykaT
ну что там тс - нашел работу то?

готовлюсь к интервью.
не могу найти ресурс с задачами по java ,чтоб теорию закрепить
например повторил коллекции -хлоп задачки по ним поделать
стримы изучил -по ним задачки
есть что то такое где нибудь?
codewars совсем в этом плане грустный
хочу еще написать что то из энтерпрайз простенькое - не могу придумать идею
что то может типо онлайн калькулятора на томкате даже не знаю
чтобы на интевью притащить помимо телеграм бота и тетриса


https://leetcode.com/

https://www.hackerrank.com/

https://www.geeksforgeeks.org/
12 апр 19, 09:08    [21860136]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
vas0
Member

Откуда: Таможенный союз (Россия, Казахстан)
Сообщений: 1177
Точно не знаю есть ли там проекты, но это школа которой помогает JetBrains https://hyperskill.org/
12 апр 19, 10:53    [21860256]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
asv79
Member

Откуда: Тверь
Сообщений: 1337
https://www.hackerrank.com/


[/quot]
мммм вот это то что надо,спасибо
12 апр 19, 23:38    [21860967]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
asv79
Member

Откуда: Тверь
Сообщений: 1337
vas0
Точно не знаю есть ли там проекты, но это школа которой помогает JetBrains https://hyperskill.org/

этот еще не попробовал но выглядит неплохо,как и хакерранк,куда как лучше чем codewars
12 апр 19, 23:39    [21860968]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
asv79
Member

Откуда: Тверь
Сообщений: 1337
оцените

https://github.com/apb12
оба репозитория
в пнд отправлять собесу,может можно чего улучшить? особенно касаемо стримов ,может можно чего в стрим переделать,Я Так понял собес их любить как мать родную)
сам я место для стримов там не нашел,ввиду отсутсвия опыта
13 апр 19, 23:16    [21861381]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
asv79
Member

Откуда: Тверь
Сообщений: 1337
пишу игрушку крестики нолики консольную,все готово,кроме метода,который проверяет выйграл кто то уже или нет
на входе двумерный массив чаров
неужели ифами все 8 вариантов перебирать
так еще и чар разный если юзер играет крестиком,значит 0
и наоборот)
+в этом же методе хотелось бы проверять если поле заполнено целиком - то если никто не выйграл то гейм овер

пока думаю наврено надо все это дело перевести лист
далее сделать что то типо шаблонов - - х - - х - -х ,если эти чара по нужным индексам идентичны друг друг другу то выйграл
14 апр 19, 20:13    [21861699]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
Valentin Kolesnikov
Member

Откуда:
Сообщений: 3176
asv79
пишу игрушку крестики нолики консольную,все готово,кроме метода,который проверяет выйграл кто то уже или нет
на входе двумерный массив чаров
неужели ифами все 8 вариантов перебирать
так еще и чар разный если юзер играет крестиком,значит 0
и наоборот)
+в этом же методе хотелось бы проверять если поле заполнено целиком - то если никто не выйграл то гейм овер

пока думаю наврено надо все это дело перевести лист
далее сделать что то типо шаблонов - - х - - х - -х ,если эти чара по нужным индексам идентичны друг друг другу то выйграл


Вот есть код похожий.

public boolean validTicTacToe(String[] board) {
      int numberOfX = 0, numberOfO = 0;
  	// win deatil for row direction.
      int[] row = new int[3];
  	// win detail for col direction.
      int[] col = new int[3];
  	// win deatil for diagonal, and verse diagonal.
      int d  = 0, vd = 0;
      for(int i = 0; i < 3; i++){
          for(int j = 0; j < 3; j++){
              int weight = getWeight(board[i].charAt(j));
              row[i] +=  weight;
              col[j] += weight;
              if(weight == 1){
                  numberOfX++;
              } else if(weight == -1){
                  numberOfO++;
              }
              if(i == j){
                  d += weight;
              }
              if(i + j == 2){
                  vd += weight;
              }
          }
      }
      if(numberOfO > numberOfX || (numberOfX - numberOfO) > 1){
          return false;
      }
      
      if(numberOfO == numberOfX){
          //last step is X, check whether 'X' already win
          if(alreadyWin(row, col, d, vd, 'X')){
              return false;
          }
      }
      if(numberOfX == numberOfO + 1){
          //last step is X, and next step is O, check whether 'O' already wins
          if(alreadyWin(row, col, d, vd, 'O')){
              return false;
          }
      }
      return true;
  }
  
  private boolean alreadyWin(int[] row, int[] col, int d, int vd, char ch){
      int res = (ch == 'X' ? 3 : -3);
      for(int i = 0; i < 3; i++){
          if(col[i] == res || row[i] == res){
              return true;
          }
      }
      if(d == res || vd == res){
          return true;
      }
      return false;
  }
  private int getWeight(char ch){
      if(ch == ' '){
          return 0;
      }
      return ch == 'X' ? 1 : -1;
  } 


Хорошего Вам дня!
14 апр 19, 21:18    [21861738]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
asv79
Member

Откуда: Тверь
Сообщений: 1337
Valentin Kolesnikov,
чото какая то жесткая простыня ,это можно сделать гораздо короче ведь всего 8 выйгрышных вариантов
взять поле=преставить в виде листа выдернуть 3 элемента по индексу проверить их на схожесть и если схожи все три вин
14 апр 19, 21:33    [21861744]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
Valentin Kolesnikov
Member

Откуда:
Сообщений: 3176
asv79,

Решение с меньшим кодом:

public boolean validTicTacToe(String[] board) {
        int turns = 0;
        boolean xwin = false; 
        boolean owin = false;
        int[] rows = new int[3];
        int[] cols = new int[3];
        int diag = 0;
        int antidiag = 0;
				
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                if (board[i].charAt(j) == 'X') {
                    turns++; rows[i]++; cols[j]++;
                    if (i == j) diag++;
                    if (i + j == 2) antidiag++;
                } else if (board[i].charAt(j) == 'O') {
                    turns--; rows[i]--; cols[j]--;
                    if (i == j) diag--;
                    if (i + j == 2) antidiag--;
                }
            }
        }
		
        xwin = rows[0] == 3 || rows[1] == 3 || rows[2] == 3 || 
               cols[0] == 3 || cols[1] == 3 || cols[2] == 3 || 
               diag == 3 || antidiag == 3;
        owin = rows[0] == -3 || rows[1] == -3 || rows[2] == -3 || 
               cols[0] == -3 || cols[1] == -3 || cols[2] == -3 || 
               diag == -3 || antidiag == -3;
        
        if (xwin && turns == 0 || owin && turns == 1) {
            return false;
        }
        return (turns == 0 || turns == 1) && (!xwin || !owin);
    } 


Хорошего Вам дня!
14 апр 19, 21:48    [21861758]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
andreykaT
Member

Откуда:
Сообщений: 2214
асв, хочешь головоломку? разложи этот код из O(n^2) в O(n), плюс избавься от форов в пользу рекурсий, избавься в нем от присваиваний.

сделаешь это - ты царь.
14 апр 19, 22:04    [21861775]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
andreykaT
Member

Откуда:
Сообщений: 2214
хвостовых рекурсий конечно же.
14 апр 19, 22:04    [21861776]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
asv79
Member

Откуда: Тверь
Сообщений: 1337
andreykaT
асв, хочешь головоломку? разложи этот код из O(n^2) в O(n), плюс избавься от форов в пользу рекурсий, избавься в нем от присваиваний.

сделаешь это - ты царь.

у меня код красивее сейчас будет ,одна закавыка не могу найти как двумерный чар массив с помщью стрима превратить в лист чаров
flatToInt есть а для чаров нету ,что за печаль
14 апр 19, 22:39    [21861787]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
mayton
Member

Откуда: loopback
Сообщений: 41056
andreykaT
асв, хочешь головоломку? разложи этот код из O(n^2) в O(n), плюс избавься от форов в пользу рекурсий, избавься в нем от присваиваний.

сделаешь это - ты царь.

Ты где там квадратичную сложность нашёл? У тебя что. Крестики нолики на больших досках пойдут?
14 апр 19, 22:55    [21861793]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
asv79
Member

Откуда: Тверь
Сообщений: 1337
mayton,

есть способ двумерный массив чаров конвертировать в arraylist с помощью stream?
14 апр 19, 23:02    [21861797]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
mayton
Member

Откуда: loopback
Сообщений: 41056
asv79
mayton,

есть способ двумерный массив чаров конвертировать в arraylist с помощью stream?

Зачем?

Какая будет при этом решена задача?
14 апр 19, 23:04    [21861799]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
asv79
Member

Откуда: Тверь
Сообщений: 1337
mayton
asv79
mayton,

есть способ двумерный массив чаров конвертировать в arraylist с помощью stream?

Зачем?

Какая будет при этом решена задача?

по индексу красиво втыкать чары
14 апр 19, 23:07    [21861800]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
asv79
Member

Откуда: Тверь
Сообщений: 1337
я могу перевести его обычным способом но хочется стримом
очень мало кода будет,красиво и эелегантно ,вместо этих простыней с ифами и форами
14 апр 19, 23:08    [21861801]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
mayton
Member

Откуда: loopback
Сообщений: 41056
asv79
я могу перевести его обычным способом но хочется стримом
очень мало кода будет,красиво и эелегантно ,вместо этих простыней с ифами и форами

Основная логика работы игры в пространстве декартовой системы координат.
По этой причине разваливание координат (вложенного цикла) в стрим
ничего ровным счетом не дает. Более того. Вы сможете решить задачу
в терминологии декарта. Но не сможете в стримах без декарта вообще.
14 апр 19, 23:17    [21861802]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
asv79
Member

Откуда: Тверь
Сообщений: 1337
mayton
asv79
я могу перевести его обычным способом но хочется стримом
очень мало кода будет,красиво и эелегантно ,вместо этих простыней с ифами и форами

Основная логика работы игры в пространстве декартовой системы координат.
По этой причине разваливание координат (вложенного цикла) в стрим
ничего ровным счетом не дает. Более того. Вы сможете решить задачу
в терминологии декарта. Но не сможете в стримах без декарта вообще.

просто покажите как перевести двумерный чар с помощью стрима в arraylist,если не сложно
14 апр 19, 23:20    [21861804]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
mayton
Member

Откуда: loopback
Сообщений: 41056
asv79
mayton
пропущено...

Основная логика работы игры в пространстве декартовой системы координат.
По этой причине разваливание координат (вложенного цикла) в стрим
ничего ровным счетом не дает. Более того. Вы сможете решить задачу
в терминологии декарта. Но не сможете в стримах без декарта вообще.

просто покажите как перевести двумерный чар с помощью стрима в arraylist,если не сложно

Ну... ты настырный. Я надеюсь что это сейчас вопрос не лично ко мне а ко всему сообществу?

Как ты хотел видеть фасад?

Так?

public static Stream<Character> from(char[][] chars) {
   // TODO: Implement....
}
14 апр 19, 23:34    [21861806]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
mayton
Member

Откуда: loopback
Сообщений: 41056
Деревянный вариант.
public Stream<Character> fromTwoDimensionChars(char[][] chars) {
        List<Character> characterList = new ArrayList<>();
        for(int i = 0; i< chars.length; i++) {
            for(int j = 0; j< chars[i].length; j++) {
                characterList.add(chars[i][j]);
            }
        }
        return characterList.stream();
    }


Если тебя на собесе спросят - как сэкономить память. Чтобы не создавать временный characterList - то
это уже надо думать. Будет решение посложнее.
15 апр 19, 00:37    [21861817]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
asv79
Member

Откуда: Тверь
Сообщений: 1337
mayton,
сделал без стрима
import java.util.ArrayList;
import java.util.List;

class ChekWin {
   static int x[][]={{0,3,6},
               {1,4,7},
               {2,5,8},
               {0,1,2},
               {3,4,5},
               {6,7,8},
               {0,4,8},
               {2,4,6}};

    static void isWin(char s, char c[][] ) {
       // System.out.println(c);
        List<Character>list=new ArrayList<>();
        for (int i = 0; i <c.length ; i++) {
            for (int j = 0; j <c[i].length ; j++) {
                char y=c[i][j];
                int count=0;

                list.add(count,y);
                count++;

            }

        }

    
        for (int i = 0; i <x.length ; i++) {
            if(list.get(x[i][0]).equals(s)&& list.get(x[i][1]).equals(s)&&list.get(x[i][2]).equals(s)){
                System.out.println("Game OVER ,"+s+" Win");
                System.exit(0);
            }else if(!list.contains(' ')){
                System.out.println("Поле заполнено никто не выйграл");
                System.exit(0);


            }

        }
   }

 }
15 апр 19, 00:44    [21861818]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
asv79
Member

Откуда: Тверь
Сообщений: 1337
https://github.com/apb12/Tictac

полностью мое от А до Я,ОЦЕНИТЕ ПОЖАЛУЙСТА ,ЗАВТРА нужно отправлять потенциальному работадателю
15 апр 19, 01:08    [21861820]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
13-й Пилигрим
Member

Откуда:
Сообщений: 138
asv79
System.out.println("Поле заполнено никто не выйграл");

Картинка с другого сайта.
15 апр 19, 08:27    [21861915]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 12 13 14 15 16 [17] 18 19 20 21 .. 102   вперед  Ctrl
Все форумы / Java Ответить