شاعر العرب

شاعر العرب تطبيق يوفر آلاف القصائد المعروضة بشكل جيد جداً و يتيح لك الاحتفاظ بما زرته من قصائد على جهازك لتتصفحة بحرية بدون الاتصال بالإنترنت.
يتم تحميل ما تريد بشكل مبدئي لمرة واحدة تكون فيها متصلاً بالإنترنت ثم تتصفحه بعد ذلك بحرية.
يتيح لك التطبيق القدرة على مشاركة أبيات الشعر مع أصدقائك و على مواقع التواصل الاجتماعي.
يمكنك أن تسجل أبيات بصوتك إذا كنت تملك القدرة على إلقاء الشعر و رفعه على الإنترنت "SoundCloud" و مشاركة هذا المقطع الصوتي مع أصدقائك و على مواقع التواصل الاجتماعي.
يمكنك التطبيق من تحديد أبيات شعرية في "المفضلة" لمراجعتها مباشرة مرة أخرى.

هذا الإصدار يحوي مجموعة من الشعراء القدامى و جاري إضافة المزيد من الشعراء.
هذا الإصدار يعد طفرة كبيرة حيث يحوي أكثر من مليون و ربع المليون بيت من الشعر و ما يربو على ألفي شاعر.
هذا الإصدار قيد التجربة و التطوير.
لازال هناك الكثير من التطوير و يمكنكم إرسال مقترحاتكم حتى يتم إضافة المزيد من التحسينات.

https://play.google.com/store/apps/details?id=net.hopesun.sha3eral3arabandroid

تدوير المصفوفة [ لوغاريتمات ]

 نريد تدوير مصفوفة من نقطة ما. مثال, بـ n = 7 تمثل عدد عناصر المصفوفة و k = 3 نقطة التدوير و المصفوفة [1,2,3,4,5,6,7] تم تدويرها لتكون كالتالي [5,6,7,1,2,3,4].

1. نقسم المصفوفة إلى قسمين: 1,2,3,4             5,6
2. نعكس عناصر القسم الأول: 4,3,2,1             5,6
3. نعكس عناصر القسم الثاني: 4,3,2,1             6,5
4. نعكس المصفوفة ككل: 5,6,1,2,3,4



public static void main(String[] args) {
    int[] arr = new int[]{ 1, 2, 4, 5, 6 };
    System.out.println(Arrays.toString(arr));
    rotate(arr, 2);
    System.out.println(Arrays.toString(arr));
}

public static void rotate(int[] arr, int order) {
    if (arr == null || arr.length == 0 || order < 0) {
        System.out.println("Wrong data");
        return;
    }

    if (order > arr.length)
        order = order % arr.length;

    //length of first part    int a = arr.length - order;

    reverse(arr, 0, a - 1);
    reverse(arr, a, arr.length - 1);
    reverse(arr, 0, arr.length - 1);

}

public static void reverse(int[] arr, int left, int right) {
    if (arr == null || arr.length == 1)
        return;

    while (left < right) {
        int temp = arr[left];
        arr[left] = arr[right];
        arr[right] = temp;
        left++;
        right--;
    }
}

Rotate Array [ Algorithms ]

We need rotate an array. For example, with n = 7 and k = 3, the array [1,2,3,4,5,6,7] is rotated to [5,6,7,1,2,3,4].

1. Divide the array two parts: 1,2,3,4 and 5, 6
2. Reverse first part: 4,3,2,1,5,6
3. Reverse second part: 4,3,2,1,6,5
4. Reverse the whole array: 5,6,1,2,3,4

 
 
public static void main(String[] args) {
    int[] arr = new int[]{ 1, 2, 4, 5, 6 };
    System.out.println(Arrays.toString(arr));
    rotate(arr, 2);
    System.out.println(Arrays.toString(arr));
}

public static void rotate(int[] arr, int order) {
    if (arr == null || arr.length == 0 || order < 0) {
        System.out.println("Wrong data");
        return;
    }

    if (order > arr.length)
        order = order % arr.length;

    //length of first part    int a = arr.length - order;

    reverse(arr, 0, a - 1);
    reverse(arr, a, arr.length - 1);
    reverse(arr, 0, arr.length - 1);

}

public static void reverse(int[] arr, int left, int right) {
    if (arr == null || arr.length == 1)
        return;

    while (left < right) {
        int temp = arr[left];
        arr[left] = arr[right];
        arr[right] = temp;
        left++;
        right--;
    }
}

Small device ... Endless possibilities

Hello every one ;)

Here is my presentation at #TIEC on NASA Space Apps Cairo.



You can download it from the link:

الرقم المفقود [ لوغاريتمات ]

اللوغاريتم الأول لحساب الرقم المفقود
لو أن لديك عدد من الأرقام ( ن - ١ ) هذه الأرقام من ١ إلى ن
مثال: [ ١، ٢، ٤، ٥، ٦، ٣، ؟، ٨ ]        -- ن -->  ٨
لا تكرار في هذه الأرقام و هناك رقم وحيد مفقود في هذه المتسلسلة
ما هي أفضل طريقة للحصول على المفقود ؟؟؟

هناك طريقة سحرية فعالة لحساب ذلك ، لو أن لديك رقم ن هناك معادلة لحساب مجموع السلسلة من ١ إلى ن ==> ن*(ن+١)/٢ ثم تطرح من هذا المجوع عناصر السلسلة ذات الرقم المفقود و تكون النتيجة هذا الرقم ;)

مثال:

سلسلة:  [ ١، ٢، ٤، ٥، ٦، ٣، ؟، ٨ ]
ن: ٨

الرقم المفقود = ٨*(٨+١)/٢ - ١ - ٢ - ٤ - ٥ - ٦ - ٣ - ٨ = ٧


public static void main(String[] args) {
   System.out.println(getMissedNumber(new int[]{ 1, 2, 4, 5, 6, 3, 8 }, 8));
}

public static int getMissedNumber(int a[], int n) {
   int total;
   total  = (n)*(n+1)/2;
   for ( int i = 0; i < a.length; i++)
      total -= a[i];
   return total;
}