كيف تكرس هذا في ي؟
-
21-09-2019 - |
سؤال
فيما يلي نهج مختلف لمشروع الحل رقم 1:
+/~.(3*i.>.1000%3),5*i.>.1000%5
كيف تكرسها؟
المحلول
[:+/@~.@,3 5([*i.@>.@%~)]
مثال الاستخدام:
f =: [:+/@~.@,3 5([*i.@>.@%~)]
f 1000
أو
+/~.,3 5([*i.@>.@%~)1000
%~ = 4 : 'y % x'
i.@>.@%~ = 4 : 'i. >. y % x'
[*i.@>.@%~ = 4 : 'x * i. >. y % x'
3 5([*i.@>.@%~)] = 3 : '3 5 * i. >. y % 3 5'
[:+/@~.@,3 5([*i.@>.@%~)] = 3 : '+/ ~. , 3 5 * i. >. y % 3 5'
نصائح أخرى
+/(#~ ( (0= 3| ]) +. (0 = 5 |]) )) 1+i.999
0 = ( 3 | ])
يستخدم (مرتين) خدعة قطار الفعل (شوكة) مع NUV (تمت مناقشته في نهاية http://www.jsoftware.com/help/learning/09.htm)
طريقة مختلفة لكتابتها:
+/(#~ ( ((0&=) @ (3&|)) +. ((0&=) @ (5&|)))) 1+i.999
إليك طريقة أخرى ، باستخدام فعل بسيط عام
multiplesbelow =: 4 : 'I. 0 = x | i.y'
+/ ~. ,3 5 multiplesbelow"0 [ 1000
لا تنتمي إلى StackOverflow