Для выполнения этой задачи вы должны реализовать Abbrevмодуль Ruby как можно меньше кода.
Вызов
Входными данными будут все, что имеет ваш язык в виде массива (массив, список, последовательность и т. Д.) Строк. Вы можете написать функцию или принять слова, разделенные запятыми, в STDIN.
Затем вы должны вычислить набор однозначных префиксов для этих строк. Это означает, что вы должны вернуть хеш (или карту, объект и т. Д.) Сокращений в их исходные строки.
«Префикс» - это подстрока исходной строки, начинающаяся с начала строки. Например, «преф» является префиксом слова «префикс».
Однозначный префикс один , что может означать только одно слово. Например, если вы вводите
car,cat, тоcaэто не однозначный префикс, потому что он может означать «автомобиль» или «кошка».Исключением из этого правила является то, что слово всегда является префиксом самого себя. Например, если у вас есть ввод, например
car,carpet,car:carдолжен быть в вашем выводе.
Затем вы можете вернуть хеш / карту / объект / и т.д. от вашей функции (или сделать эквивалент на вашем языке), или распечатать его в STDOUT в
key:valueпарах в формеf:foo,fo:foo,.... (Пары ключ-значение также могут быть разделены пробелами, если это делает ваш код короче.)
Контрольные примеры
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
правила
Входные данные не будут содержать дубликаты элементов.
Ваш вывод может быть в любом порядке; Вы не должны сортировать это.
Вы не можете использовать встроенный
Abbrevмодуль / функцию / что-то вроде Ruby.Это код-гольф , поэтому выиграет самый короткий код в байтах!
key:value\nkey:value\nkey:value...?