سؤال

ما هي الطريقة الأكثر فعالية لربط عددين صحيحين موجبين في 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[{##}]] & 
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top