شارك في تقديم حل مختلف لتمثيل هذا الشكل من خلال الحلقات المتداخله ..

يرجي كتابة كود يصل بنا الي هذه النتيجة ..

علما بأن الكود المستخدم لتنفيذ هذا الشكل كان علي النحو التالي ..

وفيما يلي محاولات تقريبية للوصول للشكل المطلوب يمكن أن تساعد البعض علي إيجاد حلول مختلفة ..

1 )

الكود :

نتيجة التشغيل :

2)

الكود :

نتيجة التشغيل :

3)

الكود :

نتيجة التشغيل :

________________________________________

1 - يرجي مراعاة إختلاف الحلول المقدمة للإتيان بأكثر من طريقة للحل .

2 - يرجي كتابة شرح تفصيلي للأكواد .


يوسف سيد أضف ردا

هذا الحل أوفر وأسرع بتعقيد O(2N) فقط بدلا من O(N^2) وفكرته تتمحور حول توليد السطر كامل 123 .. وثم الطباعة منه بأجزاء ..:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *generate(const int size) {
    char *buff = malloc(size * 2);

    for (int i = 0; i < size; i++) {
        char temp[2];

        sprintf(temp, "%d ", i+1);
        memcpy(&buff[i * 2], temp, 2);
    }

    return buff;
}

int main()
{
    const int size = 5;
    char *full_line = generate(size);

    for (int i = 0; i < size; i ++) {
        printf("%.*s\n", size*2-i*2, full_line);
    }

    free(full_line);

    return 0;
}

ملاحظة لن يعمل (الحل) عند ادخال رقم أكبر من 9 لأن طوله (الرقم) سيكون محرفين والدالة تفترض كونه محرف واحد.

اشرح فكرة الكود بطريقة مبسطة لأن كتابته تبدو معقدة بشكل كبير !!!

وماهي اللغة المستخدمة بالكود ؟

الدالة generate تخرج مؤشر في الذاكرة لسلسلة محارف قيمتها 1 2 3 4 5، بعد هذا الحلقة في الدالة الرئيسة (Main) تطبع منها بطول = طول سلسة المحارف (السطر كامل) - قيمة الحلقة، أول مرة تطبع منها العشرة محارف ثاني مرة ثمانية ثالث مرة ستة، والشيفرة كما واضح مكتوبة بلغة C.

هذا تحويل إلى JavaScript

التعقيد هنا (O(n² بسبب دالة slice

وأيضا في دالة printf التعقيد هو نفسه

يوسف سيد أضف ردا

التعقيد هنا (O(n² بسبب دالة slice

التعقيد هنا (O(n + (O(n²) لا تنس دالة generate.

وأيضا في دالة printf التعقيد هو نفسه

لا يحسب العرض لأنه خارج عمل الخوارزمية نفسها فلو حسبته في مثالك تعديل innerHTMl للعرض يكلف أضعافا لتعقيد الخوارزمية نفسها على أقل تقدير في أقل محرك!