দীর্ঘতম বাদ্যযন্ত্রের স্ট্রিংটি সন্ধান করুন


9

একটি মিউজিকাল স্ট্রিং এমন কোনও স্ট্রিং যা পিয়ানো কীবোর্ডে প্লে করা যায়।

আমরা যারা বাচ্চাদের হিসাবে পিয়ানো শিখতে বাধ্য হইনি তাদের জন্য কীবোর্ডটি কেমন দেখাচ্ছে তা এখানে।

পিয়ানো

সুতরাং স্ট্রিংটি feed a dead cabbageবাদ্যযন্ত্রের স্ট্রিং কারণ প্রতিটি একক অক্ষর এই নোটগুলির একটির সাথে মিলে যায়।

আপনার চ্যালেঞ্জটি হল এমন একটি প্রোগ্রাম লিখুন যা STDIN থেকে ইনপুট হিসাবে স্ট্রিং নেয় এবং দীর্ঘতম বাদ্যযন্ত্রের স্ট্রিং খুঁজে পায়। তারপরে আপনার প্রোগ্রামটি অবশ্যই সাবস্ট্রিংটি মুদ্রণ করবে এবং তার দৈর্ঘ্য। এখানে কিছু নমুনা ইনপুট / আউটপুট রয়েছে।

ইনপুট: "আমাকে খাওয়ান! আমি ক্ষুধার্ত!"

আউটপুট: ফিড 4


ইনপুট: না না, না, কোনও মিউস্টিন!

আউটপুট: 0


ইনপুট: "A **bad** !!!fAd82342"

আউটপুট: আবদফাদ 7


ইনপুট: "ভাল গল্ফিং!"

আউটপুট: ডিজি 2

বিধি

  • আপনার আউটপুট আপার বা লোয়ার-কেস হতে পারে তবে কোনও বিশৃঙ্খলা বা স্পেস থাকতে হবে না।

  • ইনপুট স্ট্রিংগুলিতে মূলধন এবং বিরামচিহ্ন থাকবে, তবে এটি স্ট্রাস্টিংকে "বাদ্যযন্ত্র" হিসাবে বিবেচনা করা হয় বা না তা প্রভাবিত করে না।

  • বাদ্যযন্ত্রীয় স্ট্রিং এবং সংখ্যাটির মধ্যে অবশ্যই একটি স্থান থাকতে হবে।


1
শুধুমাত্র সম্পূর্ণ প্রোগ্রাম, কোন কার্যকারিতা?
অ্যালেক্স এ।

@ অ্যালেক্সা হ্যাঁ, পুরো প্রোগ্রাম।
জেমস

আউটপুট মিশ্র ক্ষেত্রে হতে পারে?
nderscore

হ্যাঁ, এটি হতে পারে
জেমস

উত্তর:


4

পাইথ, 25 23 বাইট

pdJef!-T<G7+k.:@Grz0)lJ

2 জ্যাকেট @ জাকুবকে ধন্যবাদ বাঁচিয়েছে

প্রদর্শন. পরীক্ষার জোতা।

ব্যাখ্যা:

  • rz0: ইনপুট, ছোট হাতের নাগালে।
  • @Grz0: যে কোনও নন-বর্ণমালা অক্ষর স্ট্রিপ করুন।
  • .:@Grz0): সমস্ত সাবস্ট্রিং তৈরি করুন।
  • +k.:@Grz0): খালি স্ট্রিং এ যুক্ত করুন।
  • f ... +k.:@Grz0): এই স্ট্রিং উপর ফিল্টার।
  • -T<G7: অ বাদ্যযন্ত্রের অক্ষরের জন্য প্রতিটি স্ট্রিং ফিল্টার করুন।
  • !-T<G7: ফলাফল নেতিবাচক। এটি Trueযদি হয় এবং কেবল যদি স্ট্রিং বাদ্যযন্ত্র ছিল।
  • f!-T<G7+k.:@Grz0): বাদ্যযন্ত্রের স্ট্রিংগুলি ফিল্টার করুন।
  • ef!-T<G7+k.:@Grz0): শেষ এই জাতীয় স্ট্রিং নিন। .:আকার অনুসারে সাবস্ট্রিংগুলি অর্ডার করে, সুতরাং এটি দীর্ঘতম বাদ্যযন্ত্রের স্ট্রিংও।
  • Jef!-T<G7+k.:@Grz0): ফলাফল নির্ধারণ করুন J
  • pdJ: শেষ অক্ষর হিসাবে স্থান Jসহ প্রিন্ট করুন d
  • lJ: তারপরে, দৈর্ঘ্যের মুদ্রণ করুন J

2

রুবি, 83 75 টি অক্ষর

মোটামুটি স্ব-ব্যাখ্যামূলক।

puts"#{s=gets.gsub(/[^a-z]/i,'').split(/[^a-g]/i).max_by &:size} #{s.size}"

রুবি রেজেক্স ( .split(/[^a-g]/)) এ স্ট্রিংগুলিকে বিভক্ত করতে পারে এই সুবিধাটি নিয়ে যায় ।


1

পার্ল, 58

#!perl -p
$\=0;map{$i++;$\="$& $i"if/[a-g]{$i}/i}(s/\W//gr)x y!!!cd

ব্যবহার করুন:

$ perl ~/mus.pl <<<"FEED ME! I'm hungry!"
FEED 4

অথবা

$ perl -pe'$\=0;map{$i++;$\="$& $i"if/[a-g]{$i}/i}(s/\W//gr)x y!!!cd' <<<"FEED ME! I'm hungry!"
FEED 4

0

জাভা, 268

class Z{public static void main(String[]a){String s=new java.util.Scanner(System.in).nextLine().toLowerCase().replaceAll("[^a-z]",""),t;for(int i=s.length();i-->0;)if(!(t=s.replaceFirst("^(.*)([a-g]{"+i+"})(.*)$","$2")).equals(s)){System.out.println(t+" "+i);break;}}}

সম্প্রসারিত:

class Z {
    public static void main(String[] a) {
        String s = new java.util.Scanner(System.in).nextLine().toLowerCase().replaceAll("[^a-z]", ""), t;
        for (int i = s.length(); i-- > 0;) {
            if (!(t = s.replaceFirst("^(.*)([a-f]{" + i + "})(.*)$", "$2")).equals(s)) {
                System.out.println(t + " " + i);
                break;
            }
        }
    }
}


0

আর, 98 94 বাইট

p=strsplit(gsub("[^a-z]","",readline(),T),"[^a-gA-G]+")[[1]];m=max(n<-nchar(p));cat(p[n==m],m)

অবহেলিত + ব্যাখ্যা:

# Read from STDIN and remove all non-alphabetic characters
r <- gsub("[^a-z]", "", readline(), ignore.case = TRUE)

# Split r into a vector of substrings on characters other than a-g
p <- strsplit(r, "[^a-g]+")[[1]]

# Get the number of characters in each substring
n <- nchar(p)

# Get the length of the longest substring
m <- max(n)

# Print the string and length
cat(p[n == m], m)

পরামর্শ স্বাগত!

দ্রষ্টব্য: আউটপুটটি এখন মিশ্র-কেস, যা ওপি'র সম্পাদনা অনুসারে অনুমোদিত। এটি 4 বাইট সংরক্ষণ করেছে।


0

গল্ফ্লুয়া , 84 85 84 বাইট

B=I.r():g("%A",""):g("[^a-gA-G]"," ")M=0Q=""~@W B:gm("(%w+)")?#W>M M=#W Q=W$$w(Q,M)

আমি প্রথমে লোয়ারকেসকে বাধ্য করি , তারপরে শূন্যস্থানবিহীন অক্ষরযুক্ত অক্ষরগুলিকে স্ট্রিপ করি , তারপরে ইনপুটটিতে সমস্ত অ-বাদ্যযন্ত্র বর্ণগুলি সরিয়ে ফেলি (স্টিডিন)। আমি তারপরে প্রতিটি বাকী শব্দটি স্ক্যান করে বৃহত্তম এবং দৈর্ঘ্যের (স্টাডআউট) আউটপুট দেওয়ার আগে এর দৈর্ঘ্যের তুলনা করি। লুপটি করার সম্ভবত একটি ছোট্ট উপায় আছে তবে এই মুহুর্তে এটি আমি পেয়েছি।

একটি অব্যক্ত লুয়া কোড হবে would

Line = io.read()                                  -- read stdin
NoSpaced = Line:gsub("%A","")                     -- strip non-letter chars
MusicalLetters = NoSpaced:gsub("[^a-gA-g]", " ")  -- remove non-musical letters
WordLen = 0, LongWord = ""                        -- helpers
for words in MusicalLetters:gmatch("(%w+)") do    -- scan for longest word
   if words:length() > WordLen then 
      WordLen = words:length()
      LongWord = words 
   end
end
print(LongWord, WordLen)                          -- output solution
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.