Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 33 34 35 36 37 [38] 39 40 41 42   вперед  Ctrl
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5023
scf
if (x.isPresent() || y.isPresent()) {
            return Optional.of(x.orElse(0) + y.orElse(0));
        } else {
            return Optional.empty();
        }


вроде бы хороший программист, независимо от java и не java - не складывает empty с числом, а если складывает, то получает что-то вроде empty или NaN или что-то вроде того.
5 фев 19, 17:15    [21802089]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
забыл ник
Member

Откуда:
Сообщений: 2614
Озверин
scf
if (x.isPresent() || y.isPresent()) {
            return Optional.of(x.orElse(0) + y.orElse(0));
        } else {
            return Optional.empty();
        }


вроде бы хороший программист, независимо от java и не java - не складывает empty с числом, а если складывает, то получает что-то вроде empty или NaN или что-то вроде того.

Все зависит от того как вы определяете операцию(алгебраически). Не знаю откуда конкретно этот код, но тут складывается число с числом и в итоге оборачивается в Optional, что так удивило?
5 фев 19, 18:26    [21802144]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5023
забыл ник, в этом коде число может складывать с null.
5 фев 19, 18:29    [21802148]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
забыл ник
Member

Откуда:
Сообщений: 2614
Озверин
забыл ник, как-то unzip у меня в голове ничем, кроме partitioningBy не укладывается. А по ссылке как-то и не нашел.

По ссылке и правда нет, и меня это тоже очень удивило. В скале уже есть 100 лет как. Концептуально все проще простого. Передаем функцию высшего порядка, которая из одного элемента делает два, а внутри unzip создаем две коллекции, потом тупо итерируем по каждому элементу через map и вызываю функцию высшего порядка и добавляем к каждой коллекции.
5 фев 19, 18:32    [21802151]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
забыл ник
Member

Откуда:
Сообщений: 2614
Озверин
забыл ник, в этом коде число может складывать с null.

Каким образом? orlEse(0) вернет 0, если вдруг элемента нет
5 фев 19, 18:34    [21802154]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5023
забыл ник
Озверин
забыл ник, в этом коде число может складывать с null.

Каким образом? orlEse(0) вернет 0, если вдруг элемента нет


так в этом и подвох. null+4 не должно быть одним и тем же с 0+4.
5 фев 19, 18:37    [21802157]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5023
забыл ник
Озверин
забыл ник, как-то unzip у меня в голове ничем, кроме partitioningBy не укладывается. А по ссылке как-то и не нашел.

По ссылке и правда нет, и меня это тоже очень удивило. В скале уже есть 100 лет как. Концептуально все проще простого. Передаем функцию высшего порядка, которая из одного элемента делает два, а внутри unzip создаем две коллекции, потом тупо итерируем по каждому элементу через map и вызываю функцию высшего порядка и добавляем к каждой коллекции.


Я понимаю, что это декларативный путь и в таком случае не принято смотреть в код, но

https://google.github.io/guava/releases/21.0/api/docs/src-html/com/google/common/collect/Streams.html#line.360

господи, какой же ад.
5 фев 19, 18:40    [21802161]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
забыл ник
Member

Откуда:
Сообщений: 2614
Озверин
забыл ник
пропущено...

Каким образом? orlEse(0) вернет 0, если вдруг элемента нет


так в этом и подвох. null+4 не должно быть одним и тем же с 0+4.


Нет никакого подвоха, я же говорю все зависит от того как вы определяете операцию.

семантика zip - объединить коллекции, если с одной стороны элемента нет, то завершаем
семантика zipLeft - объединить коллекции, если с правой стороны элемента нет, то взять элемент слева
семантика zipRight - объединить коллекции, если с левой стороны элемента нет, то взять только элемент справа

Это устоявшаяся семантика.
Соглашусь что код плохой, но немного по-другим причинам. Откуда он?
5 фев 19, 18:52    [21802170]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
забыл ник
Member

Откуда:
Сообщений: 2614
Озверин
забыл ник
пропущено...

По ссылке и правда нет, и меня это тоже очень удивило. В скале уже есть 100 лет как. Концептуально все проще простого. Передаем функцию высшего порядка, которая из одного элемента делает два, а внутри unzip создаем две коллекции, потом тупо итерируем по каждому элементу через map и вызываю функцию высшего порядка и добавляем к каждой коллекции.


Я понимаю, что это декларативный путь и в таком случае не принято смотреть в код, но

https://google.github.io/guava/releases/21.0/api/docs/src-html/com/google/common/collect/Streams.html#line.360

господи, какой же ад.

Ну так да, это же Java. Чтобы сделать простой таск, надо создать 100500 абстракций Factory\Builder\Support.
5 фев 19, 18:58    [21802172]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5023
забыл ник
Озверин
пропущено...


так в этом и подвох. null+4 не должно быть одним и тем же с 0+4.


Нет никакого подвоха, я же говорю все зависит от того как вы определяете операцию.

семантика zip - объединить коллекции, если с одной стороны элемента нет, то завершаем
семантика zipLeft - объединить коллекции, если с правой стороны элемента нет, то взять элемент слева
семантика zipRight - объединить коллекции, если с левой стороны элемента нет, то взять только элемент справа

Это устоявшаяся семантика.
Соглашусь что код плохой, но немного по-другим причинам. Откуда он?


этот код страницей раньше был - обсуждали какую-то задачу.
Ну в моем случае я редко когда помню, что хотел бы под null понимать 0.
5 фев 19, 19:49    [21802185]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
Atum1
Member

Откуда: СПБ
Сообщений: 1836
забыл ник
В общем-то элементарная задачка на zip/Unzip, сто лет в обед решенная

https://google.github.io/guava/releases/21.0/api/docs/com/google/common/collect/Streams.html#zip-java.util.stream.Stream-java.util.stream.Stream-java.util.function.BiFunction-


На чистой java 8(9,10,11)


ибо в flatmap из react есть всякие merge

Хочется код на java

:)
5 фев 19, 19:49    [21802186]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
Kriptman
Member

Откуда:
Сообщений: 7
Бампну тему. Задали тут задачку на собеседовании, решить не смог, ответа не дали при этом.
Нужно вывести числа от 1 до N. При этом:
-Нельзя использовать циклы
-Нельзя использовать условия
-Нельзя использовать исключения
-Нельзя использовать стримы
Может решение очевидно, но я как-то не могу придумать.
19 апр 19, 09:51    [21866824]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
mayton
Member

Откуда: loopback
Сообщений: 39849
public static void recusiveN(int n, int maxN) {
        if (n <= maxN) {
              println(n);
              recursiveN(n + 1, maxN);
        }
}
19 апр 19, 10:37    [21866876]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
Kriptman
Member

Откуда:
Сообщений: 7
mayton,
Про рекурсию я в курсе, как способ уйти от цикла.
Ифы нельзя (2 пункт). Эксцепшены и Эрроры тоже (3 пункт). Как выйти из рекурсии то?
19 апр 19, 12:12    [21867025]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
mayton
Member

Откуда: loopback
Сообщений: 39849
У меня - стойкое дежа-вю. Кажется задачки сделать максимум без ифов уже где-то были.
19 апр 19, 12:16    [21867038]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
mayton
Member

Откуда: loopback
Сообщений: 39849
Тернарную операцию можно?
19 апр 19, 12:17    [21867042]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
lleming
Member

Откуда:
Сообщений: 1555
If всегда можно заменить наследованием ?
public class Printer{                                                              
    public static void main(String[] args){                                        
        N n = N.of(N.of(N.of(N.of(N.ofLast(5), 4), 3), 2), 1);                     
        n.print();                                                                 
    }                                                                              
                                                                                   
    static interface N{                                                            
        void print();                                                              
                                                                                   
        static N of(N next, int value){                                            
            return new NValue(next, value);                                        
        }                                                                          
                                                                                   
        static N ofLast(int value){                                                
            return new NLastValue(value);                                          
        }                                                                          
    }                                                                              
                                                                                   
    static class NLastValue implements N {                                         
                                                                                   
        protected int value;                                                       
                                                                                   
        public NLastValue(int value){                                              
            this.value = value;                                                    
        }                                                                          
                                                                                   
        public void print(){                                                       
            System.out.println(value);                                             
        }                                                                          
    }                                                                              
                                                                                   
    static class NValue extends NLastValue implements N{                           
                                                                                   
        private N next;                                                            
                                                                                   
        public NValue(N next, int value){                                          
            super(value);                                                          
            this.next = next;                                                      
        }                                                                          
                                                                                   
        public void print(){                                                       
            System.out.println(value);                                             
            next.print();                                                          
        }                                                                          
    }                                                                              
}                                                                                  
19 апр 19, 13:32    [21867121]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
lleming
Member

Откуда:
Сообщений: 1555
может еще чуть следует подправить всякие модификаторы и правильнее инициализации но это обсуждаемо
жду критики от аудитории
19 апр 19, 13:33    [21867123]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
Kriptman
Member

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

А чем это отличается от 5 принтов в рядок? N мы не знаем, его пользователь введёт в рантайме.
19 апр 19, 14:08    [21867173]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
Kriptman
Member

Откуда:
Сообщений: 7
Тернарные нельзя, это тот же иф по сути.
Я вообще думаю, что это был троллинговый вопрос без ответа. Типа посмотреть как рассуждаю.
19 апр 19, 14:15    [21867183]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5023
Kriptman
Тернарные нельзя, это тот же иф по сути.
Я вообще думаю, что это был троллинговый вопрос без ответа. Типа посмотреть как рассуждаю.


ну почему, всякие извращения типа таких вроде должны работать:


public class Test2 {

    public static void main(String[] args) {
        int[] n = new int[10];

        print(12);

    }


    static int print(int n) {
        int m = n;
        boolean b = (n == 1 || print(n-1) > m);
        System.out.println(n++);
        return n;
    }

}
19 апр 19, 14:30    [21867209]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5023
int[] n = new int[10]; 


не имеет отношение к.
19 апр 19, 14:30    [21867210]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
mayton
Member

Откуда: loopback
Сообщений: 39849
Озверин
    static int print(int n) {
        int m = n;
        boolean b = (n == 1 || print(n-1) > m);
        System.out.println(n++);
        return n;
    }

}

Мда... если-б такое проходило code-review.

Еще интересный вопрос про
x == x + 1
19 апр 19, 14:52    [21867242]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
lleming
Member

Откуда:
Сообщений: 1555
Kriptman
lleming,

А чем это отличается от 5 принтов в рядок? N мы не знаем, его пользователь введёт в рантайме.

построить строку n(n(n.... и потом eval
:=)
19 апр 19, 14:55    [21867248]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
mayton
Member

Откуда: loopback
Сообщений: 39849
Игры с счетчиком и boolean очень красиво в С/C++ можно записать. Там есть такая трактовка.
В строго-типизированном Java к сожалению такое сокращение не удаётся.
19 апр 19, 15:01    [21867261]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 33 34 35 36 37 [38] 39 40 41 42   вперед  Ctrl
Все форумы / Java Ответить