Anagram
#16
[COLOR="RoyalBlue"]النسخة السابقة كانت بطيئه لانها كنت تعتميد علي مبدأ "Brute Forcing".

هذه النسخة فكرتها بسيطة:
- يقوم البرنامج بتحميل ملف القاموس فى مصفوفة (Dictionary Array).
- يقوم بترتيب كل كلمة فى مصفوفة القاموس ترتيبا ابجديا فى مصفوفة اخري,
مثال: لو ان كلمة (efab) موجودة فى مصفوفة القاموس, ستكون (abef) فى المصفوفة المُرتبة.
- عندما يدخل المستخدم كلمة غير مرتبة للبحث عن ترتيبها الصحيح, يقوم البرنامج بترتيب الكلمة المدخلة ترتيبا ابجديا.
- بذلك ستجد أن, مهما اختلف ترتيب الكلمة, سيقوم البرنامج بتريبها ترتيب معين (الترتيب الابجدي).
[/COLOR]
PHP كود :
unit Unit1;

interface

uses
  Windows
, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  
Dialogs, StdCtrls;

type
  TForm1 
= class(TForm)
    
Edit1: TEdit;
    
Edit2: TEdit;
    
Button1: TButton;
    
Label1: TLabel;
    
procedure Button1Click(Sender: TObject);
    
procedure FormCreate(Sender: TObject);
  private
    { Private 
declarations }
  public
    { Public 
declarations }
  
end;

var
  
Form1: TForm1;
  
DictionaryArray, SortedArray : array[0..2000] of string;

implementation

{$R *.dfm}

Function 
SortWordAlphabetically(Word : String): String;
Const 
LowAlphabets : string = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
var 
SortedWord : String;
i,j : Integer;
begin
for i := 1 to Length(LowAlphabets) do begin
for j := 1 to Length(Word) do begin
If LowAlphabets[i] = Word[j] then begin
SortedWord 
:= SortedWord + LowAlphabets[i];
Break;
end;
end;
If 
Length(SortedWord) = Length(Word) then
Break;
end;
Result := SortedWord;
end;

procedure LoadDictionary(Path : String);
var 
F : TextFile;
i : Integer;
begin
i 
:= 0;
AssignFile(F,Path);
Reset(F);
While 
Not Eof(F) do begin
Readln
(F,DictionaryArray[i]);
Inc(i);
end;
CloseFile(F);
For 
i := 0 to Length(DictionaryArray) - 1 do
SortedArray[i] := SortWordAlphabetically(DictionaryArray[i]);
Form1.Label1.Caption := 'Dictonary loaded.';
Form1.Label1.Font.Color := clGreen;
end;

procedure TForm1.Button1Click(Sender: TObject);
var 
RandedWord : String;
i : Integer;
begin
RandedWord 
:= SortWordAlphabetically(Edit1.Text);

For 
i := 1 to Length(SortedArray) - 1 do
If 
Pos(RandedWord,SortedArray[i]) <> 0 then
Edit2
.Text := DictionaryArray[i];
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
LoadDictionary
('wordlist.txt');
end;

end. 

- اذا كان لديكم افكار اخري للبرنامج (ترتيب الاحرف لاستخلاص كلمات) او خورزميات للترتيب (Sorting Algorithms), فشاركوني بها, و ساكون شاكر لكم.
الرد


الردود في هذا الموضوع
Anagram - بواسطة Goblin - 05-02-2010, 12:34 AM
Anagram - بواسطة TF6M - 05-02-2010, 01:06 AM
Anagram - بواسطة Goblin - 05-02-2010, 01:16 AM
Anagram - بواسطة TF6M - 05-02-2010, 01:34 AM
Anagram - بواسطة kachwahed - 05-02-2010, 09:58 AM
Anagram - بواسطة Goblin - 05-02-2010, 11:00 AM
Anagram - بواسطة TF6M - 05-02-2010, 11:36 AM
Anagram - بواسطة Goblin - 05-02-2010, 01:15 PM
Anagram - بواسطة TF6M - 05-02-2010, 01:46 PM
Anagram - بواسطة Goblin - 05-02-2010, 03:58 PM
Anagram - بواسطة TF6M - 05-02-2010, 04:19 PM
Anagram - بواسطة Goblin - 06-02-2010, 09:58 PM
Anagram - بواسطة TF6M - 06-02-2010, 10:21 PM
Anagram - بواسطة Goblin - 06-02-2010, 10:30 PM
Anagram - بواسطة Goblin - 15-02-2010, 07:23 PM
Anagram - بواسطة Goblin - 22-02-2010, 04:48 PM
Anagram - بواسطة AL-MOB4RM3G - 22-02-2010, 07:31 PM
Anagram - بواسطة mohfa - 22-02-2010, 08:25 PM
Anagram - بواسطة Goblin - 23-02-2010, 12:50 PM
Anagram - بواسطة mohfa - 23-02-2010, 07:28 PM
Anagram - بواسطة Goblin - 25-02-2010, 07:51 PM

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم