Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.11.2022, 20:45   #1
N320X
Новичок
Джуниор
 
Регистрация: 24.10.2022
Сообщений: 6
По умолчанию Assembler задача

Определить минимальное количество первых букв, по которым можно
различать слова из заданного набора ( слова разделяются запятыми).
N320X вне форума Ответить с цитированием
Старый 13.11.2022, 23:55   #2
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Уточните. Если слова и так различаются запятыми, тогда причем тут первые буквы?

Подозреваю, что вам нужно создать set of Char для букв и во всех словах получить первую букву, занося их в set. После посчитать количество установленных бит в set.
macomics вне форума Ответить с цитированием
Старый 14.11.2022, 09:53   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

арбуз, дыня, яблоко // для идентификации достаточно одной буквы (а..., д..., я... )
овца, конь, корова // потребуется три буквы (..., кон..., кор... )

Код:
var list: TStringList;
Код:
result:=0;
list.text:='...';
for j:=1 to minlen do begin
  find:=false;
  for jj:=0 to list.count-1 do begin
    r:=copy(list.string[jj], 1, j);
    for jjj:=jj+1 to list.count-1 do begin
      find:=find or ( copy(list.string[jjj], 1, j) =r );
    end;
    if find then break;
  end;
  if not find then result:=j;
  if result>0 then break;
end;
Код:
var x: TStringList;
Код:
for j:=1 to minlen do begin
  x.clear;
  find:=false;
  for jj:=0 to list.count-1 do begin
   r:=copy(list.string[jj], 1, j);
   find:=find or ( x.indexof(r)>=0  );
   if not find then x.add(r) else break;
  end;
  if not find then result:=j; 
  if result>0 then break;
end;
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 14.11.2022, 15:40   #4
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

evg_m, точно. Сонным уже слова не читались.

Код:
words db 'абракадабра,арбуз,абрикос,апрель,апельсин,апрельский',0
...
    mov rbp, rsp
    lea rdi, [words]
    or ecx, -1
    xor eax, eax
    push rdi
    repne scas byte [rdi]
    lea rcx, [rdi - 1]
    pop rdi
    mov al, ','
    sub rcx, rdi

@@:
    push rdi
    repne scas byte [rdi]
    jz @b
    mov r9, rsp
    push -8
    xor edx, edx
    pop r14
    push rdi

cycl:
    lea rax, [r14 - 8]

@@:
    cmp rax, r9
    jg @f
    mov rsi, [rbp + rax]
    mov rdi, [rbp + r14]
    mov r15, [rbp + r14 - 8]
    mov rcx, [rbp + rax - 8]
    sub r15, rdi
    sub rcx, rsi
    sub r15, 1
    sub rcx, 1
    cmp rcx, r15
    cmovg rcx, r15
    repe cmps byte [rsi], [rdi]
    jz @f
    sub rsi, 1
    sub rsi, [rbp + rax]
    sub rax, 8
    cmp rdx, rsi
    cmovl rdx, rsi
    jmp @b

@@:
    sub r14, 8
    cmp r14, r9
    jl cycl
    mov rsp, rbp
    mov rax, rdx
Ответ в rax. Чуть более топорно, но должно работать правильно. Хотя подозреваю, что есть опечатки. FASM v. 1.73.30 LONG 64-bit
macomics вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Assembler задача . TunelLord Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 13.06.2016 15:46
задача по assembler Tolya92 Помощь студентам 2 21.02.2013 08:39
Assembler задача Johny_001 Помощь студентам 1 14.01.2013 09:14
Задача на Assembler Koldun99 Помощь студентам 0 11.11.2012 16:06
Задача по Assembler Vanya-tim Помощь студентам 0 29.05.2011 12:58