تسلسل عددين صحيحين في Mathematica 7
-
09-09-2020 - |
سؤال
ما هي الطريقة الأكثر فعالية لربط عددين صحيحين موجبين في Mathematica 7؟
cc[123, 4567]
>> 1234567
وماذا عن أكثر من اثنين؟
cc[123, 4, 567, 89]
>> 123456789
المحلول
سيكون هذا أسرع قليلاً بالنسبة للعديد من الأعداد الصحيحة، من الحل الأخير:
ToExpression[StringJoin @@ Map[IntegerString, {##}]] &
البديل الأكثر إيجازًا هو قبول وسيطة واحدة، على افتراض أنها قائمة، وليس تسلسلًا، من الأرقام المراد ربطها:
ToExpression@StringJoin@IntegerString@#&
الذي يرتكز عليه IntegerString
كون Listable
.
نصائح أخرى
يعمل هذا بشكل صحيح فقط مع الأعداد الصحيحة القصيرة لأن الإخراج يجب أن يكون بحجم الجهاز، ولكنه الأسرع الذي وجدته:
Compile[{{a, _Integer}, {b, _Integer}},
b + a 10^Floor[1 + Log[10, b]]
]
بالنسبة للأعداد الصحيحة الأطول، أسرع ما يمكنني العثور عليه هو:
FromDigits[{##}, 10^IntegerLength@#2] &
لتسلسل العديد من الأعداد الصحيحة، كان ما يلي أسرع من Fold
على واحد أعلاه:
FromDigits[Join @@ IntegerDigits[{##}]] &
لا تنتمي إلى StackOverflow