![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Дали такое задание, помогите пожалуйста! Человек вводит последовательность английских букв, например Samsung19, а компьютер отгадывает эти числа.
Разрешены большие буквы, маленькие буквы и цифры. Заранее благодарен! P.S. Чёрт бы побрал этого препода. |
|
#3
|
|||
|
|||
|
Цитата:
Так и значит: пользователь вводит в Edit XXX19Mobile, а компьютер путём тупого подбора должен разгадать введёное в Edit и вывести значение, сколько времени потрачено. У меня получился подбор только по числам, а вот что делать если введены буквы, да ещё разного размера (большие и маленькие) я не знаю. Кстати, поиск должен быть ограничен неким числом знаков, которое вводится в ещё одном Edit. Последний раз редактировалось DungeonLords, 12.07.2009 в 21:53. |
|
#4
|
|||
|
|||
|
чисто переборная задача, что ли?
Надо тупо сгенерить слово указанной длинны, потом сравнить с введенным и, если они совпали, то остановиться. Так? Ну тогда это элементарно. Фактически нам нужен исходный массив разрешенных симаолов. Далее тупо в строке производим замену последнего символа на следующий далее в массиве и сверяем результат с искомым. Все. |
|
#5
|
|||
|
|||
|
Цитата:
Товарисчи, помогите, мне через три для нужно нести всё злому преподу на золотом юлюдечке. Незнаю, может препод хочет подборщик паролий к программам сделать, но разве не всё равно! Нужно не "тупо сгенерить слово указанной длинны", а тупо сгенирировать слова до тех пор, пока они не смовпадут или пока не будет достигнута максимально допустимая длина отгадываеиого слова. Например, пока число знаков не дойдёт до 12. С числами всё легко. Я просто в таймере пишу: i:=i+1; [и подбираю]. Но что делать с буквами? |
|
#6
|
||||
|
||||
|
я кажется что-то понял... Стуканись в ICQ 7091498, поговорим.
|
|
#7
|
|||
|
|||
|
Цитата:
А я про что написал? Именно про это!!! Читать надо внимательне. Сгенерить - это не значит, что его надо случайным образом составить. Я же сказал тебе - танцуй от массива допустимых символов. |
|
#8
|
||||
|
||||
|
попробуй так, только тут подбор до 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; |