Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.68/34: Рейтинг темы: голосов - 34, средняя оценка - 4.68
 Аватар для ivan_proger
3 / 3 / 2
Регистрация: 07.08.2018
Сообщений: 84

Задача E. Лабиринт

05.11.2019, 13:03. Показов 7144. Ответов 21
Метки c++ (Все метки)

Студворк — интернет-сервис помощи студентам
Робот находится в центре некоторого лабиринта. Лабиринт состоит из помещений и дверей:

https://ucarecdn.com/89b6a4d4-... a735e6f56/


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

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

Задача робота добраться до красной стены. Робот в данном лабиринте ведет себя следующим образом: каждый раз он случайно (равновероятно) выбирает дверь, ведущую в сторону от центра. В каких помещениях робот будет заканчивать работу чаще? Определите вероятности попадания робота в помещения с красной стеной.

Формат входных данных

В первой строке программе подается целое число n (1≤n≤102) — количество дверей.

Далее в n строках через пробел записываются пары целых чисел a, b (0≤a, b≤n,a≠b) — номера помещений, которые соединены дверью.

Формат выходных данных

Для каждого помещения с красной стеной в отдельной строке выведите вероятность попадания робота в данное помещение в следующем формате:

номера помещений запишите в порядке возрастания;
после каждого номера поставьте двоеточие;
затем через пробел укажите вероятность попадания в указанное помещение. Если вероятность является целым числом, укажите это число. Если вероятность — дробное число, то запишите его в виде простой дроби x/y, где НОД(x,y)=1.
Система оценки

Баллы за задачу будут начислены, если все тесты будут пройдены успешно.

Sample Input:

23
0 1
0 2
0 3
0 9
1 16
1 17
16 15
15 14
15 13
17 21
17 18
18 19
18 20
2 4
2 5
4 6
4 7
5 8
3 22
9 23
9 10
10 11
10 12
Sample Output:

6: 1/16
7: 1/16
8: 1/8
11: 1/16
12: 1/16
13: 1/16
14: 1/16
19: 1/32
20: 1/32
21: 1/16
22: 1/4
23: 1/8
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.11.2019, 13:03
Ответы с готовыми решениями:

Лабиринт
Всем привет. Подскажите, вот делаю игру (понятно какую) но проблема. Вот код #include "stdafx.h" #include <iostream> ...

Лабиринт
#include <iostream> #include <fstream> #include <conio.h> #include <time.h> #include <cmath> #include <stdio.h> using...

лабиринт
дан лабиринт размером NxN. форма лабиринта записана в тектовом файле. стена обозначается М. даны координаты путника в лабиринте-х-номер...

21
Just Do It!
 Аватар для XLAT
4188 / 2642 / 654
Регистрация: 23.09.2014
Сообщений: 8,839
Записей в блоге: 3
06.11.2019, 21:39
ivan_proger,
C++
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
///----------------------------------------------------------------------------|
/// Задача E. Лабиринт
///----------------------------------------------------------------------------:
#include <iostream>
 
struct sTask
{   sTask()
    {   int n = 23; //std::cin >> n;
        int sample[46] = {
             0,  1,
             0,  2,
             0,  3,
             0,  9,
             1, 16,
             1, 17,
            16, 15,
            15, 14,
            15, 13,
            17, 21,
            17, 18,
            18, 19,
            18, 20,
             2,  4,
             2,  5,
             4,  6,
             4,  7,
             5,  8,
             3, 22,
             9, 23,
             9, 10,
            10, 11,
            10, 12 };
        
        int amroom = 24;
        int door_in_room[amroom] = {0};
    
        for(int i = 0; i < n*2; i += 2)
        {   door_in_room[sample[i]]++;
        }
    
        for(int i = 1; i < amroom; i++)
        {   if(door_in_room[i] == 0)
            {   foo(sample, door_in_room, n, i);
            }
        }
    }
 
    void foo(int* sam, int* door, int n, int i)
    {   int res = 1;
        std::cout << i << ":"; 
        do
        {   for(int j = 1; j < 2*n; j += 2)
                if(sam[j] == i)
                    i = sam[j-1];
            res *= door[i];
        }
        while(i != 0);
        std::cout << "\t " << " 1/" << res << "\n";
    }
};
 
///----------------------------------------------------------------------------|
/// Main.
///----------------------------------------------------------------------------:
int main()
{   
    sTask task;
    
    std::cin.get();
    return 0;
}
0
Эксперт CЭксперт С++
 Аватар для liv
5120 / 4573 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
07.11.2019, 12:09
ivan_proger, хочу предложить свое видение решения задачи:
Данный лабиринт легко сводится к дереву. 0 - корень. Двери ведут к следующей ветке или листку.
Стоим дерево из исходных данных. Далее ищем все листья, считая количество переходов от корня, учитывая переходы к "брату" (но только на одном уровне с найденным листком). Тем самым получаем требуемую вероятность Останется только отсортировать полученный результат и вывести.
0
Just Do It!
 Аватар для XLAT
4188 / 2642 / 654
Регистрация: 23.09.2014
Сообщений: 8,839
Записей в блоге: 3
07.11.2019, 12:21
liv,
какой контейнер взять из std,
чтобы реализовать дерево?
0
Эксперт CЭксперт С++
 Аватар для liv
5120 / 4573 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
07.11.2019, 12:25
XLAT, Я не пользуюсь контейнерами. Строю все сам. А Вы смотрите сами. Вариантов реализации много.
0
Just Do It!
 Аватар для XLAT
4188 / 2642 / 654
Регистрация: 23.09.2014
Сообщений: 8,839
Записей в блоге: 3
07.11.2019, 12:38
Цитата Сообщение от liv Посмотреть сообщение
Вариантов реализации много.
это правда.
но если взять сделать на дереве, а потом сооптимизировать то получится та весч, что я показал выше.
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
07.11.2019, 14:03
ivan_proger, можно ссылку на систему тестирования?
XLAT, liv правильно сказал что нужно строить дерево.

Цитата Сообщение от XLAT Посмотреть сообщение
какой контейнер взять из std,
чтобы реализовать дерево?
std::vector<std::vector<int>> v, тогда v[i] - все дети узла с индексом i. Потом можно запустить волновой алгоритм на подобии того что вы сделали.

Цитата Сообщение от XLAT Посмотреть сообщение
void foo(int* sam, int* door, int n, int i)
    {   int res = 1;
        std::cout << i << ":";
        do
        {   for(int j = 1; j < 2*n; j += 2)
                if(sam[j] == i)
                    i = sam[j-1];
            res *= door[i];
        }
        while(i != 0);
        std::cout << "\t " << " 1/" << res << "\n";
    }
sam - входные данные, описывающие рёбра между вершинами графа, door непонятная структура данных отвечающая на вопрос: сколько раз из данной вершины выходит неориентированное ребро.

Далее в n строках через пробел записываются пары целых чисел a, b (0≤a, b≤n,a≠b) — номера помещений, которые соединены дверью.
Нету никаких гарантий что a > b или чего-то подобного. Если во входных данных будет не 16 15 а 15 16, ваша программа зайдёт в вечный цикл, добро пожаловать "time limit".

Преждевременная оптимизация - корень всех зол (с) не помню автора.

Добавлено через 1 минуту
XLAT, поправьте меня, если я ошибся и чего не доглядел.
0
Just Do It!
 Аватар для XLAT
4188 / 2642 / 654
Регистрация: 23.09.2014
Сообщений: 8,839
Записей в блоге: 3
07.11.2019, 14:47
Цитата Сообщение от outoftime Посмотреть сообщение
Если во входных данных будет не 16 15 а 15 16, ваша программа зайдёт в вечный цикл, добро пожаловать "time limit".
ну, верификация входных данных это отдельная тема,
но для вас поправил:

C++
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
///----------------------------------------------------------------------------|
/// Задача E. Лабиринт
///----------------------------------------------------------------------------:
#include <iostream>
 
struct sTask
{   sTask()
    {   int n = 23; //std::cin >> n;
        int sample[46] = {
             0,  1,
             0,  2,
             0,  3,
             0,  9,
             1, 16,
             1, 17,
            15, 16, // 16, 15,
            15, 14,
            15, 13,
            17, 21,
            17, 18,
            18, 19,
            18, 20,
             2,  4,
             2,  5,
             4,  6,
             4,  7,
             5,  8,
             3, 22,
             9, 23,
             9, 10,
            10, 11,
            10, 12 };
        
        int amroom = n + 1;
        int door_in_room[amroom] = {0};
    
        for(int i = 0; i < n*2; i += 2)
        {   door_in_room[sample[i]]++;
        }
    
        for(int i = 1; i < amroom; i++)
        {   if(door_in_room[i] == 0)
            {   foo(sample, door_in_room, n, i);
            }
        }
    }
 
    void foo(int* sam, int* door, int n, int i)
    {   int res = 1;
        std::cout << i << ":"; 
        do
        {   for(int j = 1; j < 2*n; j += 2)
            {   if(sam[j] == i)
                {   i = sam[j-1];
                    goto m;
                }
            }
            std::cout << "\tKARAUL!!!: there is no door!\n";
            return;
m:   
            res *= door[i];
        }
        while(i != 0);
        std::cout << "\t " << " 1/" << res << "\n";
    }
};
 
///----------------------------------------------------------------------------|
/// Main.
///----------------------------------------------------------------------------:
int main()
{   
    sTask task;
    
    std::cin.get();
    return 0;
}
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
07.11.2019, 17:25
XLAT, вы строите своё решение на ложном предположении о формате входных данных и решение не подходит для данной задачи.

"Преждевременная оптимизация - корень всех зол" (С) не помню кто сказал

Строй вы обычное дерево - проблем было бы меньше.
0
Just Do It!
 Аватар для XLAT
4188 / 2642 / 654
Регистрация: 23.09.2014
Сообщений: 8,839
Записей в блоге: 3
07.11.2019, 18:42
Цитата Сообщение от outoftime Посмотреть сообщение
Преждевременная оптимизация - корень всех зол (с) не помню автора.
Цитата Сообщение от outoftime Посмотреть сообщение
"Преждевременная оптимизация - корень всех зол" (С) не помню кто сказал
и чево вы заладили, Кнут сказал.

Цитата Сообщение от outoftime Посмотреть сообщение
Строй вы обычное дерево - проблем было бы меньше.
покажите ваше решение на обычном дереве
и я смогу оценить проблемы визуально.
0
Эксперт CЭксперт С++
 Аватар для liv
5120 / 4573 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
07.11.2019, 19:00
Хм, кто-нибудь мне объяснит, чем отличаются помещения 13, 14 от 19, 20?
Пути одинаковые, а вероятности разные...
Если сложить предложенные вероятности в ответе, то получим 1, как и должно быть.
Отсюда вопрос: как считать вероятность попадания в помещения?
У меня получается, что вероятности для вышеозначенных помещений одинаковые 1/32, что, в итоге, в сумме не дает 1...
1
Just Do It!
 Аватар для XLAT
4188 / 2642 / 654
Регистрация: 23.09.2014
Сообщений: 8,839
Записей в блоге: 3
07.11.2019, 19:16
Цитата Сообщение от liv Посмотреть сообщение
Хм, кто-нибудь мне объяснит, чем отличаются помещения 13, 14 от 19, 20?
Code
1
2
  в 16 комнате только 1 дверь
а в 17 их 2
0
Эксперт CЭксперт С++
 Аватар для liv
5120 / 4573 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
07.11.2019, 19:17
Вероятности всех остальных помещений - один в один...
0
Just Do It!
 Аватар для XLAT
4188 / 2642 / 654
Регистрация: 23.09.2014
Сообщений: 8,839
Записей в блоге: 3
07.11.2019, 19:18
Цитата Сообщение от liv Посмотреть сообщение
как считать вероятность попадания в помещения?
вы заходите в комнату, а там 2 двери.
вероятность что вы пойдете в одну из них = 1/2
0
Эксперт CЭксперт С++
 Аватар для liv
5120 / 4573 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
07.11.2019, 19:18
XLAT, действительно Угу, немного не учел...
0
Just Do It!
 Аватар для XLAT
4188 / 2642 / 654
Регистрация: 23.09.2014
Сообщений: 8,839
Записей в блоге: 3
07.11.2019, 19:22
в комнате 0 находится 4 двери.
вероятность выбора любой 1/4

Добавлено через 3 минуты
Цитата Сообщение от ivan_proger Посмотреть сообщение
Если вероятность — дробное число
из задание.
смешно, однако, мне было.

ах, да, сто пудов на контрольном сайте будут все комнаты только с одной дверью.
надо бы поправить
0
Эксперт CЭксперт С++
 Аватар для liv
5120 / 4573 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
07.11.2019, 20:57
Цитата Сообщение от XLAT Посмотреть сообщение
все комнаты только с одной дверью
включая центр. Т.е. один выход в коридор, в котором комнаты с одной входной и одной выходной дверью

С вероятностью я разобрался. Сейчас подправлю

Добавлено через 1 час 0 минут
ivan_proger, XLAT, вот мое решение
C++
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
#include <fstream>
#include <iostream>
using namespace std;
 
struct node
{
    int     num;
    node*   parent;
    node*   child;
    node*   next;
};
 
struct room
{
    int     num;
    int     count;
    room*   next;
};
 
node* search(node* root, int in)
{
    node* child;
    node* temp;
    if (root->num == in)
        return root;
    else
    {
        child = root->child;
        if (child)
        {
            for (node* next = child; next; next = next->next)
            {
                temp = search(next, in);
                if ((unsigned int)temp > 1)
                    return temp;
            }
        }
        for(node* next=root->next; next; next=next->next)
        {
            temp = search(next, in);
            if ((unsigned int)temp > 1)
                return temp;
        }
        if (root->parent == nullptr)
            return nullptr;
        else
            return (node*)1;
    }
    return nullptr;
}
 
int insert(node* &root, int in, int out)
{
    node* branch;
    node* i;
    node* temp = new(node);
    temp->child = nullptr;
    temp->next = nullptr;
    if (!root)
    {
        temp->num = in;
        temp->parent = nullptr;
        root = temp;
        temp = new(node);
        root->child = temp;
        temp->child = nullptr;
        temp->next = nullptr;
        temp->parent = root;
        temp->num = out;
    }
    else 
    {
        branch = search(root, in);
        if (branch)
        {
            temp->num = out;
            temp->parent = branch;
            temp->next = nullptr;
            if (branch->child)
            {
                for (i = branch->child; i; branch = i, i = i->next);
                branch->next = temp;
            }
            else
            {
                branch->child = temp;
                temp->child = nullptr;
            }
        }
        else
            return 0;
    }
    return 1;
}
 
void CalcOneChild(node* current, room* &data, int count)
{
    node*   n;
    room*   r;
    room*   cr;
    int     cnt = 0;
    
 
    if (current->child)
    {
        for (node *n = current->child; n; n = n->next)
            cnt++;
        count *= cnt;
 
        for (n = current->child; n; n = n->next)
            CalcOneChild(n, data, count);
    }
    else
    {
        r = new room;
        r->count = count;
        r->next = nullptr;
        r->num = current->num;
        if (data == nullptr)
            data = r;
        else
        {
            for (cr = data; cr->next; cr = cr->next);
            cr->next = r;
        }
    }
}
 
void CalcRooms(node* root, room* &data)
{
    int count = 0;
    for (node *n = root->child; n; n = n->next)
        count++;
 
    for (node* current = root->child; current; current = current->next)
        CalcOneChild(current, data, count);
}
 
void Sort(room* data)
{
    if (data)
    {
        for (room* i = data; i->next; i = i->next)
        {
            for (room* j = i->next; j; j = j->next)
            {
                if (i->num > j->num)
                {
                    swap(i->count, j->count);
                    swap(i->num, j->num);
                }
            }
        }
    }
}
 
int main()
{
    ifstream    file;
    int         n, in, out;
    node*       root = nullptr;
    room*       data = nullptr;
 
    file.open("in.txt");
    file >> n;
    for (int i = 0; i < n; i++)
    {
        file >> in >> out;
        insert(root, in, out);
    }
    file.close();
 
    CalcRooms(root, data);
    
    Sort(data);
 
    for (room* r = data; r; r = r->next)
    {
        if (r->count == 1)
            cout << r->num << ": 1" << endl;
        else
            cout << r->num << ": 1/" << r->count << endl;
    }
}
Файлик in.txt
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
23
0 1
0 2
0 3
0 9
1 16
1 17
16 15
15 14
15 13
17 21
17 18
18 19
18 20
2 4
2 5
4 6
4 7
5 8
3 22
9 23
9 10
10 11
10 12
Добавлено через 6 минут
XLAT, интересно, ТС еще интересна эта задача?
А мне понравилась.

Добавлено через 8 минут
Забыл добавить реакцию на некорректность входных данных.
C++
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
int main()
{
    ifstream    file;
    int         n, in, out;
    node*       root = nullptr;
    room*       data = nullptr;
 
    file.open("in.txt");
    file >> n;
    for (int i = 0; i < n; i++)
    {
        file >> in >> out;
        if (!insert(root, in, out))
        {
            file.close();
            cout << "Incorrect data!" << endl;
            exit(1);
        }
    }
    file.close();
 
    CalcRooms(root, data);
    
    Sort(data);
 
    for (room* r = data; r; r = r->next)
    {
        if (r->count == 1)
            cout << r->num << ": 1" << endl;
        else
            cout << r->num << ": 1/" << r->count << endl;
    }
}
Добавлено через 1 минуту
Ну и не сделал освобождение памяти
Так и будет...
3
Just Do It!
 Аватар для XLAT
4188 / 2642 / 654
Регистрация: 23.09.2014
Сообщений: 8,839
Записей в блоге: 3
07.11.2019, 21:10
Цитата Сообщение от liv Посмотреть сообщение
XLAT, интересно, ТС еще интересна эта задача?
Цитата Сообщение от liv Посмотреть сообщение
А мне понравилась.
у него там все вопросы из таких задач
из 8 задач только один ответ, который он принял.
0
1 / 1 / 0
Регистрация: 14.07.2019
Сообщений: 43
08.11.2019, 15:48
куча ошибок компиляции.
0
Эксперт CЭксперт С++
 Аватар для liv
5120 / 4573 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
08.11.2019, 15:53
Arterwk, каких именно?

Добавлено через 2 минуты
В конце концов, переделайте под себя, кто не дает?
Я показал, как можно реализовать идею. У меня работает.
Дальше смотрите самостоятельно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.11.2019, 15:53
Помогаю со студенческими работами здесь

Лабиринт с++
Есть код. только мне не понятен алгоритм который работает в bool PathExists(Labyrinth&amp; lab, int y1, int x1, int y2, int x2) { и...

лабиринт
Коридорами лабиринта разрешается двигаться только в направлениях, указанных стрелками. Человек вошел в комнату A и, выбирая случайным...

Лабиринт C++
я написал код лабиринта на c++, с помощью чего можно найти кратчайший путь выхода из лабиринта? #include &lt;iostream&gt; #include...

Лабиринт
Вообщем у меня 2 проблемы: 1) Либирнт генерирует 2 раза 2) '8' ходит как хочит Поправте плз код #include &lt;iostream&gt; ...

Лабиринт
Народ помогите! есть задание: Лабиринт представляет собой квадрат, состоящий из NxN сегментов. Каждый из сегментов может быть либо...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru