Confusio in naturali ordine distributionis

Plurimi administratores graphici fasciculorum non stricte lexicographice ordinant, sed potius ordinationem "naturalem" utuntur. Numerorum partes in nominibus interpretantur ut numeri — maior numerorum pars vincit, etiam si contrarium alphabetice verum esset. Ratio post ordinationem naturalem: Quod homines plerumque volunt est "9 ante 10," "Caput 2 ante Caput 10" — sine necessitate addendi zeras anteriores.


Paria fasciculorum sequentia naturaliter ordine ascendente sic ordinantur::

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

Mirabile, sed explicabile: prima cifra \(9\) minor est quam prima digitorum series \(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 alia similem modum ordinandi exhibent. Instrumenta CLI sicut... ls et find Aliter tamen ordinant quam administratores fasciculorum GUI. Semantica in nominibus fasciculorum est, non in API. Si vis eventus sine inopinatis, normas defini: separatores congruentes, numeros impletos, et tractationem unitatum claram. Tum "alphabeticum" iterum praedicabile fit.

Back