Вдохновленный недавней статьей Daily WTF ...
Напишите программу или функцию, которая принимает GUID (строку в формате XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX, где каждый X представляет шестнадцатеричную цифру) и выводит GUID, увеличенный на единицу.
Примеры
>>> increment_guid('7f128bd4-b0ba-4597-8f35-3a2f2756dfbb')
'7f128bd4-b0ba-4597-8f35-3a2f2756dfbc'
>>> increment_guid('06b86883-f3e7-4f9d-87c5-a047e89a19fa')
'06b86883-f3e7-4f9d-87c5-a047e89a19fb'
>>> increment_guid('89f25f2f-2f7b-4aa6-b9d7-46a98e3cb2cf')
'89f25f2f-2f7b-4aa6-b9d7-46a98e3cb2d0'
>>> increment_guid('89f25f2f-2f7b-4aa6-b9d7-46a98e3cb29f')
'89f25f2f-2f7b-4aa6-b9d7-46a98e3cb2a0'
>>> increment_guid('8e0f9835-4086-406b-b7a4-532da46963ff')
'8e0f9835-4086-406b-b7a4-532da4696400'
>>> increment_guid('7f128bd4-b0ba-4597-ffff-ffffffffffff')
'7f128bd4-b0ba-4598-0000-000000000000'
Заметки
- В отличие от связанной статьи, увеличение GUID, заканчивающееся на F, должно «переносить» к предыдущему шестнадцатеричному знаку. Смотрите примеры выше.
- Вы можете предположить, что ввода не будет
ffffffff-ffff-ffff-ffff-ffffffffffff. - Для шестнадцатеричных цифр выше 9, вы можете использовать либо верхний (AF), либо нижний (af) регистр.
- Да, GUID может начинаться с
0. - Ваш вывод должен состоять ровно из 32 шестнадцатеричных цифр и 4 дефисов в ожидаемом формате, включая любые необходимые начальные
0s. - Вам не нужно сохранять номер версии или другие фиксированные биты GUID. Предположим, что это просто 128-битное целое число, где ни один из битов не имеет какого-либо особого значения. Точно так же предполагается, что GUID сортируются в прямом лексикографическом порядке, а не в двоичном порядке
GUIDструктуры Windows . - Если написание функции, вход может быть любой последовательностью-of
charтипа данных:string,char[],List<char>и т.д.
GUIDструктуры Windows .
89f25f2f-2f7b-4aa6-b9d7-46a98e3cb29fчтобы убедиться, что ответы могут сделать переход 9 -> a.
foreach (char ch in theInput)допустим эквивалент C # на вашем языке .