আমি কত দ্রুত উপগ্রহ করছি?


19

ভূমিকা

আমার গাড়ির স্পিডোমিটার হ্যাক হয়েছিল! আমি কত দ্রুত গাড়ি চালাচ্ছি তা দেখানোর পরিবর্তে এটি কেবল দেখায়: "ভ্রুম!" আমি কত দ্রুত যাচ্ছি তা জানতে দয়া করে আমাকে সহায়তা করুন।

চ্যালেঞ্জ

ইনপুট হিসাবে একটি স্ট্রিং নিন, এবং এটি রেজেক্সের সাথে মেলে কিনা তা পরীক্ষা করুন /^[Vv]ro*m!$/m। ইংরাজীতে যার অর্থ স্ট্রিংয়ের যে কোনও রেখার মূলধন বা ছোট হাতের অক্ষর দিয়ে শুরু হওয়া উচিত v, তারপরে একটি ছোট rহাতের অক্ষর o, তারপরে ছোট হাতের অক্ষরের কোনও পরিমাণ (শূন্য সহ) , তারপরে হুবহু স্ট্রিং m!। অন্যান্য লাইন থাকতে পারে, তবে ভারুম স্ট্রিংটি অবশ্যই নিজের লাইনে থাকতে হবে।

যদি আপনি কোনও মিল খুঁজে পান, তবে আপনাকে অবশ্যই oভ্রুম স্ট্রিংয়ের পরিমাণ গণনা করতে হবে এবং এটি আউটপুট করতে হবে। তবে আপনি যদি কোনও মিল খুঁজে না পান, আপনার এমন কোনও ডিফল্ট মান আউটপুট করা উচিত যা অন্যথায় আউটপুট করা যায় না (যেমন -1বা একটি খালি স্ট্রিং)

অনুস্মারক

স্কোরিং

এটি , তাই বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী। যাইহোক , আমি কোনও উত্তর গৃহীত হিসাবে চিহ্নিত করব না।

পরীক্ষার মামলা

ইনপুট

Vrom!

আউটপুট 1

ইনপুট

vrooooooom!

আউটপুট 7

ইনপুট

Hello, Vroom!

আউটপুট (none)

ইনপুট

Foo bar boo baz
Vrooom!
hi

আউটপুট 3

ইনপুট

Vrm!ooo

আউটপুট (none)

ইনপুট

PPCG puzzlers pie

আউটপুট (none)

ইনপুট

hallo
vROOOm!

আউটপুট (none)

উত্তর:



4

পাইথন 2 , 56 53 বাইট

lambda x:len(re.search('^[Vv]r(o*)m!$',x,8).group(1))

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

বেসিক রেজেক্স এবং গোষ্ঠীকরণ, পুনরায় মাল্টলাইন পতাকা ব্যবহার করে (যার মূল্য 8 রয়েছে) এবং পুনরায় অনুসন্ধান এটি মাল্টলাইন ইনপুটগুলির জন্য কাজ করে তা নিশ্চিত করার জন্য। কোনও মিল না পাওয়া গেলে একটি ব্যতিক্রম উত্থাপন করে। (re.M == 8)টিপ থেকে -৩ বাইটের জন্য @ ওভসকে ধন্যবাদ ।


1
পিপিসিজিতে আপনাকে স্বাগতম! আমি আপনার উত্তরটি পুনরায় ফর্ম্যাট করেছি এটি কিছুটা সুন্দর দেখাতে, আপনি যদি আমার সম্পাদনায় অসন্তুষ্ট হন তবে আপনি সর্বদা ফিরে যেতে পারেন roll BTW। আমি tio.run এর মতো কিছুতে লিঙ্ক করার পরামর্শ দিচ্ছি যাতে লোকেরা সহজেই আপনার উত্তরটি পরীক্ষা করতে পারে।
ბიმო

re.Mমান আছে 8, তাই কেবল ব্যবহার করতে পারেনre.search(regex,x,8)
ovs

4

আর , 62 60 58 44 বাইট

nchar(grep("^[Vv]ro*m!$",readLines(),v=T))-4

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

@ জিউসেপ 14 বাইট সহ গল্ফ করেছে

ব্যাখ্যা সহ মূল পদ্ধতির:

function(x)attr(el(regexec("(?m)[Vv]r(o*)m!$",x,,T)),"m")[2]

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

আর এর সাতটি প্যাটার্ন ম্যাচিং ফাংশন রয়েছে। আরো সাধারণভাবে ব্যবহৃত বেশী grep, greplএবং sub, কিন্তু এখানে জন্য একটি চমৎকার ব্যবহার এর regexec

regexecআপনাকে একগুচ্ছ জিনিস দেয়, যার মধ্যে একটি হ'ল যে কোনও ক্যাপচারিত স্ট্রস্ট্রিংয়ের দৈর্ঘ্য (o*), এক্ষেত্রে মাল্টলাইন রেজেক্সের অংশ।

attr(el .... "m")[2]কাপড় পছন্দসই নম্বর পেতে একটি golfy উপায়।

ফেরত পাঠায় NAযদি কোনো মিল নেই।



আমার 44 বাইট অ্যাপ্রোচ আছে ... আপনি আমাকে না চাইলে এটি পোস্ট করবে না।
জিউসেপে

@ জিউজ্পে নিশ্চিত না কেন নয়? বিশেষত যদি এটি মৌলিকভাবে পৃথক হয়।
এনজিএম

3

এটি ব্যর্থ হয়vroooooooooooom!x\nvrom!
ბიმო

1
হিসাবে আমরা একটি ত্রুটি সাথে প্রস্থানের অনুমতি করছি কোন মিল খুঁজে পাওয়া যায়, আপনি কাজ করতে পারে দেখে এই জন্য -3 বাইট, সমস্যা @BMO প্রক্রিয়ায় উপরে উল্লিখিত ফিক্সিং।
শেগি

আনস্রোসড আউট 41 অবশ্যই এখনও 41
রেডওয়াল্ফ প্রোগ্রাম

@ শেগি কি [1]. lengthজন্য জায়গা আছে ?
l4m2

@ l4m2, একটি টাইপো! আমি আমার ফোনে এটি স্পট করি নি 'কারণ lengthযাইহোক একটি নতুন লাইনে ব্রেক হয়ে যাচ্ছে।
শেগি

3

পাওয়ারশেল, 62 58 53 48 বাইট বাইট

"$($args|sls '(?m-i)^[Vv]ro*m!$'|% M*)".Length-4

oপ্রথমটিতে সংখ্যাগুলি প্রদান করে Vroom!, বা -4 Vroom!না পাওয়া গেলে।

মন্তব্য:

  • slsনির্বাচন- স্ট্রিংয়ের জন্য উপনাম ;
  • (?m-i) অভ্যন্তরের অভ্যন্তরের অর্থ:
    • মাল্টলাইন মোড ব্যবহার করুন। ^এবং $একটি স্ট্রিংয়ের শুরু এবং শেষের পরিবর্তে একটি লাইনের শুরু এবং শেষের সাথে মেলে।
    • কেস-সংবেদনশীল মিলটি ব্যবহার করুন
  • |% M*হয় শর্টকাট সম্পত্তি জন্য Matches, যা একটি প্রথম ম্যাচ দেয়, কারণ আমরা ব্যবহার করি না -AllMatchesপ্যারামিটার।

পরীক্ষার স্ক্রিপ্ট:

$f = {

"$($args|sls '(?m-i)^[Vv]ro*m!$'|% M*)".Length-4

}

@(
,('Vrom!',1)
,('vrooooooom!',7)
,('Hello, Vroom!',-4)
,('Foo bar boo baz
Vrooom!
hi',3)
,('Vrm!ooo',-4)
,('PPCG puzzlers pie',-4)
,('hallo
vROOOm!',-4)
,('
Vrooom!
Vrooooom!
',3)        # undefined behavior.
,('vrm!',0) # :)
) | % {
    $n,$expected = $_
    $result = &$f $n
    "$($result-eq$expected): $result"
}

আউটপুট:

True: 1
True: 7
True: -4
True: 3
True: -4
True: -4
True: -4
True: 3
True: 0

2

পাওয়ারশেল , 83 বাইট

($args-split"`n"|%{if(($x=[regex]::Match($_,"^[Vv]ro*m!$")).success){$x}}).length-4

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

-splitইনপুট গুলি $argsউপর `newlines, পাইপ লুপ জন্য একটি মধ্যে যারা। প্রতিটি পুনরাবৃত্তির, আমরা চেক কিনা আমাদের [regex]::Matchএকটি .successবা না। যদি তা হয় তবে আমরা $xপাইপলাইনে (রেজেক্স ফলাফলগুলি অবজেক্ট) ছেড়ে যাই । লুপের বাইরে, আমরা .lengthসম্পত্তিটি নিই - এটি যদি রেইজেক্স ফলাফলের অবজেক্ট হয় তবে এটি ম্যাচের দৈর্ঘ্য (উদাহরণস্বরূপ, "ভ্রুম!" ​​6 হবে); যদি এটি কোনও রেজেক্স ফলাফলের অবজেক্ট না হয় তবে দৈর্ঘ্য শূন্য। তারপরে আমরা 4গণনাগুলি অপসারণ Vrm!করতে পাইপলাইনে রেখে দেই । আউটপুট অন্তর্ভুক্ত। -4কোনও মিল না পাওয়া গেলে ফলাফল আউটপুট করে ।


sls "^[Vv]ro*m!$"?
mazzy

@ mamazy কিভাবে মাল্টলাইন ইনপুট জন্য কাজ করবে? আপনার একমাত্র ইনপুটটি একটি স্ট্রিং, এবং উদাহরণস্বরূপ এটি slsফিরিয়ে দেবে ('','Vroom!','')
অ্যাডমবর্কবার্ক

এটি সমাধান সম্পূর্ণ হয়নি। মানে, আপনি slsপরিবর্তে চেষ্টা করতে পারেন[regex]::Match
mazzy

@ ম্যামজি সম্ভবত আপনার এটি আলাদা সমাধান হিসাবে পোস্ট করা উচিত।
অ্যাডমবর্কবার্ক

2

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

L$m`^[Vv]r(o*)m!$
$.1

এটি অনলাইন চেষ্টা করুন! ব্যাখ্যা: Lতালিকার মিলগুলি, সুতরাং যদি রেজেক্স মেলতে ব্যর্থ হয় তবে আউটপুট খালি। $ফলাফলটি ম্যাচের পরিবর্তে বিকল্প হিসাবে নিয়ে আসে। mএটিকে একটি বহুবিধ ম্যাচ করে তোলে ( mপ্রশ্নের পিছনে থাকা সমতুল্য )। .প্রতিকল্পন এটা আউটপুট দশমিক মধ্যে ক্যাপচার দৈর্ঘ্য তোলে।


2

SNOBOL4 (CSNOBOL4) , 99 82 বাইট

I	INPUT POS(0) ('V' | 'v') 'r' ARBNO('o') @X 'm!' RPOS(0)	:F(I)
	OUTPUT =X - 2
END

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

অনুমানটির দুর্দান্ত সরাসরি এসএনওবিওল অনুবাদ, প্রতিটি লাইনটি পড়া না হওয়া পর্যন্ত এটি মেলে এমন একটি খুঁজে না পাওয়া পর্যন্ত বিটের ^[Vv]ro*m!$দৈর্ঘ্যকে আউটপুট করে o*

Vroom!খুঁজে না পাওয়া গেলে একটি অসীম লুপ প্রবেশ করে ।


সব কি সাদা জায়গা প্রয়োজন? কি দারুন.
ফায়ারকিউজ

5
@ ফায়ার কিউবেজ হ্যাঁ, এটিই আপনি 50+ বছরের পুরানো ভাষার সাথে পাবেন: অদ্ভুত সাদা স্থানের প্রয়োজনীয়তা। এটি স্পেস / ট্যাবকে কনটেনটেশন হিসাবে ব্যবহার করে এবং আপনার অবশ্যই অপারেটরদের পাশাপাশি সাদা অংশের আশেপাশে থাকতে হবে।
জিউসেপে


2

সি (জিসিসি) , 188 183 বাইট

আপনি যখন পরিবর্তে কোনও রাষ্ট্রীয় মেশিন ব্যবহার করতে পারেন তখন কেন রেজিক্সগুলি ব্যবহার করবেন? :-)

a,b;f(char*s){for(a=b=0;a<5;s++){!a&*s==86|*s=='v'?a++:a==1&*s=='r'?a++:a==2?*s-'o'?*s-'m'?0:a++:b++:a==3&*s==33?a++:!*s&a==4?a++:*s-10?(a=-1):a-4?(a=0):a++;if(!*s)break;}s=a<5?-1:b;}

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



1

হাস্কেল , 75 71 69 বাইট

f s=[length n-2|r<-lines s,n<-scanr(:)"m!"$'o'<$r,v<-"Vv",r==v:'r':n]

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

কোন রেজেক্স। পরিবর্তে সমস্ত বৈধ- Vrooom!স্ট্রিংগুলি পর্যাপ্ত দৈর্ঘ্য পর্যন্ত তৈরি করে এবং তাদের বিরুদ্ধে ইনপুটটির লাইনগুলির তুলনা করে oএকটি তালিকায় s এর সংখ্যা সংগ্রহ করে । সুতরাং অবৈধ ইনপুটগুলির জন্য একটি খালি তালিকা ফিরে আসে।


1

সি (জিসিসি) , 104 100 বাইট

s;main(c,n){for(;gets(&s);sscanf(&s,"v%*[o]%nm%c%c",&n,&c,&c)-1||c-33?:printf("%d",n-2))s=s-768|32;}

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

nপ্রতিটি বৈধ লাইনের জন্য আউটপুট আনুন , প্রয়োজন অনুসারে (কোনও বৈধ লাইন না থাকলে কিছুই না, nযদি ঠিক এক হয়)

int s; // Use as a char[]
main(c){
  while(gets(&s)) {
    s=s-768|32; // byte 0: 'V'=>'v'; byte 1: 'r'=>'o', 'o'=>'l'
    if (sscanf(&s,"v%[o]m%c%c",&s,&c,&c)==2 && c=='!') {
    // The last '%c' get nothing if it's EndOfLine
      printf("%d",strlen(&s)-1))
    }
  }
}

এটি এত মজার যে রেজেক্স উত্তরটি এর চেয়ে দীর্ঘ
উইন্ডমিল কুকিজ

@ উইন্ডমিলকুকিজ জিসিসির রেগেক্সকে সমর্থন করার জন্য অতিরিক্ত কোডের প্রয়োজন
l4m2

হুম। রেজেক্স সম্পর্কিত নামগুলি অত্যন্ত দীর্ঘ বলে মনে হচ্ছে
উইন্ডমিল কুকিজ

1

জাপট , 18 বাইট

fè`^[Vv]*m!$` ®èo

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

লাইনের অ্যারে হিসাবে ইনপুট নিয়ে একটি বাইট সংরক্ষণ করা হয়েছে।

]এবং এর মধ্যে একটি অপূর্ব অক্ষর অন্তর্ভুক্ত *

ব্যাখ্যা:

fè                   Get the line(s) that match
  `^[Vv]*m!$`          The provided RegEx with a little compression
              ®èo    Count the number of "o" in that line if it exists



প্রকৃতপক্ষে, ইনপুটটি লাইনগুলির একটি অ্যারে হতে পারে, আপনি আমার প্রথম মন্তব্যটি উপরের আমার প্রথম মন্তব্যটি বন্ধ করতে পারেন।
শেগি

@ শেগি আমি প্রশ্নের কোথাও খুঁজে পাচ্ছি না যা উল্লেখ করে যে ইনপুটটি লাইনগুলির একটি অ্যারে হতে পারে, এবং এটি ডিফল্ট I / O পদ্ধতিতে তালিকাভুক্ত বলে মনে হয় না যে একটি মাল্টলাইন স্ট্রিংকে রেখার অ্যারে হিসাবে নেওয়া যেতে পারে । এটি যুক্তিসঙ্গত বলে মনে হচ্ছে তবে আমি নিশ্চিত হওয়ার আগে অপেক্ষা করব।
কামিল দ্রাকারী



0

পাইথ, 20 বাইট

/R\o:#"^Vro*m!$"1cQb

আউটপুটগুলিতে কেবলমাত্র 'ও'র সংখ্যা রয়েছে বা ভ্রুম না থাকলে একটি খালি তালিকা রয়েছে।
এখানে চেষ্টা করুন

ব্যাখ্যা

/R\o:#"^Vro*m!$"1cQb
                 cQb  Split on newlines.
    :#"^Vro*m!$"1     Filter the ones that match the regex.
/R\o                  Count the `o`s in each remaining element.



0

লাল , 104 বাইট

func[s][n:""if parse/case s[opt[thru"^/"]["V"|"v"]"r"copy n any"o""m!"opt["^/"to end]][print length? n]]

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

একটি সরল সমাধান। লাল parseশীতল ও পাঠযোগ্য, কিন্তু অত্যন্ত দীর্ঘ Regex তুলনায়

Red []
f: func [ s ] [
    n: ""
    if parse/case s [
             opt [ thru newline ]
             [ "V" | "v" ]
             "r"
             copy n any "o"
             "m!"
             opt [ newline to end ]
    ] [ print length? n ]
]

0

জে, 35 বাইট

(]{~0<{.)(1{'^[Vv]r(o*)m!'rxmatch])

প্যাটার্নটি মেলে না negativeণাত্মক 1 প্রদান করে।


0

জাভাস্ক্রিপ্ট, 90 73 61 বাইট

_=>_.replace(/^[Vv]r(o*)m!$|[^\1]/mg,(m,a)=>a||'').length||-1

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

এমন অক্ষরগুলি প্রতিস্থাপন করুন যা (o*)খালি স্ট্রিংয়ের সাথে ক্যাপচার করা হয়নি , lengthকেবল স্ট্রিংটি অন্তর্ভুক্ত করুন "o"বা -1ফলস্বরূপ স্ট্রিং ফাঁকা থাকলে।


0

রুবি, 32 বাইট

->n{n=~/^[Vv]r(o*)m!$/m;$1.size}

রেজেক্সের সাথে স্ট্রিং মেলে, তারপরে প্রথম দলের আকার পেতে রুবির ম্যাজিক রেজেক্স গ্রুপ ভেরিয়েবল ব্যবহার করে।

এটি যেমন কল:

x=->n{n=~/^[Vv]r(o*)m!$/m;$1.size}
x["Vrooooooooooooooooooooom!"] # returns 21

0

রুবি , 28 29 বাইট

p$_[/^[vV]r(o*)m!$/].count ?o

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

মাল্টি-লাইন স্ট্রিংগুলির জন্য আরও তিনটি বাইট প্রয়োজন। আমি নিশ্চিত নই যে এটির কোনও কঠিন প্রয়োজন কিনা। যদি তা হয় তবে আমি এটি আপডেট করব।

->l{l[/^[Vv]r(o*)m!$/].count ?o}

আপনি কীভাবে বহু-লাইনের স্ট্রিংগুলি পরীক্ষা করতে পারেন?
লাইকনি

1
ব্যর্থVROM!
l4m2

0

Clojure , 90 বাইট

#(do(def a(clojure.string/replace % #"(?ms).*^[Vv]r(o*)m!$.*""$1"))(if(= a %)-1(count a)))

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

এই বেনামে ফাংশনটি ভ্রুম স্ট্রিংয়ে "o" এর সংখ্যা, বা -1 কোনও বৈধ ভ্রুম স্ট্রিং না থাকলে -1 প্রদান করে।

পাঠযোগ্য সংস্করণ

(fn [s]
  (def a (clojure.string/replace s #"(?ms).*^[Vv]r(o*)m!$.*" "$1"))
  (if (= a s) -1 (count a)))

ব্যাখ্যা

#"(?ms).*^[Vv]r(o*)m!$.*" ; This regex matches any string that contains a valid vroom string. The first capturing group contains only the "o"s in the vroom string
(clojure.string/replace s #"(?ms).*^[Vv]r(o*)m!$.*" "$1") ; Replaces a match of the above regex with its first capturing group. The resulting string is stored in the variable a
(if (= a s) -1 (count a))) ; a equals s if and only if there is no valid vroom string, so if a equal s we return -1. If there is a valid vroom string, a contains only the "o"s from the vroom string, so we return the length of a

0

পার্ল-এনই, 35 বাইট

$s=length$1if/^[Vv]r(o*)m!$/}{say$s

এটি এস্কিমো অভিবাদন ( }{) ব্যবহার করে যা -nপার্ল দ্বারা কীভাবে বিকল্পের সাথে আচরণ করা হয় তাড়াতাড়ি আপত্তি জানায়


0

জাভা 8, 109 বাইট

s->{int r=-1;for(var l:s.split("\n"))r=l.matches("[Vv]ro*m\\!")?l.replaceAll("[^o]","").length():r;return r;}

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

ব্যাখ্যা:

s->{                             // Method with String parameter and integer return-type
  int r=-1;                      //  Result-integer, starting at -1
  for(var l:s.split("\n"))       //  Loop over the lines:
    r=l.matches("[Vv]ro*m\\!")?  //   If the current line matches the regex:
       l.replaceAll("[^o]","").length()
                                 //    Change `r` to the amount of "o"'s in it
      :                          //   Else:
       r;                        //    Leave the result `r` unchanged
  return r;}                     //  Return the result

0

সি # (.নেট কোর) , 134 122 বাইট

for(var a="";a!=null;a=Console.ReadLine())if(new Regex(@"^[Vv]ro*m!$").Match(a).Success)Console.Write(a.Count(x=>x=='o'));

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

-12 বাইট: লুপ এবং সরানো বন্ধনীগুলিতে null চেক সরানোfor

Ungolfed:

for(var a = ""; a != null; a = Console.ReadLine())  // initialize a, and while a isn't null, set to new line from console
    if(new Regex(@"^[Vv]ro*m!$")                        // set regex
                        .Match(a).Success)              // check if the line from the console matches
        Console.Write(a.Count(x => x == 'o'));              // write the number of 'o's to the console

সি # 6 এর নাল-কোলেসিং এবং শর্তসাপেক্ষ অপারেটরগুলির সাথে -10 বাইট{} , forলুপে কেবল একটি বিবৃতি ব্যবহার করার সময়ও অপ্রয়োজনীয় :for(var a="";;a=Console.ReadLine())Console.WriteLine(new Regex(@"^[Vv]ro*m!$").Match(a??"").Success?a.Count(x =>x=='o'):-1);
ইভান গার্সিয়া টোপেট

এছাড়াও, using System.Linq; using System.Text.RegularExpressions;
এটির

আপনার প্রদত্ত কোডটি আসলে কাজ করে না, কারণ এটি কেবল -1প্রতিটি লাইনের জন্য আউটপুট দেয় না যা এটি কাজ করে না, তবে -1কোনও চেক নেই বলে এটি চিরতরে আউটপুট হবে null
মীরকাত

না, তা হবে না। a = Console.ReadLine()লুপটি তৈরি করে, সুতরাং প্রতিবার আপনি লুপটি এগিয়ে যাওয়ার জন্য ইনপুটটির অনুরোধ করছেন, যদি কোনও ইনপুট না থাকে তবে লুপটি কেবল অপেক্ষা করছে, -1চিরকালের জন্য মুদ্রণ করছে না
ইভান গার্সিয়া টোপেট

ধারণার প্রমাণ. এমনকি এটি যেমনটি আপনি বলেছেন ঠিক তেমন কাজ করে নি, কখনও শেষ না হওয়া লুপটি আদর্শ আচরণ নয়। নির্বিশেষে, আমি নাল চেকটি লুপের জন্য সরিয়ে নিয়েছি, যা বন্ধনীগুলি সরিয়ে দেয় (এবং কোডটি আপনার পরামর্শের চেয়ে ছোট করে তোলে)।
মিরকাত

0

05AB1E , 39 37 বাইট

|ʒć„VvsåsÁÁD…m!rÅ?s¦¦¦Ù'oså)P}Dgi`'o¢

যদিও 05 এবি 1 ই একটি গল্ফিং ভাষা, তবে রেইগেক্স-ভিত্তিক চ্যালেঞ্জগুলি অবশ্যই এটির শক্তিশালী স্যুট নয়, কারণ এতে কোনও রেজেক্স-বিল্টিন নেই।

[]কোনও মিল পাওয়া না গেলে আউটপুট ।

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা:

|              # Get the input split by newlines
 ʒ             # Filter it by:
  ć            #  Head extracted: Pop and push the remainder and head-character
               #   i.e. "vrm!" → "rm!" and "v"
               #   i.e. "Vroaom!" → "roaom!" and "V"
   Vvså       #  Is this head character in the string "Vv"?
               #   i.e. "v" → 1 (truthy)
               #   i.e. "V" → 1 (truthy)
  s            #  Swap so the remainder is at the top of the stack again
   ÁÁ          #  Rotate it twice to the right
               #   i.e. "rm!" → "m!r"
               #   i.e. "roaom!" → "m!roao"
     D         #  Duplicate it
      m!rÅ?   #  Does the rotated remainder start with "m!r"?
               #   i.e. "m!r" → 1 (truthy)
               #   i.e. "m!roao" → 1 (truthy)
  s¦¦¦         #  Remove the first three characters from the duplicated rotated remainder
               #   i.e. "m!r" → ""
               #   i.e. "m!roao" → "oao"
      Ù        #  Uniquify, leaving only distinct characters
               #   i.e. "" → ""
               #   i.e. "oao" → "oa"
       'oså   '#  Is this uniquified string in the string "o"?
               #   i.e. "" → 1 (truthy)
               #   i.e. "oa" → 0 (falsey)
  )P           #  Check if all three checks above are truthy
               #   i.e. [1,1,1] → 1 (truthy)
               #   i.e. [1,1,0] → 0 (falsey)
 }             # Close the filter
  D            # After the filter, duplicate the list
   gi          # If its length is 1:
               #   i.e. ["vrm!"] → 1 (truthy)
               #   i.e. [] → 0 (falsey)
     `         #  Push the value in this list to the stack
               #   i.e. ["vrm!"] → "vrm!"
      'o¢     '#  And count the amount of "o" in it (and output implicitly)
               #   i.e. "vrm!" → 0
               # (Implicit else:)
               #  (Implicitly output the duplicated empty list)
               #   i.e. []

0

সি ++, এমএসভিসি, 164 159 বাইট

-5 বাইট জ্যাকারি ধন্যবাদ

এটি regexকেবল শিরোনাম দিয়ে সংকলন করে

#include<regex>
using namespace std;int f(vector<string>i){smatch m;for(auto&e:i)if(regex_match(e,m,regex("^[Vv]ro*m!$")))return m[0].str().size()-4;return-1;}

পরীক্ষা:

std::cout << "Vrom!" << " -> " << f({ "Vrom!" }) << '\n';
std::cout << "vrooooooom!" << " -> " << f({ "vrooooooom!" }) << '\n';
std::cout << "Hello, Vroom!" << " -> " << f({ "Hello, Vroom!" }) << '\n';
std::cout << "Foo bar boo baz \\n Vrooom! \\n hi" << " -> " << f({ "Foo bar boo baz", "Vrooom!", "hi" }) << '\n';
std::cout << "Vrm!ooo" << " -> " << f({ "Vrm!ooo" }) << '\n';
std::cout << "PPCG puzzlers pie" << " -> " << f({ "PPCG puzzlers pie" }) << '\n';
std::cout << "hallo \\n vROOOm!" << " -> " << f({ "hallo", "vROOOm!" }) << '\n';

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