Форум программистов, компьютерный форум, киберфорум
AlexProgramm
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  

Изученный материал по Java. Хорстманн. Библиотека профессионала. Том 2. 2020г. Глава 1. Потоки данных.

Запись от AlexProgramm размещена 25.07.2024 в 21:11
Показов 1790 Комментарии 13

Всем привет!

Закончил тему:

1. Потоки данных.
  • От итерации к потоковым операциям
  • Создание потока данных
  • Методы filter(), map() и flatMap()
  • Извлечение подпотоков и объединение потоков данных
  • Другие операции преобразования потоков данных
  • Простые методы сведения
  • Тип Optional
  • Накопление результатов
  • Накопление результатов в отображениях
  • Группирование и разделение
  • Н исходящие коллекторы
  • Операции сведения
  • Поток и данных примитивных типов
  • Параллельные потоки данных

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

Объект типа Opt ional<T> служит оболочкой для объекта обобщенного типа
Т или же ни для одного из объектов. В первом случае считается, что значение
присутствует. Тип Optional<T> служит в качестве более надежной альтернативы ссылке на обобщенный тип т, которая делается на объект или оказывается
пустой. Но этот тип надежнее, если правильно им пользоваться.

***************************
Начал изучать эту книгу. Сау S. Horstmann. Библиотека профессионала. Том 2. Расширенные средства программирования

Выбирал выбирал, и выбрал эту, для начала. Вернее для продолжения.

Вот тема выбора книги

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

Что по изученному материалу:

Потоки данных. Очень круто. Очень сокращается код.
Но тему я фактически получается не изучил, потому что на практике мне ничего не удалось реализовать! Ничего не работает!
Из самого потока невозможно вытащить какие либо данные, приходится загонять этот поток обратно в список.
С самим потоком мне не удается сделать более одной операции, далее компилятор пишет: stream has already been operated upon or closed

В общем сделал две домашние задачи, вроде применил потоки, но зачем я их применил, непонятно, результата нет.

Еще и промучился с невероятными фокусами, думал уже я с ума сошел, в итоге оказалось, что глючит IntelliJ IDEA 2022.3.3 (Community Edition).
Вот тема ее глюков.

Может кто поможет, может я делаю что то не так?

Домашнее задание:
Задача 1.
Необходимо создать класс клиента со следующими полями: уникальный идентификатор, имя, возраст.
Также у клиента есть список телефонов. Класс телефона содержит само значение и тип (стационарный или мобильный).
Найти самого возрастного клиента, которой пользуется стационарным телефоном
С использованием потоков.


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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
package dz.dz.horstmann.stream;
 
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collector;
import java.util.stream.Stream;
 
/*Необходимо создать класс клиента со следующими полями: уникальный идентификатор, имя, возраст.
        Также у клиента есть список телефонов. Класс телефона содержит само значение и тип (стационарный или мобильный).
 
        Найти самого возрастного клиента, которой пользуется стационарным телефоном
С использованием потоков.
*/
 
public class DZHorstmann1stream1 {
    public static <Optional> void main(String[] args) throws IOException {
        int clientSize = 3, telCountClient = 2, telCount = 6;
        int i, j, k = 0, p;
        int maxAge = 0;
        
        //читаем файл телефонов и разбиваем на слова и записываем в список
        var contents = new String (Files.readAllBytes(
                Paths.get("E:\\Java\\Javatxt\\DZ-Horstmann-1stream-2-phones.txt")));
        
        String[] split = contents.split(" ");
        //создаем и заполняем Лист телефонов общий
        List<String> wordsPhones = new ArrayList<String>();
        
            wordsPhones.add(0, split[k]);
            wordsPhones.add(1, split[k+1]);
            wordsPhones.add(1, split[k+2]);
            wordsPhones.add(1, split[k+3]);
            wordsPhones.add(1, split[k+4]);
            wordsPhones.add(1, split[k+5]);
        
 
        //читаем файл клиентов и разбиваем на слова и записываем в список
        var contents2 = new String (Files.readAllBytes(
                Paths.get("E:\\Java\\Javatxt\\DZ-Horstmann-1stream-1.txt")));
        String[] wordsClient = contents2.split(" ");
 
        //создаем список телефонов, где по два номера, для передачи в список клиентов
        List<Phone> phonesSendList = new ArrayList<>();
 
        i = 0;
        j = 0;
        k = 0;
        
        //Заполняем клиент-лист
        List<Client> clientsList = new ArrayList<Client>();
        while (i < clientSize) {
            phonesSendList.add(0, new Phone(split[k], split[k+1]));
                        
            //вот так не распечатывается, - это в Айдие
            System.out.println("Элемент phonesSendList в строчку подряд " + phonesSendList.get(0).getNumMob() + " " 
                    + phonesSendList.get(0).getNumStac());
            
            System.out.println("Элемент phonesSendList " + phonesSendList.get(0).getNumMob());
            System.out.println("Элемент phonesSendList " + phonesSendList.get(0).getNumStac());
            
            clientsList.add(i, new Client(wordsClient[j], wordsClient[j+1], wordsClient[j+2],
                    phonesSendList));
            
            //мы не можем вытащить данные из переданного листа, хотя они там должны быть! а там нет нулевого элемента
            //ааа, если мы пишем так //phonesSendList.clear(); то очищается не только этот список, но и список, переданный
            //в другой лист в качестве параметра!
            System.out.println("Бинго - " + clientsList.get(i).getPhones().get(0).getNumMob());
            
            k = k + 2;
            j = j + 3;
            i++;
        }
 
        i = 0;
        k = 2;
        System.out.println();
        //выводим список клиентов на экран
        //очередные глюки, с которыми уже не хочется разбираться. при добавлении списка телефонов клаенту, распечатываются
        //правильные телефоны, но при следующем распечатке списка клиентов за каждым клиентом закреплен почему то 
        //        третий номер! причем под вторым и третим элементами этого списка телефонов лежат все оставшиеся номера!
         //       откуда они там лежат, не понятно, т.к. в этом списке только один элемент должен быть!
        //        пришлось подколхозить, чтоб из вывести правильно
        System.out.println("Наш список клиентов из списка!");
        while (i < clientSize) {
 
            System.out.print(clientsList.get(i).getId());
            System.out.print(" ");
            System.out.print(clientsList.get(i).getName());
            System.out.print(" ");
            System.out.print(clientsList.get(i).getAge());
            System.out.print(" ");
            System.out.print(clientsList.get(i).getPhones().get(k).getNumMob() + 
                    " " + clientsList.get(i).getPhones().get(k).getNumStac());
            i++;
            k--;
            System.out.println();
        }
 
        i = 0;
        //System.out.println("Наш список клиентов из потока");
        Stream<Client> clientStream = clientsList.stream();
        //эта хрень распечатывается, но на этом работа с потоком заканчивается
        //System.out.println(clientStream.iterator().next().getId());
        //это уже не печатается -  java.lang.IllegalStateException: stream has already been operated upon or closed
        //System.out.println(clientStream.getClass());
        //если пытаемся снова вывести айдишник из элемента потока, то компилятор пишет, что поток уже закрыт!
        //java.lang.IllegalStateException: stream has already been operated upon or closed
        //System.out.println(clientStream.iterator().next().getId());
        Stream<String> upCaseStream = wordsPhones.stream().map(String::toUpperCase);
        //херушки -  java.util.NoSuchElementException
        //System.out.println(upCaseStream.iterator().next().length());
        //это по книжке!!! и это должно работать! - работает, но не распечатывается!
//        Stream<String> lowercaseWords =
//        words.stream().map(String::toLowerCase);
//      загоняем из потока данные обратно в список, от безысходности
        List<Client> clientsListOut = clientStream.toList();
 
        System.out.println();
        //распечатываем список клиентов из списка, который сформировали из потока
        System.out.println("Наш список клиентов из списка, сформированного из потока!");
        k = 2;
        while (i < clientSize) {
 
            System.out.print(clientsListOut.get(i).getId());
            System.out.print(" ");
            System.out.print(clientsListOut.get(i).getName());
            System.out.print(" ");
            System.out.print(clientsListOut.get(i).getAge());
            System.out.print(" ");
            System.out.print(clientsListOut.get(i).getPhones().get(k).getNumMob() + " " + 
                    clientsListOut.get(i).getPhones().get(k).getNumStac());
            i++;
            k--;
            System.out.println();
        }
 
        //тип Optional. Создаем метод типа Optional. Он будет вытаскивать значение из списка - хрен там
        //что мы можем? Мыф можем только создать переменную типа Optional
        Optional clientOptValue;
        //в книге есть такой пример созания объекта типа Optional, но он на практике не работает!
        //String str = "Пример строки для типа Optional";
        //Optional< String> transformed = str.map(String::toUpperCase);
                
        //для чего нужен вообще тип Optional не понятно, ничего нельзя к нему привести
        //Optional<String> stringOptList = (String)wordsPhones.iterator().next().length();
        
        
        //делаем по заданию из списка
        i = 0;
        
        while (i < clientSize) {
 
            if (Integer.parseInt(clientsListOut.get(i).getAge()) > maxAge) {
                maxAge = Integer.parseInt(clientsListOut.get(i).getAge());
            }
            
            i++;
        }
        System.out.println();
        System.out.println("Клиенты самые возрастные со стац телефонами: ");
        i = 0;
        k = 2;
        while (i < clientSize) {
 
            if (Integer.parseInt(clientsListOut.get(i).getAge()) == maxAge) {
                System.out.print(clientsListOut.get(i).getId());
                System.out.print(" ");
                System.out.print(clientsListOut.get(i).getName());
                System.out.print(" ");
                System.out.print(clientsListOut.get(i).getAge());
                System.out.print(" ");
                p = 0;
                
                System.out.print(clientsListOut.get(i).getPhones().get(k).getNumMob() + " " + 
                         clientsListOut.get(i).getPhones().get(k).getNumStac());
            }
            k--;
            i++;
        }
        System.out.println();
        System.out.println();
       
 
        System.out.println("Hello world!");
    }
}
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
package dz.dz.horstmann.stream;
 
import java.util.List;
 
public class Client {
    String id;
    String name;
    String age;
    List<Phone> phones;
 
    public Client(String id, String name, String age, List<Phone> phones) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.phones = phones;
    }
 
    String getId() {
        return id;
    }
    String getName() {
        return name;
    }
    String getAge() {
        return age;
    }
    List<Phone> getPhones() {
        return phones;
    }
}
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
package dz.dz.horstmann.stream;
 
public class Phone {
    String numberMob;
    String numberStac;
    
    PhoneType type;
 
    enum PhoneType {
        STATIONARY, MOBIL;
    }
    
    Phone(String numberMob, String numberStat) {
        this.numberMob = numberMob;
        this.numberStac = numberStat;
    }
    
    String getNumMob() {
        return numberMob;
    }
    String getNumStac() {
        return numberStac;
    }
}
Результат:
Элемент phonesSendList в строчку подряд 89261111111 84951111111
Элемент phonesSendList 89261111111
Элемент phonesSendList 84951111111
Бинго - 89261111111
Элемент phonesSendList в строчку подряд 89252222222 84992222222
Элемент phonesSendList 89252222222
Элемент phonesSendList 84992222222
Бинго - 89252222222
Элемент phonesSendList в строчку подряд 89163333333 88003333333
Элемент phonesSendList 89163333333
Элемент phonesSendList 88003333333
Бинго - 89163333333

Наш список клиентов из списка!
1 Wolter 35 89261111111 84951111111
2 Rass 22 89252222222 84992222222
3 Dedpul 30 89163333333 88003333333

Наш список клиентов из списка, сформированного из потока!
1 Wolter 35 89261111111 84951111111
2 Rass 22 89252222222 84992222222
3 Dedpul 30 89163333333 88003333333

Клиенты самые возрастные со стац телефонами:
1 Wolter 35 89261111111 84951111111

Hello world!

Задача 2.
обработать список чисел и найти сумму всех чётных чисел, которые больше 10.

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
/*
 * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
 * Click nbfs://nbhost/SystemFileSystem/Templates/Project/Maven2/JavaApp/src/main/java/${packagePath}/${mainClassName}.java to edit this template
 */
 
package dz.dz.horstmann.stream;
 
import java.util.Arrays;
import java.util.IntSummaryStatistics;
import java.util.List;
import java.util.function.Consumer;
import java.util.function.ToIntFunction;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import java.util.stream.Stream;
 
/**
 Задача: обработать список чисел и найти сумму всех чётных чисел, которые больше 10.
 */
public class DZHorstmann2stream {
 
    public static void main(String[] args) {
        int[] arr2 = new int[10];
        Arrays2D a = new Arrays2D();
        
        a.fill();
        a.print();
        List arrList = Arrays.asList(a);
        
        //создадим поток, что бы ему присвоить наш рабочий поток, над которым мы можем сделать только одну операциюпочему то
        Stream<Integer> arrStream2;
        
        Stream<Integer> arrStream = arrList.stream();
        
        arrStream2 = arrStream.filter(number -> number > 10 && number % 2 == 0).map(number -> number + number);
        //дальше уже ничего не работает
        //здесь мы не может преобразовать в Integer, но блин поток и есть Integer! 
        //class dz.dz.horstmann.stream.Arrays2D cannot be cast to class java.lang.Integer
        //System.out.println(arrStream2.iterator().next().intValue());
        //List<Integer> sumList = arrStream2.toList();
        //System.out.println(sumList.get(0));
 
       //здесь, при попытке второй операции над потоком вот: java.lang.IllegalStateException: stream has already been operated 
       //upon or closed
       //List<Integer> sumList = arrStream2.toList();
       
        
        //netBeans не знает типа IпtSummaryStatistics, хотя в книге такой класс есть
        //IпtSummaryStatistics summ = 
        //  arrStream.collect(Collectors.summingInt(arrStream.filter(number -> number > 10 && number % 2 == 0));
        
                
        //так не работает
        //IntSummaryStatistics summ = 
        //  arrStream.collect(Collectors.summarizingInt(arrStream.fifilter(number -> number > 10 && number % 2 == 0));
        
        //так тоже не работает
        //arrStream.forEach(Integer::sum());
        
                
        System.out.println("Hello World!");
    }
}
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
package dz.dz.horstmann.stream;
import java.util.Random;
 
public final class Arrays2D {
    public int[] arr = new int[10];
    
    public Arrays2D(){
        createArray();
    }
    @SuppressWarnings("empty-statement")
    public int[] createArray(){
        int[] arr = new int[10];
        //arr = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
        return arr;
    }
    
    
    public void fill(){
        Random r = new Random();
        for (int i=0; i<10; i++)
                arr[i] = r.nextInt(10);
        
    }
    public void print(){
        for (int item : arr){
           
            System.out.printf("%2d ", item);
            
        }
    }
}
Результат:
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 13
Комментарии
  1. Старый комментарий
    Аватар для Royal_X
    Писал когда-то на Java, в частности под андроид. Но сейчас этот язык не приносит мне удовольствия.
    С++, C, JS, Python больше радуют, чем Java.
    Запись от Royal_X размещена 27.07.2024 в 12:56 Royal_X на форуме
  2. Старый комментарий
    Аватар для AlexProgramm
    Цитата Сообщение от Royal_X
    Писал когда-то на Java, в частности под андроид. Но сейчас этот язык не приносит мне удовольствия.
    С++, C, JS, Python больше радуют, чем Java.
    Ну я Си изучал, а потом вроде рекомендовалмя java, т. к. он вроде похож на Си, и поэтому я начал изучать его
    Запись от AlexProgramm размещена 27.07.2024 в 13:00 AlexProgramm вне форума
  3. Старый комментарий
    Аватар для alecss131
    Цитата Сообщение от AlexProgramm
    Ну я Си изучал, а потом вроде рекомендовалмя java, т. к. он вроде похож на Си, и поэтому я начал изучать его
    Языки изучать конечно хорошо, но конечная цель в итоге какая?
    Джава это больше про веб и андроид, но на андроиде его усилиями самого гугла вытесняет котлин.
    Языков похожих на Си много, тут скорее вопрос в степени похожести.
    Ради общего развития советую взглянуть на котлин, он сейчас типа модный и новый язык. Он и свифт очень друг на друга очень похожи и занимают приличное место в мобильной разработке.
    Запись от alecss131 размещена 27.07.2024 в 22:45 alecss131 вне форума
  4. Старый комментарий
    Аватар для Quiet Snow
    Цитата Сообщение от alecss131
    Ради общего развития советую взглянуть на котлин, он сейчас типа модный и новый язык.


    Ну т.е. если для личного развития или выезжать из страны, а иначе это как на иголках.
    Запись от Quiet Snow размещена 27.07.2024 в 22:53 Quiet Snow вне форума
  5. Старый комментарий
    Аватар для AlexProgramm
    alecss131
    Языки изучать конечно хорошо, но конечная цель в итоге какая?
    Конечная цель? Была вначале мобильные разработки, но вот теперь Котлин...
    Не знаю, поезд этот движется очень быстро, надо его догнать и еще двигаться параллельно с ним...
    Я даже не чувствую, что его догоню.
    Так что начал изучать, пока изучаю, а что дальше будет, пока не знаю
    Запись от AlexProgramm размещена 27.07.2024 в 23:05 AlexProgramm вне форума
  6. Старый комментарий
    Аватар для alecss131
    Цитата Сообщение от Quiet Snow
    Ну т.е. если для личного развития или выезжать из страны, а иначе это как на иголках.
    При чем тут Jetbrains и их язык? Их язык используется во всю в мобильной разработке под андроид. А то что они ушли это всего лишь нельзя купить и скачать их IDE. С языком ничего не будет.

    Цитата Сообщение от AlexProgramm
    alecss131
    Конечная цель? Была вначале мобильные разработки, но вот теперь Котлин...
    Не знаю, поезд этот движется очень быстро, надо его догнать и еще двигаться параллельно с ним...
    Я даже не чувствую, что его догоню.
    Так что начал изучать, пока изучаю, а что дальше будет, пока не знаю
    Не нужно все прям подробно изучать. Основы джавы есть, так что вперед на котлин. Тем более что язык хоть один и тот же (я про джаву) но десктоп и андроид разработка на нем сильно различается.
    Котлин больше функциональный язык и советую сразу подготовиться к опционалам, там они используются повсеместно
    Запись от alecss131 размещена 27.07.2024 в 23:28 alecss131 вне форума
  7. Старый комментарий
    Аватар для AlexProgramm
    Основы джавы есть, так что вперед на котлин.
    Ох, ну вы мне и задачку подкинули
    Запись от AlexProgramm размещена 28.07.2024 в 07:05 AlexProgramm вне форума
  8. Старый комментарий
    Аватар для Royal_X
    Честно говоря, я никаких преимуществ у Kotlin не вижу. Для андроид без проблем можно и дальше использовать Java. Зачем изучать Kotlin, который нигде кроме андроид не нужен? А вот на Java есть хорошие библиотеки, да и сам язык популярен и используется не только для андроид. Не нужно идти на поводу у Google и JetBrains и гнуться под их пропаганду.
    Запись от Royal_X размещена 28.07.2024 в 10:13 Royal_X на форуме
  9. Старый комментарий
    Аватар для alecss131
    Цитата Сообщение от Royal_X
    Честно говоря, я никаких преимуществ у Kotlin не вижу. Для андроид без проблем можно и дальше использовать Java. Зачем изучать Kotlin, который нигде кроме андроид не нужен? А вот на Java есть хорошие библиотеки, да и сам язык популярен и используется не только для андроид. Не нужно идти на поводу у Google и JetBrains и гнуться под их пропаганду.
    Котлин поприятней джавы будет. Особенно активным использованием опционалов. И многие другие вещи поприятнее и удачнее джавы сделаны. Хотя конструкторы мне не нравятся. Да и после Си писать больше в процедурном стиле будет привычней.
    Главное преимущество котлина это декларативный гуи фреймворк Jetpack Compose, который кстати не только андроид. Котлин даже в веб забрался, есть офф примеры и генерация проектов на спринге.
    А так что джава, что котлин, что скала, что груви все языки jvm на выходе у них всех один и тот же байткод и полная совместимость. Так что джава и котлин можно будет мешать в одном проекте в виде исходников без проблем, только вот скорее из джавы дергать котлин код не выйдет, так как в джаве обязательны классы, а в котлине нет.
    При чем тут библиотеки? Все будет работать и в котлине.
    И послед котлина с джетпаком будет не сложно перейти на айфон разработку, так как все очень похожее.
    Запись от alecss131 размещена 28.07.2024 в 11:51 alecss131 вне форума
  10. Старый комментарий
    Аватар для Fedor92
    Цитата Сообщение от Royal_X
    Честно говоря, я никаких преимуществ у Kotlin не вижу.
    В отличии от Java менее избыточен в отношении кода и транслируется быстрее. А что качается пропаганды - она была, есть и будет особенно со стороны монополистов.

    Цитата Сообщение от AlexProgramm
    Ох, ну вы мне и задачку подкинули
    Что мешает быть билингвом?
    Запись от Fedor92 размещена 29.07.2024 в 13:15 Fedor92 вне форума
  11. Старый комментарий
    Аватар для AlexProgramm
    Fedor92
    Что мешает быть билингвом
    эта как?
    Запись от AlexProgramm размещена 14.08.2024 в 16:48 AlexProgramm вне форума
  12. Старый комментарий
    Аватар для Fedor92
    эта как?
    Изучать java и параллельно kotlin

    Людей, владеющих двумя языками, называют били́нгвами, тремя — полили́нгвами, более трёх — полиглотами.
    Запись от Fedor92 размещена 14.08.2024 в 22:24 Fedor92 вне форума
  13. Старый комментарий
    Аватар для AlexProgramm
    Цитата Сообщение от Fedor92
    Изучать java и параллельно kotlin
    Неплохая идея
    Запись от AlexProgramm размещена 14.08.2024 в 22:28 AlexProgramm вне форума
 
Новые блоги и статьи
[golang] Двоичная куча, min-heap
alhaos 20.05.2026
Двоичная куча Двоичная куча — структура данных, которая всегда держит самый важный элемент наготове. Представьте очередь к хилеру в игре, и очередь из игроков в приоритете те у кого меньше. . .
[golang] Breadth-First Search
alhaos 19.05.2026
BFS (Breadth-First Search) — это базовый алгоритм обхода графа в ширину, который поуровнево исследует все связанные вершины. Он начинает с выбранной точки и проверяет всех соседей, прежде чем. . .
[golang] Алгоритм «Хак Госпера»
alhaos 17.05.2026
Алгоритм «Хак Госпера» Хак Госпера (Gosper's Hack) — алгоритм нахождения следующего по величине числа с тем же количеством установленных бит. Придуман Биллом Госпером в 1970-х, опубликован в. . .
Рисование бинарного древа до 6-го колена на js, svg.
russiannick 17.05.2026
<svg width="335" height="240" viewBox="0 0 335 240" fill="#e5e1bb"> <style> <!]> </ style> <g id="bush"> </ g> </ svg> function fn(){ let rost;/ / высота древа let xx=165,yy=210,w=256;
FSharp: interface of module
DevAlt 16.05.2026
Интерфейс модуля F# позволяет управлять доступностью членов, содержащихся в реализации модуля. По-умолчанию все члены модуля доступны: module Foo let x = 10 let boo () = printfn "boo" . . .
Хитросплетение родственных связей пантеона греческих богов.
russiannick 14.05.2026
Однооконник, позволяющий узреть и изучить отдельных героев древней Греции. <!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible". . .
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов. import "math" func angleClock(hour int, minutes int) float64 { . . .
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html и его же старой инструкции по установке Lazarus с gtk2. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru