9

Mathematica 7で2つの正の整数を連結する最も効率的な方法は何ですか?

cc[123, 4567]>>1234567

2つ以上はどうですか?

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

4

2 に答える 2

9

これは、最後のソリューションよりも、多くの整数でわずかに高速になります。

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

より簡潔な代替案は、連結する数列ではなくリストであると仮定して、単一の引数を受け入れることです。

ToExpression@StringJoin@IntegerString@#&

これは存在に基づいてIntegerStringListableます。

于 2011-05-23T10:59:01.583 に答える
3

出力はマシンサイズでなければならないため、これは短い整数に対してのみ適切に機能しますが、私が見つけた最速です:

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

より長い整数の場合、私が見つけることができる最速は次のとおりです。

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

多くの整数を連結するために、以下はFold上記のものよりも高速でした。

FromDigits[Join @@ IntegerDigits[{##}]] & 
于 2011-05-23T10:29:48.863 に答える