LINUX.ORG.RU

Как сравнить несравнимое


0

0

Есть задача сравнивать версии объектов. И всё бы ничего, но некоторые объекты на вопрос какой они версии отвечают приблизительно таким образом:
2.0.43ba
2.1.0b
0.9b
4.13b
2.01.01a38
0.15.2b
5.0.51b
2.41a
1.21alpha2
0.99.beta11
0.15.1b
6b
0.15.1b
1.0beta2
3.3.8b
3.2.0b6
bsd4
1.0a
1.4a12
3.10a
6u10_beta
По какому критерию сравнивать между собой версии 6u10_beta, 6u10, 6g10 и скажем 6u10_alpha мне что-то уже совсем не понятно.

★★★★★

Боюсь, что общего решения задача не имеет :) Только в рамках определённых граничных условий.

KRoN73 ★★★★★
()

ну а в чем проблема?

alpha - о, запистилось!!!! прикинь пацаны!

beta - ну запускаться то оно запускается, но косяков дофигишя, помогите отловить, а?

....10 - кто найдет косяк - тому пирожок

anonymous
()

Как-то озадачивался я таким... за давностью только общие черты:

1) Разбить на массив; символы '.,-+_' считать разделителями.
2) Каждый из элементов массива привести к HEX'у. Каждый символ преобразовывается в два hex-символа; примерно так: hex(chr(символ))
3) Сравнивать "хексы", начиная с первого элемента массива.


Slavaz ★★★★★
()
Ответ на: комментарий от anonymous

....10a
мы тут навояли, х его з насколько это все работает, но должно



...10b
   мы там баги подправили, никто не пропалил вроде



....10ab
    нам тут гашиш привезли


....10.11.234.55.ab.cc/DDF#q651 side b
     кто помнит, что мы там писали?

anonymous
()
Ответ на: комментарий от Slavaz

Припоминаю, что ещё что-то с переходом цифра->буква и буква->цифра делал... кажись, в местах таких переходов тоже в массив бил.
12alpha => [12] [alpha]
1alpha => [1] [alpha]

beta3 => [beta] [3]

Что-то ещё крутил с разными по размерности массивами для сравнения...

В общем, направление есть, дальше вспоминать лень. :)

Slavaz ★★★★★
()

Это такое тонкое переписывание куска Portage, отвечающего за сортировку версий пакета?

Sphinx ★★☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.