Для выполнения этой задачи вы должны реализовать 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
...?