Mathematica 7で2つの正の整数を連結する最も効率的な方法は何ですか?
cc[123, 4567]
>>1234567
2つ以上はどうですか?
cc[123, 4, 567, 89]
>>123456789
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[{##}]] &