একটি ব্যাবিলনীয় মত গণনা


41

চ্যালেঞ্জ

ইনপুট হিসাবে ব্যাবিলনীয় সংখ্যার একটি ASCII প্রতিনিধিত্ব দেওয়া হয়েছে, পশ্চিমা আরবি সংখ্যাগুলিতে সংখ্যাটি আউটপুট করুন।

ব্যাবিলনীয় সংখ্যা সিস্টেম

ব্যাবিলনীয়রা কীভাবে গণনা করেছিল? মজার বিষয় হল, তারা বেস 10 সিস্টেমের উপাদান সহ একটি বেস 60 সিস্টেম ব্যবহার করেছে। প্রথমে সিস্টেমের ইউনিট কলামটি বিবেচনা করা যাক:

ব্যাবিলনীয়দের কেবল তিনটি প্রতীক ছিল: T(বা, যদি আপনি এটি রেন্ডার করতে পারেন 𒐕:) যা 1 টি উপস্থাপন করে, এবং <(বা, আপনি যদি এটি রেন্ডার করতে পারেন 𒌋:) যা 10 টি উপস্থাপন করে, এবং \(বা, আপনি এটি রেন্ডার করুন 𒑊:) যা শূন্যকে উপস্থাপন করে।

দ্রষ্টব্য: প্রযুক্তিগতভাবে, \(বা 𒑊) শূন্য নয় (কারণ ব্যাবিলনীয়দের 'শূন্য' ধারণাটি ছিল না)। 'জিরো' পরে আবিষ্কার করা হয়েছিল, তাই \দ্বিপাক্ষিকতা রোধ করার জন্য পরে স্থানধারক প্রতীক যুক্ত করা হয়েছিল। তবে, এই চ্যালেঞ্জের উদ্দেশ্যে, এটি \শূন্য হিসাবে বিবেচনা করা যথেষ্ট

সুতরাং, প্রতিটি কলামে আপনি কেবল চিহ্নগুলির মান যুক্ত করুন, যেমন:

<<< = 30
<<<<TTTTTT = 46
TTTTTTTTT = 9
\ = 0

প্রতিটি কলামে কখনই পাঁচ <বা তার বেশি নয় T\সর্বদা কলামে একা উপস্থিত হবে।

এখন, আমাদের আরও কলাম যুক্ত করার জন্য এটি প্রসারিত করতে হবে। এটি অন্য কোনও বেস ষাটের মতো ঠিক একই রকম কাজ করে, যেখানে আপনি ডানদিকের কলামের মান দিয়ে বামে , একটিকে দ্বারা বামে , একটিটি 60 60 2 দ্বারা বামে এবং এই জাতীয়ভাবে ব্যবহার করে। তারপরে সংখ্যার মান পেতে আপনি প্রতিটিটির মান যোগ করুন।600601602

অস্পষ্টতা রোধ করতে কলামগুলি স্পেস দিয়ে আলাদা করা হবে।

কিছু উদাহরণ:

<< <TT = 20*60 + 12*1 = 1212
<<<TT \ TTTT = 32*60^2 + 0*60 + 4*1 = 115204

বিধি

  • আপনি ASCII ইনপুট ( T<\) বা ইউনিকোড ইনপুট ( 𒐕𒌋𒑊) গ্রহণ করতে পারবেন
  • ইনপুটড নম্বরটি সর্বদা 107
  • <গুলি সবসময় বাম হবে Tপ্রতিটি কলামের মধ্যে গুলি
  • \ সর্বদা একটি কলামে একা উপস্থিত হবে

জয়লাভ

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


2
@ টেলরস্কট হ্যাঁ, আপনি হতে পারেন
বিটা

2
যদি এটি সহায়তা করে: সর্বাধিক যেটি পরিচালনা করতে হবে তা 4 টি কলাম:<<<<TTTTTT <TTTTTTT <<<<TTTTTT <<<<
ওয়ার্নিশ

1
কলামগুলি সর্বদা এক এক জায়গায় পৃথক পৃথক হয় ? আমি এর উপর নির্ভর উত্তরগুলি লক্ষ্য করি।
কেআরয়ান

4
হুকা পাইপযুক্ত বিদেশী ধরণগুলি বলে ওহে ওহে ওহে ওহে ওহে ওহে - ব্যাবিলনের মতো গণনা করুন Count গ্রেট। এখন এটি আমার মাথায় আটকে গেছে।
কোবল্টডেক

5
"How did the Babylonians count? Interestingly, they used a Base 60 system with an element of a Base 10 system."যা আজও ব্যবহারে রয়েছে; ব্যাবিলনীয় সংখ্যা সিস্টেম হ'ল আমরা ঘড়ির জন্য ব্যবহার করি। প্রতিটি সেকেন্ড, মিনিট এবং ঘন্টার জন্য দশমিক অঙ্ক, মিনিটে 60 সেকেন্ড, ঘন্টা থেকে 60 মিনিট।
রায়

উত্তর:


39

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

ASCII টি অক্ষরের অ্যারে হিসাবে ইনপুট নেয়।

a=>a.map(c=>k+=c<1?k*59:c<'?'?10:c<{},k=0)|k

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

কিভাবে?

ব্যাবিলনীয় সংখ্যাসূচক সিস্টেমটিকে একটি 4-শিক্ষার ভাষা হিসাবে দেখা যায় যা একটি একক নিবন্ধকের সাথে কাজ করে - আসুন আমরা একে সংযোজক বলি।

থেকে শুরু করে , প্রতিটি অক্ষর ইনপুট অ্যারের মধ্যে মডিফাই সঁচায়ক নিম্নরূপ:c a kk=0cak

  • space: সংখ্যাবৃদ্ধি দ্বারা (: অ্যাড হিসাবে প্রয়োগ করা থেকে )60 59 k6059kk
  • <: যোগ থেকেকে10k
  • T: ইনক্রিমেন্টk
  • \: কিছু করনা; এই হল NOPএই ভাষার নির্দেশ (হিসাবে প্রয়োগ করা: অ্যাড থেকে )কে0

12

সি (জিসিসি) , 140 138 136 বাইট

B,a,b,y;l(char*o){y=B=0,a=1;for(char*n=o;*n;n++,B++[o]=b,a*=60)for(b=0;*n&&*n-32;n++)b+=*n-84?*n-60?:10:1;for(B=a;B/=60;y+=*o++*B);B=y;}

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


6
+1 "ব্যাবিলোনীয়দের মতো গণনা "টিকে পরবর্তী স্তরে নিয়ে যাওয়া: ডি
বিটা ডেকে

11

পার্ল 6 , 39 বাইট

-৩ বাইট নোহেলহোফকে ধন্যবাদ

{:60[.words>>.&{sum .ords X%151 X%27}]}

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

কিউনিফর্ম অক্ষর ব্যবহার করে।

ব্যাখ্যা:

{                                     }   # Anonymous code block
     .words  # Split input on spaces
           >>.&{                    }  # Convert each value to
                sum   # The sum of:
                    .ords # The codepoints
                          X%151 X%27   # Converted to 0,1 and 10 through modulo
 :60[                                ]  # Convert the list of values to base 60

আপনি আমাকে কয়েক মিনিট মারলেন। এখানে আমি যা নিয়ে এসেছি তা এখানে: {:60[.words>>.&{sum (.ords X%151)X%27}]}(40 বাইট)
nwellnhof

@ ননহ্নহফ খুব ভাল কাজ করেছেন! আপনি কিভাবে আধুনিক মান খুঁজে পেলেন?
জো রাজা

2
কেবল নিষ্ঠুর শক্তি দ্বারা।
nwellnhof

11

জেলি ,  13  12 বাইট

ḲO%7C%13§ḅ60

একটি পূর্ণসংখ্যার লিঙ্ক অক্ষরের একটি তালিকা গ্রহণ করে যা পূর্ণসংখ্যা দেয়।

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

কিভাবে?

ḲO%7C%13§ḅ60 - Link: list of characters   e.g. "<<<TT \ TTTT"
Ḳ            - split at spaces                 ["<<<TT", "\", "TTTT"]
 O           - cast to ordinals                [[60,60,60,84,84],[92],[84,84,84,84]]
  %7         - modulo by seven (vectorises)    [[4,4,4,0,0],[1],[0,0,0,0]]
    C        - compliment (1-X)                [[-3,-3,-3,1,1],[0],[1,1,1,1]]
     %13     - modulo by thirteen              [[10,10,10,1,1],[0],[1,1,1,1]]
        §    - sum each                        [32,0,4]
         ḅ60 - convert from base sixty         115204

আরেকটি 12: ḲO⁽¡€%:5§ḅ60( ⁽¡€হয় 1013, তাই এই modulos 1013দ্বারা Ordinal মান পেয়ে 53, 5এবং 1জন্য <, T, \যথাক্রমে তারপর সঞ্চালিত বিভাজন পূর্ণসংখ্যা, :দ্বারা 5পেতে 10, 1এবং 0)


হ্যাঁ, আমি ঠিক এই কারণে আমার উত্তর মুছে ফেলেছি , যেহেতু আমি মনে করেছি যে আমি বেস রূপান্তরটি ব্যবহার করতে পারি তবে কীভাবে তা খুঁজে পেতে আক্ষরিকভাবে খুব অলস ছিল । +1
মিঃ এক্সকোডার

6

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

8740|Ç%4/O60β

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

আমি আমার জেলি উত্তরটি দিয়ে কীভাবে অলস হয়েছি তা আপ করার জন্য , এখানে 05AB1E xD তে জমা দেওয়া হচ্ছে।


এখানে 05AB1E-ers সহায়তা করুন, সংখ্যা সংকোচনের উপায় ছিল না 8740?
মিঃ এক্সকোডার

2
codegolf.stackexchange.com/a/166851/52210 দুর্ভাগ্যবশত এটা খাটো হবে না: •Yη•(4 বাইটস)
কেভিন Cruijssen

2
@ কেভিন ক্রুজসেন আপনাকে ধন্যবাদ! এই উত্তরটি খুব কার্যকর, আমি ভবিষ্যতে এটি সম্পূর্ণরূপে ব্যবহার করব
মিঃ এক্সকোডার

1
খুশি টিপ ব্যবহার করা হয়। :) আমি এগুলি কয়েকটি উত্তর ব্যবহার করে দেখেছি। অভিধান অংশটি এখানে ব্যাখ্যা করা হয়েছিল । এবং অন্যান্য স্ট্রিং বা বড় সংখ্যার সংক্ষেপণ "হংস" এবং 246060 এর লিঙ্কযুক্ত উদাহরণগুলির উত্তরগুলি দেখে আমি নিজেকে আবিষ্কার করেছি ।
কেভিন ক্রুজসেন

1|Ç7%-13%O60βএছাড়াও 13 - এটি গল্ফযোগ্য?
জোনাথন অ্যালান

6

পাইথন 2 , 96 93 87 85 বাইট

lambda s:sum(60**i*sum(8740%ord(c)/4for c in v)for i,v in enumerate(s.split()[::-1]))

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


সংরক্ষিত:

  • -১ বাইট, মিঃ এক্সকোডারকে ধন্যবাদ
  • -4 বাইট, পুন লেভি ধন্যবাদ
  • -২ বাইট, ধন্যবাদ ম্যাথু জেনসেনকে


@ মিঃ এক্সকোডার ধন্যবাদ :)
টিফিল্ড

2
87:8740%ord(c)/4
পুুন লেভি

-2 দ্বিতীয় যোগফলের কাছাকাছি প্রথম বন্ধনীর সরিয়ে () অনলাইনে চেষ্টা করে দেখুন!
ম্যাথু জেনসেন


4

এক্সেল ভিবিএ, 121 বাইট

32-বিট অফিসে সীমাবদ্ধ 64৪-বিট সংস্করণে আক্ষরিক ধরণের হিসাবে ^কাজ করেLongLong

সেল A1এবং আউটপুট থেকে vbe তাত্ক্ষণিক উইন্ডোতে ইনপুট নেয় ।

a=Split([A1]):u=UBound(a):For i=0 To u:v=a(i):j=InStrRev(v,"<"):s=s+(j*10-(InStr(1,v,"T")>0)*(Len(v)-j))*60^(u-i):Next:?s

অবহেলিত এবং মন্তব্য করা হয়েছে

a=Split([A1])       '' Split input into array
u=UBound(a)         '' Get length of array
For i=0 To u        '' Iter from 0 to length
v=a(i)              '' Get i'th column of input
j=InStrRev(v,"<")   '' Get count of <'s in input
                    '' Multiply count of <'s by 10; check for any T's, if present
                    ''   add count of T's
t=t+(j*10-(InStr(1,v,"T")>0)*(Len(v)-j))
    *60^(u-i)       '' Multiply by base
Next                '' Loop
?s                  '' Output to the VBE immediate window

4

ডায়ালগ এপিএল , 33 30 বাইট

{+/(⌊10*⍵-360*+\2=⍵}'\ T<'⍳⌽

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

সম্পাদনা করুন: -3 বাইট এনএনজি ধন্যবাদ

'\ T<'⍳সংখ্যার সাথে অক্ষরগুলি প্রতিস্থাপন করে (স্ট্রিং ধ্রুবতে তাদের অবস্থান), এবং ইনপুটটিকে বিপরীত দেয় যাতে সর্বাধিক উল্লেখযোগ্য 'অঙ্কগুলি' শেষ last এটি কোনও স্থানের (স্ট্রিং ধ্রুবকের 2 টি সূচক) সংখ্যার মুখোমুখি সংখ্যার গণনা করে the০ +\2=(প্রয়োগিত 60*) এর কাঙ্ক্ষিত পাওয়ারের চলমান গণনা রাখতে দেয় ।

⌊10*⍵-3প্রতিটি চরিত্রের জন্য দশটির কাঙ্ক্ষিত শক্তি দেয়। স্ট্রিং-এর অক্ষরগুলির ক্রম এবং ক্রম -3 অফসেট '\' এবং স্থানটিকে নেতিবাচক সংখ্যার দিকে নিয়ে যায়, ফলস্বরূপ যখন এই অক্ষরগুলি 10 এর পাওয়ার হিসাবে উত্থাপিত হয়, তাদের দ্বারা মুছে ফেলা হয়

এখনই আমাদের যা করতে হবে তা হ'ল 60-এর মান সংখ্যার দ্বারা 10-এর সংখ্যার গুণন করা এবং এর সাথে যোগফলটি যোগ করা +/


সঙ্গে পৃথক তুলনা এড়িয়ে কয়েক বাইট সংরক্ষণ ' ':{+/(⌊10*⍵-3)×60*+\2=⍵}'\ T<'⍳⌽
ngn



3

এপিএল (NARS ⎕io ← 0), 28 টি অক্ষর, 56 বাইট

{60⊥{+/⍵⍳⍨10⍴'\T'}¨⍵⊂⍨⍵≠' '}

টাইপ চেক সহ কিছু পরীক্ষা:

  q←{60⊥{+/⍵⍳⍨10⍴'\T'}¨⍵⊂⍨⍵≠' '}

  o←⎕fmt
  o q '<< <TT'
1212
~~~~
  o q '<<<TT \ TTTT'
115204
~~~~~~

প্রতিটি ধরণের ফলাফল সংখ্যা।


2

জাভাস্ক্রিপ্ট (নোড.জেএস) , 122 114 107 106 83 বাইট

a=>a.split` `.map(b=>[...b].map(c=>x+=c<'T'?10:c<'U',x=0)&&x).reduce((a,b)=>a*60+b)

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

আমি "ফাংশনাল স্টাইল" অ্যারে অপারেশনগুলিতে কিছুটা আচ্ছন্ন হয়ে আছি, ASCII ইনপুট ব্যবহার করি, যতদূর আমি বলতে পারি, জেএস চারকোডগুলি গল্ফভাবে পাওয়ার ক্ষেত্রে খুব একটা ভাল নয়

আমি এটি উত্তরসূরির জন্য রাখছি, তবে এটি একটি নির্বোধ / বোবা সমাধান, আমি আপনাকে পরামর্শ দিয়েছি যে আর্নল্ডের উত্তরটি যা চ্যালেঞ্জের বাস্তবায়নের চেয়ে অনেক বেশি আকর্ষণীয় check


@ শেগি দেখে মনে হচ্ছে এটি আমার পক্ষে কাজ করে!
স্কিডদেব

c<'T'এর জায়গায় কাজ করেc=='<'
মিঃ এক্সকডার

সংরক্ষণ করুন 1 প্রতিস্থাপন করে আরও &&সঙ্গে |
শেগি

@ শেগি এবং for...ofলুপগুলি ব্যবহার করে আরও অনেক কিছু সংরক্ষণ করুন : পি
এএসসিআই-কেবল

2

রেটিনা , 29 26 23 বাইট

<
10*T
+`^(.*)¶
60*$1
T

এটি অনলাইন চেষ্টা করুন! নিউলাইন বিভাজন ব্যবহার করে তবে লিঙ্কটিতে সুবিধার পরিবর্তে স্পেসগুলি ব্যবহার করতে শিরোলেখ অন্তর্ভুক্ত করা হয়। সম্পাদনা করুন: @ কেভিনিক্রুজসেনের সহায়তায় 3 বাইট সংরক্ষণ করা হয়েছে। @ ফ্রাইআমডেজিগম্যানকে আরও 3 বাইট সংরক্ষণ করা হয়েছে ব্যাখ্যা:

<
10*T

<10 Tটি দিয়ে প্রতিটি প্রতিস্থাপন করুন ।

+`^(.*)¶
60*$1

প্রথম লাইনটি ধরুন, এটিকে 60 দিয়ে গুণ করুন এবং পরবর্তী লাইন যুক্ত করুন। তারপরে কেবল একটি লাইন বাকি না হওয়া পর্যন্ত পুনরাবৃত্তি করুন।

T

এস গণনা করুন T

দ্রুততর 51-বাইট সংস্করণ:

%`^(<*)(T*).*
$.(10*$1$2
+`^(.+)¶(.+)
$.($1*60*_$2*

এটি অনলাইন চেষ্টা করুন! নিউলাইন বিভাজন ব্যবহার করে তবে লিঙ্কটিতে সুবিধার পরিবর্তে স্পেসগুলি ব্যবহার করতে শিরোলেখ অন্তর্ভুক্ত করা হয়। ব্যাখ্যা:

%`^(<*)(T*).*
$.(10*$1$2

প্রতিটি লাইন পৃথকভাবে মেলে এবং Ts এর সংখ্যা এবং <s এর সংখ্যার 10 গুন গণনা করুন । এটি প্রতিটি লাইনকে তার বেস -60 "অঙ্ক" মানের মধ্যে রূপান্তর করে।

+`^(.+)¶(.+)
$.($1*60*_$2*

বেস 60 রূপান্তর, একবারে একটি লাইন চলমান। গতি জন্য দশমিক মধ্যে গণনা করা হয়।


আমি পুরোপুরি নিশ্চিত যে তৃতীয় লাইনটি কেবলমাত্র <ছাড়া থাকতে পারে +, যদি না আমি কোনও ধরণের প্রান্তের মামলা না দেখি।
কেভিন ক্রুইজসেন

1
@ কেভিন ক্রুজসেন আরও ভাল, $&এখন যেমন সর্বদা একটি চরিত্র, আমি আরও দুটি বাইট সংরক্ষণ করে ডিফল্ট চরিত্রটি ব্যবহার করতে পারি!
নীল

আহ ভাল! :) জানেন না যে একক অক্ষরের জন্য নিখুঁতভাবে করা যেতে পারে।
কেভিন ক্রুইজসেন

কেভিন ক্রুজসেন ভাল, চরিত্রটি কী তা আমি খেয়াল করি না, কারণ আমি কেবল দৈর্ঘ্যই নিচ্ছি; রেটিনা 1 এ আপনি রেটিনা ডিফল্টর পূর্ববর্তী সংস্করণগুলিতে _কিছুক্ষণ $*পান 1
নীল

আহ আমি দেখি. আপনার প্রাথমিক কোডটি সমস্তটি <একক ম্যাচ হিসাবে গ্রহণ করছে এবং সেগুলির দৈর্ঘ্যের 10 বার ( <ম্যাচের পরিমাণ ) পুনরাবৃত্তি করবে এবং আমার প্রস্তাবিত পরিবর্তনটি প্রতি <পৃথকভাবে 10 বার পুনরাবৃত্তি করছে (যা আপনি 2 বাইট দ্বারা আরও বেশি গল্ফ করেছেন যার সাথে অন্তর্নিহিত 1 ব্যবহার করে 10*)। +প্রাথমিকভাবে কেন সেখানে ছিল এখন আমি আরও ভাল করে বুঝতে পারি । আমি রেটিনা বিল্টিনগুলি সম্পর্কে খুব বেশি জানি না, কেবলমাত্র সাধারণভাবে রেজিক্স হয়, তাই আমার প্রস্তাবিত পরিবর্তন কারণ আমি ইতিমধ্যে প্রতি >10 বার এটি পুনরাবৃত্তি হিসাবে পড়েছি । ;)
কেভিন ক্রুজসসেন

2

ব্যাশ (সেড এবং ডিসি সহ), 50 বাইট

sed 's/</A+/g
s/T/1+/g
s/ /60*/g
s/\\//g'|dc -ez?p

stdinআউটপুট থেকে স্থান-সীমাবদ্ধ ইনপুট নেয়stdout

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

ব্যাখ্যা

নিয়মিত প্রকাশের একগুচ্ছ ম্যাচের সাথে ইনপুটটি রূপান্তর করতে সেড ব্যবহার করে, উদাহরণস্বরূপ, ইনপুটটি <<<TT \ TTTTরূপান্তরিত হয়েছে A+A+A+1+1+60*60*1+1+1+1+। তারপরে এই ইনপুটটি ডিসিকে স্পষ্ট ইনপুট এক্সিকিউশন কমান্ড দিয়ে খাওয়ানো হয় ?, এর আগে z(স্ট্যাকের দৈর্ঘ্য (0) ধাক্কা দেয় যাতে আমাদের সংযোজনটি কোথাও কোথাও পাওয়া যায়) এবং এর পরে p(মুদ্রণ) হয়।





1

কাঠকয়লা , 26 বাইট

≔⁰θFS«≡ι ≦×⁶⁰θ<≦⁺χθT≦⊕θ»Iθ

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা:

≔⁰θ

ফলাফল সাফ করুন।

FS«...»

ইনপুট অক্ষরের উপর লুপ করুন। কমান্ড এটি একটি "ডিফল্ট" ব্লক খোঁজার থেকে বিরত একটি ব্লক জড়িয়ে রাখা হয়েছে।

≡ι

বর্তমান চরিত্রটির উপরে স্যুইচ করুন ...

 ≦×⁶⁰θ

যদি এটি একটি স্থান থাকে তবে ফলাফলটি 60 দ্বারা গুণ করুন ...

<≦⁺χθ

যদি এটি হয় <তবে ফলাফলটিতে 10 যোগ করুন ...

T≦⊕θ

যদি এটি একটি Tফলাফল বৃদ্ধি হয়।

Iθ

ফলাফল মুদ্রণ করুন।


1

আর , 98 81 বাইট

(u=sapply(scan(,""),function(x,y=utf8ToInt(x))y%%3%*%(y%%6)))%*%60^(sum(u|1):1-1)

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

হাস্যকরভাবে স্ট্রিং পার্সিংয়ের কারণে দীর্ঘ। অপ্রয়োজনীয় বাইট 16 শেভ করার জন্য গিয়াস্পিকে ধন্যবাদ।

yইউনিকোড ইনপুট এবং বাইকোড মান নির্ধারণ করুনR = y("T<\") = y("𒐕𒌋𒑊")

যে পর্যবেক্ষণ R%%3 = 1,2,0এবং R%%6 = 1,5,0... তাই R%%3 * R%%6 = 1,10,0!

বাকিটি সহজ: প্রতি কলামে যোগফল, তারপরে 60 এর হ্রাস পাওয়ার সাথে ডট-প্রোডাক্ট।


কমিয়ে আর্নউল্ডের অ্যাস্নওয়ারকে পোর্টিং করা আরও গোলাপী হওয়ার সম্ভাবনা রয়েছে।
জেসি

scan(,"")স্পেসে স্বয়ংক্রিয়ভাবে বিভক্ত হয় না ?
জিউসেপে

1
মোডগুলির সাথে দুর্দান্ত কৌশল, যদিও! আমি যে চিন্তা করার চেষ্টা গেছে তবে এটি খুঁজে পাইনি ... এবং /60দ্বারা প্রতিস্থাপিত হতে পারে -1বন্ধ আরেকটি বাইট জন্য এক্সপোনেন্ট এক্সপ্রেশনে, প্লাস <-দ্বারা প্রতিস্থাপিত হতে পারে =যেহেতু এটি বন্ধনীর মধ্যে সব।
জিউসেপে

@ জিউজেপ্পে আমি %% 3 চেষ্টা করেছিলাম এবং এটি আশ্বাসজনক ছিল তাই আমি দেখতে থাকি ... এছাড়াও একটি বিন্দু পণ্য ব্যবহার করে আমাকে কেবল একটি অতিরিক্ত বাইট বাঁচিয়েছে :)
জাইসি

1

রুবি , 50 46 বাইট

->a{x=0;a.bytes{|c|x+=[59*x,10,0,1][c%9%5]};x}

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

আরনাউল্ডের উত্তরের একটি প্রাথমিক বন্দরটি জিবি দ্বারা -4 বাইটের জন্য উন্নত করেছে।


1
45 বাইটস- আসলে 47 আপনি যদি "মানচিত্র" এর পরিবর্তে "বাইটস" ব্যবহার করেন
জিবি

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

1
আরেকটি বাইট বন্ধ: 46 বাইট
জিবি


1

জাভা 8, 64 60 বাইট

a->{int r=0;for(int c:a)r+=c<33?r*59:c<63?10:84/c;return r;}

-৪ বাইট @ সিলিংক্যাট ধন্যবাদ ।

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

a->{            // Method with character-array parameter and integer return-type
  int r=0;      //  Result-integer, starting at 0
  for(int c:a)  //  Loop over each character `c` of the input-array
    r+=         //   Increase the result by:
       c<33?    //    Is the current character `c` a space:
        r*59    //     Increase it by 59 times itself
       :c<63?   //    Else-if it's a '<':
        10      //     Increase it by 10
       :c<85?   //    Else (it's a 'T' or '\'):
        84/c;   //     Increase it by 84 integer-divided by `c`,
                //     (which is 1 for 'T' and 0 for '\')
  return r;}    //  Return the result

0

পার্ল-এফ // -E, 39 বাইট

$w+=/</?10:/T/?1:/ /?59*$w:0for@F;say$w

এটি STDIN থেকে রূপান্তরিত নম্বরটি পড়বে।

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


0

এফ #, 128 বাইট

let s(v:string)=Seq.mapFoldBack(fun r i->i*Seq.sumBy(fun c->match c with|'<'->10|'T'->1|_->0)r,i*60)(v.Split ' ')1|>fst|>Seq.sum

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

অবহেলিত এটি দেখতে এটি দেখতে হবে:

let s (v:string) =
    Seq.mapFoldBack(fun r i ->
        i * Seq.sumBy(fun c ->
            match c with
                | '<' -> 10
                | 'T' ->1
                | _ -> 0
        ) r, 
        i * 60) (v.Split ' ') 1
    |> fst
    |> Seq.sum

Seq.mapFoldBackএকত্রিত Seq.mapএবং Seq.foldBackSeq.mapFoldBackঅনুক্রমটি পিছনের দিকে পুনরাবৃত্তি করে এবং অনুক্রমের মাধ্যমে একটি সঞ্চয়ের মানকে থ্রেড করে (এই ক্ষেত্রে,i )।

অনুক্রমের প্রতিটি উপাদানের জন্য, ব্যাবিলনীয় সংখ্যাটি গণনা করা হয় (দ্বারা Seq.sumBy, যা প্রতিটি চরিত্রকে একটি সংখ্যার মানচিত্র দেয় এবং ফলাফলটির সমষ্টি হয়) এবং তারপরে গুণিত হয় iiতারপরে 60০ দ্বারা গুণিত হয় এবং এই মানটি পরবর্তী ক্রমে পরবর্তী আইটেমকে দেওয়া হয়। সঞ্চয়ের জন্য প্রাথমিক অবস্থা 1।

উদাহরণস্বরূপ, ইনপুটটির জন্য কল এবং ফলাফলগুলির Seq.mapFoldBackক্রমটি <<<TT \ TTTTহবে:

(TTTT, 1)     -> (4, 60)
(\, 60)       -> (0, 3600)
(<<<TT, 3600) -> (115200, 216000)

ফাংশন একটি tuple ফিরে আসবে seq<int>, intfstফাংশন যা tuple প্রথম আইটেমে ফেরৎ, এবং Seq.sumপ্রকৃত সামিং আছে।

কেন ব্যবহার Seq.mapiবা অনুরূপ না?

Seq.mapiঅনুক্রমের প্রতিটি উপাদান ম্যাপ করে এবং ম্যাপিং ফাংশনে সূচক সরবরাহ করে। সেখান থেকে আপনি করতে পারেন 60 ** index( **এফ # তে পাওয়ার অপারেটরটি কোথায় )।

তবে **প্রয়োজন floatsনেই ints, যার অর্থ আপনার প্রয়োজন হয় ফাংশনটিতে সমস্ত মানকে আরম্ভ করা বা কাস্ট করা float। পুরো ফাংশনটি একটি ফিরে আসবে float, যা (আমার মতে) একটু অগোছালো।

Seq.mapiএটি ব্যবহার করে 139 বাইটের জন্য এটি করা যেতে পারে :

let f(v:string)=v.Split ' '|>Seq.rev|>Seq.mapi(fun i r->Seq.sumBy(fun c->match c with|'<'->10.0|'T'->1.0|_->0.0)r*(60.0**float i))|>Seq.sum

0

Tcl , 134 বাইট

proc B l {regsub {\\} $l 0 l
lmap c [lreverse $l] {incr s [expr 60**([incr i]-1)*([regexp -all < $c]*10+[regexp -all T $c])]}
expr $s}

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

বিপরীত তালিকায়, আমি ফলাফল গণনা <এবং T( -allregexp বিকল্প সহ) বৃদ্ধি করে এবং প্রাকৃতিক হিসাবে 60 এর বৃদ্ধিকে বৃদ্ধি করি।

সঠিক সংস্করণ (মন্তব্য দেখুন)


মনে হয় আমি এই ব্যর্থ হয়েছি, কারণ number শেষ সংখ্যায় ... আমার regsub {\\} $l0 lপূর্ববর্তী লুপের আগে একটি হওয়া উচিত ....
ডেভিড

0

এপিএল (ডায়ালগ প্রসারিত) , 18 বাইট এসবিসিএস

বেনামে ট্যাসিট প্রিফিক্স ফাংশন।

60⊥10⊥¨≠'<T'∘⍧¨⍤⊆⊢

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

                  ⊢  the argument; "<<<TT \ TTTT"
       ≠             mask where different from space; [1,1,1,1,1,0,1,0,1,1,1,1]
                ⊆    enclose runs of 1; ["<<<TT","\","TTTT"]
               ⍤     on that
              ¨      for each one
             ⍧       Count the occurrences In it of the elements
            ∘        of the entire list
        '<T'         ["<","T"]; [[3,2],[0,0],[0,4]]
      ¨              for each one
   10⊥               evaluate as base-10 digits
60⊥                  evaluate as base-60 digits

0

05 এ বি 1 ই (উত্তরাধিকার) , 10 বাইট

#Ç9%5BO60β

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

#               # split input on spaces
 Ç              # convert each character to its codepoint
  9%            # modulo 9 (maps 𒌋 to 5, 𒐕 to 1, 𒑊 to 0)
    5B          # convert each to base 5 (5 becomes 10, 0 and 1 unchanged)
      O         # sum each column
       60β      # convert from base 60

05 এ বি 1 , 11 বাইট

#Ç9%5B€O60β

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

একই অ্যালগরিদম, তবে আধুনিক 05AB1E Oমিশ্র ints এবং তালিকার তালিকায় কাজ করে না, সুতরাং এর €Oপরিবর্তে আমাদের প্রয়োজন ।

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