Para esse desafio, você deve implementar o Abbrevmódulo Ruby no menor código possível.
Desafio
A entrada será qualquer que seja o seu idioma como um array (array, lista, sequência, etc.) de strings. Você pode escrever uma função ou aceitar palavras separadas por vírgula no STDIN.
Você deve calcular o conjunto de prefixos inequívocos para essas seqüências. Isso significa que você deve retornar um hash (ou mapa, objeto etc.) de abreviações para suas strings originais.
Um "prefixo" é uma subcadeia de caracteres da string original, iniciando no início da string. Por exemplo, "pref" é um prefixo da palavra "prefix".
Um prefixo inequívoco é aquele que pode significar apenas uma palavra. Por exemplo, se sua entrada for
car,cat,canão será um prefixo inequívoco, pois pode significar "carro" ou "gato".A exceção a essa regra é que uma palavra é sempre um prefixo de si mesma. Por exemplo, se você tiver uma entrada como
car,carpet,car:cardeve estar em sua saída.
Você pode então retornar o hash / mapa / objeto / etc. da sua função (ou faça o equivalente no seu idioma) ou imprima para STDOUT em
key:valuepares na forma def:foo,fo:foo,.... (Os pares de valores-chave também podem ser separados por espaços em branco se o código for mais curto.)
Casos de teste
Input code,golf,going
Output c:code,co:code,cod:code,code:code,gol:golf,golf:golf,goi:going,goin:going,going:going
Input pie
Output p:pie,pi:pie,pie:pie
Input pie,pier,pierre
Output pie:pie,pier:pier,pierr:pierre,pierre:pierre
Input a,dog
Output a:a,d:dog,do:dog,dog:dog
Regras
A entrada não conterá elementos duplicados.
Sua saída pode estar em qualquer ordem; você não precisa classificá-lo.
Você não pode usar um
Abbrevmódulo / função / coisa embutida como o Ruby's.Isso é código-golfe , então o código mais curto em bytes vencerá!
key:value\nkey:value\nkey:value...?