Inspirado em um artigo recente do Daily WTF ...
Escreva um programa ou função que use um GUID (sequência no formato XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
, em que cada X representa um dígito hexadecimal) e produz o GUID incrementado por um.
Exemplos
>>> 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'
Notas
- Diferentemente do artigo vinculado, o incremento de um GUID que termina em F deve "transportar" para o dígito hexadecimal anterior. Veja exemplos acima.
- Você pode assumir que a entrada não será
ffffffff-ffff-ffff-ffff-ffffffffffff
. - Para dígitos hexadecimais acima de 9, você pode usar maiúsculas (AF) ou letras minúsculas (af).
- Sim, os GUIDs podem começar com a
0
. - Sua saída deve consistir em exatamente 32 dígitos hexadecimais e 4 hífens no formato esperado, incluindo quaisquer
0
s iniciais necessários . - Você não precisa preservar o número da versão ou outros bits fixos do GUID. Suponha que seja apenas um número inteiro de 128 bits em que nenhum dos bits tem algum significado especial. Da mesma forma, supõe-se que os GUIDs classifiquem em ordem lexicográfica direta e não na ordem binária de uma
GUID
estrutura do Windows . - Se uma função de escrita, a entrada pode ser de qualquer sequcia-de-
char
tipo de dados:string
,char[]
,List<char>
, etc.
GUID
estrutura do Windows .
89f25f2f-2f7b-4aa6-b9d7-46a98e3cb29f
para garantir que as respostas possam fazer a transição 9 -> a
.
foreach (char ch in theInput)
seja válido.