Confusio in naturali ordine distributionis

Plerique actores fasciculi graphice non stricte lexicographice digeruntur, sed utentes "modis naturalibus". Caudices numerorum in nomine interpretantur ut numeri - maior numerus numerorum vincit, etiamsi contrarium in verbis mere alphabeticis prodiret. Idea post genus naturale: Quod homines plerumque desiderant, est "9 ante 10", "Caput 2 ante Caput 10", non habens zeros addere.


Paria fasciculorum sequentia naturaliter ordine ascendente sic ordinantur::

  • build-9e2.log
  • build-950.log

Mirum, sed explicabile: Primus digitorum quadratus \(9\) minor est quam primus digitorum quadratus \(950\) .

  • IMG_12113419_90.jpg
  • IMG_0554363070_90.jpg

Numerus \(12113419\) minor est quam \(554363070\) (praecedens \(0\) sublatum est).

  • temp_0C.txt
  • temp_2C.txt
  • temp_-3C.txt
  • temp_10C.txt
  • temp_-12C.txt

Numeri comparati sunt \(0\) , \(2\) , \(3\) , \(10\) , \(12\) – "-" non pars numeri habetur.

Ne "alphabeticum" quidem universaliter non est ambiguum: litterae maiusculae, umlautae ut "ä" (Germanica), vel litterae multi-caracteres ut "ch" (Bohemicae) ad variantes legitimas ducunt. "Pure alphabeticum" ergo a contextu pendet. Explorator Windows hoc in functione StrCmpLogicalW implementat. Quamquam eius fons (shlwapi.dll) proprietarius est et non publicus, tamen reimplementationes existunt, exempli gratia, a ReactOS.:

{
    TRACE("%s, %s\n", wine_dbgstr_w(str), wine_dbgstr_w(comp));
 
    if (!str || !comp)
        return 0;
 
    while (*str)
    {
        if (!*comp)
            return 1;
        else if (*str >= '0' && *str <= '9')
        {
            int str_value, comp_value;
 
            if (*comp < '0' || *comp > '9')
                return -1;
 
            /* Compare the numbers */
            StrToIntExW(str, 0, &str_value);
            StrToIntExW(comp, 0, &comp_value);
 
            if (str_value < comp_value)
                return -1;
            else if (str_value > comp_value)
                return 1;
 
            /* Skip */
            while (*str >= '0' && *str <= '9') str++;
            while (*comp >= '0' && *comp <= '9') comp++;
        }
        else if (*comp >= '0' && *comp <= '9')
            return 1;
        else
        {
            int diff = ChrCmpIW(*str, *comp);
            if (diff > 0)
                return 1;
            else if (diff < 0)
                return -1;
 
            str++;
            comp++;
        }
    }
 
    if (*comp)
      return -1;
 
    return 0;
}

Google Drive, OneDrive, KDE, et similia officia similem modum ordinandi exhibent. Instrumenta CLI sicut... ls et find genus aliter quam GUI file managers. Semantics in filenamiis sunt, non API. Si eventus sine improviso vis, conventiones definire: separatores constantes, numeros additi et unitatum tractatio clara. Tunc "alphabeticum" iterum praedictio fit.

Back