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