Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 12.07.2009, 18:14
DungeonLords DungeonLords вне форума
Активный
 
Регистрация: 21.07.2008
Сообщения: 257
Репутация: 14
По умолчанию Подбор слов, букв.

Дали такое задание, помогите пожалуйста! Человек вводит последовательность английских букв, например Samsung19, а компьютер отгадывает эти числа.

Разрешены большие буквы, маленькие буквы и цифры.

Заранее благодарен!

P.S. Чёрт бы побрал этого препода.
__________________
Делаем'c разные игры. Искать на glscene.ru
Ответить с цитированием
  #2  
Старый 12.07.2009, 18:59
Аватар для AllMaNi
AllMaNi AllMaNi вне форума
Новичок
 
Регистрация: 15.06.2009
Адрес: Россия, ЮФО
Сообщения: 57
Репутация: 10
По умолчанию

DungeonLords, а в каком смысле отгадывает?

По типу автозамены?
Если введено "При" - то добавляется "вет"?

Что то подобное есть тут, или вот здесь
__________________
Пусть ненавидят миллионы, зато любят тыщи (с) Многоточие
Ответить с цитированием
  #3  
Старый 12.07.2009, 21:50
DungeonLords DungeonLords вне форума
Активный
 
Регистрация: 21.07.2008
Сообщения: 257
Репутация: 14
По умолчанию

Цитата:
Сообщение от AllMaNi
DungeonLords, а в каком смысле отгадывает?

По типу автозамены?
Если введено "При" - то добавляется "вет"?

Что то подобное есть тут, или вот здесь
Нет, не то.

Так и значит: пользователь вводит в Edit XXX19Mobile, а компьютер путём тупого подбора должен разгадать введёное в Edit и вывести значение, сколько времени потрачено. У меня получился подбор только по числам, а вот что делать если введены буквы, да ещё разного размера (большие и маленькие) я не знаю. Кстати, поиск должен быть ограничен неким числом знаков, которое вводится в ещё одном Edit.
__________________
Делаем'c разные игры. Искать на glscene.ru

Последний раз редактировалось DungeonLords, 12.07.2009 в 21:53.
Ответить с цитированием
  #4  
Старый 13.07.2009, 00:23
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

чисто переборная задача, что ли?
Надо тупо сгенерить слово указанной длинны, потом сравнить с введенным и, если они совпали, то остановиться. Так?
Ну тогда это элементарно. Фактически нам нужен исходный массив разрешенных симаолов. Далее тупо в строке производим замену последнего символа на следующий далее в массиве и сверяем результат с искомым. Все.
Ответить с цитированием
  #5  
Старый 13.07.2009, 10:29
DungeonLords DungeonLords вне форума
Активный
 
Регистрация: 21.07.2008
Сообщения: 257
Репутация: 14
По умолчанию

Цитата:
Сообщение от lmikle
чисто переборная задача, что ли?
Надо тупо сгенерить слово указанной длинны, потом сравнить с введенным и, если они совпали, то остановиться. Так?
Ну тогда это элементарно. Фактически нам нужен исходный массив разрешенных симаолов. Далее тупо в строке производим замену последнего символа на следующий далее в массиве и сверяем результат с искомым. Все.
Блин, опять не то.

Товарисчи, помогите, мне через три для нужно нести всё злому преподу на золотом юлюдечке.

Незнаю, может препод хочет подборщик паролий к программам сделать, но разве не всё равно! Нужно не "тупо сгенерить слово указанной длинны", а тупо сгенирировать слова до тех пор, пока они не смовпадут или пока не будет достигнута максимально допустимая длина отгадываеиого слова. Например, пока число знаков не дойдёт до 12.

С числами всё легко. Я просто в таймере пишу: i:=i+1; [и подбираю]. Но что делать с буквами?
__________________
Делаем'c разные игры. Искать на glscene.ru
Ответить с цитированием
  #6  
Старый 13.07.2009, 12:21
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

я кажется что-то понял... Стуканись в ICQ 7091498, поговорим.
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #7  
Старый 13.07.2009, 15:11
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от DungeonLords
Блин, опять не то.

Товарисчи, помогите, мне через три для нужно нести всё злому преподу на золотом юлюдечке.

Незнаю, может препод хочет подборщик паролий к программам сделать, но разве не всё равно! Нужно не "тупо сгенерить слово указанной длинны", а тупо сгенирировать слова до тех пор, пока они не смовпадут или пока не будет достигнута максимально допустимая длина отгадываеиого слова. Например, пока число знаков не дойдёт до 12.

С числами всё легко. Я просто в таймере пишу: i:=i+1; [и подбираю]. Но что делать с буквами?

А я про что написал? Именно про это!!! Читать надо внимательне.
Сгенерить - это не значит, что его надо случайным образом составить.
Я же сказал тебе - танцуй от массива допустимых символов.
Ответить с цитированием
  #8  
Старый 13.07.2009, 21:42
Аватар для pesi
pesi pesi вне форума
Активный
 
Регистрация: 12.09.2008
Сообщения: 275
Репутация: 43
По умолчанию

попробуй так, только тут подбор до 4 символов

Код:
function number1(const S:string):string;
var
i:integer;
str:string;
begin
 str := '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
 Result:='';
 for i:=1 to Length(str) do
  if str[i] = s  then
   begin
    Result:=str[i];
    exit;
   end;
end;

//111111111111111111111111111111111111111111111111111111111111111111111111111111

function number2(const S:string):string;
var
i1, i2:integer;
str:string;
bol:boolean;
begin
 bol:=false;
 str := '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
 Result:='';

 for i1:=1 to Length(str) do
  if str[i1] = s  then
   begin
    bol:=true;
    Result:=str[i1];
    exit;
   end;

if bol=false then
 begin
  for i1:=1 to Length(str) do
  for i2:=1 to Length(str) do
   if str[i1]+str[i2] = s  then
    begin
     Result:=str[i1]+str[i2];
     exit;
    end;
end;
end;

//2222222222222222222222222222222222222222222222222222222222222222222222222222222

function number3(const S:string):string;
var
i1, i2, i3, u :integer;
str :string;
bol:boolean;
begin
 bol:=false;
 str := '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
 Result:='';
 u:=Length(str);

for i1:=1 to u do
  if str[i1] = s  then
   begin
    bol:=true;
    Result:=str[i1];
    exit;
   end;
if bol=false then
 begin
  for i1:=1 to u do
  for i2:=1 to u do
   if str[i1]+str[i2] = s  then
    begin
     bol:=true;
     Result:=str[i1]+str[i2];
     exit;
    end;
end;

if bol=false then
 begin
 for i1:=1 to u do
  for i2:=1 to u do
  for i3:=1 to u do
  begin
   if str[i1]+str[i2]+str[i3] = s  then
    begin
     Result:=str[i1]+str[i2]+str[i3];
     exit;
    end;
  end;
end;
end;

//33333333333333333333333333333333333333333333333333333333333333333333333333333333333333

function number4(const S:string):string;
var
i1, i2, i3, i4, u :integer;
str :string;
bol:boolean;
begin
 bol:=false;
 str := '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
 Result:='';
 u:=Length(str);

for i1:=1 to u do
  if str[i1] = s  then
   begin
    bol:=true;
    Result:=str[i1];
    exit;
   end;

if bol=false then
 begin
  for i1:=1 to u do
  for i2:=1 to u do
   if str[i1]+str[i2] = s  then
    begin
     bol:=true;
     Result:=str[i1]+str[i2];
     exit;
    end;
end;

if bol=false then
 begin
 for i1:=1 to u do
  for i2:=1 to u do
  for i3:=1 to u do
  begin
   if str[i1]+str[i2]+str[i3] = s  then
    begin
     bol:=true;
     Result:=str[i1]+str[i2]+str[i3];
     exit;
    end;
  end;
end;

if bol=false then
 begin
 for i1:=1 to u do
  for i2:=1 to u do
  for i3:=1 to u do
   for i4:=1 to u do
  begin
   if str[i1]+str[i2]+str[i3]+str[i4] = s  then
    begin
     Result:=str[i1]+str[i2]+str[i3]+str[i4];
     exit;
    end;
  end;
end;
end;

//4444444444444444444444444444444444444444444444444444444444444444444444444444444

procedure TForm1.Button1Click(Sender: TObject);
begin
edit3.Clear;

 if strtoint(edit2.Text)= 1 then
  edit3.Text:=number1(edit1.Text) else

 if strtoint(edit2.Text)= 2 then
  edit3.Text:=number2(edit1.Text) else

 if strtoint(edit2.Text)= 3 then
  edit3.Text:=number3(edit1.Text) else

 if strtoint(edit2.Text)= 4 then
  edit3.Text:=number4(edit1.Text)

end;
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 16:53.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter