मैं दो के साथ आया हूं जो STDIN से उनके मूल्यों को लेते हैं जो पर्ल 5 उत्तर पर आधारित हैं।
lines~~/(.*).*' '$0/;say ~$0
lines~~/:s(.*).* $0/;say ~$0
पहले इनपुट के बीच ठीक एक स्थान की आवश्यकता होती है, जबकि दूसरे में इनपुट के बीच कम से कम एक व्हाट्सएप चरित्र की आवश्यकता होती है।
यह मेरे द्वारा आजमाई गई पहली चीज़ से काफी कम है, जो कमांड लाइन से मान लेता है।
say [~] map ->($a,$b){$a eq$b&&$a||last},[Z] @*ARGS».comb # 58 bytes
या यहां तक कि इसका लंब संस्करण भी:
{[~] map ->($a,$b){$a eq$b&&$a||last},[Z] @_».comb} # 52 bytes
हालांकि यह समायोजित करने के लिए बहुत आसान है ताकि यह केवल एक स्ट्रोक की कीमत पर किसी भी संख्या में इनपुट स्ट्रिंग्स को स्वीकार करे।
{[~] map ->@b {([eq] @b)&&@b[0]||last},[Z] @_».comb} # 53 bytes
# ┗━┛ ┗━━━━━━━┛ ┗━━━┛
my &common-prefix = {[~] map ->@b {([eq] @b)&&@b[0]||last},[Z] @_».comb}
say common-prefix <department depart>; # "depart"
say common-prefix; # ""
say common-prefix <department depart depot deprecated dependant>; # "dep"
# This code does not work directly with a single argument, so you have
# to give it an itemized List or Array, containing a single element.
say common-prefix $('department',); # "department"
# another option would be to replace `@_` with `(@_,)`
"aca", "aba"
।