Per questa sfida, è necessario implementare il Abbrevmodulo di Ruby nel minor numero di codice possibile.
Sfida
L'input sarà qualunque sia la tua lingua come array (array, elenco, sequenza, ecc.) Di stringhe. È possibile scrivere una funzione o accettare parole separate da virgola su STDIN.
È quindi necessario calcolare l'insieme di prefissi non ambigui per tali stringhe. Ciò significa che devi restituire un hash (o mappa, oggetto, ecc.) Di abbreviazioni alle loro stringhe originali.
Un "prefisso" è una sottostringa della stringa originale che inizia all'inizio della stringa. Ad esempio, "pref" è un prefisso della parola "prefisso".
Un prefisso inequivocabile è un prefisso che può significare solo una parola. Ad esempio, se il tuo input è
car,cat, alloracanon è un prefisso inequivocabile perché potrebbe significare "auto" o "gatto".L'eccezione a questa regola è che una parola è sempre un prefisso di se stessa. Ad esempio, se si dispone di input come
car,carpet,car:cardeve essere nell'output.
È quindi possibile restituire l'hash / map / object / etc. dalla tua funzione (o esegui l'equivalente nella tua lingua) o stampalo su STDOUT in
key:valuecoppia sotto forma dif:foo,fo:foo,.... (Le coppie chiave-valore possono anche essere separate da spazi bianchi se abbrevia il codice.)
Casi test
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
Regole
L'input non conterrà elementi duplicati.
Il tuo output potrebbe essere in qualsiasi ordine; non devi ordinarlo.
Non puoi usare un
Abbrevmodulo / funzione / cosa incorporato come Ruby.Questo è code-golf , quindi vincerà il codice più breve in byte!
key:value\nkey:value\nkey:value...?