আপনার প্রথম গ্রেড গণনা অনুশীলন স্বয়ংক্রিয় করুন


36

কোডগল্ফ চ্যালেঞ্জ

PWSSHHHH! আপনি 3000 বছরে একটি ক্রিওজেনিক্স ল্যাবটিতে জেগেছিলেন your আপনার ক্যারিয়ার চিপটি পেতে এসাইনমেন্ট অফিসে নিয়ে যাওয়ার পরে, সম্ভবত ডেলিভারি ছেলের মতো, একটি অনুসন্ধানে সনাক্ত করা হয় যে আপনি 2000 সাল থেকে এসেছেন this এই কারণে এবং কয়েকটি স্টেরিওটাইপস, আজকের আধুনিক মানুষের তুলনায় আপনি বোকা বলে মনে করছেন এবং গ্রেডস্কুল পুনরাবৃত্তি করতে বাধ্য হন।

আপনি আপনার প্রথম শ্রেণীর শ্রেণিকক্ষে প্রবেশ করুন এবং শিক্ষক একটি অ্যাসাইনমেন্ট দিচ্ছেন। তিনি 50 নাম্বার পর্যন্ত একটি সংখ্যা লিখবেন বা লিখবেন she যদি তিনি বোর্ডে নম্বরটি লিখে থাকেন (উদাহরণস্বরূপ: 25) তবে আপনাকে সেই সংখ্যাটি বলতে হবে "এক, দুই, তিন, ..., পঁচিশ "। যদি তিনি উচ্চস্বরে সংখ্যাটি বলেন (উদাহরণস্বরূপ: "ছয়") তবে আপনার ট্যাবলেটে আপনাকে "1, 2, 3, 4, 5, 6" পর্যন্ত সংখ্যাটি লিখতে হবে

এটি খুব ক্লান্তিকর হয়ে ওঠে এবং আপনি স্থির করেন যে আপনি আপনার এখনও কার্যকারী, তবুও প্রত্নতাত্ত্বিক, একবিংশ শতাব্দীর প্রোগ্রামিং জ্ঞান দিয়ে প্রক্রিয়াটি স্বয়ংক্রিয় করবেন।


উদ্দেশ্য:

আপনার প্রোগ্রামটির একটি ইনপুট নেওয়া উচিত। এই ইনপুটটি হয় দশমিক সংখ্যা ( 1 thru 50) বা একটি লিখিত আউট নম্বর ( one thru fifty)।

। যদি ইনপুটটি দশমিক সংখ্যা হয় তবে আপনার আউটপুটটি লিখিতভাবে শৈলী ব্যবহার করে এক থেকে নেওয়া সংখ্যায় গণনা করা উচিত। (যেমন বত্রিশ )

। যদি ইনপুটটি লিখিত-আউট নম্বর হয় তবে দশমিক স্টাইল ব্যবহার করে আপনার আউটপুটটি 1 থেকে বলা সংখ্যায় গণনা করা উচিত। (যেমন 32 )


নিয়মাবলী:

ইনপুট এবং আউটপুট আপনার পছন্দের যে কোনও ক্ষেত্রে হতে পারে (যাতে আপনি এমন একটি প্রোগ্রাম তৈরি করতে পারেন যা কেবল যদি ইচ্ছা হয় তবে উচ্চ-কেস গ্রহণ করে)।

দশমিক সংখ্যার ইনপুট কোনও সংখ্যার (যেমন int) হতে হবে না, তারা একটি ইনপুট স্ট্রিং হতে পারে সংখ্যার (25 বনাম "25")। হয় ঠিক আছে এবং আপনি আপনার প্রোগ্রামটি গ্রহণ করতে চান তা বেছে নিতে পারেন। (আপনার প্রোগ্রাম দুটি গ্রহণ করার প্রয়োজন নেই)

রাইটিং আউট স্টাইলে যৌগিক শব্দের মধ্যে হাইফেনের প্রয়োজন হয় না, তবে আপনি চাইলে করতে পারেন।

আউটপুট মানগুলি কোনও আকারে পৃথক করতে হবে, যে কোনও বিভাজক ভাল 1,2,3 1 2 3 etc

আপনি নাম্বারওয়ার্ডস (পাইথন) ইত্যাদির মতো অতিরিক্ত লাইব্রেরি যুক্ত করতে পারবেন না (তবে সিস্টেম লাইব্রেরি ভাল আছে)

যদিও পিছনের গল্পটি আপনি 2000 সাল থেকে এসেছেন, আপনি সেই তারিখের পরে তৈরি ভাষা ব্যবহার করতে পারেন (লোল)


এটি , তাই সংক্ষিপ্ত বাইকাউন্টের সাথে প্রোগ্রামটি জয়ী!


1
অজগর ক্ষেত্রে আমাদের কি নাম্বারওয়ার্ডের মতো লাইব্রেরি ব্যবহার করার অনুমতি রয়েছে ?
গুরুপদ মামাদপুর

1
@ অ্যালবার্ট রেনশাও কিন্তু বিল্টিনগুলি কী তা করে? (গণিত)
পাভেল

1
@ কর্ডাম্পের অর্থ হয় আপনি এক বা অন্য বা দুটি বেছে নিতে পারেন। এটি উভয় ধরণের ইনপুট পরিচালনা করতে সক্ষম হবেনা
অ্যালবার্ট রেনশওয়া

2
"আমার চকচকে ধাতব পাছা কামড়!" আমি নিজেকে গণনা করব না
রাইজিংএজেন্ট

1
আমি ভাবছি শিরোনামটি "আপনার প্রথম (গ্রেড গণনা)" "আপনার (প্রথম শ্রেণির) গণনা" নয়
CAD97

উত্তর:


32

পার্ল 6 , 119 113 বাইট

{my \n=<①     ㊿>.map:{|map *.uniname.words[2..*].join,$^a..$^b}
/\d/??n[^$_]!!1..1+first $_,n,:k}

ইউনিকোড ডাটাবেস এফটিডাব্লু!

হাইপেন ছাড়াই আপার-কেস লিখিত-আউট নম্বরগুলি ব্যবহার করে, যেমন TWENTYTWO
স্ট্রিংগুলির একটি তালিকা বা সংখ্যার ব্যাপ্তি প্রদান করে। (মুদ্রিত হওয়ার সময় উভয়ই পৃথক হিসাবে স্থান ব্যবহার করে put))


3
খুব চতুর আহহহহ! এটি পছন্দ করুন
অ্যালবার্ট রেনশওয়া

13

পাইথন 3, 276 271 269 243 237 235 232 217 বাইট

@ এসএমএলএস পার্ল সাবমিশন থেকে একটি কিউ নিচ্ছেন ...

from unicodedata import*
o=[name(chr(k)).split(' ',2)[-1]for j in['①⑴','㉑㉠','㊱㋀']for k in range(ord(j[0]),ord(j[1]))]
i=input()
w=i in o
for i in range(w and o.index(i)+1or int(i)):print(w and i+1or o[i])

আমার সন্দেহ হয় এটি আরও কিছুটা এগিয়ে যেতে পারে।

এটি unicodedataসংখ্যার নাম সন্ধান করতে সিস্টেম লাইব্রেরিটি ব্যবহার করে। এটির জন্য বড় হাতের অক্ষরের নাম (স্থান দ্বারা পৃথক FORTY TWO:) বা দশমিক পূর্ণসংখ্যা ইনপুট হিসাবে প্রয়োজন।

(এটি আমার প্রথম কোড গল্ফ জমা দেওয়া))

(আমি এটিও লক্ষ্য করেছি যে আমি দৈর্ঘ্যটি (এনকোডিংয়ের) ভুলভাবে গণনা করছি, সুতরাং এটি আগের ভাবার চেয়ে কয়েক বাইট কম। যদিও আমি কেবল সাম্প্রতিকতম বাইট গণনাটি আপডেট করেছি ops


পিপিসিজিতে আপনাকে স্বাগতম!
অ্যাডমবর্কবার্ক

অ্যাডভোকেসি: unicodedataএকটি সিস্টেম লাইব্রেরি যা ডিফল্ট ইনস্টলেশন সহ আসে, "অতিরিক্ত" লাইব্রেরি নয় যা আলাদাভাবে ইনস্টল করা দরকার।
unayok

সাইটে স্বাগতম! আপনি আপনার কোড থেকে প্রচুর স্থান সরিয়ে ফেলতে পারেন ।
xnor

1
পিপিসিজিতে আপনাকে স্বাগতম। forলুপের ভিতরে মুদ্রণটি রেখে প্রতিটি আউটপুটের মধ্যে নতুন লাইন রেখে আপনি 3 বাইট হারাতে পারেন । print()এটি যদি কোনও পূর্ণসংখ্যা বা স্ট্রিং হয় তবে তা বিবেচ্য নয়। এটি অনলাইন চেষ্টা করুন!
এলপেড্রো

1
আমি মনে করি আপনি কয়েকটি বাইট সংরক্ষণ করার import*পরিবর্তে করতে পারেনimport name
গম উইজার্ড

10

সাধারণ লিপ, 297 253 243 242 144 128

(lambda(s)(#1=dotimes(u(or(#1#(i 51)(if(equal(#2=format()"~R"i)s)(return i)))s))(#2#t"~[~:;, ~]~:[~R~;~D~]"u(stringp s)(1+ u))))

বিস্তারিত

(lambda (s) 
  (dotimes                         ; iterate...                                                                          
      (u                           ; for u from zero below ...                
       (or                         ; if s is a string, then                   
        (dotimes (i 51)            ;   parse s by iterating from 0 to 50      
          (if (equal               ;   until we find a match between          
               (format nil "~R" i) ;   the English word(s) for i              
               s)                  ;   and the given s                        
              (return i)))         ;   (exit loop)                            
        s))                        ; otherwise, use s, which is a number      
    (format t                      ; for each U, print to standard output     
            "~[~:;, ~]~:[~R~;~D~]" ; (see below for details)                  
            u                      ; ...                                      
            (stringp s)            ; ... arguments to format                  
            (1+ u))))              ; ...                                      
  • ~[ 0 ~; 1 ~; ... ~:; else ~]পরবর্তী উপলব্ধ আর্গুমেন্টের মানের উপর ভিত্তি করে একটি স্যুইচ, যা উপযুক্ত উপ-নিয়ন্ত্রণ বিন্যাসে লাফ দেয়। এখানে, আমার কাছে কেবল "0" এবং "অন্য" এর একটি মামলা রয়েছে। শূন্য থেকে শুরু করে ইউকে ধন্যবাদ, প্রথমটি বাদ দিয়ে প্রতিটি সংখ্যার আগে একটি বিভাজক সন্নিবেশ করানোর জন্য এটি ব্যবহৃত হয়।

  • ~:[ FALSE ~; TRUE ~]এটি একটি শর্তসাপেক্ষ বিন্যাস; ইনপুটটি স্ট্রিং কিনা তা আমরা এখানে আলাদাভাবে আউটপুট করি।

  • ~Rকার্ডিনাল ইংলিশ নম্বর হিসাবে একটি সংখ্যা লিখুন, যেখানে ~Dকেবল সংখ্যাটি মুদ্রণ করে।

উদাহরণ

CL-USER> (test "five")
1, 2, 3, 4, 5

CL-USER> (test 32)
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

আমি যে প্রশ্নটি বুঝতে পারি তা থেকে আপনাকে কেবল একটি নয়, উভয় স্টাইলকে পার্স করতে সক্ষম হতে হবে, যাতে আপনার 55 বাইট সমাধানটি বৈধ নাও হতে পারে। "আপনার প্রোগ্রাম উভয়কেই গ্রহণ করার দরকার নেই" 25 বনাম "25", দশমিক হিসাবে একটি সংখ্যা বা স্ট্রিং হিসাবে উল্লেখ করছে।
টম

ধন্যবাদ টমডেভস এটি অবশ্যই বিভ্রান্তিকর। নিশ্চিত হওয়া যায়, আমি যদি সংজ্ঞায়িত করি fযে "" (চ 2) "প্রিন্টগুলি" এক, দুটি "এবং (f "two")" 1, 2 "মুদ্রণ করে তবে কি এটি আপনার কাছে ভাল দেখাচ্ছে?
coredump

হ্যাঁ, আমি মনে করি এটি ঠিক।
টম

@ টমডেভস ধন্যবাদ, আমি এটি ঠিক করেছি
coredump

1
@ অ্যালবার্ট রেনশওয়া নং, কেবল ইংরেজী; এই বৈশিষ্ট্যটি ইতিমধ্যে ব্লাট হিসাবে বিবেচিত হতে পারে তবে এটি ইতিমধ্যে কিছু লিস্পে প্রয়োগ করা হওয়ায় এটি মানক করা হয়েছিল।
coredump

8

জাভাস্ক্রিপ্ট ES6, 559 526 381 368 364 358 332 327 315 বাইট

a="one0two0three0four0five0six0seven0eight0nine0ten0eleven0twelve0thir10four10fif10six10seven10eigh10nine1".replace(/1/g,'teen').split(0),b="twenty0thirty0forty0fifty".split(0),c=(n,d=Array,e=b.forEach(i=>a=a.concat(i,a.slice(0,9).map(x=>i+x))))=>1/n?a.slice(0,n).join():d.from(d(a.indexOf(n)+1),(x,i)=>i+1).join();

1 / এন ট্রিকের জন্য অ্যারে এবং আরনল্ডকে বিভক্ত করার ধারণার জন্য কৃতিক্সিত লিথোসকে ধন্যবাদ।

a="one0two0three0four0five0six0seven0eight0nine0ten0eleven0twelve0thir10four10fif10six10seven10eigh10nine1".replace(/1/g,'teen').split(0),b="twenty0thirty0forty0fifty".split(0),c=(n,d=Array,e=b.forEach(i=>a=a.concat(i,a.slice(0,9).map(x=>i+x))))=>1/n?a.slice(0,n).join():d.from(d(a.indexOf(n)+1),(x,i)=>i+1).join();

console.log(c("twentyfive"));
console.log(c("fifty"));
console.log(c(50));


1
আপনি অপসারণ করতে পারেন varএবং আপনি অ্যারের পরিবর্তন করতে পারেন ['one,'two',..]থেকে"one0two0three0...".split(0)
Kritixi Lithos

অপ্রয়োজনীয় হোয়াইটস্পেস এ null, Array(n)
ইয়াতসি

2
আপনি !isNaN(n)দ্বারা প্রতিস্থাপন করতে পারেন 1/n। এটি আপনাকে NaNস্ট্রিংয়ের জন্য দেয় (মিথ্যা), শূন্যহীন পূর্ণসংখ্যার (সত্যবাদী) বা Infinity0 (সত্যবাদী) এর জন্য একটি শূন্য নন ফ্লোট ।
আর্নল্ড

প্রতিটি কোড লাইনের সামনে 4 স্পেস যুক্ত করুন
sagiksp

@ সগিক্স্প হ্যাঁ, পোস্ট সম্পাদনা করার সময় নিশ্চয়ই কিছু গোলমাল হয়েছে, এখনই ঠিক করা উচিত :)
টম

6

পাইথন 2 , 503 499 494 490 479 বাইট

-5 জনাথন অ্যালানকে ধন্যবাদ দিয়ে

l='one two three four five six seven eight nine ten eleven twelve thir#four#fif#six#seven#eigh#nine#'.replace('#','teen ').split()
m='twenty','thirty','forty','fifty'
i,z,R=raw_input(),' ',range
try:n=int(i);p=(n/10)-2;o=(l+sum([[m[x]]+[m[x]+z+l[y]for y in R(9)]for x in R(p)],[])+[m[p]]+[m[p]+z+l[y]for y in R(n%10)],l[:n])[n<20]
except:j=i.split();o=map(str,R(1,(m.index(j[0])+2)*10+l.index(j[1])+2if z in i else l.index(i)+2if i in l else(m.index(i)+2)*10+1))
print','.join(o)

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

কোনও সংখ্যার একটি স্পেস বিভাজিত বানানটি ইনপুট করুন।

সামান্য কম গল্ফযুক্ত এবং আরও পঠনযোগ্য সংস্করণ:

l='one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen'.split()
m='twenty','thirty','forty','fifty'
i=raw_input()
try:
 n=int(i)
 if n<20:
  o=l[0:n]
 else:
  o=l
  for x in range((n/10)-2):
   o+=[m[x]]+[m[x]+' '+l[y]for y in' '*9]
  p=m[(n/10)-2]
  o+=[p]+[p+' '+l[y]for y in' '*n%10]
except:
 if' 'in i:
  t=i.split()
  s=((m.index(t[0])+2)*10)+l.index(t[1])+2
 else:
  s=l.index(i)+2 if i in l else((m.index(i)+2)*10)+1
 r=range(1,s)
 o=map(str,r)
print','.join(o)

1
6 বাইট সংরক্ষণ করুনl="one two three four five six seven eight nine ten eleven twelve thir#four#fif#six#seven#eigh#nin#".replace("#","teen ").split()
জোনাথন অ্যালান

... উফ 5, এর eথেকে মিস হয়েছে nineteen
জোনাথন অ্যালান

পাইথন 2 ব্যবহার করার আপনার কি কোনও কারণ আছে, এটি ছাড়া মুদ্রণটি দীর্ঘতর হবে, তবে কাঁচা_ ইনপুট কেবল ইনপুট হতে পারে? (আপনার অন্যান্য উত্তরের জন্য একই প্রশ্ন)
nedla2004

@ নেডলা ২০০৪ - এর বাইরে আর কোনও কারণ নেই যে আমি আমার সর্বশেষতম ল্যাপটপে পাইথন 3 ইনস্টল করতে
পারিনি:

6

স্কিম, 161 , 152 , 149

(define (c x)(let((r(string->number x)))(let l((i 1))(let((n (format #f "~r" i)))(display(if r n i))(newline)(or(eq? r i)(equal? x n)(l (+ i 1)))))))

uncompressed:

(define (count limit)
  (let ((numerical-limit (string->number limit)))
    (let l ((i 1))
      (let ((current-number (format #f "~r" i)))
        (display (if numerical-limit current-number i))
        (newline)
        (or (eq? numerical-limit i)
            (equal? limit current-number)
            (l (+ i 1)))))))

আপনি কীভাবে উদাহরণস্বরূপ "চার" থেকে 4 এ রূপান্তর করবেন? আমি নিশ্চিত string->numberযে এটি এটি করে না , আমি দ্রুত চেক করেছিলাম এবং মনে হয় এটি স্ট্রিং "4"থেকে সংখ্যায় রূপান্তর করতে ব্যবহৃত হয় 4
coredump

পছন্দ করেছেন (string->number "four")আয় #f
মাইকেল Vehrs

আপনি কোন প্রকল্প চালাচ্ছেন?
coredump

1
@ কর্ডম্প্প গেইল ২.০.৯
মাইকেল Vehrs

6

পিএইচপি - 397 372 349 344 329 বাইট

টমডেভসের জেএস সলিউশন দ্বারা অনুপ্রাণিত

প্রতিস্থাপন $a=[...]করে 25 বাইট সংরক্ষণ করা হয়েছে$a=explode(...)

স্ট্রিং teenডিলিমিটর ছাড়াই অ্যারেতে ফিরে এবং একটি ভেরিয়েবলের মধ্যে সঞ্চয় করে , অন্য 23 বাইট সংরক্ষণ করেছেন @ ইউজার 59178

(int)টাইপকাস্টিং অপসারণ করে আরও 5 টি বাইট সংরক্ষণ করা হয়েছে

ড্রপ দ্বারা অন্য 15 বাইট সংরক্ষিত $b, $iমধ্যে forথেকে @ user59178 আবার ঘোষণা, এবং কোঁকড়া ধনুর্বন্ধনী, ধন্যবাদ

$a=[one,two,three,four,five,six,seven,eight,nine,ten,eleven,twelve,thir.$t=teen,four.$t,fif.$t,six.$t,seven.$t,eigh.$t,nine.$t];foreach([twenty,thirty,forty,fifty] as$c){$a[]=$c;for($i=0;$i<9;)$a[]=$c.'-'.$a[$i++];}if($argv[1]!=0)for($i=0;$i<$argv[1];)echo$a[$i++].' ';else for($i=1;$i<=array_search($argv[1],$a)+1;)echo$i++.' ';

অসমাপ্ত:

$a =[one,two,three,four,five,six,seven,eight,nine,ten,eleven,‌​twelve,thir.$t=teen,‌​four.$t,fif.$t,six.$‌​t,seven.$t,eigh.$t,n‌​ine.$t];
foreach ([twenty,thirty,forty,fifty] as $c){
    $a[] = $c;
    for ($i=0;$i<9;)
        $a[] = $c . '-' . $a[$i++];
}
if( $argv[1] !=0 )
    for ($i=0;$i<$argv[1];)
        echo $a[$i++] . ' ';
else
    for ($i=1;$i<=array_search($argv[1], $a)+1;)
        echo $i++ . ' ';

একটি ইনপুট স্ট্রিং বা একটি ইনপুট সংখ্যার জন্য এটি ব্যবহার করে দেখুন


1
গল্ফ করার সময় আপনি ব্যবহার করা সমস্ত নম্বর সহ কোনও স্ট্রিট সরাসরি ছাড়াই অনেকগুলি স্ট্রিং ব্যবহার করতে পারেন। এটি একটি নোটিশের কারণ তবে এটি উপেক্ষা করা যেতে পারে। অতিরিক্তভাবে এটি teenপ্রতিবার পুনরাবৃত্তি না করে পরিবর্তে একটি ভেরিয়েবলে সঞ্চয় করা আরও ছোট (2 টি পুরো বাইট দ্বারা) । যেমনটি এটি হয়ে উঠবে:$a=[one,two,three,four,five,six,seven,eight,nine,ten,eleven,twelve,thir.$t=teen,four.$t,fif.$t,six.$t,seven.$t,eigh.$t,nine.$t];
ব্যবহারকারী59178

এটি ভেবে ;)
দেখেনি

আপনি $bদ্বিতীয় অ্যারেটি সরাসরি ফোরচে ফেলে এবং আরও 7 বাইট সংরক্ষণ করতে পারেন , সমস্ত কোঁকড়া ধনুর্বন্ধনী বন্ধন রেখে 6 টি বাইট (যদিও আপনাকে $a=$cলুপের জন্য সেটআপের প্রয়োজন হবে ) এবং পোস্ট-ইনক্রিমেন্টিং দ্বারা আরও 6 বাইট $iযখন আপনি লুপগুলির জন্য 'পরে' বিটের পরিবর্তে এটি ব্যবহার করেন।
ব্যবহারকারী59178

পোস্ট-ইনক্রিমেন্টটি নিম্নোক্ত লাইনের দিকে সরিয়ে ছয় বাইট (দুটি লুপ প্রতি) সংরক্ষণ করুন:for ($i=0;$i<9;)$a[]=$c.'-'.$a[$i++];
অ্যালেক্স হাওঁস্কি

ওফস, দুঃখিত, সবেমাত্র খেয়াল করেছেন @ ব্যবহারকারী59178 একই জিনিসটির পরামর্শ দিয়েছে ...
অ্যালেক্স হাওয়ানস্কি

6

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

x="one two three four five six seven eight nine ten eleven twelve thir#four#fif#six#seven#eigh#nine#".replace("#","teen ").split()
x+=[a+"ty"+b for a in"twen","thir","for","fif"for b in['']+x[:9]]
v=input()
for s in range(1,x.index(v)+2)if v>50else x[:v]:print s

repl.it

ইনপুট এবং আউটপুট স্ট্রিংগুলি নিম্ন কেস এবং সংক্ষিপ্ত * হয়, সুতরাং স্ট্রিং ইনপুটটি পরীক্ষা করতে উদাহরণস্বরূপ, "thirtyfive"প্রম্পটে।

সমস্ত শব্দের (প্লাস "fiftyone"টু "fiftynine") তালিকার তালিকা তৈরি করে x, তারপরে inputপ্রক্সি সহ একটি শব্দ হয় কিনা তা পরীক্ষা করে v>50(পাইথন 2-এ সংখ্যার চেয়ে বেশি স্ট্রিং থাকে এবং স্পেসিফিকেশন থেকে বৈধ ইনপুট পরিসরে সমস্ত সংখ্যা থাকে <=50) এবং printউপযুক্ত হয় হয় হয় তালিকা কেটে কাটা x[:v], বা একটি পূর্ণসংখ্যার শৃঙ্খলা তৈরি করে range(1,x.index(v)+2)

* 11 বাইট উভয় খরচ হাইফেন যোগ করার পদ্ধতি দ্বারা প্রতিস্থাপিত a+"ty"bসঙ্গে a+"ty"+'-'*(b>'')+b


5

ওল্ফ্রাম ভাষা, 92 বাইট

If[NumberQ@#, Do[Print@IntegerName@i, {i, #}], 
  Do[Print@i, {i, Interpreter["SemanticNumber"]@#}]] &

(আমি এতে নতুন, আমি কিছু ভুল করেছি কিনা তা আমাকে জানান)


2
-10 বাইট:Do[Print@If[#>0,i,,IntegerName@i],{i,If[#>0,#,,Interpreter["SemanticNumber"]@#]}]&
জংহওয়ান মিন

5

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

দ্রষ্টব্য: z তে নির্ধারিত স্ট্রিংটি এনকোড করা হয়েছে atob। এনকোডযুক্ত স্ট্রিংগুলিতে 11 বাইট রয়েছে যা আমি এই সাইটে পোস্ট করতে পারি না, এমনকি যদি সে জাভাস্ক্রিপ্ট স্ট্রিংয়ে বৈধ অক্ষর হয়। সুতরাং আমি he xHH ফর্মটিতে একটি হেক্স পলায়ন ব্যবহার করেছি। এই পালানো প্রত্যেকেরই 1 টি বাইট হিসাবে গণনা করা হয়।
আসল অসম্পৃক্ত স্ট্রিংটি কম গল্ফযুক্ত সংস্করণ।

x=>(z=btoa('ö\x89ÞöÜ(öØkyï_¢êý~+Þöȱöǯz\x7f^\x8a\x08möx§{Û^\x9f×¥z÷§öÜ\x1e\x96÷½¶\x18«÷×â\x7fß}z(!÷Ûpz\x7f}~\x8aý').split(9),o=(0+z.map((v,i)=>i<20?i<13?v:(v||z[i-10])+'teen':z.slice(0,10).map(d=>(z[i]||z[i-8]||z[i-18])+'ty'+d))).split`,`,p=o.indexOf(x),o.slice(1,-~x+p+!~p).map((x,i)=>~p?i+1:x))

কম গল্ফড

x => (
  z = '9one9two9three9four9five9six9seven9eight9nine9ten9eleven9twelve9thir99fif999eigh99twen99for9'
      .split(9),
  o = (0 + // 0 + array to build a comma separated string
       z.map( (v, i) => 
         i < 20 
         ? i < 13 
           ? v // 1 to 13 are 'as is'
           : (v||z[i-10])+'teen' // compose for 14 to 19
         : z.slice(0,10).map(d=>(v||z[i-8]||z[i-18])+'ty'+d)) // 20s, 30s, 40s, 50s
      ).split`,`, // from comma separated to array again
  // o contains strings from one to fiftynine
  p = o.indexOf(x), // look for input
  o.slice(1, -~x+p+!~p).map((x,i) => ~p?i+1:x)
)

পরীক্ষা

F=
x=>(z=btoa('ö\x89ÞöÜ(öØkyï_¢êý~+Þöȱöǯz\x7f^\x8a\x08möx§{Û^\x9f×¥z÷§öÜ\x1e\x96÷½¶\x18«÷×â\x7fß}z(!÷Ûpz\x7f}~\x8aý').split(9),o=(0+z.map((v,i)=>i<20?i<13?v:(v||z[i-10])+'teen':z.slice(0,10).map(d=>(v||z[i-8]||z[i-18])+'ty'+d))).split`,`,p=o.indexOf(x),o.slice(1,-~x+p+!~p).map((x,i)=>~p?i+1:x))

function update() {
  var i=I.value
  O.textContent = F(i)
}  

update()
<input id=I value=25 oninput='update()'><pre id=O></pre>


ö\x89ÞöÜ(öØ...এই স্টাফটি দুর্দান্ত হাহাহা
অ্যালবার্ট

আপনার শীর্ষ নোটের সাথে সম্পর্কিত: মেটা.স্ট্যাকওভারফ্লো.com
অ্যালবার্ট রেনশো

5

পাইথন 3 , 305 303 বাইট

@ নেডলা ২০০৪ এর পরামর্শের পরে পাইথন 3 এ রূপান্তরিত হয়েছে। ইনপুট বা আউটপুটে লিখিত সংখ্যার মধ্যে এখন আর স্থান নেই যেমন বিশটি প্রবেশ করান

l='one two three four five six seven eight nine ten eleven twelve thir#four#fif#six#seven#eigh#nine#'.replace('#','teen ').split()
m='twenty','thirty','forty','fifty'
i,R=input(),range
l+=sum([[m[x]]+[m[x]+l[y]for y in R(9)]for x in R(3)],[])
for x in R(1,l.index(i)+2)if i in l else l[:int(i)]:print(x)

অনলাইনে চেষ্টা করে দেখুন 3!

পাইথন 2 , 327 320 313 308 বাইট

l='one two three four five six seven eight nine ten eleven twelve thir#four#fif#six#seven#eigh#nine#'.replace('#','teen ').split()
m='twenty','thirty','forty'
i,R=raw_input(),range
l+=sum([[m[x]]+[m[x]+l[y]for y in R(9)]for x in R(3)],[])+['fifty']
for x in R(1,l.index(i)+2)if i in l else l[:int(i)]:print x

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

163 170 177 বাইট আমার মূল উত্তরের চেয়ে কম তাই আমি এটি বিকল্প হিসাবে পোস্ট করছি। forসংখ্যার স্ট্রিং উপস্থাপনাগুলির একটি সম্পূর্ণ তালিকা তৈরি করতে এটি দুটি তালিকায় ব্যবহার করে তারপরে তালিকার ডানটিকে সনাক্ত করে এবং মান বা সূচী দ্বারা এটি পর্যন্ত সমস্ত কিছু মুদ্রণ করে। প্রতিটি মানের জন্য একটি নতুন লাইন আউটপুট দেয়।


5

পাইথন 2, 432 422 416 403 বাইট

আমি নিশ্চিত যে এটি আরও উন্নত করা যেতে পারে। খুব কমপক্ষে যদি আমি হার্ডকোডিংয়ের সাথে কাজ করতে হয় এবং কোনও ফাংশনের প্রয়োজন না পড়ে আমি ২০ টি সঞ্চয় করতে পারি তবে তা সংরক্ষণ করতে পারি text পাঠ্য ইনপুটটিতে শব্দের পৃথক করার জন্য এটির একটি স্থান প্রয়োজন। এলপিড্রোর উত্তর সম্পর্কে জোনাথন অ্যালানর মন্তব্যের জন্য 6 বাইট সংরক্ষিত, গণিত পুনরায় সাজানোর জন্য 4

def z(f):
 a,b,i,d="one two three four five six seven eight nine ten eleven twelve thir#four#fif#six#seven#eigh#nine#".replace("#","teen ").split()+[""],"twenty thirty forty fifty".split(),1,f>50
 if d:f=f.split();f=a.index(f[-1])+21+b.index(f[-2])*10 if len(f)>1 else b.index(f[-1])*10+20 if f[-1]in b else a.index(f[-1])+1
 while i<=f:s=i if d else a[i-1]if i<20 else b[i//10-2]+a[i%10-1];print s;i+=1

(এনবি: এটির আসল সংস্করণটি ফাঁকের পরিবর্তে ইনডেন্ট করার জন্য ট্যাবগুলি ব্যবহার করে code কিউপ্যাজট্যাক্সগুলি একটি একক স্থান যুক্ত করেছে কারণ প্রদত্ত কোডটি সংকলন করে তা নিশ্চিত করতে সঠিকভাবে রেন্ডারিং করা হয়নি It এটি বাইট গণনা পরিবর্তন করা উচিত নয়))


এলপিড্রোর জবাব সম্পর্কে জোনাথন অ্যালান এর মন্তব্য এখানে -6
ক্রিস এইচ

1
len(`f`)>2...`f`[2:]আমি বিশ্বাস করি আরও 3 জনের জন্য হতে পারে । ( ...ব্যাকটিক্স সঠিকভাবে কাজ করছে বলে মনে হচ্ছে না) উপেক্ষা করুন
জোনাথন অ্যালান

আসলে অজগর 2 এ আপনি f>506 এর জন্য যেতে পারেন (এবং অন্যটি ব্যবহার না করে d)
জনাথন অ্যালান

: @JonathanAllan যে পূর্ণসংখ্যার, যা আমি বর্তমানে কি হিসাবে সংখ্যার পাশ করার জন্য কাজ করে না TypeError: 'int' object has no attribute '__getitem__'। যদি আমি একটি স্ট্রিং হিসেবে সাংখ্যিক ইনপুট পাস, f[2:]কাছাকাছি পায় কিন্তু এখনও যখন একটি বুলিয়ান হিসাবে trated (ব্যর্থ print f[2:] and Trueএকটি ফাঁকা লাইন ছাপে যদি lên (চ) <2, না Trueবা False)
ক্রিস এইচ

@ জোনাথন অ্যালান f>50কাজ করে, আপনাকে ধন্যবাদ। ড্রপিং dএত সহজ নয় যেহেতু আমি সর্বদা লুপের শেষ মানটিকে f8 লাইনে রাখি if f>50কারণ এটি কখনই সত্য হবে না to
ক্রিস এইচ

4

সি ++ 11, 484 480 477 বাইট

#import<iostream>
#import<cstdlib>
#import<vector>
using namespace std;f(){int j,i=2;string s="teen";vector<string>v={"","one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve"};for(;i++<9;)v.push_back(v[i]+s);v[13]="thir"+s;v[15]="fif"+s;v[18]="eigh"+s;for(i=19;i++<50;){string n[4]={"twenty","thirty","forty","fifty"};v.push_back(n[i/10-2]+v[i%10]);}cin>>s;if(i=atoi(s.c_str()))for(j=0;j++<i;)cout<<v[j]<<" ";else while(v[i++]!=s)cout<<i<<" ";}

হাইফেন ছাড়াই নিম্ন-ক্ষেত্রে পাঠ্য ইনপুট।


3

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

$z=0..50|%{("0twenty0thirty0forty0fifty"-split0)[+(($b="$_"[0])-gt49)*($_-gt19)*(+"$b"-1)]+($x=(("0one0two0three0four0five0six0seven0eight0nine0ten0eleven0twelve"-split0)+(-split'thir four fif six seven eigh nine'|%{$_+'teen'})))[($_%10)*($_-gt19)]+$x[$_*($_-le19)]}
if(($n=-split$args)[0][0]-in48..57){$z[$n[0]..$n[2]]}else{$z.IndexOf($n[0])..$z.IndexOf($n[2])}

এটি অনলাইন চেষ্টা করুন! শব্দের ইনপুট বা সংখ্যা ইনপুট

এটি একটি সঠিক জগাখিচুড়ি, এবং আমি এতে ভীষণ খুশি নই, তবে এটি এখানে। গল্ফিং পরামর্শ স্বাগত জানাই।

প্রথম লাইনটি $zসম্পূর্ণ ইংরেজী শব্দের একটি অ্যারে হিসাবে সেট করে। আপনি -split0সংখ্যার 1জন্য 12, এবং সমস্ত teenগুলি তৈরির লুপ দেখতে পাচ্ছেন এবং তারপরে সমস্ত কিছু একসাথে ডান করার জন্য যুক্তিগুলির একটি গুচ্ছ রয়েছে। এটি অনলাইন চেষ্টা করুন!

দ্বিতীয় লাইনটি কিছু যুক্তি দিয়ে শুরু হয়। আমরা ইনপুটটি $args(স্ট্রিং হিসাবে) -splitনিই, এটি হোয়াইট স্পেসে রাখি, $nপরে এটি ব্যবহারের জন্য সংরক্ষণ করি , প্রথম [0]শব্দটি এবং এর প্রথম [0]চরিত্রটি গ্রহণ করি এবং এটি -inকোনও পরিসীমা 48..57(যেমন, ASCII 0থেকে 9) হয় কিনা তা পরীক্ষা করি । সুতরাং, আমরা যদি আমাদের দশমিক ইনপুট বা ইংরাজী ইনপুট থাকে তা পরীক্ষা করে দেখছি। এটি অনলাইন চেষ্টা করুন!

প্রথম ক্ষেত্রে, আমরা দশমিক ইনপুটগুলির উপর ভিত্তি করে একটি পরিসর তৈরি করি $n[0]..$n[2]এবং এটিকে সূচীতে ব্যবহার করি $z[...]। অন্য ক্ষেত্রে, আমরা .indexOf()প্রথম শব্দ এবং শেষ শব্দটি খুঁজে পাই এবং সেখান থেকে কেবল একটি সংখ্যার পরিসর তৈরি করি। উভয় পরিস্থিতিতে, পাইপলাইনে আমাদের কাছে এখন বস্তুর একটি অ্যারে রয়েছে (স্ট্রিং বা ইন্টিজারগুলি হয়), এবং Write-Outputপ্রোগ্রামের সমাপ্তিতে একটি অন্তর্নিহিত আমাদের উপাদানগুলির মধ্যে একটি নতুন লাইন দেয়।


3

সুইফট 3, 402 বাইট

let f=["one","two","three","four","five","six","seven","eight","nine"]
let g=["twenty","thirty","forty","fifty"]
let v=[f,["ten","eleven","twelve"],["thir","four","fif","six","seven","eigh","nine"].map{$0+"teen"},[g[0]],f.map{g[0]+$0},[g[1]],f.map{g[1]+$0},[g[2]],f.map{g[2]+$0},[g[3]]].flatMap{$0}
func c(s:String){if let i=Int(s){print(v.prefix(upTo:i))}else{for j in 1...v.index(of:s)!+1{print(j)}}}

Ungolfed:

let f = ["one","two","three","four","five","six","seven","eight","nine"]
let g = ["twenty","thirty","forty","fifty"]

let values = [f,["ten","eleven","twelve"],["thir","four","fif","six","seven","eigh","nine"].map{$0+"teen"},
              [g[0]], f.map{g[0]+$0},
              [g[1]], f.map{g[1]+$0},
              [g[2]], f.map{g[2]+$0},
              [g[3]]].flatMap{$0}

func count(s:String){
    if let i = Int(s) {
        print(values.prefix(upTo: i))
    } else {
        for j in 1...values.index(of: s)!+1{
            print(j)
        }
    }
}

count(s:"29")
count(s:"twentyeight")

এখানে বিশেষ কিছু নেই, কেবল লিখিত-আউট সংখ্যাগুলি ব্যাক আপ করার জন্য একটি অ্যারে ব্যবহার করে।

valuesঅ্যারে গণনা করার জন্য আমি এই সমাধানটি অন্যভাবে ব্যবহার করে ভেবেছিলাম :

let values = f + ["eleven","twelve"]
    + ["thir","four","fif","six","seven","eigh","nine"].map{$0+"teen"}
    + [g[0]] + f.map{g[0]+$0}
    + [g[1]] + f.map{g[1]+$0}
    + [g[2]] + f.map{g[2]+$0}
    + [g[3]]

যা গল্ফ করা যেতে পারে:

let v=f+["eleven","twelve"]+["thir","four","fif","six","seven","eigh","nine"].map{$0+"teen"}+[g[0]]+f.map{g[0]+$0}+[g[1]]+f.map{g[1]+$0}+[g[2]]+.map{g[2]+$0}+[g[3]]

গল্ফ কোডটিতে তৃতীয় লাইনটি প্রতিস্থাপন করা হচ্ছে

আমি 381 বাইট স্কোর করতে পারতাম, তবে, একটি সংকলক ত্রুটি রয়েছে যা বলে: "যুক্তিযুক্ত সময়ে সমাধান করা খুব জটিল ছিল", ত্রুটি সম্পর্কিত আরও তথ্য এখানে পাওয়া যাবে can


এখানে দ্রুতগতিতে প্রেম করা, ফিরে আসার সময় আমাকে আরও এই বিষয়টি পরীক্ষা করে দেখতে হবে
অ্যালবার্ট রেনশো

3

আর, 452 430 424 বাইট

o=c("","one","two","three","four","five","six","seven","eight","nine") 
t=gsub(0,"teen",c("ten","eleven","twelve","thir0","four0","fif0","six0","seven0","eigh0","nine0"))
s=c("twenty","thirty","forty") 
p=""
for(i in s){for(j in o){p=paste0(p,i,j," ")}}
as.data.frame(t(d<-1:50))
names(d)=c(o[-1],t,as.vector(strsplit(p," ")[[1]]),"fifty")
f=function(x){if(is.numeric(x)){names(d)[1:x]}else{matrix(d[1:d[x]],dimnames=NULL)}}

#> f(5)
#[1] "one"   "two"   "three" "four"  "five" 

#> f('five')
#     [,1]
#[1,]    1
#[2,]    2
#[3,]    3
#[4,]    4
#[5,]    5

দুটি (এবং পরবর্তী মুদ্রণ) এর মধ্যে অনুবাদটি সহজ করে তুলতে কলামের নাম হিসাবে লিখিত আউট সংখ্যা সহ একটি ডেটা ফ্রেমে নম্বরগুলি রাখুন।

গল্ফিংয়ের মূল প্রচেষ্টা ছিল 20-49-র লিখিত আউট সংখ্যা তৈরি করা, সম্ভবত এখানে গল্ফের চেয়ে অনেক বেশি।

আমি as.matrixমাত্র সংখ্যা দিয়ে ডেটা.ফ্রেম প্রিন্ট করার চেষ্টা করেছি , তবে এখনও ম্যাট্রিক্স শিরোনাম রেখে এসেছি। আশা করি ঠিক আছে।

Ungolfed:

ones <- c("","one","two","three","four","five","six","seven","eight","nine") 
teens <- c("ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen")
tens <- c("twenty","thirty","forty") 

p=""
for(i in tens){
  for(j in ones){
    p=paste0(p, i, j," ")
  }
}

nums <- 1:50
as.data.frame(t(nums))
names(nums) <- c(ones[-1], teens, as.vector(strsplit(p, " ")[[1]]), "fifty")
f <- function(x){
  if(is.numeric(x)){
    names(nums)[1:x]
  } else {
    matrix(nums[1:nums[x]], dimnames = NULL)
  }
}

সামান্য উন্নতি 359 বাইটে:o=c("","one","two","three","four","five","six","seven","eight","nine") ; v=c("ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen"); w=c("twenty","thirty","forty"); a=data.frame(0:50, c(o,v, sapply(w[1:3],function(y) sapply(o,function(x) paste0(y,x))),"fifty")); b=which(a==i); a[if(b<52) 2:b else 2:(b-51),ifelse(b<52,2,1)]
গণনা করুন

@ হিসাব একটি বড় উন্নতির মত দেখাচ্ছে! যদিও ফাংশনটি রয়েছে তা আপনি খুঁজে বের করতে পারেন না বা আপনি কোনও যুক্তিটি কোথায় নিয়েছেন।
বিএলটি

2

সি, 342 331 বাইট

char*x[]={"teen","one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","thir","four","fif","twenty","thirty","fourty","fifty"};void main(int z,char**i){for(z=1;z<=atoi(i[3]);z++)printf("%s%s%s\n",z<16?x[z]:z<20?z^18?x[z-10]:"eigh":x[z/10+14],z>20&&z%10?"-":z>12&&z<20?*x:"",z>20&&z%10?x[z%10]:"");}

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


আমার প্রিয় ভাষা :)
অ্যালবার্ট রেনশো

1
আপনার আসলে 1 টি বা একটির মাধ্যমে দরকার নেই; এই কোডগল্ফের জন্য প্রয়োজনীয় সমস্তটি হল আপনার তৃতীয় যুক্তি। প্রথম দুটি সর্বদা "1 এবং থ্রু" (বা "এক এবং থ্রু") থাকবে
আলবার্ট রেনশো

@ অ্যালবার্ট রেনশ্যা শুভ কল! ধন্যবাদ :)
আহেমোন

1

এসএএস, 179

%macro c(n);%let f=words.;%if%length(&n)>2%then%do;%do c=1%to 50;%if%qsysfunc(putn(&c,&f))=&n%then%let n=&c;%end;%let f=2.;%end;%do i=1%to &n;%put%sysfunc(putn(&i,&f));%end;%mend;

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

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