বিল্ট-ইন বা লাইব্রেরি ছাড়াই একটি সংখ্যায় ইংরেজি রূপান্তর করুন


14

এই চ্যালেঞ্জ অনুরূপ অন্য তবে আমি (নীচে পাঠ্য বোল্ড করতে দেখুন) আমি মনে করি যে এটা অনেক diffent এবং (আমি আশা করি) মজা পারেন প্রণীত হবে একটি সীমাবদ্ধতা তৈরি।

চ্যালেঞ্জ

একটি প্রোগ্রাম বা কোনো প্রোগ্রামিং ভাষা যে ইনপুট হিসাবে একটি ধনাত্মক পূর্ণসংখ্যা এর ইংরেজি নাম নেয় একটি ফাংশন লিখুন nঅনধিক 100এবং আয় nএকটি পূর্ণসংখ্যা হিসাবে।

স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ এবং আপনি ইতিমধ্যে এই কাজটি করে এমন কোনও বিল্ট-ইন ফাংশন, বাহ্যিক সরঞ্জাম বা লাইব্রেরি ব্যবহার করতে পারবেন না

বাইটস মধ্যে সংক্ষিপ্ততম সোর্স কোড।

পরীক্ষা

সমস্ত input->outputক্ষেত্রে এখানে :

one              -> 1
two              -> 2
three            -> 3
four             -> 4
five             -> 5
six              -> 6
seven            -> 7
eight            -> 8
nine             -> 9
ten              -> 10
eleven           -> 11
twelve           -> 12
thirteen         -> 13
fourteen         -> 14
fifteen          -> 15
sixteen          -> 16
seventeen        -> 17
eighteen         -> 18
nineteen         -> 19
twenty           -> 20
twenty-one       -> 21
twenty-two       -> 22
twenty-three     -> 23
twenty-four      -> 24
twenty-five      -> 25
twenty-six       -> 26
twenty-seven     -> 27
twenty-eight     -> 28
twenty-nine      -> 29
thirty           -> 30
thirty-one       -> 31
thirty-two       -> 32
thirty-three     -> 33
thirty-four      -> 34
thirty-five      -> 35
thirty-six       -> 36
thirty-seven     -> 37
thirty-eight     -> 38
thirty-nine      -> 39
forty            -> 40
forty-one        -> 41
forty-two        -> 42
forty-three      -> 43
forty-four       -> 44
forty-five       -> 45
forty-six        -> 46
forty-seven      -> 47
forty-eight      -> 48
forty-nine       -> 49
fifty            -> 50
fifty-one        -> 51
fifty-two        -> 52
fifty-three      -> 53
fifty-four       -> 54
fifty-five       -> 55
fifty-six        -> 56
fifty-seven      -> 57
fifty-eight      -> 58
fifty-nine       -> 59
sixty            -> 60
sixty-one        -> 61
sixty-two        -> 62
sixty-three      -> 63
sixty-four       -> 64
sixty-five       -> 65
sixty-six        -> 66
sixty-seven      -> 67
sixty-eight      -> 68
sixty-nine       -> 69
seventy          -> 70
seventy-one      -> 71
seventy-two      -> 72
seventy-three    -> 73
seventy-four     -> 74
seventy-five     -> 75
seventy-six      -> 76
seventy-seven    -> 77
seventy-eight    -> 78
seventy-nine     -> 79
eighty           -> 80
eighty-one       -> 81
eighty-two       -> 82
eighty-three     -> 83
eighty-four      -> 84
eighty-five      -> 85
eighty-six       -> 86
eighty-seven     -> 87
eighty-eight     -> 88
eighty-nine      -> 89
ninety           -> 90
ninety-one       -> 91
ninety-two       -> 92
ninety-three     -> 93
ninety-four      -> 94
ninety-five      -> 95
ninety-six       -> 96
ninety-seven     -> 97
ninety-eight     -> 98
ninety-nine      -> 99
one hundred      -> 100

1
অর্ধেক কাজ করে এমন অন্তর্নির্মিত সম্পর্কে কী, উদাহরণস্বরূপ কোডপয়েন্টের ইউনিকোড নাম সন্ধান করা।
ব্র্যাড গিলবার্ট 21

@ ব্র্যাডগিলবার্টব 2 গিলস না, এটি ভাল নয়।
বব

উত্তর:


22

সি, 160 বাইট

g(char*s){char i=1,r=0,*p="k^[#>Pcx.yI<7CZpVgmH:o]sYK$2";for(;*s^'-'&&*s;r+=*s++|9);r=r%45+77;for(;*p!=r;p++,i++);return((*s^'-')?0:g(s+1))+(i<21?i:10*(i-18));}

এটা পরীক্ষা করো

int main ()
{
    char* w[] = {"", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen", "twenty", "twenty-one", "twenty-two", "twenty-three", "twenty-four", "twenty-five", "twenty-six", "twenty-seven", "twenty-eight", "twenty-nine", "thirty", "thirty-one", "thirty-two", "thirty-three", "thirty-four", "thirty-five", "thirty-six", "thirty-seven", "thirty-eight", "thirty-nine", "forty", "forty-one", "forty-two", "forty-three", "forty-four", "forty-five", "forty-six", "forty-seven", "forty-eight", "forty-nine", "fifty", "fifty-one", "fifty-two", "fifty-three", "fifty-four", "fifty-five", "fifty-six", "fifty-seven", "fifty-eight", "fifty-nine", "sixty", "sixty-one", "sixty-two", "sixty-three", "sixty-four", "sixty-five", "sixty-six", "sixty-seven", "sixty-eight", "sixty-nine", "seventy", "seventy-one", "seventy-two", "seventy-three", "seventy-four", "seventy-five", "seventy-six", "seventy-seven", "seventy-eight", "seventy-nine", "eighty", "eighty-one", "eighty-two", "eighty-three", "eighty-four", "eighty-five", "eighty-six", "eighty-seven", "eighty-eight", "eighty-nine", "ninety", "ninety-one", "ninety-two", "ninety-three", "ninety-four", "ninety-five", "ninety-six", "ninety-seven", "ninety-eight", "ninety-nine", "one hundred"};

    int n;
    for (n = 1; n <= 100; n++)
    {
        printf ("%s -> %d\n", w[n], g(w[n]));
        if (n != g(w[n]))
        {
            printf ("Error at n = %d", n);
            return 1;
        }
    }
    return 0;
}

কিভাবে এটা কাজ করে

কিছু প্রচেষ্টার পরে, আমি একটি ফাংশন যা মানচিত্র "ব্যতিক্রমী" সংখ্যার পাওয়া one, two, three, four, five, six, seven, eight, nine, ten, eleven, twelve, thirteen, fourteen, fifteen, sixteen, seventeen, eighteen, nineteen, twenty, thirty, forty, fifty, sixty, seventy, eighty, ninety, one hundred, মুদ্রণযোগ্য হওয়া ASCII অক্ষর k, ., [, <, *, , c, K, w, y, e, (, S, _, -, C, ), 7, =, 4, &,o, ], s, Y, g, m, N, যথাক্রমে।

এই ফাংশনটি হ'ল:

char hash (char* s)
{
    char r = 0;

    while (*s)
    {
        r += *s|9;
        s++;
    }

    return r%45+77;
}

গল্ফযুক্ত প্রোগ্রাম ইনপুটটির hashক্রিয়াটি স্ট্রিং বা চরিত্রের শেষ না হওয়া পর্যন্ত গণনা করে -। তারপরে এটি স্ট্রিংয়ে হ্যাশ অনুসন্ধান করে k.[<* cKwye(S_-C)7=4&o]sYgmNএবং সংশ্লিষ্ট নম্বরটি নির্ধারণ করে। যদি ইনপুট স্ট্রিংয়ের শেষে পৌঁছে যায় সংখ্যাটি ফিরে আসে, পরিবর্তে যদি একটি -পৌঁছে যায়, তবে এটির সাথে ফিরে আসা নম্বরটি প্লাস হয় ইনপুট স্ট্রিংয়ের বাকী অংশে প্রয়োগ করা গল্ফযুক্ত প্রোগ্রামের ফলাফল।


আমি ভাবছি, যদি সি এর কোনও গল্ফিং সংস্করণ থাকত তবে এটি সিজাম পাইথ জাপট ইত্যাদির মতো ভাষাগুলি হারাতে পারে ...
বাসুকসুয়ান

11

জাভাস্ক্রিপ্ট (ES6), 175 166 163 156 153 147 বাইট

7 নাইট সংরক্ষণ করার জন্য 7 বাইট সংরক্ষণ করা

a=>+a.replace(/.+te|.*el|y$/,x=>x[1]?'on-'+x:'-d').split(/ |-|dr/).map(x=>"un|d,on|le,w,th,fo,f,x,s,h,i,".split`,`.findIndex(y=>x.match(y))).join``

এটি এখানে যাচাই করুন:

কিভাবে এটা কাজ করে

মূল ধারণাটি হ'ল প্রতিটি সংখ্যাটিকে তার অঙ্ক-শব্দের মধ্যে বিভক্ত করা, তারপরে প্রতিটি শব্দেরকে संबंधित অঙ্কে ম্যাপ করুন। প্রায় সমস্ত শব্দের একটি সাধারণ রেইগেক্সের সাথে সঠিকভাবে মিলে যাওয়ার জন্য সেট আপ করা হয়েছে তবে কয়েকটি ব্যতিক্রমীতা রয়েছে:

  • elevenমাধ্যমে nineteenযদি শব্দ একটি রয়েছে el, অথবা একটি teমধ্যম (এড়ানোর জন্য ten), আমরা একটি যোগ on-শুরুতে, এইসব পরিবর্তন on-elevenমাধ্যমে on-nineteen
  • twenty, thirty, ইত্যাদি .: একটি trailing প্রতিস্থাপন yসঙ্গে -dপরিবর্তন এই জন্য twent-d, thirt-dইত্যাদি

এখন আমরা হাইফেন, স্পেস এবং এসগুলিতে বিভক্ত হয়েছি dr। এটি 11 থেকে 99 এর সমস্ত কিছুকে তার সংশ্লিষ্ট অঙ্ক-শব্দের "one hundred"মধ্যে বিভক্ত করে [one,hun,ed]। তারপরে আমরা এই শব্দের প্রত্যেকটিকে একটি রেগেক্সের অ্যারে দিয়ে ম্যাপ করি এবং প্রথমে মেলে এমনটির সূচক রাখি।

0: /un|d/ - This matches the "hun" and "ed" in 100, as well as the "d" we placed on the end of 20, 30, etc.
1: /on|le/ - Matches "one" and the "on" we placed on the beginning of 11 through 19, along with "eleven".
2: /w/ - Matches "two", "twelve", and "twenty".
3: /th/ - Matches "three" and "thirty".
4: /fo/ - Matches "four" and "forty".
5: /f/ - "five" and "fifty" are the only words by now that contain an "f".
6: /x/ - "six" and "sixty" are the only words that contain an "x".
7: /s/ - "seven" and "seventy" are the only words by now that contain an "s".
8: /h/ - "eight" and "eighty" are the only words by now that contain an "h".
9: /i/ - "nine" and "ninety" are the only words by now that contain an "i".
10: /<empty>/ - "ten" is the only word left, but it still has to be matched.

এখন অবধি, প্রতিটি এবং প্রতিটি ইনপুট সঠিক সংখ্যার অ্যারে হবে। আমাদের যা করতে হবে তা হ'ল তাদের সাথে যোগ দেওয়া join``, আনারি দিয়ে কোনও সংখ্যায় রূপান্তর করা +এবং আমাদের কাজ শেষ।


দয়া করে ব্যাখ্যা করুন.
বব

@ Bob অবশ্যই, ব্যাখ্যা যুক্ত করা হয়েছে।
ETH প্রোডাকশনগুলি

.findIndex(y=>x.match(y))কাজ করে না ?
নিল

@ নীল আমি বুঝতে পারিনি যে তা ঘটবে, তবে এটি হয়, ধন্যবাদ!
ETH প্রোডাকশনগুলি

আমি নিশ্চিত আপনি উপন্যাস করতে পারেন replace
মামা ফান রোল

6

sh + coreutils, 112 বাইট

একবারে সমস্ত টেস্টকেসে চালানো যায়, প্রতি লাইনে একটি।

sed -r "`awk '$0="s/"$0"/+"NR"/g"'<<<"on
tw
th
fo
fi
si
se
ei
ni
te|lv
el"`
s/ /y0/
s/y/*10/
s/^\+|[a-z-]//g"|bc

ব্যাখ্যা

ব্যাকটিক স্ক্রিপ্টটিতে awkমূল্যায়ন করেsed

s/on/+1/g       # one, one hundred
s/tw/+2/g       # two, twelve, twenty
s/th/+3/g       # three, thirteen, thirty
s/fo/+4/g       # ...
s/fi/+5/g
s/si/+6/g
s/se/+7/g
s/ei/+8/g
s/ni/+9/g
s/te|lv/+10/g   # ten, -teen, twelve
s/el/+11/g      # eleven

যা সংখ্যার অংশগুলিকে তাদের সংখ্যার উপস্থাপনে রূপান্তর করে।

fife            ->    +5ve
ten             ->    +10n
eleven          ->    +11even
twelve          ->    +2e+10e
sixteen         ->    +6x+10en
thirty-seven    ->    +3irty-+7ven
forty-four      ->    +4rty-+4ur
eighty          ->    +8ghty
one hundred     ->    +1e hundred

সেড স্ক্রিপ্টের অতিরিক্ত লাইন

s/ /y0/
s/y/*10/

এর যত্ন নিন -tyএবং one hundred

+3irty-+7ven    ->    +3irt*10-+7ven
+4rty-+4ur      ->    +4rt*10-+4ur
+8ghty          ->    +8ght*10
+1e hundred     ->    +1ey0hundred      ->    +1e*100hundred

অবশেষে, নেতৃস্থানীয় অপসারণ +s এবং সবকিছু নয় +, *অথবা একটি অঙ্ক।

s/^\+|[a-z-]//g"

শুধুমাত্র গণিতের এক্সপ্রেশন রয়ে গেছে

fife            ->    5
sixteen         ->    6+10
forty-four      ->    4*10+4
eighty          ->    8*10
one hundred     ->    1*100

এবং পাইপ করা যেতে পারে bc


4

পাইথ, 79 76 75 68 বাইট

7 বাইটের জন্য @ETH প্রডাকশনগুলি ধন্যবাদ

?}"hu"z100sm*+hxc."ewEСBu­["2<d2?|}"een"d}"lv"dTZ?}"ty"dT1cz\-

মূলত প্রথমে 100 এর কর্নার কেসটি পরীক্ষা করে, তারপরে ইনপুটটির শব্দার্থবিজ্ঞান নির্ধারণ করতে এবং প্রত্যয় অনুসারে মানটি সংশোধন করার জন্য 0 থেকে 11 সংখ্যার প্রথম দুটি অক্ষরের একটি অ্যারে ব্যবহার করে ("-টি" এবং "-১" ";" lv "12 এ অন্য কোণার ক্ষেত্রে)। প্রথমে শব্দের তালিকায় ইনপুট বিভক্ত হয়, তারপরে প্রতিটি মানকে মানচিত্র করুন এবং সেগুলি যোগ করুন।

পাইথোনিক সিউডোকোডে:

                           z = input()    # raw, unevaluated
                           Z = 0
                           T = 10
?}"hu"z                    if "hu" in z:  # checks if input is 100
  100                        print(100)
                           else:
sm                           sum(map( lambda d: # evaluates each word, then sum
  *                            multiply(
   +hxc."ewEСBu­["2<d2           plusOne(chop("ontwth...niteel",2).index(d[:2])) + \
                                 # chops string into ["on","tw",..."el"]
                                 # ."ewEСBu­[" is a packed string
     ?|}"een"d}"lv"dTZ               (T if "een" in d or "lv" in d else Z),
                                     # add 10 for numbers from 12 to 19
   ?}"ty"dT1                     T if "ty" in d else 1),  # times 10 if "-ty"
  cz\-                         z.split("-"))  # splits input into words

পরীক্ষা স্যুট


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

z=input()
if "hu" in z:print(100);exit()
print(sum(map(lambda d:([0,"on","tw","th","fo","fi","si","se","ei","ni","te","el"].index(d[:2])+(10 if "een" in d or "lv" in d else 0))*(10 if "ty" in d else 1),z.split("-"))))

পাইথ উত্তরের মত মূলত অভিন্ন।


অন্য প্রসঙ্গ:

আমি সবেমাত্র জীবনের উত্তর, মহাবিশ্ব এবং সমস্ত কিছুর উত্তরের একটি অর্থপূর্ণ সংস্করণ আবিষ্কার করেছি: এটি চা-পিপাসাযুক্ত ডুমুর। বাহ, ডুমুররা চায়ের জন্য আকুল! আমি নিশ্চিত নই যে আরও কতগুলি উত্তর এটি করে, তবে আমার উত্তরের জন্য যদি ইনপুটটি "চা-পিপাসু-দ্বীপ" হয় তবে আউটপুট 42 হয়।


আমি বিশ্বাস করি আপনি একটি প্যাকযুক্ত স্ট্রিং ব্যবহার করে সাতটি বাইট সঞ্চয় করতে পারবেন । আউটপুট অনুলিপি করুন এবং "ontwthfofisiseeiniteel"এই প্রোগ্রামের জায়গায় রাখুন ।
ETH প্রোডাকশনগুলি

@ এথ প্রডাকশনগুলি বাহ, ধন্যবাদ! শেষবার আমি যাচাই করেছি, স্ট্রিংয়ের মাথায় এখনও "ze" ছিল এবং প্যাকিং কাজ করতে পারে নি। আমি এটি গল্ফ করার পরে আর একবার চেক করিনি। আবার, ধন্যবাদ এক্সডি
বুসুক্সুয়ান

@ ইথ প্রডাকশনগুলি হ্যাঁ আমি আসলেই করেছি, এটি সিউডোকোডের অধীনে।
বুসুক্সুয়ান

2

পাইথন 3, 365 361 310 303 টি অক্ষর

Golfed

def f(a):
 y=0
 for i in a.split("-"):
  x="one,two,three,four,five,six,seven,eight,nine,ten,eleven,twelve,thir;four;fif;six;seven;eigh;nine;twenty,thirty,forty,fifty,sixty,seventy,eighty,ninety,one hundred".replace(";","teen,").split(",").index(i)
  y+=x+1 if x<20 else range(30,110,10)[x-20]
 return y

Ungolfed

 def nameToNumber (numberName):
    names = ["one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","thirteen",
             "fourteen","fifteen","sixteen","seventeen","eighteen","nineteen","twenty","thirty","forty","fifty",
             "sixty","seventy","eighty","ninety","one hundred"]
    numbers = range(30, 110, 10)
    number = 0
    for n in numberName.split("-"):
        x = names.index(n)
        number += x + 1 if x < 20 else numbers[x - 20]
    return number

45 টি অক্ষর সংক্ষিপ্ত: n="one,two,three,four,five,six,seven,eight,nine,ten,eleven,twelve,thirteen,fourteen,fifteen,sixteen,seventeen,eighteen,nineteen,twenty,thirty,forty,fifty,sixty,seventy,eighty,ninety,one hundred".split(",")তবে আমি দেখতে পাচ্ছি, এটিকে ভেরিয়েবল এন এ নিয়োগ না করেই কাজ করা উচিত, কেবল .index()সরাসরি এটিতে কল করুন।
manatwork

7 টি অক্ষর খাটো: "one,two,three,four,five,six,seven,eight,nine,ten,eleven,twelve,thir;four;fif;six;seven;eigh;nine;twenty,thirty,forty,fifty,sixty,seventy,eighty,ninety,one hundred".replace(";","teen,").split(",")
manatwork

স্ট্যাকএক্সচেঞ্জ সাইটের ইঞ্জিনটিতে একটি জ্বালাময় অভ্যাস রয়েছে: এটি মন্তব্যগুলিতে পোস্ট করা কোডটিতে অদৃশ্য অক্ষর (U200C জিরো প্রস্থ নন-জয়েনার এবং U200B জিরো প্রস্থ স্থান) .োকায়। আপনি এগুলিও অনুলিপি করেছেন। আমি তাদের পোস্ট মুছে ফেলার জন্য সম্পাদনা করেছি।
manatwork

2

Haskell,, 252 231 বাইট

let l=words;k=l"six seven eight nine";w=l"one two three four five"++k++l"ten eleven twelve"++((++"teen")<$>l"thir four fif"++k)++[n++"ty"++s|n<-l"twen thir for fif"++k,s<-"":['-':x|x<-take 9w]]in maybe 100id.flip lookup(zip w[1..])

এটি "এক" থেকে "নিরানব্বই" পর্যন্ত সমস্ত ইংরেজী নম্বর নামের একটি তালিকা তৈরি করে এবং তারপরে ইনপুটটির সূচিটি দেখায়। যদি এটি বিদ্যমান না থাকে, আমরা প্রান্তের ক্ষেত্রে "একশ", সুতরাং এটি ফিরে আসে 100, অন্যথায় এটি সূচকটি ফেরত চলেছে।

Ungolfed

-- k in the golfed variant
common = words "six seven eight nine" 

-- w in the golfed variant
numbers = words "one two three four five" ++ common
       ++ words "ten eleven twelve" ++ [p ++ "teen" | p <- words "thir four fif" ++ common]
       ++ [p ++ "ty" ++ s| p <- words "twen thir for fif" ++ common
                         , s <- "" : map ('-':) (take 9 numbers)]

-- part of the expression in the golfed variant
convert :: String -> Int
convert s = maybe 100 id $ lookup s $ zip numbers [1..]

2

পাইথন 2, 275 টি অক্ষর

def x(n):a='one two three four five six seven eight nine ten eleven twelve'.split();t='twen thir four fif six seven eigh nine'.split();b=[i+'teen'for i in t[1:]];c=[i+'ty'for i in t];return(a+b+[i+j for i in c for j in ['']+['-'+k for k in a[:9]]]+['one hundred']).index(n)+1

এটি সহজভাবে প্রতিটি সংখ্যার একটি তালিকা তৈরি করে এবং সূচকটি সন্ধান করে।


1

জাপট, 82 বাইট

+Ur`(.+)¿``¿-$1` r"y$""-d" q$/ |-|dr/$ £`un|Üaiwo|ØÏ¿ifoifix¿iÊ¿¿e¿iv`qi b_XfZ}Ãq

প্রত্যেকে ¿একটি ছাপিয়ে যায় এমন চরকে উপস্থাপন করে। এটি অনলাইন পরীক্ষা!

আমার জেএস উত্তরের উপর ভিত্তি করে। যদি আউটপুটটির পূর্ণসংখ্যার প্রয়োজন না হয় তবে একটি বাইট বিয়োগ করুন, কারণ এটি স্ট্রিংয়ের মতো হুবহু প্রদর্শিত হবে।

কিভাবে এটা কাজ করে

+Ur`(.+)¿` `¿-$1`  r"y$""-d" q/ |-|dr/ £  `un|Üaiwo|ØÏ¿ifoifix¿iÊ¿¿e¿iv`          qi b_ XfZ}à q
+Ur"(.+)te""on-$1" r"y$""-d" q/ |-|dr/ mX{"un|dioniwo|wenithifoifixisihineiteiniv"qi bZ{XfZ}} q

Ur"(.+)te""on-$1" // Replace "thirteen", "fourteen", etc. with "on-thiren", "on-fouren", etc.
r"y$""-d"         // Replace "twenty", "thirty", etc. with "twent-d", "thirt-d", etc.
q/ |-|dr/         // Split at occurances of a space, hyphen, or "dr". By now,
                  // "one", "thirteen", "twenty", "sixty-six", "one hundred" will have become:
                  // "one", "on" "thiren", "twent" "d", "sixty" "six", "one" "hun" "ed"
mX         }      // Map each item X in the resulting array to:
"..."qi           //  Take this string, split at "i"s,
b_XfZ}            //  and find the first item Z where X.match(RegExp(Z)) is not null.
                  //  See my JS answer to learn exactly how this works.
                  // Our previous example is now
                  // "1", "1" "3", "2" "0", "6" "6", "1" "0" "0"
+              q  // Join and convert to integer.
                  // 1, 13, 20, 66, 100

1

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

সর্বদা হিসাবে: দেখা যাচ্ছে এটি প্রতিযোগিতা করার জন্য অনেক দীর্ঘ, তবে এখন যে আমি এটি সম্পন্ন করেছি এটি পোস্ট না করার অপচয় হবে।

সম্ভবত এটিকে আরও গল্ফ করার একটি সুস্পষ্ট উপায় আছে যা আমি উপেক্ষা করেছি?

e=s=>s.slice(-1)=='d'?100:'  ontwthfofisiseeinite'.indexOf(s.slice(0,2))/2;f=s=>([t,u]=s.split('-'),~s.indexOf`le`?11:~s.indexOf`lv`?12:e(t)+(t.slice(-3)=='een')*10+''+(u?e(u):t.slice(-1)=='y'?0:''))

পরীক্ষার মামলার জন্য জেএসফিডাল


1
কিভাবে পরিবর্তন সম্পর্কে fকরার f=s=>([t,u]=s.split('-'),~s.indexOf('le')?11:~s.indexOf('lv')?12:e(t)+(t.slice(-3)=='een')*10+''+(u?e(u):t.slice(-1)=='y'?0:''))? এছাড়াও, একটি একক স্ট্রিং আর্গুমেন্ট এর মতো ফাংশনে পাস করা যেতে পারে:s.indexOf`lv`
ETH প্রোডাকশনগুলি

@ ইথ প্রডাকশনস এটি দুর্দান্ত, ধন্যবাদ! আমি জানতাম না যে জেএসের একটি কমা অপারেটর ছিল, এবং স্ট্রিং পাসের জন্য শর্টহ্যান্ডটি সত্যই কার্যকর।
ভিভি

1

পার্ল, 158 বাইট

@s=split/(\d+)/,'te1ten0l1le1on1tw2th3fo4fi5si6se7ei8ni9d00';foreach(split'-',$n=$ARGV[0]){for($i=0;$i<$#s;$i+=2){m/$s[$i]/&&print$s[$i+1]}}$n=~/ty$/&&print 0

কমান্ড লাইন থেকে চালিত। এটি দুটি ইনপুট হিসাবে ব্যাখ্যা করা বন্ধ one hundredকরতে অবশ্যই প্রবেশ "one hundred"করতে হবে।

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