أغسطس 16، 2009

Ð0 ¥0µ $p34k £33†?

تحية روبية للصديق كريم عبد المجيد أما بعد، تقبل رسالة l33t على الطريقة البايثونية :)


#!/usr/bin/env python

# -*- coding: UTF-8 -*-

## Released into Public Domain by Mohammed Berdai <stuntgp2000 @t gmail d0t com>
## To know more about Leet visit URL: http://en.wikipedia.org/wiki/Leet
## Thanks flies to Mutati0N for the fun http://mutati0n.wordpress.com/ruby-projects
"""English to l33t Convertor"""
 

alphabet = {'a':'4', 'b':'8', 'c':'[', 'd':'|>', 'e':'3', 'f':'|=', 'g':'6',

            'h':'/-/', 'i':'1', 'j':'_/', 'k':'|<', 'l':'|_', 'm':'(V)',

            'n':'/V', 'o':'0', 'p':'|>', 'q':'<|', 'r':'|?', 's':'$',

            't':'7', 'u':'(_)', 'v':"\/", 'w':'vv', 'x':'}{', 'y':'`/',

            'z':'2'}



print "\t\tWellcome to the l33t Converter V1.0\n"

phrase = raw_input('Please enter the phrase: ').lower()



leetphrase = ''

for char in phrase:

    leet = alphabet[char] if char in alphabet else char

    leetphrase += leet



print leetphrase



و حتى أجيبك K.O  إليك:


#!/usr/bin/env python

# -*- coding: UTF-8 -*-

## Released into Public Domain by Mohammed Berdai <stuntgp2000 @t gmail d0t com>
## Leet URL: http://en.wikipedia.org/wiki/Leet
## Thanks flies to Mutati0N for the fun http://mutati0n.wordpress.com/ruby-projects


alphabet = {'a':'4', 'c':'ç', 'd':'Ð',  'e':'3', 'f':'ƒ', 'g':'9', 'i':'1',

            'l':'£', 'o':'0', 's':'$', 't':'†', 'u':'µ', 'y':'¥', 'z':'2'}


print ''.join([(alphabet[c] if c in alphabet else c) for c in raw_input('Your phrase: ').lower()])

لا تقلقوا أنا بخير :)

l33t هي لغة يستخدم فيها الرموز و الأرقام للكتابة باللغة الإنجليزية متداولة بين مستخدمي الحاسوب الذين يعتقدون أنهم متميزون عن البقية :)

و هذا المساء دخلت إلى قسم مشاريع بروبي Ruby على مدونة Mutati0N و لتسلية فقط أردت أن اكتب سكريبت ببايثون Python يقوم بنفس العملية (تحويل الجمل من الإنجليزية إلى l33t) بأقل عدد من الأسطر و كانت النتيجة كما رأيتم :)

جيد، الشرح:
في الكود المصدر الأول إستخدمت متغيرة على شكل قاموس (سنرى القواميس لاحقا في سلسلة بايثون للمبتدئين) إسمها alphabet و هي تضم كل أحرف اللغة الإنجليزية و مقابلها من أحرف l33t. بعد ذلك نقوم بعرض رسالة تتضمن إسم السكريبت و رقم إصداره، ثم نطلب من المستخدم أن يدخل جملته التي سيتم تحويلها إلى الأحرف الصغيرة قبل أن يتم الإحتفاظ بها في المتغيرة phrase
بعد ذلك نحدد متغيرة إسمها leetphrase و محتواها في البداية يكون فارغ.
الآن سنقوم بقراءة كل حرف (معبَر عنه بالمتغيرة char) في الحملة التي أدخلها المستخدم (معبَر عنها بالمتغيرة phrase) بإستخدام الحلقة التسلسلية for. و في كل دورة من دورات الحلقة يتم إختبار هل الحرف الحالي يوجد مقابل له في القاموس أما لا (و ذالك بالإستخدام الجملة الشرطية if). إذا كان موجودا كُتب الحرف المقابل له في المتغيرة leet، أما إذا لم يكن موجود كُتب الحرف الحالي (الأصلي) في المتغيرة leet. ثم بعد ذلك يتم إضافة قيمة المتغيرة leet إلى الجملة التي ستظهر للمستخدم لاحقا (المعبر عنها بالمتغيرة leetphrase) بعد إنتهاء الحلقة من المرور على كل حرف في الجملة التي أدخلها المستخدم.
في النهاية يتم عرض محتوى المتغيرة leetphrase التي تضم مقابل الجملة الأصلية بلغة l33t


أما الكود الثني فهو يقوم بنفس عمل الكود الاول لكن في سطرين. الأول يٌعرف القاموس و الثاني:
يطلب من المستخدم أن يدخل الجملة و يقوم بتصغير حروفها من خلال الجزء التالي raw_input('Your phrase: ').lower()
يقرأ كل حرف (معبر عنه بـ c) من خلال الحلقة التسلسلية for، ثم يتم إختباره من خلال الجملة الشرطية if هل موجود في القاموس أم لا. إذا كان موجود عُوض بمقابله، إذا لم يكن موجود ترك الحرف الأصلي على حالته.
كل ذلك يتم داخل قائمة [] يتم تحويل كل عناصرها إلى جملة نصية واحدة من خلال ''.join() و في النهاية يتم عرض النتيجة للمستخدم :)

هناك تعليق واحد:

  1. تقبلت الرسالة أخ محمد , ونحن نقدر اللغة البايثونية الشقيقة :D ونتطلع لمزيد من التقدم إلك في المستقبل بأذن الله لتكون مبرمج بايثون محترف ,
    :D

    ردحذف