প্রতিটি অক্ষর দিয়ে শুরু করে প্রথম শব্দটি সন্ধান করুন


25

একটি স্ট্রিং দেওয়া হয়েছে, প্রতিটি অক্ষর দিয়ে শুরু প্রথম শব্দটি সন্ধান করুন (কেস সংবেদনশীল)।

নমুনা

Ferulas flourish in gorgeous gardens.ইনপুট হিসাবে ব্যবহার :

"Ferulas flourish in gorgeous gardens."
 ^^^^^^^          ^^ ^^^^^^^^
 |                |  |
 |                |  --> is the first word starting with `g`
 |                --> is the first word starting with `i`
 --> is the first word starting with `f`

তারপরে, এই নমুনার জন্য আউটপুটটি একটি একক স্থানের সাথে মিলিত শব্দযুক্ত হওয়া উচিত:

"Ferulas in gorgeous"

চ্যালেঞ্জ

ইনপুট এবং আউটপুট উভয়ই একটি স্ট্রিং উপস্থাপনা বা আপনার ভাষার নিকটতম বিকল্প হতে হবে।

প্রোগ্রাম বা ফাংশন অনুমোদিত।

আপনি একটি শব্দের অন্তত এক হচ্ছে বিবেচনা করতে পারেন: lowercase or uppercase letters, digits, underscore

এটি , বাইট জেতে সংক্ষিপ্ত উত্তর।

অন্য নমুনা:

input: "Take all first words for each letter... this is a test"
output: "Take all first words each letter is"

input: "Look ^_^ .... There are 3 little dogs :)"
output: "Look _ There are 3 dogs"

input: "...maybe some day 1 plus 2 plus 20 could result in 3"
output: "maybe some day 1 plus 2 could result in 3"

পিছনে / শূণ্যস্থান অনুমোদিত? <s> আমি কী ধরে নিতে পারি শব্দগুলিকে মূল স্ট্রিংয়ে একটি স্পেস দিয়ে আলাদা করা যায়? </ s>
কিওয়ারটি

উদাহরণ থেকে এটিকে বোঝা গেল, সুতরাং মন্তব্যে <s> </s> রয়েছে। ট্রিমিং স্পেস সম্পর্কে কী?
কিওয়ারটি

উত্তর:


17

রেটিনা , 28 বাইট:

এম! I` \ b হল (\ W) (? <! \ খ \ 1। + +) \ W *
¶
 
  • M! - প্রতিটি কাজের সাথে মেলে এবং নিউলাইন দ্বারা পৃথক সমস্ত শব্দ মুদ্রণ করুন।
  • i - অবহেলার ঘটনা.
  • \b(\w) - প্রতিটি শব্দের প্রথম অক্ষর ক্যাপচার করুন
  • (?<!\b\1.+)- চিঠিটি মিলে যাওয়ার পরে, পরীক্ষা করুন যে একই অক্ষর দিয়ে শুরু করে কোনও পূর্ববর্তী শব্দ ছিল না। \1.+কমপক্ষে দুটি অক্ষর নিশ্চিত করে, তাই আমরা বর্তমান শব্দটি বাদ দিচ্ছি।
  • \w*- বাকী শব্দটির সাথে মিল দিন।
    উপরের শব্দগুলি কেবলমাত্র শব্দের সাথে মেলে - অন্য সমস্ত অক্ষর মুছে ফেলা হয়।
  • ¶\n - স্পেস দিয়ে নিউলাইনগুলি প্রতিস্থাপন করুন।

এটি অনলাইন চেষ্টা করুন!


9

রেটিনা , 45 বাইট

i` \ বি ((\ W) \ W *) \ বি (? <= \ খ \ 2 \ W। * \ B +)

\ ওয়াট + +
 
^ | $

একই \wঅক্ষর ( iবিকল্পের সাথে সংবেদনশীল ক্ষেত্রে ) দিয়ে শুরু হওয়া শব্দগুলি মুছে ফেলার জন্য কেবল একটি একক রেজেক্স ব্যবহার করে, রানকে \Wএকটি একক জায়গায় রূপান্তরিত করে, তারপরে ফলাফল থেকে কোনও শীর্ষস্থানীয় / পিছনে স্থান সরিয়ে দেয়।

এটি অনলাইন চেষ্টা করুন!

সম্পাদনা করুন: ব্যবহার করে সংক্ষিপ্ত সংস্করণের জন্য @ কোবির উত্তর দেখুনM!`


এটিকে ঘৃণা করো, সবে আমাকে মারবে! আমি যদিও চেহারাটির পিছনে জানতে পারি না।
GamrCorps

3
আমি আরও একটি রেটিনা উত্তর যুক্ত করেছি - আমি মনে করি এটি ঠিক আছে যদি তারা যথেষ্ট আলাদা হয় (মূল ধারণাটি অবশ্যই একই রকম)।
কোবি

1
@ কোবি এটি আরও ভাল, তাই এটি দেখে আমি আনন্দিত :) আমাকে রেটিনার লাইনের বিকল্পগুলি সম্পর্কে কী কী আরও বেশি শিখতে হবে এবং কী নয় তা বুঝতে পেরেছি।
Sp3000

আপনি কিছু বাইট সংরক্ষণ করতে এটি করতে পারেন? i` \b((\w)\w*)\b(?<=\b\2\w*\b.+)(প্রথম স্থানের আগে \b) লাইনগুলি কি পরে অপ্রয়োজনীয়?
ফাঁস নুন

@ কেনি লাউ দুর্ভাগ্যক্রমে, আমি মনে করি না যে এটি কাজ করে কারণ শব্দগুলি স্পেস দিয়ে অগত্যা পৃথক করা হয় না, যেমনa...a -> a
Sp3000

9

জাভাস্ক্রিপ্ট (ES6), 73 71 বাইট

s=>s.match(u=/\w+/g).filter(w=>u[n=parseInt(w[0],36)]?0:u[n]=1).join` `

@ Edc65 এর জন্য 2 বাইট সংরক্ষণ করা হয়েছে!

পরীক্ষা

var solution = s=>s.match(u=/\w+/g).filter(w=>u[n=parseInt(w[0],36)]?0:u[n]=1).join` `;
var testCases = [
  "Ferulas flourish in gorgeous gardens.",
  "Take all first words for each letter... this is a test",
  "Look ^_^ .... There are 3 little dogs :)",
  "...maybe some day 1 plus 2 plus 20 could result in 3"
];
document.write("<pre>"+testCases.map(t=>t+"\n"+solution(t)).join("\n\n")+"</pre>");


ব্যবহার করছেন parseInt("_",36) = NaN? ব্লাসফেমি!
Sp3000

1
মজাদার ঘটনাটি হ'ল: এটি @ Sp3000
edc65

U = regexp ব্যবহার করা সত্যিই চালাক। 2 বাইট সংরক্ষণ করুনs=>s.match(u=/\w+/g).filter(w=>u[w=parseInt(w[0],36)]?0:u[w]=1).join' '
edc65

@ edc65 ধন্যবাদ এটি আসলে বেশ সুবিধাজনক যে এখানে একক বেস -৩ digit সংখ্যার জন্য ৩ possible টি সম্ভাব্য আউটপুট রয়েছে।
ব্যবহারকারী81655

7

পাইথ, 23 বাইট

J:z"\w+"1jdxDJhM.grhk0J

এটি অনলাইনে ব্যবহার করে দেখুন: বিক্ষোভ বা পরীক্ষার স্যুট

J:z"\w+"1রেজেক্স ব্যবহার করে ইনপুটটিতে সমস্ত শব্দ খুঁজে বের করে \w+এবং এগুলিকে সঞ্চয় করে J

.grhk0Jশব্দগুলিকে তাদের ছোট হাতের অক্ষর দ্বারা গোষ্ঠীভূত করে, hMপ্রতিটি গ্রুপের প্রথমটি নিয়ে যায়, xDJইনপুট স্ট্রিংয়ে এই শব্দগুলিকে তাদের সূচী অনুসারে বাছাই করে এবং তাদের মধ্যে jdফাঁক করে দেয়।



3

সি, 142 132 122 বাইট

@ টুকুসিকে 10 টি বাইট হালকা ধন্যবাদ!

b[200],k;main(c){for(;~c;isalnum(c)|c==95?k&2?:(k|=!b[c|32]++?k&1?putchar(32):0,7:2),k&4?putchar(c):0:(k&=1))c=getchar();}

শেষ আউটপুট শব্দের পরে একটি অনুসরণযোগ্য স্থান মুদ্রণ করে।


1
তোমার জন্য চেক শেভ করতে c>47এবং c<58ব্যবহার করে isalnumপরিবর্তেisalpha
tucuxi

3

এমএটিএল , 23 বাইট

'\w+'XXtck1Z)t!=XRa~)Zc

এটি অনাকাঙ্ক্ষিত চরিত্রগুলি অপসারণ এবং একই সময়ে বিভাজনের জন্য একটি রেজিএক্সপ্যাক ব্যবহার করার জাকুবের ধারণা ধার করে।

ইনপুট হল একটি স্ট্রিং যা একক উদ্ধৃতি দ্বারা আবদ্ধ।

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

'\w+'XX  % find words that match this regexp. Gives a cell array
t        % duplicate
c        % convert into 2D char array, right-padded with spaces
k        % make lowercase
1Z)      % get first column (starting letter of each word)
t!=      % duplicate, transpose, test for equality: all combinations  
XR       % set diagonal and below to 0
a~       % true for columns that contain all zeros       
)        % use as a logical index (filter) of words to keep from the original cell array
Zc       % join those words by spaces

2

57 টি কীস্ট্রোক ভিম করুন

:s/[^a-zA-Z_ ]//g<cr>A <cr>ylwv$:s/\%V\c<c-v><c-r>"\h* //eg<c-v><cr>@q<esc>0"qDk@q

ব্যাখ্যা:

:s/[^a-zA-Z_ ]//g                                 #Remove all invalid chars.
A <cr>                                            #Enter insert mode, and enter 
                                                  #a space and a newline at the end
ylwv$:s/\\c%V<c-v><c-r>"\h* //eg<c-v><cr>@q<esc>  #Enter all of this text on the 
                                                  #next line

0                                                 #Go to the beginning of the line
"qD                                               #Delete this line into register
                                                  #"q"
k@q                                               #Run "q" as a macro  

#Macro
ylw                                               #Yank a single letter
   v$                                             #Visual selection to end of line
     :s/                                          #Substitute regex
       \%V\c                                      #Only apply to the selection and 
                                                  #ignore case
            <c-v><c-r>"                           #Enter the yanked letter
                       \h*                        #All "Head of word" chars
                                                  #And a space
                           //                     #Replace with an empty string
                             eg                   #Continue the macro if not found
                                                  #Apply to all matches
                               <c-v><cr>          #Enter a <CR> literal
                                        @q<esc>   #Recursively call the macro

এইটি কত দিন আমি সত্যই হতাশ। "অবৈধ" অক্ষর (সবকিছু কিন্তু a-z, A-Z, _এবং স্থান) সত্যিই আমাকে ছুড়ে ফেলে বন্ধ। আমি নিশ্চিত যে এটি করার আরও ভাল উপায় আছে:

:s/[^a-zA-Z_ ]//g

যেহেতু \hএই সমস্তটির সাথে মিলে যায় জায়গার প্রত্যাশা, তবে কীভাবে মেটাচরকে একটি পরিসরে স্থাপন করা যায় তা আমি বুঝতে পারি না। কারও কাছে যদি টিপস থাকে তবে আমি তাদের শুনতে খুব পছন্দ করি।


3
কেন a-zA-Z_এবং না \w? অঙ্কগুলি বৈধ
edc65

2

জুলিয়া, 165 155 151 129 102 বাইট

g(s,d=[])=join(filter(i->i!=0,[(c=lcfirst(w)[1])∈d?0:(d=[d;c];w)for w=split(s,r"\W",keep=1<0)])," ")

এটি এমন একটি ফাংশন যা একটি স্ট্রিং গ্রহণ করে এবং একটি স্ট্রিং প্রদান করে।

Ungolfed:

function g(s, d=[])
    # Split the string into an array on unwanted characters, then for
    # each word, if the first letter has been encountered, populate
    # this element of the array with 0, otherwise note the first letter
    # and use the word. This results in an array of words and zeros.
    x = [(c = lcfirst(w)[1])  d ? 0 : (d = [d; c]; w) for w = split(s, r"\W", keep=1<0)]

    # Remove the zeros, keeping only the words. Note that this works
    # even if the word is the string "0" since 0 != "0".
    z = filter(i -> i != 0, x)

    # Join into a string and return
    return join(z, " ")
end

Sp3000 সাহায্যে 53 বাইট সংরক্ষণ করা!



2

সি # (লাইনকিপ্যাড) - 136 128 বাইট

var w=Util.ReadLine().Split(' ');string.Join(" ",w.Select(s=>w.First(f=>Regex.IsMatch(""+f[0],"(?i)"+s[0]))).Distinct()).Dump();

2

05 এ বি 1 ই , 40 বাইট

কোড:

94L32+çJžj-DU-ð¡""Kvy¬Xsl©åï>iX®«Uy}\}ðý

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা:

আমরা প্রথমে সমস্ত অক্ষর তৈরি করি যা ইনপুট স্ট্রিং থেকে মুছে ফেলা উচিত 94L32+ç( এখানে চেষ্টা করুন ) using আমরা এই স্ট্রিংটি ব্যবহার করে যোগ দিয়েছি Jএবং [a-zA-Z0-9_]যা inj এ সংরক্ষণ করা হয়েছে তা এখানে সরিয়ে ফেলুন ( এখানে চেষ্টা করুন )। প্রথম স্ট্রিং থেকে দ্বিতীয় স্ট্রিংয়ের সমস্ত অক্ষর আমরা সরিয়ে ফেললাম, যা আমাদের ছেড়ে দেবে:

!"#$%&'()*+,-./:;<=>?@[\]^`{|}~

এটি এখানেও পরীক্ষা করা যায় । আমরা Dএটিকে উপস্থাপন করি এবং কম্যান্ডের Xসাথে জমা করি U। তারপরে আমরা ইনপুট থেকে এই স্ট্রিংয়ের সমস্ত অক্ষর সরিয়ে ফেলি। এরপরে আমরা ð¡সমস্ত খালি স্ট্রিংগুলি ব্যবহার করে ( হোয়াইটস্পেসে) বিভক্ত করি এবং মুছে ফেলি ""K। আমরা এখন আছে এই

এটি ইনপুটটির পরিষ্কার সংস্করণ, যা আমরা কাজ করব। আমরা প্রতিটি উপাদান ব্যবহার করে মানচিত্র v। এটি yস্ট্রিং ভেরিয়েবল হিসাবে ব্যবহার করে । আমরা স্ট্রিংয়ের প্রথম অক্ষরটি ব্যবহার করে ¬ধাক্কা দিয়ে থাকি X, এতে সমস্ত নিষিদ্ধ অক্ষর ( !"#$%&'()*+,-./:;<=>?@[\]^`{|}~) সহ স্ট্রিং থাকে । lপ্রথম অক্ষরটির ওভারকেস সংস্করণ (যা ©নিবন্ধকের কাছেও প্রকাশ করা হবে ) ব্যবহার করে এই স্ট্রিংটিতে রয়েছে কিনা তা আমরা পরীক্ষা করি å। এই অংশটি দ্বারা আবৃত:, ï>iযদি প্রথম বর্ণটি নিষিদ্ধ অক্ষরগুলির স্ট্রিংয়ে উপস্থিত না থাকে ( X), আমরা নিষিদ্ধ অক্ষরগুলির তালিকাতে এই চিঠিটি সংযুক্ত করি (এর সাথে সম্পন্ন করা X®«U) এবং আমরা yস্ট্যাকের শীর্ষে এগিয়ে যাই ।

অবশেষে, যখন স্ট্রিং ফিল্টার করা হয়, আমরা স্ট্যাকের সঙ্গে শূণ্যস্থান দ্বারা যোগদানের ðý


1
... ব্যাখ্যা? :-)
লুইস মেন্ডো

@ লুইস মেন্ডো আমাকে স্মরণ করিয়ে দেওয়ার জন্য ধন্যবাদ! সম্পন্ন হয়েছে :)
আদনান

2

পিএইচপি

বেশিরভাগ উত্তরে রেইগেক্সের ব্যবহার দ্বারা অনুপ্রাণিত হয়ে আমি প্রথমে কেবল একটি ঝরঝরে তাত্পর্য প্রদর্শন করার জন্য রেইগেক্স ব্যবহার না করেই এটি করার চেষ্টা করেছি, তবে ইনপুট হিসাবে পরিষ্কার স্ট্রিং না থাকার স্টিকিং পয়েন্টটি ধারণাটিকে নষ্ট করে দিয়েছে। দু: খিত।

ফাংশন মোড়ক সহ 89 বাইট

function f($s){foreach(preg_split('/\W/',$s)as$w)$c[lcfirst($w)[0]]++?:$v.=" $w";echo$v;}

ফাংশন মোড়ক ছাড়াই (pre গুলি পূর্ব-ঘোষিত হওয়া প্রয়োজন), 73 বাইট

foreach(preg_split('/\W/',$s)as$w)$c[lcfirst($w)[0]]++?:$v.=" $w";echo$v;

ব্যাখ্যা:

foreach(preg_split('/\W/',$s)as$w)$c[lcfirst($w)[0]]++?:$v.=" $w";echo$v;
        preg_split('/\w/',$s)                                             Break input on all non-word characters
foreach(                     as$w)                                        Loop through each 'word'
                                     lcfirst($w)[0]                       Take the first letter of the lowercase version of the word
                                  $c[              ]++?:                  Increment an array element with a key of that letter after checking if it's false-y (0)
                                                        $v.=" $w";        Add the word if the letter wasn't found (if the previous condition evaluated to false)
                                                                  echo$v; Print the new string to screen.

আমার একমাত্র আফসোস হ'ল আমি চিঠির কেসটি চেক / রূপান্তর করার দ্রুত উপায় খুঁজে পাইনি।


2

পাইথন, 103 বাইট

import re
lambda s,d=[]:[w for w in re.findall("\w+",s)if(d.append(w.lower()[0])or d[-1])not in d[:-1]]

1

লুয়া, 172 বাইট

আমি যেভাবে চাইছিলাম এটি দীর্ঘতরভাবে শেষ হয়েছিল ...

t={}(...):gsub("[%w_]+",function(w)b=nil for i=1,#t
do b=t[i]:sub(1,1):lower()==w:sub(1,1):lower()and 1 or b
end t[#t+1]=not b and w or nil end)print(table.concat(t," "))

Ungolfed

t={}                           -- initialise the accepted words list
(...):gsub("[%w_]+",function(w)-- iterate over each group of alphanumericals and underscores
  b=nil                        -- initialise b (boolean->do we have this letter or not)
  for i=1,#t                   -- iterate over t
  do
    b=t[i]:sub(1,1):lower()    -- compare the first char of t's i word
       ==w:sub(1,1):lower()    -- and the first char of the current word
           and 1               -- if they are equals, set b to 1
           or b                -- else, don't change it
  end
  t[#t+1]=not b and w or nil   -- insert w into t if b isn't set
end)

print(table.concat(t," "))     -- print the content of t separated by spaces

1

গম্ভীরভাবে, 43 বাইট

6╙¬▀'_+,;)-@s`;0@Eùk`M┬i;╗;lrZ`i@╜í=`M@░' j

এটি অনলাইন চেষ্টা করুন!

রেজেক্স ক্ষমতাগুলির অভাব এটি করা দরকারের তুলনায় এটি আরও জটিল করে তুলেছে।

ব্যাখ্যা:

6╙¬▀'_+,;)-@s`;0@Eùk`M┬i;╗;lrZ`i@╜í=`M@░' j
6╙¬▀                                         push digits in base 62 (uppercase and lowercase letters and numbers)
    '_+                                      prepend underscore
       ,;)                                   push two copies of input, move one to bottom of stack
          -                                  get all characters in input that are not letters, numbers, or underscores
           @s                                split input on all occurrences of non-word characters
             `;0@Eùk`M                       for each word: push the first letter (lowercased)
                      ┬i                     transpose and flatten (TOS is list of first letters, then list of words)
                        ;╗                   push a copy of the first letters list to register 0
                          ;lrZ               zip the list of first letters with their positions in the list
                              `i@╜í=`M       for each first letter: push 1 if that is the first time the letter has been encountered (first index of the letter matches its own index) else 0
                                      @░     filter words (take words where corresponding element in the previous list is truthy)
                                        ' j  join on spaces

1

রুবি 76 বাইট

s;f={};s.scan(/(([\w])[\w]*)/).map{|h,i|f[j=i.upcase]?nil:(f[j]=!p; h)}.compact.*' '

অথবা পদ্ধতি সংজ্ঞা 88 বাইট সহ

def m s;f={};(s.scan(/((\w)\w*)/).map{|h,i|f[j=i.upcase]?nil:(f[j]=1; h)}-[p]).*' ';end

অবহেলিত এবং ইউনিট পরীক্ষা সহ:

def m_long(s)
  #found  - Hash with already found initials
  f={}
  #h=hit, i=initial, j=i[0].downcase
  s.scan(/(([\w\d])[\w\d]*)/).map{|h,i| 
    f[j=i.upcase] ? nil : (f[j] = true; h)
  }.compact.join(' ')
end
#true == !p
#~ def m(s)
  #~ f={};s.scan(/(([\w\d])[\w\d]*)/).map{|h,i|f[j=i.upcase]?nil:(f[j]=!p; h)}.compact.join' '
#~ end
def m s;f={};s.scan(/(([\w\d])[\w\d]*)/).map{|h,i|f[j=i.upcase]?nil:(f[j]=!p; h)}.compact.join' ';end

#~ s = "Ferulas flourish in gorgeous gardens."
#~ p s.split

require 'minitest/autorun'
class FirstLetterTest < Minitest::Test
  def test_1
    assert_equal("Ferulas in gorgeous",m("Ferulas flourish in gorgeous gardens."))
    assert_equal("Ferulas in gorgeous",m_long("Ferulas flourish in gorgeous gardens."))
  end
  def test_2
    assert_equal("Take all first words each letter is",m("Take all first words for each letter... this is a test"))
    assert_equal("Take all first words each letter is",m_long("Take all first words for each letter... this is a test"))
  end
  def test_3
    assert_equal("Look _ There are 3 dogs",m("Look ^_^ .... There are 3 little dogs :)"))
    assert_equal("Look _ There are 3 dogs",m_long("Look ^_^ .... There are 3 little dogs :)"))
  end
  def test_4
    assert_equal("maybe some day 1 plus 2 could result in 3",m("...maybe some day 1 plus 2 plus 20 could result in 3"))
    assert_equal("maybe some day 1 plus 2 could result in 3",m_long("...maybe some day 1 plus 2 plus 20 could result in 3"))
  end
end

রেজেক্সে, \wসংখ্যার অক্ষর অন্তর্ভুক্ত থাকে, তাই এর [\w\d]সাথে প্রতিস্থাপন করা যায় \w। এছাড়াও, যদি nilআপনি কল করেন তখন মানগুলি যদি অ্যারেতে থাকে join' '(বা আরও ভাল, *' 'আপনি আরও বাইট সংরক্ষণ করার জন্য ব্যবহার করতে পারেন এমন একটি শর্টহ্যান্ড), সেগুলি অদৃশ্য হয়ে যায়, সুতরাং কলটি compactঅপ্রয়োজনীয়।
মূল্য কালি

ধন্যবাদ কেভিনলৌ ধন্যবাদ \w\dআমার জন্য লজ্জাজনক। তবে আমি যদি অপসারণ করি তবে আমি compactঅতিরিক্ত স্পেস পাব, (দেখুন ['x',nil,'x']*'y' == 'xyyx')। নাকি আমি কিছু মিস করেছি?
knut

ওফ, আপনি ঠিক বলেছেন। সেক্ষেত্রে, (list-[p])সংরক্ষণ উপর বাইট list.compact। এছাড়াও, /\w/সমান /[\w]/। অবশেষে, আপনি আপনার প্রতিস্থাপন করতে পারেন nilসঙ্গে pএবং আপনার !pসঙ্গে 1(আপনার হ্যাশ শুধুমাত্র এটা truthy মান প্রয়োজন দেখাও)
মূল্য কালি

ধন্যবাদ, আমি আপনার মন্তব্যগুলি যুক্ত করেছি, এর nilসাথে প্রতিস্থাপনটি pকাজ করে না। যদি আমি এটি আমার কোডের মধ্যে ব্যবহার করি তবে আমি একটি সিনট্যাক্স ত্রুটি পাই। আমার মতো এনক্যাপসুলেট করতে হবে (p)- তবে আমার আবার 3 টি অক্ষর রয়েছে।
knut

তিন ফ্লিপ এবং তারপর এটি একটি বাইট সংরক্ষণ করতে কাজ করে: !f[j=i.upcase]?(f[j]=1;h):p। এছাড়াও এটি সম্পর্কে কেবল ভেবেছি, তবে স্ট্রিং সূচকের কারণে , কাজের পক্ষেও ব্যবহার করা s.scan(/\w+/)এবং অপসারণ করা । ih[0]
মূল্য কালি

1

গ্রেপ এবং অ্যাড, 68 56 বাইট

এই পান্ডুলিপি:

echo `grep -o '\w*'|awk '!x[tolower(substr($0,1,1))]++'`

ব্যাখ্যা:

  • grep -o আইনী শব্দের সাথে মেলে, প্রতিটি তার নিজস্ব লাইনে মুদ্রণ করে।

  • awkপ্রতিটি লাইনের প্রথম অক্ষরটি সাথে নিয়ে যায় substr, এটিকে ছোট হাতের অক্ষরে পরিণত করে এবং তারপরে সেই কীটির সাথে একটি হ্যাশটেবল এন্ট্রি বৃদ্ধি করে। যদি ইনক্রিমেন্টের আগে মানটি সেট না করা হয় তবে লাইনটি মুদ্রিত হয়।

  • echo ... লাইনগুলি কথায় ফেরায়

আমি পূর্বে ছাড়া একটি সমাধান তৈরি করার চেষ্টা করেছেন awkব্যবহার করে, uniq, sort, grepএবং bashকিন্তু ব্যর্থ হয়। সম্পাদনাগুলিতে ইতিহাস।

আমি যে কিছু উন্নতি মিস করেছি তার জন্য ডেনিসকে ধন্যবাদ।


0

পাইথন 3.5, 138 বাইট:

import re;lambda o,t=[]:''.join([y[0]for y in[(u+' ',t.append(u[0].lower()))for u in re.sub('\W+',' ',o).split()if u[0].lower()not in t]])

মূলত, যা হচ্ছে তা হ'ল ..

  1. একটি সাধারণ নিয়মিত অভিব্যক্তি ব্যবহার করে, প্রোগ্রামটি সমস্ত অক্ষরকে প্রতিস্থাপন করে, ছোট হাতের বা বড় হাতের অক্ষর, অঙ্কগুলি, বা স্থানগুলির সাথে স্ট্রিংয়ের আন্ডারস্কোরগুলি বাদ দেয় এবং তারপরে সেই স্পেসগুলিতে স্ট্রিংটি বিভক্ত করে।
  2. তারপরে তালিকার বোধগম্যতা ব্যবহার করে, একটি তালিকা তৈরি করুন যা বিভক্ত স্ট্রিংয়ের সমস্ত শব্দের মধ্য দিয়ে পুনরাবৃত্তি করে এবং "টি" তালিকাতে প্রতিটি শব্দের প্রথম অক্ষর যুক্ত করে।
  3. প্রক্রিয়াতে, যদি বর্তমান শব্দের প্রথম অক্ষরটি ইতিমধ্যে "t" তালিকায় না থাকে, তবে সেই শব্দটি এবং একটি অনুমানের স্থানটি বর্তমান তালিকায় যুক্ত করা হবে। অন্যথায়, তালিকাটি "টি" তালিকাভুক্ত করতে প্রতিটি শব্দের প্রথম অক্ষর সংযোজন করে চালিয়ে যায় continues
  4. অবশেষে, যখন বিভাজনে সমস্ত শব্দ পুনরাবৃত্তি হয়, নতুন তালিকার শব্দগুলি একটি স্ট্রিংয়ে যুক্ত হয়ে ফিরে আসে।

0

পিএইচপি 120bytes

function a($s){foreach(preg_split('/\W/',$s)as$w)if(!$o[ucfirst($w[0])]){$o[ucfirst($w[0])]=$w;}return implode(" ",$o);}

এটি একগুচ্ছ সতর্কতা উত্পন্ন করে তবে তা ঠিক।


Is functionপ্রয়োজনীয়?
আওয়ামী লীগের

0

জাভাস্ক্রিপ্ট ES6, 108 107 অক্ষর

107 অক্ষর, ফলাফল স্ট্রিং ছাঁটা হয়

r=s=>s.split``.reverse().join``
f=s=>r(r(s).replace(/\b\w*(\w)\b(?=.*\1\b)/gi,'')).replace(/\W+/g,' ').trim()

টেস্ট:

["Take all first words for each letter... this is a test",
"Look ^_^ .... There are 3 little dogs :)",
"...maybe some day 1 plus 2 plus 20 could result in 3"
].map(f) + '' == [
"Take all first words each letter is",
"Look _ There are 3 dogs",
"maybe some day 1 plus 2 could result in 3"
]


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.