开发者

Concatenate two integers in Mathematica 7

开发者 https://www.devze.com 2023-03-07 14:23 出处:网络
What is the most efficient way to concatenate two positive integers in Mathe开发者_如何学运维matica 7?

What is the most efficient way to concatenate two positive integers in Mathe开发者_如何学运维matica 7?

cc[123, 4567] >> 1234567

What about more than two?

cc[123, 4, 567, 89] >> 123456789


This will be slightly faster for many integers, than your last solution:

ToExpression[StringJoin @@ Map[IntegerString, {##}]] &

A more concise alternative is to accept a single argument, assuming it to be a list, rather than a sequence, of numbers to concatenate:

ToExpression@StringJoin@IntegerString@#&

which is based on IntegerString being Listable.


This only works properly for short integers because the output must be machine size, but it is the fastest I found:

Compile[{{a, _Integer}, {b, _Integer}}, 
  b + a 10^Floor[1 + Log[10, b]]
]

For longer integers, the fastest I could find is:

FromDigits[{##}, 10^IntegerLength@#2] &

For concatenating many integers, the following was faster than Fold on the one above:

FromDigits[Join @@ IntegerDigits[{##}]] & 
0

精彩评论

暂无评论...
验证码 换一张
取 消