کرننگ جانچنے کے لئے لگیچرز کی جوڑیاں

جناب اب لسٹیں بنانے کا وقت آپہنچا ہے۔ اس سے قبل کے میں خود کوئی کوڈ لکھوں میں یہ جاننا چاہوں گا کہ کیا محفل پر الفاظ سے لگیچرز نکالکے کا کوئی کوڈ موجود ہے؟ پاک ورڈ فائنڈر تو گرافکل آلہ ہے۔ اگر ہم نے خود الفاظ پروسیس کرنے ہوئے تو کوڈ چاہیے ہوگا۔
غالباً کہیں پاک ورڈ فائنڈر کا سورس کوڈ بھی دستیاب ہے۔ :) :) :)
 

arifkarim

معطل
غالباً کہیں پاک ورڈ فائنڈر کا سورس کوڈ بھی دستیاب ہے۔ :) :) :)
میری معلومات کے مطابق ابرارحسین اپنے پروگرامز کا سورس پبلک نہیں کرتے۔ لیکن دیگر پروگرامرز کیساتھ شیئر کرنے میں کیا حرج ہے؟ ابرار بھائی سے ہماری خاص درخواست ہو گی کہ mohdumar صاحب کی اس سلسلہ میں مدد فرمائیں :)
 

arifkarim

معطل
جناب اب لسٹیں بنانے کا وقت آپہنچا ہے۔ اس سے قبل کے میں خود کوئی کوڈ لکھوں میں یہ جاننا چاہوں گا کہ کیا محفل پر الفاظ سے لگیچرز نکالکے کا کوئی کوڈ موجود ہے؟ پاک ورڈ فائنڈر تو گرافکل آلہ ہے۔ اگر ہم نے خود الفاظ پروسیس کرنے ہوئے تو کوڈ چاہیے ہوگا۔
ابرار بھائی کو اسکائپ پر میسیج کر دیا ہے۔ امید ہے اسکا کوڈ آپ کو جلد فارورڈ کر دیں گے۔
 
آخری تدوین:

mohdumar

محفلین
ابرار بھائی کو اسکائپ پر میسیج کر دیا ہے۔ امید ہے اسکا کوڈ آپ کو جلد فارورڈ کر دیں گے۔

فرض کریں اگر ہم خود کوڈ لکھتے ہیں تو ہمرے ذہن میں اس وقت صرف یہی تکنیک ہے کہ لگیچرز کے standard array سے میچنگ کے ذریعے لفظ کے لگیچر نکالے جائیں۔ اس کے لئے پروسیسر کا بھاری استعمال ہوگا البتہ سرچنگ کو انڈیکسز وغیرہ کی مدد سے تیز بنایا جا ستکا ہے۔ ابرار صاحب بیشک کوڈ فراہم نہ کریں بس اپنی تکنیک کا خاکہ پیش کردیں۔ :)
 
فرض کریں اگر ہم خود کوڈ لکھتے ہیں تو ہمرے ذہن میں اس وقت صرف یہی تکنیک ہے کہ لگیچرز کے standard array سے میچنگ کے ذریعے لفظ کے لگیچر نکالے جائیں۔ اس کے لئے پروسیسر کا بھاری استعمال ہوگا البتہ سرچنگ کو انڈیکسز وغیرہ کی مدد سے تیز بنایا جا ستکا ہے۔ ابرار صاحب بیشک کوڈ فراہم نہ کریں بس اپنی تکنیک کا خاکہ پیش کردیں۔ :)
اس کا سہل طریقہ یہ ہے کہ ان حروف کی فہرست بنا لیں جن کے بعد کوئی حرف جڑتا نہیں ہے، مثلاً الف، د فیملی، ر فیملی، و اور ے وغیرہ۔ پھر الفاظ کی فہرست کو یکے بعد دیگرے حرفاً حرماً پراسیس کریں اور جہاں کہیں بھی "نان جوائنر" حروف ملیں وہاں وہاں سے لفظ کو ٹکڑوں میں توڑ لیں لیکن ان ٹکڑوں کی ترتیب برقرار رکھیں (مثلاً کسی ارے میں) اس کے بعد اس ارے کی مدد سے ہر دو آس پاس کے ایلیمنٹ کا جوڑا بنا کر تمام لگیچر پئیر حاصل کر لیں۔ :) :) :)
 

arifkarim

معطل
فرض کریں اگر ہم خود کوڈ لکھتے ہیں تو ہمرے ذہن میں اس وقت صرف یہی تکنیک ہے کہ لگیچرز کے standard array سے میچنگ کے ذریعے لفظ کے لگیچر نکالے جائیں۔ اس کے لئے پروسیسر کا بھاری استعمال ہوگا البتہ سرچنگ کو انڈیکسز وغیرہ کی مدد سے تیز بنایا جا ستکا ہے۔ ابرار صاحب بیشک کوڈ فراہم نہ کریں بس اپنی تکنیک کا خاکہ پیش کردیں۔ :)
جناب، میرے ذہن میں بھی کچھ اس قسم کا ہی آئیڈیا ہے جیسا کہ اوپر ابن سعید بھائی نے ذکر کیا کہ الفاظ کو ان مقامات پر توڑیں جہاں کرننگ پیئر بنتا ہو۔ جیسے د، ڈ، ذ، ر، ڑ، ز، ژ، ا، آ،أ،‎إ، ۃ،و،ؤ وغیرہ وغیرہ
البتہ ان الفاظ کے پیئرز انکے اخیر سے کیسے شروع ہوں گے مطلب سائکل میں اسکا مجھے علم نہیں۔ شاید سعود ، ابرارحسین رانا یا نبیل بھائی اس پر کچھ مزید روشنی ڈال سکیں :)
 

mohdumar

محفلین
جناب، میرے ذہن میں بھی کچھ اس قسم کا ہی آئیڈیا ہے جیسا کہ اوپر ابن سعید بھائی نے ذکر کیا کہ الفاظ کو ان مقامات پر توڑیں جہاں کرننگ پیئر بنتا ہو۔ جیسے د، ڈ، ذ، ر، ڑ، ز، ژ، ا، آ،أ،‎إ، ۃ،و،ؤ وغیرہ وغیرہ
البتہ ان الفاظ کے پیئرز انکے اخیر سے کیسے شروع ہوں گے مطلب سائکل میں اسکا مجھے علم نہیں۔ شاید سعود ، ابرارحسین رانا یا نبیل بھائی اس پر کچھ مزید روشنی ڈال سکیں :)

ہم کافی دماغ کھپائی کے بعد recursionکے ذریعے اخیر سے لگیچر الگ کرنے میں کامیاب ہوگئے ہیں البتہ یہ کام ہم نے د،ڈ،ذ جیسے حروف کو لگیچر ارے میں شامل کر کے کیا ہے۔ امید ہے کہ چند ہزار الفاظ کی پروسیسنگ میں پرفامنس بڑا مسئلہ نہیں ہوگی۔
 
ہم نے لیگیچرز اور لگیچر پئیرز اخذ کرنے کے لیے جاوا اسکریپٹ میں ایک بنیادی کوڈ لکھ دیا ہے۔ یہ کوڈ دیے گئے فہرست الفاظ سے حاصل شدہ تمام لگیچرز اور لگیچر پئیرز کو ان کی فریکوئنسی کے اعتبار سے محفوظ کرتا ہے۔ بنیادی الگورتھم کو درج ذیل کوڈ سے سمجھا جا سکتا ہے، جبکہ اس کو استعمال کرتے ہوئے ایک عدد تمثیلی صفحہ جے ایس فڈل پر ملاحظہ فرمایا جا سکتا ہے۔ :) :) :)
PHP:
function genLigs(words) {
    var nonjoiners = "ادڈذرڑزژوے";
    var ligatures = {};
    var ligpairs = {};
    for(i = 0; i < words.length; i++) {
        var ligs = [];
        var letters = words[i].split("");
        var lig = "";
        for(j = 0; j < letters.length; j++) {
            lig += letters[j];
            if(nonjoiners.indexOf(letters[j]) >= 0 || j == letters.length - 1) {
                ligs.push(lig);
                ligatures[lig] = ++ligatures[lig] || 1;
                lig = "";
            }
        }
        if(ligs.length > 1) {
            for(k = ligs.length - 1; k > 0; k--) {
                var pair = ligs[k-1] + ligs[k];
                ligpairs[pair] = ++ligpairs[pair] || 1;
            }
        }
    }
    return {"ligatures": ligatures, "ligpairs": ligpairs};
}
 

mohdumar

محفلین
ہم نے لیگیچرز اور لگیچر پئیرز اخذ کرنے کے لیے جاوا اسکریپٹ میں ایک بنیادی کوڈ لکھ دیا ہے۔ یہ کوڈ دیے گئے فہرست الفاظ سے حاصل شدہ تمام لگیچرز اور لگیچر پئیرز کو ان کی فریکوئنسی کے اعتبار سے محفوظ کرتا ہے۔ بنیادی الگورتھم کو درج ذیل کوڈ سے سمجھا جا سکتا ہے، جبکہ اس کو استعمال کرتے ہوئے ایک عدد تمثیلی صفحہ جے ایس فڈل پر ملاحظہ فرمایا جا سکتا ہے۔ :) :) :)
PHP:
function genLigs(words) {
    var nonjoiners = "ادڈذرڑزژوے";
    var ligatures = {};
    var ligpairs = {};
    for(i = 0; i < words.length; i++) {
        var ligs = [];
        var letters = words[i].split("");
        var lig = "";
        for(j = 0; j < letters.length; j++) {
            lig += letters[j];
            if(nonjoiners.indexOf(letters[j]) >= 0 || j == letters.length - 1) {
                ligs.push(lig);
                ligatures[lig] = ++ligatures[lig] || 1;
                lig = "";
            }
        }
        if(ligs.length > 1) {
            for(k = ligs.length - 1; k > 0; k--) {
                var pair = ligs[k-1] + ligs[k];
                ligpairs[pair] = ++ligpairs[pair] || 1;
            }
        }
    }
    return {"ligatures": ligatures, "ligpairs": ligpairs};
}

بہت زبردست جناب۔ ہم نے آپ کی پچھلی پوسٹ کا کچھ غلط مطلب لے لیا اورالٹے چکروں میں پڑھ گئے ورنہ آپ کا الگورتھم تو بہت robust اور straightforward ہے۔ اس کو فراہم کر نے کا شکریہ۔
 
ہمارے کوڈ میں ایک معمولی سی غیر دانستہ ٹائپو سرزد ہو گئی تھی جس میں ہم کاؤنٹر کو انکریمنٹ نہیں کر رہے تھے۔ ہم نے کوڈ درست کر دیا ہے اور فڈل کے روابط بھی درست کر دیے ہیں۔ :) :) :)
 
جیسے ذیل کی مثال میں ہم نے تین الفاظ پراسیس کئے تو ہر لسٹ کی ابتداء جس پیئر سے ہوگی اسکو یاداشت میں مارک کر لیا جائے:
b637.gif

الغرض تمام لسٹوں سے ڈپلیکیٹس نکالنے کے بعد بھی مطلوبہ پیئرز ڈپلیکیٹس کو چھوڑ کر اپنی جگہ پر محفوظ رہیں۔ عملاً دیکھنے میں آیا ہےکہ جب آپ کسی کالم میں سے ڈپلیکیٹس حذف کرتے ہیں تو دو لسٹوں کے مابین خلا بھی حذف ہو جاتا ہے۔ ہم چاہتے ہیں کہ کسی طرح اس خلا کو برقرار رکھا جائے اور ڈپلیکیٹس حذف بھی ہو جائیں۔ بس اتنی سی بات ہے۔ اسکا سب سے آسان حل میری نظر میں یہ ہے کہ ہر لسٹ کے اوپر انگریزی الفابیٹ میں a, b, c, وغیرہ لکھ دیا جائے۔ یوں جب یہ ایک ہی کالم میں ہوں گے تو ڈپلیکیٹس حذف بھی ہو جائیں گے اور لسٹوں کے درمیان خلا برقرار رہے گا۔
آپ کی وضاحت بالکل بھی سمجھ میں نہیں آئی۔ اگر مثال دے کر واضح فرما سکیں تو سمجھنے میں سہولت ہوگی۔ :) :) :)
 
آخری تدوین:

نبیل

تکنیکی معاون
میں بھی یہی کہنا چاہ رہا تھا۔ اوپر اور نیچے ایک ہی ٹیبل نظر آ رہی ہے۔ یہ معلوم نہیں ہو رہا ہےکہ کونسے ڈپلیکیٹ حذف کیے جا رہے ہیں۔
 

arifkarim

معطل
میں بھی یہی کہنا چاہ رہا تھا۔ اوپر اور نیچے ایک ہی ٹیبل نظر آ رہی ہے۔ یہ معلوم نہیں ہو رہا ہےکہ کونسے ڈپلیکیٹ حذف کیے جا رہے ہیں۔
بہت خوب یہ زبردست کام ہو گیا ہے اور ڈپلیکیٹ بھی حذف ہو رہے ہیں
آپ کی وضاحت بالکل بھی سمجھ میں نہیں آئی۔ اگر مثال دے کر واضح فرما سکیں تو سمجھنے میں سہولت ہوگی۔ :) :) :)
b638.gif

ان تمام لسٹوں کو اوپر تلے ایک کالم میں رکھ کر ڈپلیکیٹس واضح کرنے کے بعد:
b639.gif

مذکورہ ڈپلیکیٹس فائنل لسٹ میں سے حذف کئے جا سکتے ہیں۔ چونکہ یہ صرف مثال تھی اسلئے آخری دو لسٹوں میں ایک بھی پیئر نہیں بچا۔ :) :) :)
 
مدیر کی آخری تدوین:
b638.gif

ان تمام لسٹوں کو اوپر تلے ایک کالم میں رکھ کر ڈپلیکیٹس واضح کرنے کے بعد:
b639.gif

مذکورہ ڈپلیکیٹس فائنل لسٹ میں سے حذف کئے جا سکتے ہیں۔ چونکہ یہ صرف مثال تھی اسلئے آخری دو لسٹوں میں ایک بھی پیئر نہیں بچا۔ :) :) :)
بھئی ڈپلیکیٹ حذف کرنا کوئی جناتی کام نہیں لیکن اس کے بعد حتمی فہرست کس صورت درکار ہے؟ کیا وہ یک کالمی فہرست ہوگی یا کالم دوبارہ ری اسٹور کیے جائیں گے، اگر ہاں تو ان خالی مقامات کا کیا کرنا ہوگا جہاں سے جوڑے حذف ہوئے؟ :) :) :)
 
آخری تدوین:

arifkarim

معطل
بھئی ڈپلیکیٹ حذف کرنا کوئی جناتی کام نہیں لیکن اس کے بعد حتمی فہرست کس صورت درکار ہے؟ کیا وہ یک کالمی فہرست ہوگی یا کالم دوبارہ ری اسٹور کیے جائیں گے، اگر ہاں تو ان خالی مقامات کا کیا کرنا ہوگا جہاں سے جوڑے حذف ہوئے؟ :) :) :)
ظاہر ہے کالم دوبارہ ری اسٹور کرنے ہوں گے۔ ڈپلیکیٹس ہمیشہ نیچے سے حذف کئے جائیں تاکہ اخیر کے حساب سے لسٹوں کی سارٹنگ کا ڈھانچہ برقرار رہ سکے :)
 
آخری تدوین:
ظاہر ہے کالم دوبارہ ری اسٹور کرنے ہوں گے۔ ڈپلیکیٹس ہمیشہ نیچے سے حذف کئے جائیں گے تاکہ اخیر کے حساب سے لسٹوں کی سارٹنگ کا ڈھانچہ برقرار رہ سکے :)
یقیناً بہت ساری تفصیلات آپ کے ذہن میں موجود ہوں گی جسے آپ بیان نہیں کر رہے اور یوں ہم پر الہام ہو نہیں رہا۔ بھئ جہاں جہاں سے جوڑے حذف ہوں گے ان مقامات کو خالی رکھا جائے گا، یا اسی کالم میں موجود نیچے والے جوڑے اوپر سرک جائیں گے، یا پھر اس کے بعد ولے کالم سے جوڑے پیچھے کی طرف کو سرک آئیں گے؟ نیز یہ کہ ڈپلیکٹ حذف کرنے کا کام گلوبل ہوگا یا پھر ہر کالم میں فقط اسی کالم کے ڈپلیکیٹ جوڑے حذف کیے جائیں گے۔ اور اخیر میں کیا ہر کالم کے جوڑوں کی فہرست علیحدہ علیحدہ فراہم کرنی ہوگی؟ ہمارا خیال ہے کہ اگر آپ کسی طرح اپنی ضرورت کی وضاحت فرما سکیں تو اس نتیجے کے حصول کا طریقہ کار آپ ہم پر چھوڑ سکتے ہیں، بہت ممکن ہے کہ ضرورت سمجھنے کے بعد ہم کہیں بہتر اور مؤثر طریقہ کار سوچ سکیں۔ :) :) :)
 
میری معلومات کے مطابق ابرارحسین اپنے پروگرامز کا سورس پبلک نہیں کرتے۔ لیکن دیگر پروگرامرز کیساتھ شیئر کرنے میں کیا حرج ہے؟ ابرار بھائی سے ہماری خاص درخواست ہو گی کہ mohdumar صاحب کی اس سلسلہ میں مدد فرمائیں :)
یار جب کسی نے مانگا میں نے سورس کوڈ دیا ہے، شروع میں پروگرام کے ساتھ سورس کوڈ بھی اپلوڈ کرتا تھا ، لیکن بعد میں اب ڈیٹ کے ساتھ مینٹین نہیں رکھ سکا۔ آج کل گھر شفٹ کر رہا ہوں اس وجہ سے گھر میں انٹرنیٹ نہٰں ہے، اور آفس میں مصروفیت کافی زیادہ ہے کہ اس تھریڈ کو بھی پڑھے بغیر جواب دے رہا ہوں، (خیر موقع ملتے ہے چیک کروں گا۔) لگتا ہے اردو کے حوالے سے کچھ اچھی پراگرس ہو رہی ہے ۔
لیٹسٹ سورس کوڈ میں کوشش کرتا ہوں کہ جلد سے جلد اپلوڈ کر دوں۔ باقی آپ لوگوں کی بات چیت پڑھنے کے بعد اگر کچھ اچھا آئیڈیا ذہیں میں آیا تو ضرور شامل کر وں گا۔
 
Top