Concatena due numeri interi in Mathematica 7
-
09-09-2020 - |
Domanda
Qual è il modo più efficace per concatenare due numeri interi positivi in Mathematica 7?
cc[123, 4567]
>> 1234567
E più di due?
cc[123, 4, 567, 89]
>> 123456789
Soluzione
Questo sarà leggermente più veloce per molti numeri interi, della tua ultima soluzione:
ToExpression[StringJoin @@ Map[IntegerString, {##}]] &
.
Un'alternativa più concisa è quella di accettare un singolo argomento, supponendo che sia una lista, piuttosto che una sequenza, di numeri da concatenare:
ToExpression@StringJoin@IntegerString@#&
.
che si basa su IntegerString
Listable
.
Altri suggerimenti
funziona correttamente correttamente per brevi numeri interi perché l'uscita deve essere dimensione della macchina, ma è il più veloce che ho trovato:
Compile[{{a, _Integer}, {b, _Integer}},
b + a 10^Floor[1 + Log[10, b]]
]
.
Per numeri interi più lunghi, il più veloce che potrei trovare è:
FromDigits[{##}, 10^IntegerLength@#2] &
.
Per concatenare molti numeri interi, quanto segue era più veloce del Fold
su quello sopra:
FromDigits[Join @@ IntegerDigits[{##}]] &
.