শব্দগুলি যে সংখ্যার সমন্বিত থাকে


20

একটি অঙ্ক শব্দটি এমন একটি শব্দ যেখানে সম্ভবত কয়েকটি অক্ষর অপসারণ করার পরে, আপনাকে একক অঙ্কের একটি রেখে দেওয়া হবে: এক, দুই, তিন, চার, চার, পাঁচ, ষাট, সাত, আট বা নাইন (জিরো নয়) not

উদাহরণস্বরূপ, BOUNCE এবং ANNOUNCE হ'ল সংখ্যার শব্দ, যেহেতু এগুলির মধ্যে একটি অঙ্ক থাকে।

এনকোড কোনও সংখ্যার শব্দ নয় যদিও এর মধ্যে একটি O, N এবং E রয়েছে যদিও সেগুলি ক্রমযুক্ত নয়।

একটি প্রোগ্রাম / ফাংশন লিখুন যা ইনপুট বা প্যারামিটার হিসাবে একটি একক (বড় হাতের বা ছোট হাতের অক্ষর - আপনি চয়ন করেন) শব্দটি গ্রহণ করে এবং এটি সংখ্যার শব্দ কিনা তা নির্ধারণ করে। কোডটি যতটা সম্ভব সংক্ষিপ্ত করুন।

শব্দটি যদি কোনও অঙ্কের শব্দ না হয় তবে আপনার 'NO', 0 বা কোনও 'মিথ্যা' মান (এটি আপনার ভাষার ভিত্তিতে পরিবর্তিত হতে পারে) ফেরত দেওয়া উচিত। শব্দটি যদি একটি সংখ্যার শব্দ হয় তবে আপনার এটিতে থাকা সংখ্যাটি একটি সংখ্যা হিসাবে আউটপুট করা উচিত।

আপনি ধরে নিতে পারেন যে কোনও শব্দের মধ্যে একাধিক সংখ্যার উপস্থিতি নেই, সুতরাং আপনার অনাবিলের মতো কিছুই থাকবে না।

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

BOUNCE
1

ENCODE
NO

EIGHT
8

BLACKJACK
NO

FABULOUS
NO

EXERCISE
NO

DRIFTWOOD
2

SERVICEMAN
7

INSIGNIFICANCE
9

THROWDOWN
2

ZERO
NO

OZNERO
1

এই চ্যালেঞ্জটি বিআইও ২০০৯ থেকে প্রশ্ন 1 (এবং একটি খুব সামান্য পরিবর্তন) থেকে নেওয়া হয়েছে । বেশিরভাগ পরীক্ষার মামলা নম্বর স্কিম থেকে নেওয়া হয় ।


3
আমরা কী কেবল বড় হাতের শব্দ গ্রহণ করি তা কি সত্যই গুরুত্বপূর্ণ, বা আমরা পরিবর্তে ছোট হাতের শব্দগুলি গ্রহণ করতে পারি?
গ্রেগ মার্টিন

6
NOFELINEVET5 এবং 9 উভয়ই রয়েছে ... আমার কী ফিরিয়ে দেওয়া উচিত?
তিতাস

3
0পছন্দের ভাষায় ভুয়া না হলেও আমরা কী নম্বরের-সন্ধান পাওয়া ক্ষেত্রে ফিরে আসতে পারি ?
নিমি

@ টিটাস: বিধিগুলি থেকে: "আপনি ধরে নিতে পারেন যে কোনও শব্দের মধ্যে এক অঙ্কের বেশি নয়"
নিমি

@ গ্রেগমার্টিন ওয়েল, আমি অনুমান করি এটি চ্যালেঞ্জের কোনও কিছুই যোগ করে না, তাই হ্যাঁ, ছোট হাতের অনুমতি দেওয়া আছে। আমি এটা পরিবর্তন করেছি।
0WJYxW9FMN

উত্তর:


9

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

f=
s=>-~'ONE TWO THREE FOUR FIVE SIX SEVEN EIGHT NINE'.split` `.findIndex(x=>s.match([...x].join`.*`))
<!-- snippet demo: -->
<input list=l oninput=console.log(f(this.value))>
<datalist id=l><option value=BOUNCE>
<option value=ENCODE>
<option value=EIGHT>
<option value=BLACKJACK>
<option value=FABULOUS>
<option value=EXERCISE>
<option value=DRIFTWOOD>
<option value=SERVICEMAN>
<option value=INSIGNIFICANCE>
<option value=THROWDOWN>
<option value=ZERO>
<option value=OZNERO>


7

পিএইচপি> = 7.0, 87 বাইট

<?for(;$i++<9;)levenshtein(IntlChar::charName("$i"),"DIGIT $argn",0,1,1)?:die("$i")?>NO

যদি শব্দ হিসাবে ইনপুট হিসাবে এক অঙ্ক থেকে অক্ষরের সন্নিবেশগুলি অঙ্কটি সহ প্রোগ্রামটি থেকে প্রস্থান করা হয় exit অথবা levenshtein("DIGIT $argn",IntlChar::charName("$i"),1,1,0)অক্ষরের মুছে ফেলা গণনা করার জন্য ক্রম পরিবর্তন করুন

levenshtein

IntlChar :: charName

পিএইচপি> = 7.0, 112 বাইট

for(;$i<9;)$r+=++$i*preg_match("#".chunk_split(substr(IntlChar::charName("$i"),6),1,".*")."#",$argn);echo$r?:NO;

IntlChar :: charName

পিএইচপি, 128 বাইট

foreach([ONE,TWO,THREE,FOUR,FIVE,SIX,SEVEN,EIGHT,NINE]as$v)$r+=++$k*preg_match("#".chunk_split($v,1,".*")."#",$argn);echo$r?:NO;

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

143 বাইটস আরও 1 ডিজিটের জন্য

foreach([ONE,TWO,THREE,FOUR,FIVE,SIX,SEVEN,EIGHT,NINE]as$v)$r.=++$k*preg_match("#".chunk_split($v,1,".*")."#",$argn);echo+$r?strtr($r,[""]):NO;

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


1
foreach(...)$r+=++$k*preg_match(...);echo$r?:NO;(-1 বাইট) (-2 বাইট) এর chunk_split($v,1,".*")পরিবর্তে join(...)
তিতাস

টাইটাস প্রতিস্থাপনের সাথে খুব সুন্দর ধারণাটি chunk_splitআমি এর আগে কখনও দেখিনি। আপনার টিপস বিভাগে একটি এন্ট্রি করা উচিত
Jörg Hülsermann

দুষ্ট ধারণা! আপনার প্রশ্নের উত্তর দেওয়ার জন্য IntlChar::enumCharNames: আগামীকাল ... আমি একবার খতিয়ে দেখব ।
তিতাস

2
levenshtein()কাজ বলে মনে হয়: <?for(;$i++<9;)levenshtein(IntlChar::charName("$i"),"DIGIT $argn",0,1,1)?:die("$i")?>NO
ব্যবহারকারী 63956

@ user63956 দুর্দান্ত ধারণা আপনাকে ধন্যবাদ।
উপসর্গগুলি

5

পাইথন 3, 150 বাইট

from itertools import*;lambda x:([i for i in range(10)if(*' OTTFFSSENNWHOIIEIIEORUVXVGN  ERE EHE  E   NT '[i::9],)in[*combinations(x+'  ',5)]]+[0])[0]

combinationsজিনিসগুলিতে সমস্ত সংমিশ্রণকে ক্রমে ফিরিয়ে দেয়। এটির দ্বিতীয় প্যারামিটারের জন্য একটি সেট নম্বর পাওয়া সহজ হবে combinations, তাই মূল স্ট্রিংয়ের শেষে স্পেসগুলি যুক্ত করা হয় যা আমার ল্যাম্বদার একটি প্যারামিটার। এটি আমার এন্ট্রি কীভাবে কাজ করে তার একটি সহজ বর্ণনা। আপনি আরও স্পষ্টতা চান কিনা জিজ্ঞাসা করুন।


5

গণিত, 83 বাইট (উইন্ডোজএএনএসআই এনকোডিং)

±w_:=Rest@Position[Subsets@w~Cases~#&/@Characters@*IntegerName~Array~9,Except@{},1]

একটি অ্যানারি ফাংশন সংজ্ঞায়িত করে ±যা ছোট হাতের অক্ষরের একটি তালিকা ইনপুট হিসাবে গ্রহণ করে এবং একটি অঙ্ক, যেমন আকারে {{7}}, বা অন্যথায় একটি খালি তালিকা দেয় {}। আমি মনে করি না যে আমি এখানে প্রচুর গল্ফ কাজ করেছিCharacters@*IntegerName~Array~9 জন্য নাম্বার নামের মিলগুলি তৈরি করে।

ব্যবহারের উদাহরণ:

±{"i", "n", "s", "i", "g", "n", "i", "f", "i", "c", "a", "n", "c", "e"}

ফলন {{9}}


1
ব্যবহার স্পষ্ট করতে সম্পাদিত
গ্রেগ মার্টিন

4

জেলি , 31 28 বাইট

-2 বাইট এখন ছোট হাতের ইনপুট গ্রহণযোগ্য

“¡¦ẇṆb~ṇjṚØ%ĖġṘḥḞṾṇJḌ»Ḳe€ŒPT

একটি সম্পূর্ণ প্রোগ্রাম যা ছোট হাতের ইনপুটটি প্রত্যাশা করে এবং ব্যবহার করে ফলাফল মুদ্রণ করে 0মিথ্যা মামলার জন্য ।

একটি মোনাডিক লিঙ্কটি চরিত্রের তালিকা নিয়ে আসলে এটি পূর্ণসংখ্যার একটি তালিকা দেয় যা 0মিথ্যা মামলায় একক থাকে , প্রত্যাশিত ব্যবহারের ক্ষেত্রে একক পূর্ণসংখ্যার 1এবং 9অন্তর্ভুক্ত থাকে এবং একাধিক সংখ্যক এন্ট্রি ক্ষেত্রে যেখানে একাধিক সংখ্যক বিদ্যমান থাকে শব্দ।

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

কিভাবে?

“¡¦ẇṆb~ṇjṚØ%ĖġṘḥḞṾṇJḌ»Ḳe€ŒPT - Main link: list of characters, s
“¡¦ẇṆb~ṇjṚØ%ĖġṘḥḞṾṇJḌ»       - dictionary lookup of "one two three four five six seven eight nine"
                      Ḳ      - split on spaces
                         ŒP  - partitions of s
                       e€    - exists in? for €ach
                           T - truthy indexes

আপনি কীভাবে সংক্ষেপিত স্ট্রিং ব্যবহার করবেন ??? > _> লিনের সংক্ষেপক আমার জন্য কোনও কাজ করে না, কোনও টিপস?
হাইপারনিউট্রিনো

জেলি চ্যাটরুমে প্রবেশ করুন এবং ত্রুটি / ইস্যু পোস্ট করুন।
জোনাথন অ্যালান

1
বড় হাতের প্রয়োজন নেই।
এরিক আউটগল্ফার

3

রুবি + টুওয়ার্ডস : 49 48 + 12 = 61 60 বাইট

পতাকা ব্যবহার করে -rto_words -n । ছোট হাতের শব্দ নেয়। রিটার্নস nilযদি না "অঙ্ক" পাওয়া যায় নি।

-1 বাইট যে এখন ছোট হাতের ইনপুট অনুমোদিত, iরেগেক্সে পতাকা সরানোর অনুমতি দেয় ।

p (1..9).find{|i|$_=~/#{i.to_words.chars*".*"}/}

বাহ্যিক রত্ন ছাড়াই আরও খাঁটি রুবি উত্তরের জন্য, 91 + 1 = 92 বাইট:

p (1..9).find{|i|$_=~/#{%w"0 ONE TWO THREE FOUR FIVE SIX SEVEN EIGHT NINE"[i].chars*".*"}/}

2

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

এখানে মিথ্যা মান 0 হয়

æ‘€µ‚•„í†ìˆÈŒšï¿Ÿ¯¥Š‘#å1k>

ব্যাখ্যা:

æ                           # Compute the powerset of the input
 ‘€µ‚•„í†ìˆÈŒšï¿Ÿ¯¥Š‘       # Push "ONE TWO THREE FOUR FIVE SIX SEVEN EIGHT NINE"
                     #      # Break on spaces
                      å     # Check each for membership
                       1k   # Get the index of 1 in the array (-1 if not found)
                         >  # Increment by one

05AB1E এনকোডিং ব্যবহার করে । এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন!


2

হাস্কেল, 113 111 বাইট

import Data.List
last.((`elemIndices`([]:words"ONE TWO THREE FOUR FIVE SIX SEVEN EIGHT NINE"))=<<).subsequences

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

ফেরত পাঠায় 0কোন অঙ্ক পাওয়া যায়।

অঙ্কের তালিকায় ইনপুট শব্দের সমস্ত অনুচ্ছেদগুলি সন্ধান করুন। []সূচক 0 এ একটি খালি স্ট্রিং প্রস্তুত করুন যা প্রতিটি অনুচ্ছেদের অংশ। elemIndicesসূচকের একটি তালিকা ফেরত দেয় এবং =<<এগুলিকে একক তালিকায় ফ্ল্যাট করে। শেষ সূচকটি চয়ন করুন।


2

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

f=
s=>[...s].map(c=>a=a.map(s=>s.slice(s[0]==c)),a=`ONE TWO THREE FOUR FIVE SIX SEVEN EIGHT NINE`.split` `)&&1+a.indexOf(``)
<input oninput=o.textContent=f(this.value)><pre id=o>0

সর্বনিম্ন শনাক্ত করা অঙ্কটি প্রদান করে বা 0কোনও সংখ্যা সনাক্ত না হলে (+6 NOপ্রয়োজন হলে) প্রদান করে।



2

রেটিনা , 160 126 120 বাইট

O.*N.*E
1
T.*W.*O
2
T.*H.*R.*E.*E
3
F.*O.*U.*R
4
F.*I.*V.*E
5
S.*I.*X
6
S.*E.*V.*E.*N
7
E.*I.*G.*H.*T
8
N.*I.*N.*E
9
\D

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

ইনপুটটিতে কোনও অঙ্ক না থাকলে খালি স্ট্রিংটি দেয়।

-6 বাইটস @ ক্যালকুলেটরফলিনকে ধন্যবাদ ।


1 বাইট সংরক্ষণ: 0পরিবর্তে ব্যবহার করুন NO
ক্যালকুলেটরলাইন 21

পছন্দ করুন ধন্যবাদ!
eush77

1

পিএইচপি, 134 132 128 বাইট

<?=preg_match(strtr(chunk_split("#(ONE0TWO0THREE0FOUR0FIVE0SIX0SEVEN0EIGHT0NINE",1,".*"),[")|("]).")#",$argn,$m)?count($m)-1:NO;

পাইপ হিসাবে চালান -nFবা এটি অনলাইনে চেষ্টা করুন

বন্ধনীতে শব্দগুলি দিয়ে একটি রেজেক্স তৈরি করে; অর্থাত প্রতিটি শব্দ Nহয় Nতম উপ-অভিব্যক্তি।
একটি শব্দ পাওয়া যায়, তাহলে মিলেছে স্ট্রিং হতে হবে $m[0]এবং Nতাদের মধ্যে উপাদান খালি এবং পিছনে কোনো খালি স্ট্রিং সঙ্গে তম উপাদান; অর্থাত $mহয়েছে N+1উপাদান।


দুর্দান্ত আমি এটি পছন্দ করি
Jörg Hülsermann

1
আপনি নিজের বুদ্ধি দিয়ে 3 বাইট সংরক্ষণ করতে পারেন কিছুটা উন্নতি <?=preg_match("#(".strtr(chunk_split(ONE0TWO0THREE0FOUR0FIVE0SIX0SEVEN0EIGHT0NINE,1,".*"),[")|("]).")#",$argn,$m)?count($m)-1:NO; করুন অনলাইনে এটি ব্যবহার করে দেখুন!
জার্গ হালসারম্যান

আপনি আমার নতুন পদ্ধতির ব্যবহার করতে পারেন?
জার্গ হালসারম্যান

1

পাইথন , 148 বাইট

from itertools import*
lambda s:[tuple(w)in combinations(s,len(w))for w in("x ONE TWO THREE FOUR FIVE SIX SEVEN EIGHT NINE "+s).split()].index(1)%10

একটি নামবিহীন ফাংশন কেবল একটি বড় হাতের অক্ষর গ্রহণ করে এবং পূর্ণসংখ্যা ( 1থেকে 9), বা এর 0জন্য প্রদান করে NO

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

কিভাবে?

একটি ইনপুট স্ট্রিং এর জন্য sফাংশন স্ট্রিং একটি তালিকা মাধ্যমে ঘোরে: "x", "ONE", "TWO", "THREE","FOUR" , "FIVE", "SIX", "SEVEN", "EIGHT", "NINE", এবংs । নিজেই কোনো মিল খুঁজছেন *

ব্যবহৃত তুলনাটি হ'ল এই স্ট্রিংটি wহ'ল ইনপুট থেকে অক্ষরের সংমিশ্রণ থেকে তৈরি করা যেতে পারে। ফাংশনটি combinationsআমাদের জন্য (এবং প্রয়োজনীয় দৈর্ঘ্যের কেবল এটি ব্যবহার করে) পেতে পারেlen(w) ) তবে সেগুলি টিপলস আকারে রয়েছে তাই তুলনা করার জন্য স্ট্রিংগুলিকে টুপলসটিতে ফেলে দেওয়া হয়।

এগারোটি ফলাফলের মধ্যে একটি "x"সর্বদা থাকবে Falseএবং sনিজের পক্ষে সর্বদা এটিই থাকবে True"x"সেখানে সাথে একটি খেলায় সূচী নিশ্চিত ONEমাধ্যমে NINEপ্রয়োজনীয় মান (যেহেতু পাইথন তালিকা হয় 0-সূচীবদ্ধ), sসেখানে থেকে কল নিশ্চিতindex(1) (সমার্থক index(True)) অভ্যস্ত ব্যর্থ যখন কোন অঙ্ক শব্দ যাহার ফলে ফলে পাওয়া যায়নি দশটি ব্যবহার করে একটি মডিউল দিয়ে একটিতে 10রূপান্তরিত হয়0%10

* যদি sকোনও কারণে ফাঁকা স্থান থাকে, তবে তালিকাটিw দীর্ঘতর হবে, তবে প্রক্রিয়াটি এখনও কাজ করবে যেহেতু অঙ্ক শব্দের মিলগুলি একইভাবে কাজ করবে, এবং কোনওটি যদি প্রথম স্পেস-বিভক্ত স্ট্রিংয়ের sসাথে মেলে না তবে আবারও দেবে giving 10এবং ফিরে 0

যদি একাধিক অঙ্কের শব্দের উপস্থিত থাকে তবে ফাংশনটি সর্বনিম্নটি ​​ফেরত দেবে।


1

জাভা, 167 153 বাইট

s->{for(int i=0;i<9;)if(s.matches(".*"+"".join(".*","ONE TWO THREE FOUR FIVE SIX SEVEN EIGHT NINE".split(" ")[i++].split(""))+".*"))return i;return"NO";}

একটি বরং নিষ্পাপ বাস্তবায়ন, রেজেক্সের সাথে মিলে।

পরীক্ষা এবং ungolfed

import java.util.function.Function;

public class Main {

  public static void main(String[] args) {
    Function<String, Object> f = s -> {
      for (int i = 0; i < 9;) {
        if (s.matches(".*" + "".join(".*", "ONE TWO THREE FOUR FIVE SIX SEVEN EIGHT NINE".split(" ")[i++].split("")) + ".*")) {
          return i;
        }
      }
      return "NO";
    };

    String[] tests = {
      "BOUNCE",
      "ENCODE",
      "EIGHT",
      "BLACKJACK",
      "FABULOUS",
      "EXERCISE",
      "DRIFTWOOD",
      "SERVICEMAN",
      "INSIGNIFICANCE",
      "THROWDOWN",
      "ZERO",
      "OZNERO"
    };

    for (String test : tests) {
      System.out.printf("%s%n%s%n%n", test, f.apply(test));
    }
  }
}

সংরক্ষণ

  • 167 -> 153: @ কেভিন ক্রুজসেনকে বিভিন্ন অপ্টিমাইজেশন ধন্যবাদ thanks

1
আপনি শুধুমাত্র অ্যারের একবার ব্যবহার, তাই আপনি ব্যবহার করতে পারেন "ONE TWO THREE FOUR FIVE SIX SEVEN EIGHT NINE".split(" ")[i].split("")জন্য-লুপ সরাসরি, এবং পরিত্রাণ পেতে String[]N=এবং ;। এবং আপনি ফর-লুপের ক্রম পরিবর্তন করে অতিরিক্ত 2 বাইট সংরক্ষণ করতে পারেন:, যদি-চেকের পরিবর্তে for(int i=0;i<9;)ব্যবহার করুন এবং তার বিনিময়ে [i++]এর [i]থেকে মুক্তি পান +1
কেভিন ক্রুইজসেন

আপনি পরিবর্তন করে অন্য বাইট সংরক্ষণ করতে পারবেন "".joinকরার s.join
কেভিন ক্রুইজসেন

1

বাশ , 163 বাইট

a=NO;case $1 in *O*N*E*)a=1;;*T*W*O*)a=2;;*T*H*R*E*E*)a=3;;*F*O*U*R*)a=4;;*F*I*V*E*)a=5;;*S*I*X*)a=6;;*S*E*V*E*N*)a=7;;*E*I*G*H*T*)a=8;;*N*I*N*E*)a=9;;esac;echo $a

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

a=NO;
case $1 in
 *O*N*E*)a=1;;
 *T*W*O*)a=2;;
 *T*H*R*E*E*)a=3;;
 *F*O*U*R*)a=4;;
 *F*I*V*E*)a=5;;
 *S*I*X*)a=6;;
 *S*E*V*E*N*)a=7;;
 *E*I*G*H*T*)a=8;;
 *N*I*N*E*)a=9;;
esac;
echo $a

রেটিনা জানি না তবে মনে হচ্ছে এটি উত্তরের একটি সরাসরি পোর্ট।


*এর সাথে হ্রাস করার চেষ্টা করা j=0;for i in ONE TWO .. ; do ((j++)); printf "%s)a=%s;;" $(sed 's/./\*&\*/g' <<<$i) $j ; done হয়েছিল তবে দীর্ঘ ছিল
মার্কোসেম

0

জাভাস্ক্রিপ্ট, 121 বাইট

(s,a=0)=>'ONE TWO THREE FOUR FIVE SIX SEVEN EIGHT NINE'.split``.map((p,i)=>RegExp(p.split``.join`.*`).exec(s)?a=i+1:0)&&a

বা 116

(s,a=0)=>' ONE TWO THREE FOUR FIVE SIX SEVEN EIGHT NINE'.split` `.map((p,i)=>a|=~s.search(p.split``.join`.*`)&&i)&&a

তবে এই মুহুর্তে উপাদানগুলি পুনর্ব্যবহারযোগ্য।


0

পাইথ , -44- 41 বাইট

+1xm}dyQc."EX%~)Û#lº,îQÓCe¯4Aô4"\P1

একটি উদ্ধৃত স্ট্রিং নেয়, কোনটির জন্য 0 আউটপুট দেয়।

চেষ্টা করে দেখুন!

ব্যাখ্যা

+1xm}dyQc."EX%~)Û#lº,îQÓCe¯4Aô4"\P1
         ."EX%~)Û#lº,îQÓCe¯4Aô4"      # Compressed string: "ONEPTWOPTHREEPFOURPFIVEPSIXPSEVENPEIGHTPNINE" (P is close to the other letters, makes the compression better)
        c                       \P    # split on P: ['ONE', 'TWO', 'THREE', 'FOUR', 'FIVE', 'SIX', 'SEVEN', 'EIGHT', 'NINE']
   m                                  # map over this list (variable: d)
    }dyQ                              # is d a (ordered) subset of the input (Q)? (= element of the powerset)
  x                                1  # get the index of the first true
+1                                    # add one, because the list was indexed at 0 and conveniently -1 (not found) becomes 0 

0

জাভা, 254 বাইট

int g(String a,String b){int i=0,p=0;for(char c:a.toCharArray()){p=i;i=b.indexOf(c);if(i<=p)return 0;}return 1;}
String f(String a){String[]T={"ONE","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE"};for(String t:T)if(g(t,a)>0)return t;return"NO";}

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

boolean g(String a,String b)
{
    int i = 0, p = 0;
    for(char c:a.toCharArray())
    {
        p = i;
        i = b.indexOf(c);
        if(i <= p) return false;
    }
    return true;
}

String f(String a)
{
    String[]T={"ONE","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE"};
    for(String t:T)if(g(t,a))return t;
    return"NO";
}


0

পাইথন 2, 155 বাইট

import re;lambda k:next((i for i,j in enumerate([re.search('.*'.join(list(s)),k)for s in'ONE TWO THREE FOUR FIVE SIX SEVEN EIGHT NINE'.split()])if j),-1)+1

রেগেক্স গ্রুপের জন্য একটি অনামী ফাংশন অনুসন্ধান করা। পাইথনে এখানে সেরা সমাধান নয় তবে বিকল্প উপায়।

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