[Logo] Форум DL
  [DL]  На главную страницу 
Индекс форума ->Учебный процесс ГГУ/СШ 27 ->Проектирование цифровых систем 1, 2, 3, 4, 5, 6, 7
Автор Сообщение
Михаил Долинский

Темы: 2073
Сообщений: 50016

Мой профиль


Ксения Бышик:

int __in __bits(8) a; 
int __in __bits(8) c; 
int __in __bits(16) x; 
int __in __bits(16) y; 
int __out __bits(16) res;

void main() { // Приведение переменных к необходимым типам 
i16 a16 = CBW(a); 
i16 c16 = CBW(c); 
i32 x32 = CWD(x); 
i32 y32 = CWD(y);

// Вычисление выражения для первой ветки: ((x+y)/c-x)*a, если x*y<0
i32 xy_mul = IMUL(x, y); // x * y
i16 xy_mul_16 = x32Tox16(xy_mul);

i32 x_y_sum = IMUL(x, y); // x + y
i16 x_y_sum_16 = x32Tox16(x_y_sum);
i16 x_y_div_c = IDIV(x_y_sum_16, c16); // (x + y) / c
i16 x_y_div_c_x = ISUB(x_y_div_c, x); // (x + y) / c - x
i32 x_y_div_c_x_a = IMUL(x_y_div_c_x, a16); // ((x + y) / c - x) * a
i16 res1 = x32Tox16(x_y_div_c_x_a);

// Вычисление выражения для второй ветки: ((a-x*y)*c)/y+x*y, если x*y>=0
i32 a_xy_mul = IMUL(a16, xy_mul_16); // a * x * y
i16 a_xy_mul_16 = x32Tox16(a_xy_mul);
i16 a_xy_mul_c = IMUL(a_xy_mul_16, c16); // (a - x * y) * c
i16 a_xy_mul_c_y = IDIV(a_xy_mul_c, y); // ((a - x * y) * c) / y
i16 res2 = SUM(a_xy_mul_c_y, xy_mul_16);

// Условие для выбора выражения
i16 zero = CONST(0);
ICMPResult(xy_mul_16, zero);
u1 cond = ILT; // x * y < 0

// Выбор результата на основе условия
res = MSb16x2(res2, res1, cond);

}
Отправила на DLAI ваш препромпт для решения 28-й задачи. Получила код, предоставленный выше, и он не прошел. [TEST1]: Ошибка компиляции (mpc): Ошибка синтаксиса (строка 8): i16 a16 = CBW(a); .  


Так а Вы проверяли, с include тестирование работает?
Если да, напишите в препромпте, чтобы ИИ прописывал эту строку.
Сергей Емельянов

Темы: 0
Сообщений: 21

Мой профиль
В файл внесены изменения: теперь ИИ прописывает строку "include <hlccad.mpc>". Но тестирование с include не работает из-за ошибки компиляции. Нужно в исходный файл, как и раньше, копировать всю библиотеку, только тогда программа проходит тесты.
Михаил Долинский

Темы: 2073
Сообщений: 50016

Мой профиль
Сделайте отдельное сообщение в форуме или текст на гугл-доке
с содержимым файла hlccad.mpc

Сергей Емельянов

Темы: 0
Сообщений: 21

Мой профиль
hlccad.mpc
#define i8  int __bits(8)
#define i16 int __bits(16)
#define i32 int __bits(32)

#define u1  unsigned __bits(1)
#define u3  unsigned __bits(3)
#define u4  unsigned __bits(4)
#define u8  unsigned __bits(8)
#define u16 unsigned __bits(16)
#define u32 unsigned __bits(32)
#define u64 unsigned __bits(64)

i16 SIGN     (i16 A)             { return (A > 0) ? 1 : (A == 0) ? 0 : -1; }
i16 ABS      (i16 A)             { return (A > 0) ? A : (A * (-1)); }
u64 FACT     (u4 A)              { u64 RES = 1; while (A > 1) RES *= A--; return RES; }

u1  NOT      (u1  A)             { return ~A; }
u1  OR2      (u1  A, u1  B)      { return A | B; }
u1  XOR2     (u1  A, u1  B)      { return A ^ B; }
u1  AND2     (u1  A, u1  B)      { return A & B; }

u8  DC       (u1  CS, u3  X)     { u8 d = 1; return (CS == 0) ? 0 : d << X; }
u4  CD       (u8  X)             { if (X == 0) return 0; u4 i = 0; while (!(X & 1)) { i++; X = X >> 1; } return (i << 1) + 1; }
u1  MS       (u8  X, u3  A)      { return ((X >> A) & 1); }

i16 CBW      (i8  A) {return A;}
i32 CWD      (i16 A) {return A;}
i16 x32Tox16 (i32 A) {return A;}
i8  x16Tox8  (i16 A) {return A;}
i16 CONST    (i16 A) {return A;}
u4 CONST4    (u4 A) {return A;}

i16 SUM      (i16 A, i16 B) {i16 C; C = A + B; return C;}
i16 ISUB     (i16 A, i16 B) {i16 C; C = A - B; return C;}
i32 IMUL     (i16 A, i16 B) {i32 C; C = A * B; return C;}
i16 IDIV     (i32 A, i32 B) {i16 C; C = A / B; return C;}

u16 MSb16x2(u16 Zero, u16 One, u1 A) {return (A) ? One : Zero;}
u3 ICMP(i32 A, i32 B) {return (A > B) ? 4 : (A == B) ? 2 : 1;}
u1 IGT;
u1 IEQ;
u1 ILT;
void ICMPResult(i32 A, i32 B) {u3 C = ICMP(A,B); IGT = C == 4; IEQ = C == 2; ILT = C == 1;}

Вадим Зинович

Темы: 0
Сообщений: 35

Мой профиль
Задачи, которые прошли с использованием DL AI за 1 запрос:
Задача №1
Задача №2
Задача №3
Задача №4
Задача №5
Задача №6
Задача №7
Задача №9
Задача №11
Задача №16
Задача №19
Задача №20
Задача №25
Задача №26
Задача №28

Задачи, которые прошли с нескольких запросов с использованием DL AI:
Задача №8 - с четвёртой отсылки. DL_Ai делает ошибки в создании сложного условия (>=). Так же иногда встречаются ошибки в размерностях переменных. Ещё появляются вложенные вызовы функций.
Задача №10 - со второй отсылки. Ошибка при написании условия >=, а также приведение типов на одной строке с делением.
Задача №12 - прошла со второй отсылки у ai, чтобы исправил условие, т.к. он изначально проверял только X*Y>0, а нужно X*Y>=0. Также в некоторых местах ai сделал вложение функций.
Задача №13 - прошла со второй отсылки, ошибка с построением условия >=, он пишет проверку для X > 0 и Y > 0, а необходимое условие - X * Y >= 0.
Задача №14 - с пятой отсылки. DL_Ai неправильно понял условие второй ветки. И долго ничего не исправлял. Так же ошибка в проверке условия. Снова встречаются некорректные размерности переменных.
Задача №15 - прошла со второй отсылки после исправления условия, ai добавил функцию NOT в условии, которая там не нужна была. Снова сделал вложения и не те размерности в некоторых местах.
Задача №17 - со второй отсылки. Снова неправильное условие для проверки. Код содержит много вложенных вызовов и ошибок в размерностях.
Задача №18 - прошла со второй отсылки после исправления условия(>=), снова ошибки в размерностях и вложении.
Задача №21 - прошла со второй после исправления функции CONST, ai изменил название библиотечной функции на CONST4 при объявлении некоторых констант.
Задача №22 - прошла со второй отсылки, ошибка в названии переменной и неправильное использование функций (функция не возвращает такую размерность, какую DL-AI ожидает), неправильное условие <=
Задача №23 - с третьей отсылки. Из-за ошибочного форматирования в DL_Ai в комментарии попали строки объявления переменных, что вызвало ошибку компиляции. И программа с include так же вызвала ошибку компиляции, из-за чего нужно вставлять всю библиотеку в исходный файл. Код всё так же содержит некорректные размерности в аргументах функций.
Задача №24 - с четвертой отсылки. ИИ долго не мог исправить ошибки, связанные с условием выбора ветки.
Задача №27 - с пятой отсылки. Задача содержит большие степени у переменных. ИИ часто неправильно расставлял размерности, делал много вложенностей, что не позволяло правильно решить задачу.
Задача №29 - со второй отсылки. ИИ неправильно понял условие первой ветки. После указания на ошибку, код был исправлен.
Задача №30 - с пятой отсылки. ИИ долго не мог решить задачу, пример которой написан в файле.
Максим Куделько

Темы: 0
Сообщений: 17

Мой профиль
Таблица с результатами запросов всех задач в разные ai:
https://docs.google.com/spreadsheets/d/1EqP6qVUh6Q2vI6NfCeswvwEb1qFAWnhRTKvJFR83kUQ/edit?usp=sharing
 
Индекс форума ->Учебный процесс ГГУ/СШ 27 ->Проектирование цифровых систем 1, 2, 3, 4, 5, 6, 7
Time:0,062