Aby sprostać temu wyzwaniu, musisz zaimplementować Abbrevmoduł Ruby w możliwie najmniejszym kodzie.
Wyzwanie
Dane wejściowe będą takie, jak Twój język, jako tablica (tablica, lista, sekwencja itp.) Ciągów. Możesz napisać funkcję lub zaakceptować słowa rozdzielane przecinkami na STDIN.
Następnie musisz obliczyć zestaw jednoznacznych prefiksów dla tych ciągów. Oznacza to, że musisz zwrócić skrót (lub mapę, obiekt itp.) Skrótów do ich oryginalnych ciągów.
„Przedrostek” jest podciągiem oryginalnego ciągu rozpoczynającego się na początku łańcucha. Na przykład „pref” to przedrostek słowa „prefix”.
Jednoznaczne prefiks to taki, który może oznaczać tylko jedno słowo. Na przykład, jeśli dane wejściowe to
car,cat,cato nie jest to jednoznaczny przedrostek, ponieważ może oznaczać „samochód” lub „kot”.Wyjątkiem od tej reguły jest to, że słowo jest zawsze przedrostkiem samego siebie. Na przykład, jeśli masz dane wejściowe, takie jak
car,carpet,car:carmusi być w danych wyjściowych.
Następnie możesz zwrócić skrót / mapę / obiekt / itp. z funkcji (lub wykonaj odpowiednik w swoim języku) lub wydrukuj go do STDOUT
key:valueparami w formief:foo,fo:foo,.... (Pary klucz-wartość można również oddzielić białymi spacjami, jeśli skraca to kod).
Przypadki testowe
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
Zasady
Dane wejściowe nie będą zawierać zduplikowanych elementów.
Twój wynik może być w dowolnej kolejności; nie musisz tego sortować.
Nie możesz używać wbudowanego
Abbrevmodułu / funkcji / czegoś takiego jak Ruby.To jest golf golfowy , więc wygra najkrótszy kod w bajtach!
key:value\nkey:value\nkey:value...?