Für diese Herausforderung müssen Sie das Ruby- AbbrevModul in möglichst wenig Code implementieren .
Herausforderung
Die Eingabe erfolgt in einer beliebigen Sprache als Array (Array, Liste, Sequenz usw.) von Zeichenfolgen. Sie können eine Funktion schreiben oder durch Kommas getrennte Wörter in STDIN akzeptieren.
Sie müssen dann den Satz eindeutiger Präfixe für diese Zeichenfolgen berechnen. Dies bedeutet, dass Sie einen Hash (oder eine Karte, ein Objekt usw.) der Abkürzungen an ihre ursprünglichen Zeichenfolgen zurückgeben müssen.
Ein "Präfix" ist eine Teilzeichenfolge der ursprünglichen Zeichenfolge, die am Anfang der Zeichenfolge beginnt. Beispielsweise ist "pref" ein Präfix des Wortes "prefix".
Ein eindeutiges Präfix kann nur ein Wort bedeuten. Wenn Ihre Eingabe beispielsweise lautet
car,cat,cahandelt es sich nicht um ein eindeutiges Präfix, da dies entweder "Auto" oder "Katze" bedeuten kann.Die Ausnahme von dieser Regel ist, dass ein Wort immer ein Präfix für sich selbst ist. Wenn Sie beispielsweise Eingaben wie haben
car,carpet,car:carmüssen Sie in Ihrer Ausgabe sein.
Sie können dann den Hash / map / object / etc zurückgeben. von Ihrer Funktion aus (oder tun Sie das Gleiche in Ihrer Sprache), oder drucken Sie es
key:valuepaarweise in Form von an STDOUT ausf:foo,fo:foo,.... (Die Schlüssel-Wert-Paare können auch durch Leerzeichen getrennt werden, wenn dies Ihren Code verkürzt.)
Testfälle
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
Regeln
Die Eingabe enthält keine doppelten Elemente.
Ihre Ausgabe kann in beliebiger Reihenfolge erfolgen. du musst es nicht sortieren.
Sie dürfen keine eingebauten
AbbrevModule / Funktionen / Dinge wie Ruby's verwenden.Das ist Code-Golf , also gewinnt der kürzeste Code in Bytes!
key:value\nkey:value\nkey:value...?