الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤال سوف يحفزك تفكيرك

بدأه mental-driller في 11 يونيو 2011 · 32 رد · 2,784 مشاهدة · في الرياضيات والخوارزميات
مشاركة: واتساب X فيسبوك تيليجرام
#26

الم يكن استمرارك في المحاولة افضل من الاستسلام؟ :)

بالتوفيق

1

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#27

شكراً لك!

هل من تحدي آخر قريباً؟ على ألا يكون له علاقة بحلقات التكرار أرجوووك... tongue.gif

#28

الحمد لله اخيsite maker :)

المهم انك وجدت الحل ولم تتاخر كتيرا

في انتضار تحدي اخر

#29

هذا هو الحل للبرنامج باستخدام لغة جافا

package diamondonefor;

import java.util.Scanner;

public class DiamondOneFor {

    public static void main(String[] args) {
        int size = 0, div = 1, blank = 0, blanks;
        System.out.println("Enter the desired size");
        Scanner input = new Scanner(System.in);
        size = input.nextInt();
        int increment = blanks = size / 2;
        blank = 1;
        for (int i = 1; i <= ((size / 2 + 1) * (size / 2 + 1)) + ((size / 2) * (size / 2)) + ((size / 2) * (size / 2 + 1)); i++) {

            if (blank <= blanks) {
                System.out.print(" ");
                ++blank;
            } else if (i % (div + increment) == 0) {
                System.out.println("*");
                if (i < (((size / 2) * (size / 2 + 1)) / 2) + ((size / 2 + 1) * (size / 2 + 1))) {
                    --blanks;

                } else {
                    ++blanks;

                }
                div += (size - (2 * blanks));
                increment += blanks;
                blank = 1;

            } else {
                System.out.print("*");
            }
        }
    }
}

بالطبع انا استخدمت التحليل الرياضي الطويل

DiamondOneFor

هذا هو الرابط ، يحتوي على تحليل رياضي للمسألة

لاحظوا عندما نستخدم طول حلقة التكرار n*n ، فعندما يكون الحجم مثلا 9 يكون طول حلقة التكرار 81

بينما بهذه الطريقة طول حلقة التكرار سوف يكون 61 اي 25% اقل تقريبا

طبعا الحلول المكتوبه بلغات scripting تكون اقصر بسبب طبيعة هذه اللغات

بالتوفيق

تم تعديل هذه المشاركة بواسطة mental-driller في 17 يونيو 2011 في 05:39

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#30

بصراحة موضوع يحرك الدماغ بالفعل :wacko:

وقد قمت بالأطلاع على جميل الردود و الحلول في هذا الموضوع وبصراحة لم أستطع أن أفهم منها الي التي كتبت بلغة ++C و C , ولكن لم ايأس بل زادت عندي العزيمة لتعلم المزيد من اللغات ...

أشكرك اخي مانتل و أشكركم جميعاُ أخوتي على جهودكم الطيبة

#31

;)

def space(x):
    if x==0:
        return
    print " ",
    return space(x-1)

def star(x):
    if x==0:
        return
    print "*",
    return star(x-1)

def diamond(x): 
    X=x          
    i=0        
    while i !=X+1:
        if x!=-1:
            m=abs(x)
            y=m/2
            space(y)
            star(X-(y*2))
            space(y)
            print "\n"
        x=x-2
        i+=1

عاوزين اسئله صعبة :lol:

In [6]: diamond(9)
        *         

      * * *       

    * * * * *     

  * * * * * * *   

* * * * * * * * * 

  * * * * * * *   

    * * * * *     

      * * *       

        *

تم تعديل هذه المشاركة بواسطة -Ahmed Hassan في 7 يوليو 2011 في 15:24

وَمَا أُوتِيتُمْ مِنْ الْعِلْمِ إِلاَّ قَلِيلاً

#32
-Ahmed Hassan كتب:

;)

def space(x):
    if x==0:
        return
    print " ",
    return space(x-1)

def star(x):
    if x==0:
        return
    print "*",
    return star(x-1)

def diamond(x): 
    X=x          
    i=0        
    while i !=X+1:
        if x!=-1:
            m=abs(x)
            y=m/2
            space(y)
            star(X-(y*2))
            space(y)
            print "\n"
        x=x-2
        i+=1

عاوزين اسئله صعبة :lol:

In [6]: diamond(9)
        *         

      * * *       

    * * * * *     

  * * * * * * *   

* * * * * * * * * 

  * * * * * * *   

    * * * * *     

      * * *       

        *

خلينا في السهل :) الحاجات الصعبه في project Euler

@Super Nova مشكور على المرور

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#33

اولا شكرا على الموضوع

ثانيا: الفكرة اللى اتحلت بيها المشكله بتستخدم لوب طويلة ومتنفعش الا على Console.Write() ف ال .NET او System.Out.print فى الجافا ومش بتطبع الجملة مرة واحده بل بالعكس بطبع كل حرف سواء space ,*

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

ممكن استخدام Stack لدفع القيم الاولى ثم سحب القيم بالعكس لعدم التكرار او لتفادى الطول اذا كان سيتم الطباعة مرة واحده!!!

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…