Saturday, 30 December 2017

تتحرك من المتوسط - كلوجر


في نهاية هذا الأسبوع قررت أن محاولة يدي في بعض سكالا و كلوجور أنا م يتقن مع البرمجة الموجهة الكائن، وهكذا كان سكالا سهلة لالتقاط كلغة، ولكن أراد أن يحاول البرمجة الوظيفية هذا هو المكان الذي حصلت hard. i فقط يمكن t يبدو أن الحصول على رأسي في وضع من وظائف الكتابة كمبرمج وظيفي خبير، كيف يمكنك الاقتراب من مشكلة. بمجرد قائمة القيم وفترة محددة من الجمع، كيف يمكنك إنشاء قائمة جديدة من المتوسط ​​المتحرك البسيط من على سبيل المثال نظرا لقيم القيم 2 0 و 4 0 و 7 0 و 6 0 و 3 0 و 8 0 و 12 0 و 9 0 و 4 0 و 1 0 والفترة 4، ينبغي أن ترجع الدالة 0 0 ، 0 0، 0 0، 4 75، 5 0، 6 0، 7 25، 8 0، 8 25، 6 5. بعد قضاء يوم يدرسه، أفضل ما يمكنني أن أخرج به في سكالا كان هذا. أعرف هذا هو فظيعة غير فعالة، أنا أكثر بكثير تفعل شيئا مثل "الآن الذي يمكن القيام به بسهولة في أسلوب حتمية، ولكن أستطيع أن t للحياة لي العمل على كيفية التعبير عن هذا فونكتيونالي. مشكلة التداخل يمكنني التفكير في أماه ني مع درجات متفاوتة من الكفاءة الحاجة إلى إضافة الاشياء مرارا وتكرارا إيسن ر حقا مشكلة في الأداء، ولكن دعونا نفترض أنه هو أيضا، الأصفار في البداية يمكن أن يسبق في وقت لاحق، لذلك دعونا لا تقلق بشأن إنتاجها إذا كانت الخوارزمية توفر لهم بشكل طبيعي، ودفع غرامة إن لم يكن، ونحن تصحيح ذلك في وقت لاحق. بدءا مع سكالا 2 8، ما يلي سوف تعطي النتيجة لفترة ن باستخدام الانزلاق للحصول على نافذة منزلقة من القائمة. ومع ذلك، على الرغم من أن هذا هو أنيق إلى حد ما، لدينا أفضل أداء ممكن، لأنه لا يستفيد من الإضافات المحسوبة بالفعل لذلك، يتحدثون عنها، كيف يمكن أن نحصل عليها. لن أقول ق نكتب هذا. لدينا قائمة من مجموع كل اثنين من أزواج دعونا نحاول أن استخدم هذه النتيجة لحساب المتوسط ​​المتحرك ل 4 عناصر. وقد جعلت الصيغة أعلاه الحساب التالي. لذلك إذا أخذنا كل عنصر ونضيفه إلى العنصر التالي الثاني، نحصل على المتوسط ​​المتحرك ل 4 عناصر. قد نفعل ذلك من هذا القبيل. يمكننا عندئذ حساب المتوسط ​​المتحرك لمدة 8 عناصر، وهلم جرا حسنا، هناك خوارزمية معروفة لحساب الأشياء التي تتبع هذا النمط انها الأكثر شهرة لاستخدامها على حساب قوة عدد وغني عن مثل هذا. لذلك، دعونا ق تطبيقه هنا. لذلك ، هنا s منطق الفترة 0 غير صالحة، الفترة 1 تساوي المدخلات، الفترة 2 هو انزلاق نافذة من حجم 2 إذا أكبر من ذلك، قد يكون حتى أو فردي. إذا غريبة، نضيف كل عنصر إلى موفينغسوم من الغريب التالي - 1 عناصر على سبيل المثال، إذا 3، نضيف كل عنصر إلى موفينغسوم من العناصر التالية 2. إذا كان الأمر كذلك، فإننا نحسب موفينغسوم ل n 2 ثم إضافة كل عنصر إلى واحد n 2 خطوات بعد ذلك. مع هذا التعريف، يمكننا بعد ذلك العودة إلى المشكلة والقيام بذلك. هناك سا عدم الكفاءة طفيفة فيما يتعلق باستخدام ولكن انها س فترة، لا يمكن أن تكون أكثر كفاءة مع وظيفة الذيل العودية، وبطبيعة الحال، تعريف انزلاق I المقدمة هو رهيبة الأداء الحكمة، ولكن سيكون هناك تعريف أفضل بكثير من ذلك على سكالا 2 8 لاحظ أننا يمكن أن تجعل من طريقة الانزلاق كفاءة على قائمة ولكن يمكننا أن نفعل ذلك على Iterable. Having وقال كل ذلك، أنا د الذهاب مع التعريف الأول جدا، وتحسين فقط إذا كان تحليل المسار الحرجة تحديد هذا باعتباره صفقة كبيرة. لختتام، دعونا ننظر كيف ذهبت نحو المشكلة لدينا مشكلة متوسط ​​متحرك المتوسط ​​المتحرك هو مجموع نافذة متحركة على قائمة مقسوما على حجم تلك النافذة لذلك، أولا، أحاول الحصول على نافذة انزلاق، جمع كل شيء على ذلك، ومن ثم تقسيم حسب الحجم. كانت المشكلة التالية لتجنب تكرار الإضافات المحسوبة بالفعل في هذه الحالة، ذهبت إلى أصغر إضافة ممكن، وحاول معرفة كيفية حساب مبالغ أكبر إعادة استخدام هذه النتائج. في النهاية، دعونا نحاول حل المشكلة بالطريقة التي أحسبت ذلك، عن طريق الجمع والطرح من النتيجة السابقة الحصول على المتوسط ​​الأول هو easy. Now نجعل قائمتين أولا، قائمة العناصر التي سيتم طرحها بعد ذلك، قائمة العناصر التي يمكن إضافتها. يمكننا إضافة هاتين القائمتين باستخدام الرمز البريدي هذه الطريقة سوف برود فقط أوس كما العديد من العناصر كما القائمة الأصغر لديها، والذي يتجنب مشكلة طرح كونها أكبر من الضرورة. نحن ننتهي من تأليف النتيجة مع vol. which هو الجواب ليتم إرجاعها وظيفة كلها تبدو مثل هذا. أنا أعرف كلوجور أفضل من سكالا، حتى هنا يذهب كما أكتب هذا الإدخال كلوجور الأخرى هنا هو حتمي أن ليس حقا ما كنت إعادة بعد و إيسن الاصطلاحية كلوجور الخوارزمية الأولى التي تأتي إلى ذهني أخذ مرارا وتكرارا أخذ عدد المطلوب من العناصر من تسلسل، إسقاط والعنصر الأول، والمتكررة. العمل التالي على أي نوع من المتجهات تسلسل أو قائمة، كسول أم لا ويعطي تسلسل كسول من المتوسطات --- التي يمكن أن تكون مفيدة إذا كنت تعمل على قائمة من حجم غير محدود لاحظ أن الأمر يستغرق رعاية الحالة الأساسية عن طريق العودة ضمنا لا شيء إذا كان هناك عناصر كافية في القائمة للاستهلاك. رونينغ هذا على غلة بيانات الاختبار الخاص بك. أنها لا تعطي 0 للعناصر القليلة الأولى في تسلسل، على الرغم من أن يمكن التعامل معها بسهولة بعض ما هو اصطناعيا. الشيء الأسهل من كل شيء هو أن نرى نمط وتكون قادرة على جلب إلى الذهن وظيفة المتاحة التي تناسب قسم التقسيم يعطي نظرة كسول من أجزاء من تسلسل، والتي يمكننا بعد ذلك خريطة أكثر. سأل أحدهم عن ذيل نسخة عودية ذيل العودية مقابل الكسل قليلا من التبادل عندما عملك هو بناء قائمة ثم جعل وظيفة الذيل عودية الخاص بك هو عادة بسيطة جدا، وهذا ليس استثناء --- مجرد بناء قائمة كحجة إلى وظيفة فرعية سنقوم تتراكم إلى ناقلات بدلا من قائمة لأن خلاف ذلك سيتم بناؤها القائمة إلى الوراء، وسوف تحتاج إلى عكسها في نهاية. لوب هو وسيلة لجعل مجهول نوع وظيفة داخلية مثل مخطط ق اسمه اسمحوا يجب تكرار يجب استخدامها في كلوجور للقضاء على دعوات الذيل كونج هو سلبيات المعمم إلحاق بالطريقة الطبيعية لجمع --- بداية القوائم ونهاية vector. enced 24 أغسطس 09 في 2 58.I قررت في إضافة إلى هذا Q القديم، لأن الموضوع جاء مرة أخرى وأنا و إند أنه من الأفضل أن نشير إلى هذه المجموعة لطيفة من الحلول الممكنة في حين إضافة بلدي اتخاذ الذي يختلف عن الإصدارات السابقة في كلوجور، كما هو موضح في A ربما يمكننا بناء على شبكة الإنترنت مستودع الأكثر اكتمالا من تطبيقات موف-أفغ وظيفية - ميشا ماركسيك مارس 2 10 في 0 20.Here سا جزئيا نقطة خالية من خط واحد هاسكل solution. First فإنه ينطبق ذيول إلى قائمة للحصول على القوائم ذيول، لذلك. يعيد ذلك ويسقط أول إدخالات p أخذ 2 كما هنا. في حال كنت على الرغم من معرفته برمز حلمة النقطة، فهو المشغل لتكوين وظيفي، بمعنى أنه يمرر إخراج وظيفة واحدة كإدخال آخر، يؤلفها في دالة واحدة غف يعني تشغيل f على قيمة ثم تمرير الإخراج إلى g ، لذلك فغس هو نفس غفكس عموما يؤدي استخدامه إلى أسلوب برمجة أكثر وضوحا. ثم يقوم بتعيين الدالة من إينتيغرال p سوم اتخاذ p على القائمة لذلك لكل قائمة في القائمة يأخذ الأول عناصر p، مبالغ لهم، ثم يقسم لهم من قبل p ثم ونحن فقط الوجه القائمة مرة أخرى مع عكس. هذا كل يبدو أكثر كفاءة بكثير مما هو عكس لا عكسي جسديا ترتيب قائمة حتى يتم تقييم القائمة، فإنه يضع فقط على كومة جيدة أول كسول ذيول هاسكل أيضا لا تخلق كل تلك القوائم منفصلة، ​​فإنه يشير فقط أقسام مختلفة من القائمة الأصلية انها لا تزال ليست حلا كبيرا، ولكن سطر واحد طويل. هنا سا أجمل قليلا ولكن حل أطول يستخدم ماباكوم للقيام الطرح انزلاق وإضافة. أولا ونحن تقسيم القائمة إلى جزأين في ص، لذلك. سم أول بت. زيب بت الثانية مع القائمة الأصلية هذا فقط أزواج من العناصر في النظام من القائمتين القائمة الأصلية من الواضح لفترة أطول، ولكن نفقد هذا قليلا اضافية. الآن نقوم بتعريف دالة لخريطتنا أكومولاتور مولاتومل هو نفس الخريطة ولكن مع معلمات تراكم حالة تشغيل إضافية، والتي يتم تمريرها من التعيين السابق إلى التالي كما يتم تشغيل الخريطة من خلال القائمة نستخدم تراكم كمتوسط ​​متحرك لدينا ، وكما تتشكل قائمتنا من العنصر الذي ترك للتو نافذة انزلاق والعنصر الذي دخل للتو قائمة نحن فقط مضغوط، لدينا وظيفة انزلاق يأخذ الرقم الأول x بعيدا عن المتوسط ​​ويضيف الرقم الثاني ذ نحن ثم تمرير s ثانية على طول والعودة ق مقسوما على p سند الثانية يأخذ فقط العضو الثاني من الزوج توبل، والذي يستخدم لاتخاذ قيمة العودة الثانية من ماباكومل، كما ماباكومل سيعود تراكم وكذلك القائمة المعينة. لأولئك من أنت لم تكن مألوفة مع رمز هو مشغل التطبيق انها لا تفعل حقا أي شيء ولكن لديه أدنى، الأسبقية ملزمة الارتباط، لذلك يعني أنك يمكن أن تخرج من الأقواس تأخذ علما ليسبيرس، إيفكس هو نفس و f x. Running ما 4 2 0، 4 0، 7 0، 6 0، 3 0، 8 0، 12 0، 9 0، 4 0، 1 0 الغلة 4 75، 5 0، 6 0، 7 25، 8 0، 8 25، 6 5 عن أي حل. أوه وسوف تحتاج إلى استيراد قائمة وحدة لتجميع أي حل. دانيال شكرا كتابة التعليمات البرمجية أسهل بكثير من شرح ذلك - لقد وصفت جوهر ذلك قائمتان القوائم يتم الاحتفاظ تيارات في كل من وظائف والحصول على رؤوسهم تؤخذ من خلال كل التكرار واحد قائمة تيار بمثابة المجموعة الرئيسية لتكرار من خلال في حين أن الآخر قائمة تيار، وهو نفس المجموعة باستثناء فترة أقل الزوجي تؤخذ منه، ويستخدم في حساب المتوسط ​​المتحرك الجديد والتر تشانغ أغسطس 24 09 في 17 19.The لغة البرمجة J يسهل برامج مثل المتوسط ​​المتحرك في الواقع، هناك عدد الأحرف أقل مما هو عليه في التسمية الخاصة بهم، المتوسط ​​المتحرك. بالنسبة للقيم المحددة في هذا السؤال بما في ذلك قيم الاسم هنا هو طريقة مباشرة لرمز هذا. يمكننا وصف هذا باستخدام تسميات للمكونات. أمثلة مثل استخدام بالضبط نفس البرنامج فقط الفرق هو استخدام المزيد من الأسماء في النموذج الثاني يمكن أن تساعد هذه الأسماء القراء الذين لا تعرف J بريمارز. دعونا ننظر قليلا إلى ما يحدث في البرنامج الفرعي، متوسط ​​د يصف التوليف ويشير إلى تقسيم مثل علامة الكلاسيكية حساب عدد حصيلة من البنود يتم عن طريق البرنامج العام، ثم، هو مجموع القيم مقسوما على رصيد القيم. نتيجة حساب المتوسط ​​المتحرك المكتوب هنا لا تشمل مما يؤدي الأصفار المتوقع في السؤال الأصلي تلك الأصفار هي يمكن القول إن ليس جزءا من حساب المقصود. الاستخدام المستخدمة هنا يسمى البرمجة الضمنية فمن جدا إلى حد كبير نفس نمط خالية من نقطة من وظيفية programming. enced أغسطس 26 10 في 16 15. هنا كلوجور التظاهر أن تكون لغة أكثر وظيفية هذا هو تماما الذيل العودية، راجع للشغل، ويشمل زيروز الرائدة. عادة ما أضع مجموعة أو قائمة المعلمة الماضي لجعل وظيفة أسهل للكاري ولكن في Clojure. is مرهقة جدا، وعادة ما في نهاية المطاف القيام بذلك. في هذه الحالة، فإنه لا حقا يهم ما ترتيب المعلمات go. respage 24 أغسطس 09 في 4 56.Hi جوناثان، أنا م جديدة جميلة لهذه البرمجة الوظيفية، هل يمكن أن تفسر لي كيف هو ذيل-عودية شكرا جيمس P 24 أغسطس 09 في 14 38.The ريكورسيون يحدث على بيان إف، حيث يستند أي خيار على تكرور هذا سوف يحسب كل معلمة أولا، وبعد ذلك فقط ريكورس الجواب سيكون نتيجة لتكرار كما والنتيجة هي نفس النتيجة التي عادت من قبل العودية، مع عدم وجود حسابات أخرى، وهذا هو الذيل العودية دانيال C سوبرال 24 أغسطس 09 في 15 20. هذا المثال يجعل استخدام الدولة، حيث بالنسبة لي أنه حل عملي في هذه الحالة، و إغلاق لإنشاء وظيفة تحديد المتوسط ​​النافذة. أنها لا تزال وظيفية بمعنى الاستفادة من وظائف من الدرجة الأولى، على الرغم من أنها ليست الجانب-- تأثير الحرة اللغتين التي ذكرتها على حد سواء تشغيل على رأس جفم، إدارة عند الضرورة. تبين 24 أغسطس 09 في 1 55. هذا الحل هو في هاسكل، وهو أكثر دراية بالنسبة لي. في 24 أغسطس 09 في 10 23.I مثل استخدام بيان المباراة حاولت القيام بشيء مماثل، ولكن كانن جعل تماما كل شيء هناك جيمس P 24 أغسطس 09 في 14 39.A القصير كلوجور الإصدار الذي لديه ميزة من طول O طول القائمة بغض النظر عن الفترة. هذا يستغل حقيقة أنه يمكنك حساب مجموع مجموعة من الأرقام من خلال خلق مجموع تراكمي للتسلسل على سبيل المثال 1 2 3 4 5 - 0 1 3 6 10 15 ومن ثم طرح رقمين مع إزاحة يساوي الفترة الخاصة بك. في وقت متأخر من الحزب، وجديدة للبرمجة الوظيفية أيضا، جئت إلى هذا الحل مع وظيفة الداخلية. أقرت الفكرة، إلى تقسيم القائمة بأكملها قبل فترة لين مقدما ثم أنا توليد مجموع لتبدأ مع لين العناصر الأولى وأنا توليد أول، عناصر غير صالحة 0 0، 0 0. ثم أنا عودية بشكل متكرر الأول وإضافة القيمة الأخيرة في النهاية أنا ليستيفيي كل شيء. المساعدة 29 أبريل 10 في 19 28.In هاسكل بسيودوكود. الآن واحد حقا يجب أن يجرد 4 out. leases يوليو 23 13 في 13 45.The مفتاح هو وظيفة ذيول، الذي يضع قائمة إلى قائمة نسخ من القائمة الأصلية، مع الخاصية أن العنصر ن - ث من النتيجة في عداد المفقودين العناصر n-1 الأولى. نطبق فمل أفغ اتخاذ ن إلى النتيجة، وهو ما يعني أننا نأخذ البادئة n - طول من القائمة الفرعية، وحساب أفغ إذا كان طول القائمة نحن أفغ إنغ ليس n، ثم نحن لا نحسب المتوسط ​​لأنه غير محدد في هذه الحالة، نعود لا شيء إذا كان هو، ونحن نفعل، والتفاف عليه في فقط أخيرا، ونحن تشغيل كاتميبيس على نتيجة فماب أفغ اتخاذ ن، للتخلص من ربما type. views أكتوبر 21 13 في 1 29.I فوجئت وخيبة أمل من أداء ما بدا لي حلول كلوجور الاصطلاحية الأكثر جدية، جيمسكونينغهام ق حلول كسول-سيق. هنا هنا الجمع بين سا جيمس حل مع فكرة S التكيف مع الصيام، الأسيون لتحريك sums. Edit هذا واحد على أساس حل ميكيرا ق - هو حتى أسرع. مسألة جول 22 13 في 19 21.Your الجواب .2017 كومة الصرف، وشركة كلوجور البرمجة من قبل example. This يهدف إلى أن تكون اليدين على أول نظرة في كلوجور إذا كنت ترغب في محاولة الأمثلة كما تذهب، ثم قد ترغب في أن تكون قد أعددت بالفعل بيئة عمل وفقا ل حتى تتمكن من رؤية نتائج برامج التعليمات البرمجية. كلوجور المثال مكتوبة في نماذج أشكال المغلقة بين قوسين تشير إلى الدالة الدالة. يغلق الدالة مع الوسيطات 1 2 3 وإرجاع القيمة 6، مجموع الوسيطات. يمكن تعريف الدالات الجديدة باستخدام defn. Here x و y عبارة عن رموز تمثل وسيطات الإدخال الوظيفة مدعوة لتقسيم مجموع x و y بواسطة 2 لاحظ أن النماذج دائما في تدوين البادئة، مع الدالة متبوعة بواسطات لاحقة يمكن الآن استدعاء المتوسط ​​كما. وسوف يعود 4 في هذا المثال، المتوسط ​​هو رمز، وقيمته هي وظيفة الرجوع إلى شرح مفصل للنماذج. كلوجور يوفر سهولة الوصول إلى JVM. This يدعو طريقة العرض على نتيجة منها يبني جفريم ملاحظة المحطة الكاملة قبل استدعاء الأسلوب وقفة كاملة بعد البناء تشير إلى. يمكن تمرير وظائف إلى وظائف أخرى. الرجوع 5 7 9 خريطة هي وظيفة التي تأخذ وظيفة أخرى ويدعو ذلك مع الحجج مأخوذة من المجموعات التالية في حالتنا قمنا بتوفير وظيفة واثنين من المتجهات من الأعداد الصحيحة والنتيجة هي قائمة نتائج الدعوة مع الحجج المأخوذة من ناقلات استخدام وظائف كحجج إلى وظائف أخرى قوية جدا يمكننا استخدام لدينا وظيفة محددة مسبقا مع خريطة مثل so. returns 5 2 7 2 9 2 ونحن نرى هنا أن كلوجور يدعم النسب لأنواع البيانات تشير إلى قائمة كاملة. يمكن أيضا وظائف العودة وظائف أخرى. هنا أدكس سيعود وظيفة جديدة تأخذ 1 الوسيطة ويضيف س إلى it. returns الدالة التي يمكن أن يسمى مع 1 وسيطة وسوف تضيف 5 إلى it. returns 6 7 8 9 10 وصفنا الخريطة مع نتيجة أدكس، والتي كانت الدالة التي تأخذ حجة ويضيف 5 تم استدعاء هذه الوظيفة على قائمة الأرقام التي زودنا. هناك هو طريقة الاختزال لإنشاء وظيفة لم يكشف عن اسمها. سوف إنشاء وظيفة التي تدعو مع اثنين من الحجج 1 و 2. سوف تضيف 5 إلى قائمة الأرقام التي زودنا القدرة على تمرير وإنشاء وظائف حيوي ويشار إلى وظائف من الدرجة الأولى. البرامج الوظيفية يعامل الحساب كما تقييم الوظائف الرياضية ويتجنب الدولة والبيانات القابلة للتبديل في لغة حتمية كنت عادة خلق المتغيرات وتغيير قيمتها بشكل منتظم في كلوجور يمكنك إرجاع نتائج جديدة دون تعديل ما كان هناك من قبل. الواجهات دون آثار جانبية تحرير. الجهة الجانب يمكن أن تغير تأثيرات قيم المدخلات أو تغيير البيانات العالمية أو أداء IO. Imperative فواب موفبلاير p، x، y. updates كائن لاعب مع موقع location. Object أورينتد كلاس player. again، يحور كائن موجود. يتم إرجاع x يا لاعب جديد تماما، لاعب قديم لا يتأثر. في حتمية كنت أعرف فقط أن p قد تغير لأن اسم وظيفة يلمح ذلك و ميج هت قد تغيرت أشياء أخرى مثل بعض البيانات العالمية وكذلك في فب القديم يتم الاحتفاظ كنت لا داعي للقلق حول ما حدث لها أو العالم - لا شيء يمكن أن تتغير وأنه من الواضح أن لاعب جديد يتم إرجاع نتيجة للتحرك. المزايا الرئيسية هنا هي المنطق، قابلية الاختبار، والتزامن اللغة يفرض أنه لا توجد آثار جانبية حتى تتمكن من استنتاج السلوك المدخلات خريطة مباشرة إلى المخرجات مما يجعل من الأسهل لبناء والتفكير في حالات الاختبار اثنين من المواضيع يمكن أن تعمل في وقت واحد على نفس البيانات مع عدم وجود خطر لهم تفسد بعضها البعض، كما لن يتم تغيير البيانات. النظر إزالة عنصر من قائمة الحل الحتمي من شأنه تعديل القائمة في مكان حل وظيفي سيعود قائمة جديدة تماما، وترك الأصلي في مكان هذا يبدو على السطح أن يكون التبذير، ولكن هناك العديد من الطرق التي يتم تحسين هذا من قبل مترجم أن تكون فعالة جدا. Code من دون متغيرات لشخص يستخدم لبرامج حتمية يمكن أن تتخذ آل إيتل تعتاد على هنا هو دليل سريع لتحويل رمز نمط متغير في code. You وظيفية تريد أن تتراكم بعض التغييرات Edit. Rearrange هذا النوع من الأشياء في شكل لا يتطلب أي متغيرات. المدى 1 100 2 يخلق تسلسل كسول من الأرقام 1 3 5 7 99 1 هو نقطة الانطلاق، 100 هو نقطة النهاية، 2 هي الخطوة تقليل المكالمات الدالة أولا أنها تدعو مع اثنين من الحجج، أول رقمين المقدمة من مجموعة ثم فإنه يدعو مرة أخرى مع النتيجة السابقة والعدد التالي، حتى يتم استنفاد جميع الأرقام كلوجور لديها الكثير من الدعم لتسلسل والمجموعات والعمليات عالية المستوى كما تعلمتها، وسوف تجد طرق معبرة جدا لكتابة المهام مثل هذا. أنت تريد أن تتكرر بدلا من استخدام حلقة تكرار بناء إديتبوتس فاكتوريال من 5 حلقة شكل خاص يؤسس الارتباطات تليها التعبيرات التي سيتم تقييمها في هذا المثال 5 لا بد أن i و 1 لا بد أن أسك إذا شكل خاص ثم اختبارات ما إذا كان هو يساوي الصفر وبما أنه لا يساوي 0، يتكرر ريبيديندس القيم الجديدة إلى i و أسك قبل أن يعود السيطرة مرة أخرى إلى الجزء العلوي من حلقة من أجل إعادة تقييم الجسم من تعبيراته A ديكريمنت i ديك i هو ارتداد إلى i و المنتج من أسك و i أسك أنا انتعاش إلى أسك هذه الحلقة تسمى بشكل متكرر حتى يساوي 0 أسك يخزن نتيجة ضرب كل قيمة أخذت لاحظ أن ملزم يتصرف مثل متغير. أيضا، يمكن أن تتكرر استهداف إما حلقة أو وظيفة تعريف. في على سبيل المثال، وظيفة عاملية يمكن أن تتخذ إما 1 حجة ن، مما يؤدي إلى تقييم. أو توريد 2 الحجج النتائج في تقييم of. recur مهم لأنه يكرر المدخلات وظيفة s بدلا من إضافة مكالمة عودية إلى المكدس كنا بدلا من ذلك فاكتوريال ديك n أس n n سيكون لدينا سلوك مماثل، ولكن بالنسبة للقيم الكبيرة من n، قد تتسبب في تجاوز كومة لاحظ أيضا أننا قدمنا ​​تعريفي للمصطلح، واحد مع وسيطة واحدة، وآخر مع وسيطتين يستدعي المستخدم نسخة واحدة من الوسيطة، والتي يتم ترجمتها إلى شكل حجتين للتقييم إن دالة الدالة هي عدد الوسيطات التي تأخذها الدالة. وبالطبع كنا نستطيع كتابة تعريف أبسط مماثل إلى المبلغ السابق المثال الغريب. تحتاج إلى حفظ نتيجة واستخدامها عدة مرات Edit. There هو السماح الكلي الماكرو الذي يربط رمزا لقيمة للاستخدام المحلي. في هذا السماح شكل رقم عشوائي بين 0 و 0 8 هو ولدت، يتم إضافة 0 2، والنتيجة ملزمة بالرمز g يتم إنشاء اللون مع القيم الخضراء الخضراء الزرقاء من g، والتي سوف تكون مقياس رمادي من كثافة تتراوح من 0 إلى 1.You تريد إجراء مكالمات طريقة متعددة على نفس الكائن تحرير. استخدام مكتبات جافا غالبا ما يضعك في الوضع حيث كنت ترغب في استخدام متغير محلي نضع في اعتبارنا دوتو الشيء العظيم حول دوتو هو أنه يعود الكائن بعد تطبيق عدة calls. Mutating متغيرات الدولة دائمة Edit. Clojure يدعم العديد من أنواع قابلة للتغيير، ولكن من المهم أن نعرف الفرق بينهما وكيف تتصرف الأنواع المقدمة هي ريفس، وكلاء، ذرات و فارس. هي مثل خلايا ريف في مل، مربعات في مخطط، أو مؤشرات بلغات أخرى فمن مربع، أنه يمكنك تغيير محتويات بو t على عكس لغات أخرى، تطور هو أنه يمكنك فقط إجراء التغيير داخل معاملة هذا يضمن أن اثنين من مؤشرات الترابط لا يمكن أن يكون تعارض عند تحديث أو الوصول إلى ما يتم تخزينه داخل r. declares r ليكون المرجع مع القيمة الأولية من nil. sets r إلى 5 في معاملة. get قيمة r، وهو 5 لاحظ أن r هو الاختزال ل ديريف r، ويعمل مع كل من كلوجوريس أنواع قابل للتعديل r نفسه هو المرجع، وليس قيمة. أجندات Edit. Agents يتم تعديلها بواسطة الدالات بشكل غير متزامن تقوم بإرسال دالة للوكيل الذي سيقوم بتطبيق هذه الدالة لاحقا على قيمته الحالية غير متزامن لأنه يتم إرسال المكالمة لإرسالها فورا يتم وضع الدالة في قائمة انتظار في تجمع ترابط للتنفيذ مما يوفر وصولا مناسبا إلى متعدد - في هذا المثال قمنا بتعريف وكيل بالقيمة الأولية 1 أرسلنا عامل إنك الدالة التي تزيد حجته الآن إرسال قوائم الانتظار التي تعمل للتنفيذ بواسطة تجمع ترابط تنتظر حتى يتم حظر كافة الوظائف المعلقة على وكيل h أفي الانتهاء من قيمة قيمة وكيل لدينا، والذي هو الآن 2، لأنه تم زيادة 1. يتم تعديل أتومز من قبل وظائف بشكل متزامن استدعاء مبادلة ويتم تطبيق الدالة التي العرض على قيمة الذرة قبل عوائد المبادلة. لاحظ أن مبادلة العوائد تكون نتيجة الدالة التي تم تطبيقها على قيمة الذرة الحالية منسقة في حين أن العوامل والذرات غير منسقة وهذا يعني أنه في بيئة متعددة الخيوط، يتم تعديل ريفس في معاملة تضمن أن مؤشر ترابط واحد فقط يمكن تعديل القيمة عند الوقت حيث أن الذرات والوكلاء يصطفون وظائف التغيير للتأكد من أن التغييرات تحدث ذريا كل منهم آمنة، وأنها مجرد استخدام استراتيجيات مختلفة لتوفير هذه السلامة. الفارس هي مثل المتغيرات العالمية في لغات أخرى الارتباط الجذر هو القيمة الافتراضية الأولية التي هي مشتركة من قبل جميع المواضيع يعمل بناء ملزم كما لو تم تغيير فار، ولكن يتم استعادتها تلقائيا إلى قيمته السابقة عند الخروج من نطاق الثبات ملزمة ruct. Establishes شيء فار مع قيمة 5 ديكلارينغ وظائف في الواقع يؤسس لهم كما فارس يجب تجنب استخدام ديف، وخاصة تجنب وضع الارتباطات المعلنة بالفعل مع ديف في وقت لاحق استدعاء شيء شيء 6 ليست عملية ترابط آمنة. لماذا لا يكون كلوجور المتغيرات المحلية هو السؤال المطروح في كثير من الأحيان طفرة محليا هو تماما كما من الصعب أن العقل حول كما طفرة في جميع أنحاء العالم، مستقلة عن التزامن انظر على سبيل المثال جافا نموذجية ل حلقة التي تعين فارس المحلية الأخرى ويحتوي على عوائد فواصل إذا كان يأخذ المزيد من التفكير في البداية لبناء الحلول التي لا تحتاج المتغيرات، يرجى محاولة لإنفاق الجهد - وسوف تسدد لك عدة مرات أكثر من ذلك. ومع ذلك لدعم الترجمة المباشرة للخوارزميات حتمية، وهناك ماكرو مفيد يسمى مع المحلية-فارس الذي يعلن فارس المحلية التي يمكن تغييرها مع فار-سيت وقراءة مع فار-جيت أو ل Shorthand. This هو نسخة من عامل باستخدام المتغيرات كما ترون أنها ليست لطيفة كما الإصدارات الموضحة في وقت سابق، وهو محض للتدليل على فار المحلية ملزمة هذا الدالة آمنة تماما للاتصال في بيئة متعددة الخيوط كما المتغيرات المحلية ولكن لا يمكن السماح المتغيرات المحلية لتسرب من نطاقها. الأسباب فار فارغ غير منضم والسبب هو t تقوم الوسيطة f بإرجاع دالة جديدة تضيف 2 إلى متغير محلي معرف في f لذا فإن الدالة التي تم إرجاعها تحاول التمسك بمتغير محلي f. الآن المتغيرات المحلية عرضة للتغيير ولكن إذا كان التغيير يحدث في بيئة متعددة الخيوط ، وأن المتغير قد تسرب خارج نطاقه الأصلي، فإن التغيير لن يكون محليا أي more. Closure هو مصطلح يستخدم عندما يتم الاحتفاظ الرموز خارج تعريفها. هنا أنشأنا وظيفتين التي على حد سواء الوصول إلى سر السري أنشأنا لهم داخل السماح ، لذلك سر غير مرئية في نطاقنا الحالي بعد الآن. الأسئلة غير قادر على حل سر السري في هذا السياق. ومع ذلك فإن الوظائف نفسها قد احتفظت سرا ويمكن استخدامها للاتصال. النتائج في أي شيء. كلوجور المتوسط ​​المتحرك من جافا إلى Clojure. Clojure لديه للعمل مع طوابير أنا لا أعرف لماذا لا يكون لديها الماكرو القارئ، ولكن يعمل بشكل جيد ويعود لك مجموعة كلوجور يمكنك التعامل مع سلبيات ونظرة خاطفة. يمكنك البدء مع طابور فارغة مع أو إدراج العناصر الخاصة بك في buildor. i كتبت بعض المواد عن ذلك باللغة البرتغالية إذا كان لديك أي مصلحة. في 20 07 2014، في 08 48، سيسيل ويسترهوف كتبت. أنا أتساءل فقط ما هي أفضل طريقة لترجمة هذا إلى كلوجور. في هذه اللحظة كلوجور ليس لديها طابور يجب أن مجرد استخدام مكالمات جافا، أو هناك طريقة أفضل .-- سيسيل ويسترهوف - لقد تلقيت هذه الرسالة لأنك مشترك في مجموعة كلوجور مجموعات جوجل لنشر إلى هذه المجموعة، إرسال البريد الإلكتروني إلى ملاحظة أن المشاركات من الأعضاء الجدد هي خاضعة للإشراف - يرجى التحلي بالصبر مع أول وظيفة لإلغاء الاشتراك من هذه المجموعة، وإرسال البريد الإلكتروني إلى كلوجور لمزيد من الخيارات، قم بزيارة هذه المجموعة في --- لقد تلقيت هذه الرسالة لأنك مشترك في مجموعات غوغل كلوجور غرو p لإلغاء الاشتراك من هذه المجموعة وإيقاف تلقي رسائل البريد الإلكتروني منه، أرسل بريدا إلكترونيا إلى لمزيد من الخيارات، قم بزيارة .-- لقد تلقيت هذه الرسالة لأنك مشترك في مجموعة كلوجور مجموعات غوغل للنشر إلى هذه المجموعة، إرسال بريد إلكتروني إلى ملاحظة أن يتم الإشراف على المشاركات من الأعضاء الجدد - يرجى التحلي بالصبر مع أول وظيفة لإلغاء الاشتراك من هذه المجموعة، وإرسال البريد الإلكتروني إلى كلوجور لمزيد من الخيارات، قم بزيارة هذه المجموعة في --- لقد تلقيت هذه الرسالة لأنك مشترك في مجموعة كلوجور مجموعات جوجل ل إلغاء الاشتراك من هذه المجموعة ووقف تلقي رسائل البريد الإلكتروني منه، وإرسال بريد إلكتروني إلى لمزيد من الخيارات، visit. Mike فيكس هناك في الواقع تنفيذ قائمة الانتظار هنا هو وسيلة لاستخدامها لمشكلتك ديفن جعل تتحرك-متوسط-طابور ن ذرة ديفن أوبديت-موفينغ-أفيراج-كويو قديم قائمة الانتظار القيمة التالية السماح الحالي مجموع إجمالي القديم قائمة الانتظار القيم القديمة القيمة القديمة تحتوي على القيم القديمة القديمة قائمة الانتظار القيمة التالية إذا عد القيم القديمة طول الطابور القديم السماح الحالي - العدد الإجمالي الحالي القيم القديمة القديمة القديمة القيم. هناك في الواقع تنفيذ طابور هنا هو وسيلة لاستخدامها لمشكلتك. ديفن ميك-موفينغ-أفيراج-كويو n أتوم كيرنت-توتال 0 0 القيم القديمة. ديفن أوبديت-موفينغ-أفيراج-كويو أولد-كويو نيكست-فالو السماح بالقيمة الحالية الإجمالية القديمة القديمة قائمة الانتظار القديمة القيم القديمة القيم القديمة القديمة قائمة الانتظار قائمة الانتظار إذا كان عدد القيم القديمة طول الطابور السماح القديم المجموع الحالي - المجموع الحالي القيم القديمة القديمة القديمة القيم القديمة البوب ​​القديمة القيم أسوك القديم قائمة الانتظار الحالية المجموع الكلي القيم القديمة القيم القديمة أسوك القديم قائمة الانتظار الحالية مجموع القيم القديمة القديمة القديمة القيم القديمة . ديفن موفينغ-أفيراج أولد-كويو نيكست-فالو السماح بتبديل قائمة انتظار جديدة قائمة انتظار قائمة الانتظار الجديدة-تحريك-متوسط-طابور القيمة الحالية الحالية-مجموع قائمة الانتظار الجديدة-القيم القديمة الجديدة-قائمة الانتظار. ديف-06 موف-موفينغ-أفيراج-كويو 6. ديف إنبوتس-06 20 22 21 24 24 23 25 26 20 24 26 26 25 27 28 27 29 27 25 24. جودق مدخلات المدخلات 06 برينتلن موفينغ-أفيراج كويو-06 إدخال. ديف-10-ميك-موفينغ-أفيراج-كويو 10. ديف إنبوتس-10 20 22 24 25 23 26 28 26 29 27 28 30 27 29 28. دوسق مدخلات المدخلات -10 برينتلن موفينغ-أفيراج كويو-10 إنبوت .- أنت تلقيت هذه الرسالة لأنك مشترك في مجموعة كلوجور لمجموعات غوغل لنشرها على هذه المجموعة، أرسل رسالة إلكترونية إلى ملاحظة أن المشاركات من الأعضاء الجدد تخضع للإشراف - يرجى التحلي بالصبر مع مشاركتك الأولى لإلغاء الاشتراك في هذه المجموعة، أرسل بريدا إلكترونيا إلى كلوجور للمزيد خيارات، زيارة هذه المجموعة في --- لقد تلقيت هذه الرسالة لأنك مشترك في مجموعة كلوجور مجموعات جوجل لإلغاء الاشتراك في هذه المجموعة ووقف تلقي رسائل البريد الإلكتروني منه، وإرسال بريد إلكتروني إلى لمزيد من الخيارات، قم بزيارة. ميك فيكس هي سيسيل، بالإضافة إلى استخدام نظرة خاطفة بدلا من الأولى، كما أشار بلينيو، وظيفة المتوسط ​​المتحرك أعلاه يستخدم بعض الأسماء الفقيرة، في وقت متأخر، وخاصة اسم المعلمة القديم قائمة الانتظار I د تشير إلى تسمية طابور، كما أنه يشير إلى ذرة هل يمكن أن حتى النظر في تسمية وظيفة تتحرك المتوسط ​​- تلقيت ث هو رسالة لأنك مشترك في مجموعة كلوجور مجموعات جوجل لنشر هذه المجموعة، وإرسال البريد الإلكتروني إلى البريد الإلكتروني المحمية لاحظ أن المشاركات من الأعضاء الجدد are. at 20 يوليو 2014 في 1 52 م. بالإضافة إلى استخدام نظرة خاطفة بدلا من الأولى، كما أشارت بلينيو، فإن وظيفة المتوسط ​​المتحرك أعلاه تستخدم بعض الأسماء الضعيفة، في وقت متأخر، وخاصة اسم المعلمة القديم في قائمة الانتظار I d توحي بتسمية الطابور، كما يشير إلى ذرة يمكنك حتى النظر في تسمية الدالة تتحرك المتوسط. - لقد تلقيت هذه الرسالة لأنك مشترك في مجموعة كلوجور لمجموعات غوغل لنشرها على هذه المجموعة، أرسل رسالة إلكترونية إلى ملاحظة أن المشاركات من الأعضاء الجدد تخضع للإشراف - يرجى التحلي بالصبر مع مشاركتك الأولى لإلغاء الاشتراك في هذه المجموعة، أرسل بريدا إلكترونيا إلى كلوجور لمزيد من الخيارات، قم بزيارة هذه المجموعة في --- لقد تلقيت هذه الرسالة لأنك مشترك في مجموعة كلوجور لمجموعات غوغل لإلغاء الاشتراك في هذه المجموعة وإيقاف تلقي رسائل البريد الإلكتروني منها، أرسل رسالة إلكترونية إلى لمزيد من الخيارات، يرجى زيارة جوني هدسون P ليس بالضرورة الإجابة التي تبحث عنها، ولكن المتوسط ​​المتحرك المرجح أضعافا لا يتطلب أي دولة أخرى غير القيمة الحالية ديفن إوما ألفا فنغ نيو - 1 ألفا أفغ ألفا جديد جوني - لقد تلقيت هذه الرسالة لأنك مشترك في مجموعة مجموعات كلوجور من غوغل للنشر على هذه المجموعة، أرسل بريدا إلكترونيا إلى البريد الإلكتروني المحمي لاحظ أنه يتم الإشراف على المشاركات من الأعضاء الجدد - يرجى التحلي بالصبر من خلال مشاركتك الأولى لإلغاء الاشتراك في هذه المجموعة، أرسل. أحد الأحد 20 تموز (يوليو) 2014 12 48 19 أوتك 1، سيسيل ويسترهوف كتبت. أو هل هناك طريقة أفضل. ربما ليس الجواب الذي تبحث عنه، ولكن المتوسط ​​المتحرك المرجح أضعافا لا تتطلب أي دولة أخرى غير القيمة الحالية. ديفن إوما ألفا فن أفغ نيو - 1 ألفا أفغ ألفا نيو .-- لقد تلقيت هذه الرسالة لأنك مشترك في مجموعة كلوجور لمجموعات غوغل لنشر هذه المجموعة، أرسل بريدا إلكترونيا إلى ملاحظة أنه يتم الإشراف على المشاركات من الأعضاء الجدد - يرجى التحلي بالصبر with your first post To unsubscribe from this group, send email to clojure For more options, visit this group at --- You received this message because you are subscribed to the Google Groups Clojure group To unsubscribe from this group and stop receiving emails from it , send an email to For more options, visit.

No comments:

Post a Comment