[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Cant think of an elegant lua solution to this little problem
- From: Paul K <paulclinger@...>
- Date: Sat, 25 Aug 2012 18:09:50 -0700
> The limitation of 12 characters can't be extended much, surely no more
> than 16 characters, I don't remember the actual limit for 'double'.
> padnum converts numbers to double and then back to string, so with
> numbers too big this won't work due to limited precision. E.g. padnum
> will turn "10000000000000001" and "10000000000000000" into the same
> number no matter what.
Agree; I just sent an improved version that shouldn't suffer from this problem.
Paul.
On Sat, Aug 25, 2012 at 5:23 PM, GrayFace <sergroj@mail.ru> wrote:
> On 26.08.2012 3:37, Paul K wrote:
>>
>> I'm not sure if this is by coincidence or not (as it may be just
>> treated as the same value, which means that the sort order will be
>> arbitrarily picked between 012 and 12), but it should be easy to fix
>> the logic if you want a specific order; just add the length:
>>
>> function alphanumsort(o)
>> local function padnum(d) return
>> ("%012d"):format(d)..("%02d"):format(12-#d) end
>> table.sort(o, function(a,b)
>> return tostring(a):gsub("%d+",padnum)<
>> tostring(b):gsub("%d+",padnum) end)
>> return o
>> end
>>
>> Use format(12-#d) if you want 012 before 12 or format(#d) if you want
>> 12 before 012 (this is assuming the length is 12 or less). I'll update
>> the blog post to reflect this.
>>
>
> In case of "012b" vs "12a" the second one should be smaller. I'm pretty
> confident it's just the case of strings being the same otherwise when
> lexicographical order should kick in.
> The limitation of 12 characters can't be extended much, surely no more
> than 16 characters, I don't remember the actual limit for 'double'.
> padnum converts numbers to double and then back to string, so with
> numbers too big this won't work due to limited precision. E.g. padnum
> will turn "10000000000000001" and "10000000000000000" into the same
> number no matter what.
>
> --
> Best regards,
> Sergey Rozhenko mailto:sergroj@mail.ru
>
>