質問

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

cc[123, 4567] >> 1234567

2つ以上の場合はどうなりますか?

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