تتحرك متوسط كلوجور
في dev8d الأسبوع الماضي كنت حريصة على الذهاب إلى سكالا دوجو. سكالا هو لغة جفم حديثة أخرى، ولكن أكثر من ذلك بكثير مثل مل من ليسب. بينما كنت هناك ترجمة برنامج شجرة كسورية من كلوجور إلى سكالا. كما ترون، هم على نحو فعال نفس البرنامج. خطوط الأوامر لتشغيلها هي: كلج fractaltree. clj سكالاك ScalaFractalTree. scala أمبامب سكالا سكالافراكتالتري يصبح على الفور واضح أن إصدار سكالا هو أسرع بكثير. حاولت استخدام (مجموعة تحذير على انعكاس صحيح)، الذي قال لي أنني بحاجة إلى كتابة تلميح كائنات الرسومات في برنامج كلوجور، وتقول أيضا شيئا عن جبانيل وكيل. أنا لا أعرف كيفية إصلاح ذلك، ولكن أنا لا أعتقد أنها دعا في كثير من الأحيان بما فيه الكفاية لتكون مهمة. لم يظهر تلميحات نوع الرسومات لتسريع إصدار كلوجور قليلا، ولكن لا يزال أبطأ بشكل ملحوظ من سكالا. إم يفترض أن المكالمات المتكررة لرسم شجرة هي الملاكمة و أونبوكسينغ المعلمات في إصدار كلوجور. لا أحد يعرف ما إذا كان هذا هو الحال، وإذا كان الأمر كذلك ما يمكن القيام به حيال ذلك هيريس سكالا الإصدار 4 تعليقات: حاولت على حد سواء وأنها don39t تبدو مختلفة اختلافا كبيرا بالنسبة لي. خاصة عند استبعاد وقت التجميع. هل لديك أي أرقام محددة كلوجور أوتوبوكسيس كل شيء في حدود استدعاء الدالة، أي جميع الحجج وقيمة الإرجاع كلها محاصر. لذلك، نعم، سوف المكالمات المتكررة رسم شجرة يكون حججهم محاصر. إيرك شيء يمكن القيام به حول الملاكمة حول المكالمات وظيفة في حد ذاته. ما يمكنك القيام به هو علامة الدالة كما إنلينابل أو تحويلها إلى ماكرو في هذه الحالة وظيفة استدعاء نفسه يحصل تجميعها بعيدا، ولكن I39m غير متأكد من مدى أن من شأنها أن تعمل مع وظيفة عودية مثل رسم شجرة. إصدار كلوجور هو أسرع بكثير إذا كنت رمز مثل إصدار سكالا. في إصدار كلوجور قمت بإنشاء اثنين من إغلاق لكل دعوة رسم شجرة - جديد طول وزاوية جديدة على حد سواء الحصول على تقييم مرتين ريسبكتيفيلي. في رمز سكالا يمكنك فقط إنشاء القيم الأربعة المطلوبة مباشرة. إذا أنا رمز النسخة كلوجور من هذا القبيل وكذلك هو أسرع بكثير - ليس من المستغرب لأنه لم يعد لديه لإنشاء عمليات الإغلاق وندعو لهم. عندما اكتب تلميح جميع الوسيطات لرسم شجرة (أي ديفن رسم شجرة الرسومات g2d زاوية مزدوجة مزدوجة س مزدوجة ذ مزدوج طول مزدوج فرع زاوية عمق صحيح). فإنه يشعر حتى أسرع قليلا، ولكن هذا قد يكون التمني بالتمني. كلوجور وظائف و اتجاه الطلب من الإعلانات الوظائف نقلا عن كلوجور كنسبة من جميع وظائف تكنولوجيا المعلومات مع مباراة في فئة لغات البرمجة. كلوجور اتجاه الراتب يوفر هذا الرسم البياني المتوسط المتحرك لمدة 3 أشهر للرواتب المقتبسة في وظائف تكنولوجيا المعلومات الدائمة نقلا عن كلوجور داخل المملكة المتحدة. كلوجور الرسم البياني للمرتبات يوفر هذا الرسم البياني راتب بياني للوظائف تكنولوجيا المعلومات نقلا عن كلوجور على مدى 3 أشهر إلى 13 يناير 2017 داخل المملكة المتحدة. كلوجور أعلى 30 موقع عمل يبحث الجدول أدناه عن الطلب ويقدم دليلا للمرتبات المتوسطة المقتبسة في وظائف تكنولوجيا المعلومات نقلا عن كلوجور داخل المملكة المتحدة على مدى 3 أشهر إلى 13 يناير 2017. ويوفر عمود تغيير الترتيب مؤشرا على التغير في الطلب داخل كل موقع على أساس نفس الفترة 3 أشهر من العام الماضي. رتبة تغيير في نفس الفترة من العام الماضي مطابقة دائم وظائف تكنولوجيا المعلومات الإعلانات متوسط الراتب 3 أشهر في نهاية هذا الأسبوع قررت أن أحاول يدي في بعض سكالا و كلوجور. إم يتقن مع البرمجة الموجهة نحو الكائن، وهكذا كان سكالا سهلة لالتقاط كلغة، ولكن أراد أن يجرب البرمجة الوظيفية. هذا هو المكان الذي حصلت عليه من الصعب. أنا فقط لا يمكن أن يبدو للحصول على رأسي في وضع من وظائف الكتابة. كمبرمج وظيفي خبير، كيف يمكنك التعامل مع مشكلة نظرا لقائمة القيم وفترة محددة من الجمع، كيف يمكنك إنشاء قائمة جديدة للمتوسط المتحرك البسيط للقائمة على سبيل المثال: نظرا لقيم القائمة (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) قضيت يوما في بحثها، وأفضل ما يمكن أن أخرج في سكالا كان هذا: وأنا أعلم أن هذا غير فعال بشكل فظيع، إد الكثير من ذلك بكثير تفعل شيئا مثل: الآن أن يتم ذلك بسهولة في أسلوب حتمية، ولكن أنا غير قادر على الحياة من لي العمل على التعبير عن ذلك وظيفيا. مشكلة مثيرة للاهتمام. أستطيع أن أفكر في العديد من الحلول، بدرجات متفاوتة من الكفاءة. الحاجة إلى إضافة الأشياء مرارا وتكرارا ليست حقا مشكلة في الأداء، ولكن دعونا نفترض أنها. أيضا، الأصفار في البداية يمكن أن يسبق في وقت لاحق، لذلك دعونا لا تقلق بشأن إنتاجها. إذا كان الخوارزمية توفر لهم بشكل طبيعي، غرامة إن لم يكن، ونحن تصحيح ذلك في وقت لاحق. بدءا من سكالا 2.8، ما يلي سوف تعطي النتيجة ل ن فترة غ باستخدام الانزلاق للحصول على نافذة منزلقة من القائمة: ومع ذلك، على الرغم من أن هذا هو أنيق إلى حد ما، فإنه لا يملك أفضل أداء ممكن، لأنه لا يستفيد من بالفعل إضافات محسوبة. لذلك، يتحدثون عنها، كيف يمكننا الحصول عليها دعونا نقول نحن نكتب هذا: لدينا قائمة من مجموع كل اثنين من أزواج. لنحاول استخدام هذه النتيجة لحساب المتوسط المتحرك ل 4 عناصر. وقد قامت الصيغة أعلاه بالحساب التالي: فإذا أخذنا كل عنصر ونضيفه إلى العنصر التالي الثاني، نحصل على المتوسط المتحرك ل 4 عناصر: قد نفعل ذلك كما يلي: يمكننا عندئذ حساب المتوسط المتحرك ل 8 عناصر، وما إلى ذلك وهلم جرا. حسنا، هناك خوارزمية معروفة لحساب الأشياء التي تتبع هذا النمط. الأكثر شهرة لاستخدامها على حساب قوة عدد. وغني عن مثل هذا: لذلك، يتيح تطبيقه هنا: لذلك، هيريس المنطق. الفترة 0 غير صالحة، الفترة 1 تساوي المدخلات، الفترة 2 هو انزلاق نافذة الحجم 2. إذا أكبر من ذلك، قد يكون حتى أو فردي. إذا غريب، نضيف كل عنصر إلى موفينغسوم من العناصر التالية (فردي - 1). على سبيل المثال، إذا كان 3، نضيف كل عنصر إلى موفينغسوم من العناصر التالية 2. إذا حتى، نحسب موفينغسوم ل n 2. ثم إضافة كل عنصر إلى واحد n 2 خطوات بعد ذلك. مع هذا التعريف، يمكننا أن نعود بعد ذلك إلى المشكلة ونفعل ذلك: ثيرس عدم كفاءة طفيف فيما يتعلق باستخدام. ولكن O (الفترة)، وليس O (القيم. size). ويمكن أن تكون أكثر كفاءة مع وظيفة الذيل العودية. وبطبيعة الحال، فإن تعريف انزلاق أنا المقدمة هو أداء رهيبة من الحكمة، ولكن سيكون هناك تعريف أفضل بكثير من ذلك على سكالا 2.8. لاحظ أننا لا يمكن أن تجعل طريقة انزلاق كفاءة على قائمة. ولكن يمكننا أن نفعل ذلك على إترابل. بعد أن قلت كل ذلك، معرف الذهاب مع التعريف الأول جدا، وتحسين فقط إذا كان تحليل المسار الحرجة تحديد هذا باعتباره صفقة كبيرة. في الختام، دعونا نأخذ في الاعتبار كيف ذهبت نحو المشكلة. لدينا مشكلة متوسط متحرك. المتوسط المتحرك هو مجموع نافذة متحركة على القائمة مقسوما على حجم تلك النافذة. لذا، أولا، أحاول الحصول على نافذة منزلقة، جمع كل شيء على ذلك، ومن ثم تقسيم حسب الحجم. وكانت المشكلة التالية هي تجنب تكرار الإضافات المحسوبة بالفعل. في هذه الحالة، ذهبت إلى أصغر إضافة ممكنة، وحاولت معرفة كيفية حساب مبالغ أكبر إعادة استخدام هذه النتائج. وأخيرا، دعونا نحاول حل المشكلة بالطريقة التي تراها، عن طريق الجمع والطرح من النتيجة السابقة. الحصول على المتوسط الأول سهل: الآن نصنع قائمتين. أولا، قائمة العناصر التي سيتم طرحها. بعد ذلك، قائمة العناصر التي يمكن إضافتها: يمكننا إضافة هاتين القائمتين باستخدام الرمز البريدي. هذه الطريقة سوف تنتج فقط العديد من العناصر مثل القائمة الأصغر لديها، والتي تتجنب مشكلة طرح كونها أكبر من اللازم: ننتهي عن طريق تأليف النتيجة مع أضعاف: وهو الجواب ليتم إرجاعها. وظيفة كاملة تبدو مثل هذا: وأنا أعلم كلوجور أفضل من سكالا، حتى هنا يذهب. وأنا أكتب هذا الإدخال كلوجور الأخرى هنا أمر حتمي أن ليس حقا ما كنت بعد (و ليس اصطلاحية كلوجور). الخوارزمية الأولى التي تأتي إلى ذهني مرارا وتكرارا أخذ عدد المطلوب من العناصر من تسلسل، وإسقاط العنصر الأول، ومتكررة. يعمل ما يلي على أي نوع من تسلسل (ناقلات أو قائمة، كسول أم لا) ويعطي تسلسل كسول من المتوسطات --- التي يمكن أن تكون مفيدة إذا كنت تعمل على قائمة ذات حجم غير محدد. لاحظ أنه يعتني القضية الأساسية عن طريق إعادة ضمنا لا شيء إذا كان هناك أرينت ما يكفي من العناصر في القائمة للاستهلاك. تشغيل هذا على عائدات بيانات الاختبار الخاص بك فإنه لا يعطي 0 للعناصر القليلة الأولى في تسلسل، على الرغم من أن يمكن التعامل معها بسهولة (إلى حد ما بشكل مصطنع). أسهل شيء من كل شيء هو أن نرى نمط وتكون قادرة على أن نضع في اعتبارنا وظيفة المتاحة التي تناسب مشروع القانون. قسم يعطي نظرة كسول من أجزاء من تسلسل، والتي يمكننا بعد ذلك خريطة أكثر من: سأل أحدهم عن الذيل نسخة عودية ذيل العودية مقابل الكسل هو قليلا من المبادلة. عندما عملك هو بناء قائمة ثم جعل وظيفة الذيل عودية الخاص بك هو عادة بسيطة جدا، وهذا ليس استثناء --- مجرد بناء قائمة كحجة إلى وظيفة فرعية. حسنا تتراكم إلى ناقلات بدلا من قائمة لأنه بخلاف ذلك سيتم بناء القائمة إلى الوراء، وسوف تحتاج إلى عكس في نهاية المطاف. حلقة هي وسيلة لجعل وظيفة داخلية مجهولة (نوع من مثل مخططات اسمه السماح) تتكرر يجب أن تستخدم في كلوجور للقضاء على ذيل المكالمات. كونج هو سلبيات المعمم. إلحاق بالطريقة الطبيعية لجمع --- بداية القوائم ونهاية المتجهات. أجاب 24 أغسطس 09 في 2:58 قررت I39ve إضافة إلى هذا Q القديم، لأن الموضوع جاء مرة أخرى (stackoverflowquestions2359821hellip) وأجد أنه من الأفضل أن نشير إلى هذه المجموعة لطيفة من الحلول الممكنة في حين إضافة بلدي اتخاذ (الذي يختلف عن الإصدارات السابقة في كلوجور، كما هو موضح في A). ربما يمكننا بناء مستودع Web39s الأكثر اكتمالا من تطبيقات موف-أفغ وظيفية -) نداش ميشيكا ماركسيك مارس 2 10 في 0:20 هيريس خط واحد خالية من خط واحد حل هاسكل: أولا أنه ينطبق ذيول إلى قائمة للحصول على قوائم ذيول ، لذلك: عكسه وإسقاط أول إدخالات p (أخذ p 2 هنا): في حال كنت أرينت مألوفة مع (.) رمز دوتنيبل، هو المشغل لتكوين وظيفي، وهذا يعني أنه يمر إخراج وظيفة واحدة كما في المدخلات من آخر، يؤلف لهم في وظيفة واحدة. (g f) يعني تشغيل f على قيمة ثم تمرير الإخراج إلى g، لذلك ((f. g) x) هو نفسه (g (f x)). عموما يؤدي استخدامه إلى أسلوب البرمجة أكثر وضوحا. ثم يقوم بتعيين الدالة (((فرومينتغرال p)). لذلك لكل قائمة في القائمة فإنه يأخذ العناصر الأولى p، مبالغ لهم، ثم يقسم لهم من قبل ص. ثم نحن مجرد الوجه القائمة مرة أخرى مع عكس. كل هذا يبدو أكثر كفاءة بكثير مما هو عكس عكس جسديا عكس ترتيب قائمة حتى يتم تقييم القائمة، فإنه يضع فقط على كومة (جيد أول كسول هاسكل). ذيول أيضا لا يخلق كل تلك القوائم منفصلة، فإنه يشير فقط أقسام مختلفة من القائمة الأصلية. انها لا تزال ليست حلا كبيرا، ولكن سطر واحد طويل :) هيريس حل أجمل قليلا ولكن أطول يستخدم ماباكوم للقيام الطرح انزلاق وإضافة: أولا نحن تقسيم القائمة إلى قسمين في ص، لذلك: مجموع بت الأول: الرمز البريدي بت الثانية مع القائمة الأصلية (هذا فقط أزواج من العناصر في النظام من القائمتين). ومن الواضح أن القائمة الأصلية أطول، ولكننا نفقد هذه البتة الإضافية: الآن نحدد دالة لخريطتنا أكوم (أورولاتور). ماباكومل هو نفس الخريطة، ولكن مع معلمات ستاتكومولاتور تشغيل إضافية، والتي يتم تمريرها من تعيين السابق إلى واحد المقبل كما يتم تشغيل الخريطة من خلال القائمة. نحن نستخدم تراكم كمتوسطنا المتحرك، وبما أن قائمتنا تتكون من العنصر الذي ترك للتو نافذة انزلاق والعنصر الذي دخل لتوه (القائمة نحن فقط مضغوط)، لدينا وظيفة انزلاق يأخذ الرقم الأول x بعيدا عن متوسط ويضيف الرقم الثاني ذ. ثم نقوم بتمرير s ثانية على طول والعودة s مقسوما على p. سند (الثانية) يأخذ فقط العضو الثاني من زوج (توبل)، والذي يستخدم لاتخاذ قيمة العودة الثانية من ماباكومل، كما ماباكومل سيعود تراكم وكذلك القائمة المعينة. بالنسبة لأولئك منكم لم تكن مألوفة مع الرمز. هو مشغل التطبيق. فإنه لا يفعل أي شيء إلا أنه يحتوي على الأسبقية ملزمة، ارتباط الارتباط الحديدي، لذلك يعني أنك يمكن أن تخرج من بين قوسين (لاحظ ليسبرس)، أي (فكس) هو نفس فكس الجري (ما 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 لأي حل. أوه وسوف تحتاج لاستيراد قائمة وحدة لتجميع أي حل. دانيال شكرا كتابة التعليمات البرمجية أسهل بكثير من شرح ذلك -) وصف يو 39ve جوهر منه. ويتم الاحتفاظ بقائمتين من القوائم في كلتا الوظيفتين والحصول على كوثادسكوت من خلال كل تكرار. واحدة ليستستريم بمثابة المجموعة الرئيسية لتكرار من خلال بينما ليستستريم الأخرى، والتي هي نفس المجموعة باستثناء كوتبيريودكوت أقل الزوجي تؤخذ منه، ويستخدم في حساب المتوسط المتحرك الجديد. نداش والتر تشانغ 24 أغسطس 09 في 17:19 لغة البرمجة J يسهل برامج مثل المتوسط المتحرك. في الواقع، هناك عدد أقل من الأحرف في () في التسمية، المتوسط المتحرك. بالنسبة للقيم المحددة في هذا السؤال (بما في ذلك قيم الاسم) هنا طريقة مباشرة لترميز هذا: يمكننا وصف ذلك باستخدام تسميات للمكونات. كلا المثالين تستخدم بالضبط نفس البرنامج. والفرق الوحيد هو استخدام المزيد من الأسماء في النموذج الثاني. هذه الأسماء يمكن أن تساعد القراء الذين لا يعرفون الانتخابات التمهيدية J. دعونا ننظر أبعد قليلا في ما يجري في البرنامج الفرعي، المتوسط. يدل على الجمع () ويشير إلى تقسيم (مثل علامة الكلاسيكية). يتم حساب رصيد (عدد) من العناصر من قبل. البرنامج الكلي، ثم، هو مجموع القيم مقسوما على رصيد القيم: نتيجة حساب المتوسط المتحرك المكتوب هنا لا تتضمن الأصفار الرائدة المتوقعة في السؤال الأصلي. ويمكن القول إن هذه الأصفار ليست جزءا من الحساب المقصود. تسمى التقنية المستخدمة هنا البرمجة الضمنية. هو إلى حد كبير نفس أسلوب خالية من نقطة البرمجة الوظيفية. أجاب أوج 26 10 في 16:15 هنا هو كلوجور التظاهر لتكون لغة أكثر وظيفية. هذا هو الذيل تماما عودية، راجع للشغل، ويشمل الأصفار الرائدة. عادة أضع مجموعة أو قائمة المعلمة الماضي لجعل وظيفة أسهل الكاري. ولكن في كلوجور. هو مرهقة جدا، وعادة ما ينتهي به الأمر القيام بذلك. في هذه الحالة، فإنه لا يهم حقا ما النظام تذهب المعلمات. أجاب 24 أغسطس 09 في 4:56 مرحبا جوناثان، I39m جديدة جدا لهذه البرمجة الوظيفية، هل يمكن أن يرجى شرح لي كيف هذا هو الذيل العودية شكرا نداش جيمس P 24 أغسطس 09 في 14:38 و ريكورسيون يحدث في بيان إف، حيث يقوم أي من الخيارين على تكرار. وهذا حساب كل معلمة أولا، وفقط ثم يعيد. الجواب سيكون نتيجة التكرار. ونتيجة لذلك هي النتيجة نفسها عادت من قبل العودية، مع عدم وجود حسابات أخرى، وهذا هو الذيل عودية. نداش دانيال C. سوبرال 24 أغسطس 09 في 15:20 هذا المثال يجعل استخدام الدولة، لأن لي حل عملي في هذه الحالة، وإغلاق لإنشاء وظيفة المتوسط نافذة: لا يزال يعمل من حيث استخدام من وظائف الدرجة الأولى، على الرغم من أنها ليست خالية من الآثار الجانبية. اللغتين التي ذكرتها على حد سواء تشغيل على رأس جفم، وبالتالي كلاهما يسمح لإدارة الدولة عند الضرورة. أجاب 24 أغسطس 09 في 1:55 هذا الحل هو في هاسكل، وهو أكثر دراية بالنسبة لي: أجاب 24 أغسطس 09 في 10:23 أحب استخدام بيان المباراة. حاولت فعل شيء مماثل، ولكن cann39t جعل تماما كل شيء هناك. نداش جيمس P 24 أغسطس 09 في 14:39 وهناك نسخة كلوجور قصيرة التي لديها ميزة كونها O (طول القائمة) بغض النظر عن الفترة الخاصة بك: وهذا يستغل حقيقة أنه يمكنك حساب مجموع مجموعة من الأرقام من خلال خلق مجموع التراكمي من التتابع (على سبيل المثال 1 2 3 4 5 - 0 1 3 6 10 15) ومن ثم طرح الرقمين مع إزاحة تساوي الفترة الخاصة بك. بعد أن تأخرت في الحزب، وجديدة إلى البرمجة الوظيفية أيضا، جئت إلى هذا الحل مع وظيفة داخلية: اعتمدت الفكرة، لتقسيم القائمة بأكملها قبل فترة (لين) مقدما. ثم أنا توليد المبلغ لتبدأ مع لين-فيرست-إليمنتس. وأنا توليد أول، عناصر غير صالحة (0.0، 0.0). ثم طرد بشكل متكرر الأول وإضافة القيمة الأخيرة. في النهاية أنا ليستيفي كل شيء. أجاب أبريل 29 10 في 19:28 في هاسكل بسيودوكود: (الآن واحد حقا يجب أن يجرد 4 خارج.) أجاب 23 يوليو 13 في 13:45 المفتاح هو وظيفة ذيول، الذي يضع قائمة إلى قائمة نسخ من الأصل ، مع الخاصية أن العنصر n-ث من النتيجة يفتقد أول العناصر n-1. نطبق فماب (متوسط نأخذ ن) إلى النتيجة، مما يعني أننا نأخذ البادئة n - طول من القائمة الفرعية، وحساب متوسطه. وإذا كان طول القائمة التي نعرضها ليس n، فإننا لا نحسب المتوسط (لأنه غير محدد). في هذه الحالة، نعود لا شيء. إذا كان هو، ونحن نفعل، والتفاف عليه في مجرد. وأخيرا، ونحن تشغيل كاتمايبيس على نتيجة فماب (أفغ اتخاذ ن)، للتخلص من نوع ربما. أجاب 21 أكتوبر 13 في 01:29 لقد كنت (مفاجأة و) بخيبة أمل من أداء ما بدا لي معظم حلول كلوجور الاصطلاحية، جيمسكونينغهام ق حلول كسول-سيق. لذلك هيريس مزيج من حل جيمس مع فكرة DanielC. Sobral s للتكيف سريع إكسبوننتياتيون إلى مبالغ متحركة: تحرير: هذا واحد القائم على حل ميكيرا الصورة - هو أسرع. أجاب على جول 22 13 في 19:21 يور أنسور 2017 ستاك إكسهانج، إنك
Comments
Post a Comment