Next highest int from digits: Difference between revisions
Content added Content deleted
(Promote to full task status.) |
|||
Line 344: | Line 344: | ||
if N > 0 && i > 1 |
if N > 0 && i > 1 |
||
rdig = dig[1:i-1] |
rdig = dig[1:i-1] |
||
if (j = findfirst(x -> x > d, rdig)) != nothing |
|||
if length(ltdig) > 0 |
|||
j = findfirst(x -> x > d, rdig) |
|||
dig[i], dig[j] = dig[j], dig[i] |
dig[i], dig[j] = dig[j], dig[i] |
||
arr = (i == 2) ? dig : [sort(dig[1:i-1], rev=true); dig[i:end]] |
arr = (i == 2) ? dig : [sort(dig[1:i-1], rev=true); dig[i:end]] |
||
Line 354: | Line 352: | ||
elseif N < 0 && i > 1 |
elseif N < 0 && i > 1 |
||
rdig = dig[1:i-1] |
rdig = dig[1:i-1] |
||
if (j = findfirst(x -> x < d, rdig)) != nothing |
|||
if length(ltdig) > 0 |
|||
j = findfirst(x -> x < d, rdig) |
|||
dig[i], dig[j] = dig[j], dig[i] |
dig[i], dig[j] = dig[j], dig[i] |
||
arr = (i == 2) ? dig : [sort(dig[1:i-1]); dig[i:end]] |
arr = (i == 2) ? dig : [sort(dig[1:i-1]); dig[i:end]] |
||
Line 396: | Line 392: | ||
-592491602 -592491260 -592491260 -592491260 |
-592491602 -592491260 -592491260 -592491260 |
||
9589776899767587796600 9589776899767587900667 |
9589776899767587796600 9589776899767587900667 |
||
4. |
4.027 ms (40364 allocations: 2.43 MiB) |
||
for method 1A and n 7384440. |
for method 1A and n 7384440. |
||
1. |
1.237 ms (28804 allocations: 1.92 MiB) |
||
for method 1B and n 7384440. |
for method 1B and n 7384440. |
||
1. |
1.260 μs (14 allocations: 1.36 KiB) |
||
for method 2 and n 7384440. |
for method 2 and n 7384440. |
||
</pre> |
</pre> |
||