+/" ، ومتوسط جميع عناصر المصفوفة هو " +/%#".
نُشرت بالفعل مراجعات مختلفة لـ J على Habré أكثر من مرة. على سبيل المثال في هذه المادة و هذه واحدة .
J هي لغة لها تاريخ يصل إلى 30 عامًا وما زالت تتطور وتتحسن. ومع ذلك ، كان هناك "نقطة بيضاء" واحدة فقط في خوارزميات تكرارية J مع التوقف الشرطي. لهذا ، تم اقتراح استخدام أثناء البناء. يقترن مع كسر. وتواصل.
استخدام الوقت. في J تبدو زائدة عن الحاجة ومحرجة. بالإضافة إلى ذلك ، فهي تتراجع بشكل خطير في السرعة مقارنة بالأشكال الضمنية.
وفي الإصدار التاسع من اللغة ، تمت إضافة اتحاد جديد F (سمي على اسم الحرف الأول من كلمة "أضعاف").
للمقارنة ، دعنا نحل المشكلة باستخدام while. واستخدام الاتحاد الجديد.
الشرط بسيط: الحصول على مصفوفة جديدة من المصفوفة الأصلية تحتوي على القيم المضاعفة للعناصر. يتم تحديد طول المصفوفة الجديدة خارجيًا وقد يكون أقل من الأصل.
أول استخدام في حين.
t =: dyad define
c =. 0
i =. i.x
z =. $0
while. -. c = y
do.
z =. z , (+: (c { i))
c =. >: c
end.
z
)
10 t 5
0 2 4 6 8
والآن الحل باستخدام الاتحاد الجديد F. دعنا نضيف أن شرط الخروج من الحلقة تم التحقق منه باستخدام الفعل Z:
COUNT =: 6
v=: dyad define
_2 Z: -.* COUNT =: <: COUNT
x
)
'' +: F:. v (i.10)
0 2 4 6 8
تعد الوثائق بأن F. لن تكون أكثر ملاءمة فحسب ، بل ستكون أسرع أيضًا. في النهاية ، يقترب J من الناس!
ملاحظة: قد يلاحظ الأشخاص ذوو المعرفة أن هذه المشكلة يمكن حلها بسهولة دون استخدام الإنشاءات الدورية والجديدة. يكفي استخراج مجموعة فرعية من الطول المطلوب ثم معالجتها بشكل ضمني. ومع ذلك ، في المشكلات الحقيقية ، غالبًا ما يحدث أن طول المصفوفة الفرعية غير معروف مسبقًا ويتم حساب حالة الإيقاف أثناء تشغيل الخوارزمية.