Форум программистов, компьютерный форум, киберфорум
QBasic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.96/54: Рейтинг темы: голосов - 54, средняя оценка - 4.96
Модератор
1245 / 676 / 292
Регистрация: 10.11.2019
Сообщений: 1,406

101 Basic Computer Games

25.05.2024, 16:17. Показов 18485. Ответов 273
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Недавно я натолкнулся в сети на книгу, о которой никогда не слышал.
Книга называется "101 Basic Computer Games". Она была выпущена DEC в 1975 году
и содержит тексты игр с аннотациями. Игры написаны на BASIC, на компьютере PDP-11.

Очень интересная коллекция для начинающих программистов, и не только.

Коллекция игр с описаниями и переводом на другие языки программирования находится по адресу:

https://github.com/coding-horr... uter-games
4
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.05.2024, 16:17
Ответы с готовыми решениями:

Создайте график функций x^3 на отрезке [-101; 101]. В качестве значений используйте массив x размером в 101 элемент
Создайте график функций x^3 на отрезке . В качестве значений используйте массив x размером в 101 элемент. Для создания массива значений...

Coodo Games & Datcroft Games Java Developer (Самара)
В Самарский офис требуется талантливый разработчик. 
О нас: - Мы разрабатываем только лучшие игры. Наши запущенные продукты:...

Coodo Games & Datcroft Games AS3.0 Developer (Самара)
В Самарский офис требуется талантливый разработчик. 
О нас: - Мы разрабатываем только лучшие игры. Наши запущенные продукты: Fragoria,...

273
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
29.06.2024, 07:18
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Quiet Snow Посмотреть сообщение
А если надо портировать прогу в ограниченные условия, под микроконтроллер или под тот же DOS?
Я чёт сомневаюсь что GUI можно портировать под микроконтроллёры. Или какой‐нибудь сервер под DOS.
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Ну да, если оптимизирующий, а если нет?
А зачем нужны неоптимизированные программы, которые медленно работают? Такты вхолостую гонять? Или чтобы говорили «хотите быструю программу — пишите на си»?
Ну разве что отладочная версия, где оптимизация только запутывает отладчик. А релизные версии они все должны быть компилированы с включённой оптимизацией.
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Т.е. это не будешь считать bloatware?
Зависит от задачи. Для игр, видеомонтажа, аудиостудии, 3D моделирования, фотошопа, нейронных сетей такие цифры оправданы.
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Кстати ты пробовал заводить 2 гигабайта?
Можно и 4 гигабайта. В любом случае максимум — это максимальное значение типа DWORD, которое указано в формате файла PE. 4 гигабайта.
Миниатюры
101 Basic Computer Games  
0
1404 / 862 / 93
Регистрация: 08.02.2017
Сообщений: 3,676
Записей в блоге: 2
29.06.2024, 09:48
Квиксорт линейный надо кому? Для реализации рекурсии вместо стека используется массив структур. Скорость у меня на vba получилась примерно эквивалентная рекурсивному варианту, но есть защита от "переполнения стека". Для типизации достаточно задать тип для переменной Field (массив), Ref и Temp
Кликните здесь для просмотра всего текста
Visual Basic
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
Private Type QSortData
    P1 As Long
    P2 As Long
    Lb As Long
    Ub As Long
    Mrk As Byte
End Type
 
Sub testQuickSort2()
    Dim i&, Arr1&(), Arr2&(), t0!, t1!, t2!
    ReDim Arr1(500000)
    Randomize
    For i = 0 To UBound(Arr1)
        Arr1(i) = Rnd * 10000
    Next
    
    Arr2 = Arr1
    t0 = Timer
    QuickSort2 Arr2
    t1 = Timer - t0
    
    Arr2 = Arr1
    t0 = Timer
    QuickSort Arr2, LBound(Arr2), UBound(Arr2)
    t2 = Timer - t0
    
    Debug.Print t1, t2
End Sub
 
Private Sub QuickSort2(Field)
    Const qBgn& = 255       'начальный размер стека
    Const qStp& = 256       'шаг увеличения стека
    Dim Ref, Tmp
    Dim lv&, lv2&, qUb&
    Dim QDt() As QSortData  'стек псевдо-рекурсии
    ReDim QDt(qBgn): qUb = qBgn
    
    QDt(lv).Lb = LBound(Field): QDt(lv).Ub = UBound(Field)
 
1   With QDt(lv)
      .P1 = .Lb: .P2 = .Ub
      Ref = Field((.P1 + .P2) / 2)
      
      Do
          Do While Field(.P1) < Ref
              .P1 = .P1 + 1
          Loop
          Do While Field(.P2) > Ref
              .P2 = .P2 - 1
          Loop
          If .P1 <= .P2 Then
              Tmp = Field(.P1)
              Field(.P1) = Field(.P2)
              Field(.P2) = Tmp
              .P1 = .P1 + 1
              .P2 = .P2 - 1
          End If
      Loop Until .P1 > .P2
    End With
    
    If QDt(lv).Lb < QDt(lv).P2 Then
        GoSub NxtLvl
'        lv2 = lv + 1
        QDt(lv2).Lb = QDt(lv).Lb: QDt(lv2).Ub = QDt(lv).P2
        QDt(lv).Mrk = 2
        lv = lv2
        GoTo 1
    End If
 
2   If QDt(lv).P1 < QDt(lv).Ub Then
        GoSub NxtLvl
'        lv2 = lv + 1
        QDt(lv2).Lb = QDt(lv).P1: QDt(lv2).Ub = QDt(lv).Ub
        QDt(lv).Mrk = 3
        lv = lv2
        GoTo 1
    End If
    
3   If lv Then
        lv = lv - 1
        On QDt(lv).Mrk GoTo 1, 2, 3
    End If
Exit Sub
NxtLvl: 'увеличиваем размер "стека" если его не хватает для создания следуюющего уровня рекурсии
    lv2 = lv + 1
    If qUb < lv2 Then
        qUb = qUb + qStp
        ReDim Preserve QDt(qUb)
    End If
Return
End Sub
'https://stackoverflow.com/questions/152319/vba-array-sort-function
Private Sub QuickSort(Field, ByVal Lb As Long, ByVal Ub As Long)
    Dim P1 As Long, P2 As Long
    Dim Ref, Tmp
    
    P1 = Lb: P2 = Ub
    Ref = Field((P1 + P2) / 2)
    Do
        Do While Field(P1) < Ref
            P1 = P1 + 1
        Loop
        Do While Field(P2) > Ref
            P2 = P2 - 1
        Loop
        If P1 <= P2 Then
            Tmp = Field(P1)
            Field(P1) = Field(P2)
            Field(P2) = Tmp
            P1 = P1 + 1
            P2 = P2 - 1
        End If
    Loop Until P1 > P2
    If Lb < P2 Then QuickSort Field, Lb, P2
    If P1 < Ub Then QuickSort Field, P1, Ub
End Sub

Результат теста
Code
1
 1,484375      1,46875
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
29.06.2024, 10:41
Цитата Сообщение от Замабувараев Посмотреть сообщение
А зачем нужны неоптимизированные программы, которые медленно работают? Такты вхолостую гонять?
А почему не учитывается то, что человек может уметь писать быстрые программы без оптимизирующих компиляторов?

Цитата Сообщение от Замабувараев Посмотреть сообщение
Или чтобы говорили «хотите быструю программу — пишите на си»?
Си это была тупо мода и понты и ты это знаешь, что всё зависит от программиста, а не от си.
Сейчас новая мода - пайтон, но си никуда не делся и по части оптимизации ему отдают предпочтение,
как и асму, на котором пишут вставки дельфисты, сишники и в общем то мы на бейсиках.
Через 10 лет будет ещё какое-нибудь новое говно. Это т.н. "мейнстрим" не более.
Чтобы привлечь аудиторию, т.к. чем больше комьюнити, тем больше разработок и плохих и хороших.

Цитата Сообщение от Замабувараев Посмотреть сообщение
Я чёт сомневаюсь что GUI можно портировать под микроконтроллёры. Или какой‐нибудь сервер под DOS.
GUI под DOS можно сделать, был даже сайт где разные извращенцы написали на Q\QuickBasic под сотню GUёв.
Там конечно почти всё - дрисня, но были интересные штуки. Вроде ссылку уже приводил.

Цитата Сообщение от Замабувараев Посмотреть сообщение
Для игр, видеомонтажа, аудиостудии, 3D моделирования, фотошопа, нейронных сетей такие цифры оправданы.
Это разные классы софта с разными сценариями.
Ну игра может сожрать 8-16 гигов, но нафига ей столько стека? В крайнем случае завести мегабайт 50.
DAW-у стек не нужен, насчёт монтажки не знаю, фотошопу в его базисе - точно стек не нужен в таких объёмах,
нейронки - не знаю, не писал и не обдумывал.
Монтажка это больше не совсем RT(там используется уменьшенный кадр предпросмотра), а вот игры и DAW -это RT
и там как минимум не подойдёт подход, про который ты часто говоришь т.е. заводить и уничтожать постоянно
память т.к. это будет давать фризы и микрофризы от которых наоборот стараются избавиться и закешировать
в память всё что только можно, лишь бы разгрузить проц и фреймтайм сделать меньше.

Цитата Сообщение от testuser2 Посмотреть сообщение
Квиксорт линейный надо кому?
Это твой код? Первый результат - нерекурсивный?
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
29.06.2024, 10:56
Цитата Сообщение от Quiet Snow Посмотреть сообщение
А почему не учитывается то, что человек может уметь писать быстрые программы без оптимизирующих компиляторов?
Потому что только оптимизирующий компилятор умеет выбрасывать прологи и эпилоги функций, встраивать функции, раскидывать переменные по регистрам, знает особенности архитектуры процессора. Очень много опций оптимизации.
0
1404 / 862 / 93
Регистрация: 08.02.2017
Сообщений: 3,676
Записей в блоге: 2
29.06.2024, 11:23
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Это твой код? Первый результат - нерекурсивный?
1)Да мой, это просто переделка рекурсивного варианта, как бы с имитацией повторных вызовов и заполнением стека аргументов.
2)Да, без использования повторных вызовов процедуры.
1
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
29.06.2024, 11:23
Цитата Сообщение от Замабувараев Посмотреть сообщение
Ну во‐первых, память под стэк только резервируется, а выделяется по требованию.
И в каком это языке так?
Цитата Сообщение от Замабувараев Посмотреть сообщение
ОС не имеет права портить данные.
А речь не об ОС и аппаратном стеке адресуемом esp. Опять речь идет об ЯП, который по идее должен освобождать нас от особенностей машины.
Цитата Сообщение от Замабувараев Посмотреть сообщение
Так это уже придумано: и называется Sub
То что вы привели это процедура. Это не тоже самое что просто блок кода в виде состояния (шаг алгоритма). Не путать с шагами инструкций языка.
Цитата Сообщение от locm Посмотреть сообщение
При вашем методе они тоже будут.
Они везде будут. Метод позволяет доказывать правильность алгоритмов. Это резко снизит количество ошибок.
Цитата Сообщение от locm Посмотреть сообщение
Почему присваивание должно приводить к переходу?
Потому что должна существовать переменная, которая отслеживает (запоминает) текущее состояние. Дейкстра кстати к этому пришел в конце концов, но было уже поздно. Он писал о необходимости иметь отдельную переменную, которая отслеживала бы отдельные шаги алгоритма. Не я это придумал. Что это дает? Много чего.
1. Попадая в новое состояние (блок кода логически являющийся шагом алгоритма), текущий блок может "вспомнить" предыдущее состояние, если завести еще одну переменную. Отпадает нужда во флагах.
2. процедура реализующая алгоритм может принимать состояние как аргумент и переходить сразу в конкретное состояние без необходимости в переключателях. Код становится более лаконичным и быстрым.
3. возможно протоколирование работы алгоритма в целях отладки и верификации правильности его работы, даже в ран-тайм.
4. благодаря переменной возможно осуществлять неявный переход, что я и показал на примере. То есть, полностью отпадает нужда в безусловных переходах. А в конце блока-состояния по умолчанию переход в то состояние, в котором находиться переменная.
5. изолирует программиста от особенностей архитектуры, так как он оперирует понятием переменной, а не переходом. при этом всегда может "потрогать" состояние ведь оно всегда зашито в переменной.
Цитата Сообщение от locm Посмотреть сообщение
Это точно не бейсик!
Это прямое развитие бейсика.
0
Эксперт по электронике
7001 / 3317 / 341
Регистрация: 28.10.2011
Сообщений: 13,036
Записей в блоге: 7
29.06.2024, 11:23
Цитата Сообщение от Замабувараев Посмотреть сообщение
Я чёт сомневаюсь что GUI можно портировать под микроконтроллёры.
Можно https://www.youtube.com/watch?v=c6Muj213PNs
Но это сложнее чем для компов из-за ограниченности ресурсов и отсутствия ОС.
1
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
29.06.2024, 11:30
Цитата Сообщение от Замабувараев Посмотреть сообщение
Потому что только оптимизирующий компилятор умеет выбрасывать прологи и эпилоги функций
Почему? Есть же опции Naked для FB.
https://documentation.help/Fre... Naked.html

Naked allows the programmer to write procedures without the compiler generating any prolog/epilog code.
Цитата Сообщение от Замабувараев Посмотреть сообщение
раскидывать переменные по регистрам
Это и человек прекрасно делает.

По особенностям архитектуры - соглашусь, не каждый имеет богатый опыт оптимизации для разных кешей
и пайплайнов.
В принципе из всего озвученного только особенности архитектуры, разворот циклов и не упомянутое
выравнивание даёт самый очевидный видимый эффект, а дальше влияет уже работа человека с алгоритмом.
Ну ещё всякие математические оптимизации, хотя это уже очень спорная вещь и на это я бы точно не стал
полагаться.
0
Модератор
10061 / 3906 / 885
Регистрация: 22.02.2013
Сообщений: 5,856
Записей в блоге: 79
29.06.2024, 11:32
Есть ещё LVGL графическая либа с виджетами для мк.
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
29.06.2024, 11:57
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Дейкстра кстати к этому пришел в конце концов, но было уже поздно. Он писал о необходимости иметь отдельную переменную, которая отслеживала бы отдельные шаги алгоритма. Не я это придумал. Что это дает? Много чего.
Этот упырь много чего писал и "пистел"... Поздно было когда товарищ "профессор" не осилил
авто реструктуризацию, потому оставалось только подставить бедолагу Вирта и "трепаться" дальше
на особо доверчивые ухи...

Цитата Сообщение от testuser2 Посмотреть сообщение
1)Да мой, это просто переделка рекурсивного варианта, как бы с имитацией повторных вызовов и заполнением стека аргументов.
За 1 сутки сваял?

Цитата Сообщение от CoderHuligan Посмотреть сообщение
И в каком это языке так?
Замабувараев про виртуальную память винды и других ОС где этот механизм используется.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
процедура реализующая алгоритм может принимать состояние как аргумент и переходить сразу в конкретное состояние без необходимости в переключателях.
Если это как-то вообще можно понять без примеров и подробностей - то это очень трудно понять,
ты уже должен был сделать вывод что это не для "бегинерс пурпос".
0
1404 / 862 / 93
Регистрация: 08.02.2017
Сообщений: 3,676
Записей в блоге: 2
29.06.2024, 12:04
Цитата Сообщение от Quiet Snow Посмотреть сообщение
За 1 сутки сваял?
да млн за секунду! ))
0
Эксперт по электронике
7001 / 3317 / 341
Регистрация: 28.10.2011
Сообщений: 13,036
Записей в блоге: 7
29.06.2024, 12:26
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Метод позволяет доказывать правильность алгоритмов. Это резко снизит количество ошибок.
Вы сами поняли что написали?

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Это и человек прекрасно делает.
На асме?
Его проблема в том что он сильно платформозависимый. Даже порт с x86 на x64 требует немалой корректировки кода, не говоря про порт на ARM где переписать нужно все!
ARM сейчас много где используется в том числе в ноутбуках. https://lifehacker.ru/arm-noutbuki/
https://www.ixbt.com/news/2024... gon-x.html
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
29.06.2024, 12:27
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Замабувараев про виртуальную память винды и других ОС где этот механизм используется.
Про файл подкачки, что ли? А какое это отношение имеет к языкам программирования? только сильно опосредованое.
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Если это как-то вообще можно понять без примеров и подробностей - то это очень трудно понять,
Я понимаю, что трудно. Мозг привык мыслить другими категориями. Вернее так нас приучили. Хотя концепция проста как паренная репа. Примеры нужны. Но не для данной темы. В блоге у себя я все это опишу, как смогу.
0
1404 / 862 / 93
Регистрация: 08.02.2017
Сообщений: 3,676
Записей в блоге: 2
29.06.2024, 12:45
Цитата Сообщение от CoderHuligan Посмотреть сообщение
2. процедура реализующая алгоритм может принимать состояние как аргумент и переходить сразу в конкретное состояние без необходимости в переключателях. Код становится более лаконичным и быстрым.
Вот да, это была бы классная вещь, как бы переход на метку, но если бы метку можно было задавать значением переменной. Goto var. В VB есть такая конструкция (может быть в QB тоже есть х.з.) On var Goto метка1, метка2, метка3. Это конечно не то, но работает по быстрее чем Select и If
1
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
29.06.2024, 13:22
Цитата Сообщение от locm Посмотреть сообщение
Вы сами поняли что написали?
Абсолютно. Вот как вы это доказываете я просто не представляю. Хотя кто сейчас этим заморачивается..
Цитата Сообщение от testuser2 Посмотреть сообщение
On var Goto метка1, метка2, метка3. Это конечно не то, но работает по быстрее чем Select и If
Совершенно верно. Это переход по адресам меток. В фортране был вычисляемый goto и арифметический if - классные штуки. А GCC позволяет брать адреса на метки. Но это всё довольно низкоуровневые фичи.
1
Эксперт по электронике
7001 / 3317 / 341
Регистрация: 28.10.2011
Сообщений: 13,036
Записей в блоге: 7
29.06.2024, 13:36
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Абсолютно.
А другие не поняли.
То есть вы остались непонятым! Возможно ваши идеи и гениальные, но пока что это совсем не понятно.
0
1404 / 862 / 93
Регистрация: 08.02.2017
Сообщений: 3,676
Записей в блоге: 2
29.06.2024, 14:03
Чуть оптимизировал
Кликните здесь для просмотра всего текста
Visual Basic
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
Private Sub QuickSort2(Field&())
    Const qBgn& = 255       'начальный размер стека
    Const qStp& = 256       'шаг увеличения стека
    Dim Ref&, Tmp&
    Dim lv&, lv2&, qUb&
    Dim QDt() As QSortData  'стек псевдо-рекурсии
    ReDim QDt(qBgn): qUb = qBgn
    
    QDt(lv).Lb = LBound(Field): QDt(lv).Ub = UBound(Field)
 
1   With QDt(lv)
      .P1 = .Lb: .P2 = .Ub
      Ref = Field((.P1 + .P2) / 2)
      
      Do
          Do While Field(.P1) < Ref
              .P1 = .P1 + 1
          Loop
          Do While Field(.P2) > Ref
              .P2 = .P2 - 1
          Loop
          If .P1 <= .P2 Then
              Tmp = Field(.P1)
              Field(.P1) = Field(.P2)
              Field(.P2) = Tmp
              .P1 = .P1 + 1
              .P2 = .P2 - 1
          End If
      Loop Until .P1 > .P2
    
      If .Lb < .P2 Then
          GoSub NxtLvl ' lv2 = lv + 1
          QDt(lv2).Lb = .Lb: QDt(lv2).Ub = .P2
          .Mrk = 2
          lv = lv2
          GoTo 1
      End If
    End With
    
2   With QDt(lv)
      If .P1 < .Ub Then
          GoSub NxtLvl ' lv2 = lv + 1
          QDt(lv2).Lb = .P1: QDt(lv2).Ub = .Ub
          .Mrk = 3
          lv = lv2
          GoTo 1
      End If
    End With
    
3   If lv Then
        lv = lv - 1
        On QDt(lv).Mrk GoTo 1, 2, 3
    End If
    
Exit Sub
NxtLvl: 'увеличиваем размер стека если его не хватает для создания следуюющего уровня рекурсии
    lv2 = lv + 1
    If qUb < lv2 Then
        qUb = qUb + qStp
        ReDim Preserve QDt(qUb)
    End If
Return
End Sub

Code
1
 0,578125      1,492188
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
29.06.2024, 14:07
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Мозг привык мыслить другими категориями.
Это не означает, что что-то новое лучше и никогда не означало.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Примеры нужны. Но не для данной темы. В блоге у себя я все это опишу, как смогу.
Нужны не примеры, а презентация в динамике того что это за дичь и в чём её преимущества.
Словестно у тебя не получается доносить, рисуй гифки, раз это такая сложная штука.

Цитата Сообщение от locm Посмотреть сообщение
Даже порт с x86 на x64 требует немалой корректировки кода
Ну так а как обычно делается, пишется всё на ВУ. Дальше смотрим где плохо, те куски и
оптимизируются, если компилятор обосрался. На самом деле компиль нормально не может организовать
код с SIMD, это по-любому приходится руками делать.

Цитата Сообщение от testuser2 Посмотреть сообщение
да млн за секунду! ))
Ну так написал же:

Цитата Сообщение от testuser2 Посмотреть сообщение
Я квик-сорт пробовал переделать в линейку когда-то, не получилось
"Когда-то" это значит не сейчас, а это значит что переделывал после этого поста. Или не?
0
1404 / 862 / 93
Регистрация: 08.02.2017
Сообщений: 3,676
Записей в блоге: 2
29.06.2024, 14:32
Цитата Сообщение от Quiet Snow Посмотреть сообщение
"Когда-то" это значит не сейчас, а это значит что переделывал после этого поста. Или не?
Ну конечно, до этого я думал сделать как-то проще, но по факту я понял что проще именно имитировать работу стека. А тут как раз тема подвернулась про линейное программирование, повод проверить и попутно выработать концепцию. QSort конечно это не самый наверное сложный случай, но дает как бы в принципе понимание, что в первую очередь предусматривать при переборке рекурсии в линию. На самом деле, думаю, проще и лаконичнее сначала какой-то алгоритм писать рекурсией, а потом уже при необходимости можно что-то переделать в линейку.

Добавлено через 9 минут
Цитата Сообщение от testuser2 Посмотреть сообщение
проще именно имитировать работу стека.
Притом не только стека аргументов функции, но и ее внутренних переменных.
0
Модератор
10061 / 3906 / 885
Регистрация: 22.02.2013
Сообщений: 5,856
Записей в блоге: 79
29.06.2024, 14:59
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Совершенно верно. Это переход по адресам меток. В фортране был вычисляемый goto и арифметический if - классные штуки. А GCC позволяет брать адреса на метки. Но это всё довольно низкоуровневые фичи.
Так и работает Select Case (switch в C).
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.06.2024, 14:59

Coodo Games & Datcroft Games 3d Artist (Самара)
В Самарский офис требуется талантливый разработчик. 
О нас: - Мы разрабатываем только лучшие игры. Наши запущенные продукты:...

Coodo Games & Datcroft Games Lead Java Developer / Team Lead
Для решения задач, связанных с разработкой серверной части казино игр, нам в команду требуется сильный Java developer. Помимо технических...

Выполнить следующие операции в двоичной системе счисления: 10101,10101+1001,0011 101110,101-101,11 1011*111 1010101
Прямой, обратный и дополнительный коды двоичных чисел, их использование в двоичной арифметике. Выполнить с использованием кодов двоичных...

Даны действительные числа x1,…,x101, y1…,y101. Получить действительные x'1,…,x'101, y'1,…,y'101
Написать код в Free Pascal. Помогите, пожалуйста! Даны действительные числа x1,…,x101, y1…,y101. Получить действительные x'1,…,x'101,...

Bsod - *50,*3B, *101, *101
Доброго времени суток. Началось все после того как снял 2ю GTX 550 Ti(SLI) и немного разогнал оставшуюся(GPU c 900 до 1000, память с...


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

Или воспользуйтесь поиском по форуму:
100
Ответ Создать тему
Новые блоги и статьи
Эксперимент с картинкой-обложкой на CodinGame
Adler 10.07.2026
Решил на днях провести эксперимент. У меня есть аккаунт на CodinGame, ТОП-3 по РФ среди 2200 участников (в разделе соревнования по программированию ИИ-ботов). Там есть обложка, куда можно влепить. . .
После бана на Пикабу не работает авторизация аккаунта с Яндекса.
Hrethgir 09.07.2026
В частности https:/ / auto. ru/ logbook/ zapret-na-vozhdenie-posle-65-let_1cf28789-07b4-4c75-a2f7-4cd4edf9deeb тут хотел оставить комментарий такой Зрите в корень - монополизация на разработку программ. . .
GitDOS: Когда я решил скрестить MS-DOS, GitHub и Claude
MaGz GoLd 08.07.2026
Привет, Киберфорум! Хочу поделиться своим проектом, который, надеюсь, вас заинтересует. GitDOS — это веб-приложение, которое позволяет запускать DOS в браузере с тремя крутыми фичами: диски живут в. . .
Учебный мини "цифровой двойник" = (Сервер = Java + Flask_питон )+(3D = Гугловскаая 4T nvideo + google colab) +( WMS = Odoo на Docker)
anaschu 07.07.2026
Увидел в требованиях к вакансии создателя имитационных моделей связку (REst + Api + WMS + Anylogic + питон + 3D Nvideo), и решил посмотреть, что это такое. Из этого всего я работал более менее. . .
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал. Оно само - говорит. Кто слышит тот слышит.
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru