নিউমারোলজি ক্যালকুলেটর


19

এই চ্যালেঞ্জের লক্ষ্য হ'ল অক্ষর এবং সংখ্যাযুক্ত স্ট্রিং থেকে এক ধরণের অঙ্কের অঙ্কের অঙ্ক করা।

  • ইনপুটটি কোনও সুবিধাজনক পদ্ধতির মাধ্যমে (স্ট্যান্ডার্ড ইনপুট, আর্গুমেন্ট, পৃথক ফাইল) হতে পারে।
  • ইনপুট কোনো মুদ্রণযোগ্য হওয়া ASCII অক্ষর থাকতে পারে, কিন্তু শুধুমাত্র alphanumerical ( A-Z, a-z, এবং 0-9) বলে বিবেচনা করা হবে।
  • আউটপুট একটি অঙ্ক মধ্যে হতে হবে 1এবং 9বা তারকা *যদি কোনো চিঠি এবং কোন অঙ্ক ... কোথায় পাওয়া (অথবা এমনকি 0ইনপুট যে কোন সংখ্যার ধারণ যদি 0 এবং অন্য কিছুই কিন্তু এই ব্যাপার না)।
  • পত্রের মানগুলি এইভাবে ম্যাপ করা হয়:

    1  2  3  4  5  6  7  8  9
    a  b  c  d  e  f  g  h  i
    j  k  l  m  n  o  p  q  r
    s  t  u  v  w  x  y  z
    
  • সংখ্যাতত্ত্ব অঙ্ক স্ট্রিং এর প্রতিটি মান যোগ করে নির্ণয় করা হয়, তারপর পুনরাবৃত্তি না হওয়া পর্যন্ত সেখানে শুধুমাত্র একটি অঙ্ক নয়। জন্য নমুনা 13579, Hello, world!, 00 0 00, !@#$%^&*();, এবং 3.141592:

    13579 => 1 + 3 + 5 + 7 + 9 = 25 => 2 + 5 = 7
    Hello, world! => 8 + 5 + 3 + 3 + 6 + 5 + 6 + 9 + 3 + 4 = 52 => 5 + 2 = 7
    00 0 00 => 0 + 0 + 0 + 0 + 0 = 0
    !@#$%^&*(); => *
      => *
    3.141592 => 3 + 1 + 4 + 1 + 5 + 9 + 2 = 25 => 2 + 5 = 7
    3.1415926535897932384 => 
     3 + 1 + 4 + 1 + 5 + 9 + 2 + 6 + 5 + 3 + 5 + 8 + 9 + 7 + 9 + 3 + 2 + 3 + 8 + 4
     = 97 => 9 + 7 = 16 => 1 + 6 = 7
    

    (এটি দুর্দান্ত, এই নমুনাগুলির বেশিরভাগই দেয় 7! তবে এটি কেবল নমুনা;)

    আরও কিছু পরীক্ষা:

    Bob  => 2 + 6 + 2 = 10 => 1 + 0 = 1
    Charlie => 3 + 8 + 1 + 9 + 3 + 9 + 5 = 38 => 3 + 8 = 11 => 1 + 1 = 2
    Anna => 1 + 5 + 5 + 1 = 12 => 1 + 2 = 3
    Fana => 6 + 1 + 5 + 1 = 13 => 1 + 3 = 4
    Gregory => 7 + 9 + 5 + 7 + 6 + 9 + 7 = 50 => 5 + 0 = 5
    Denis => 4 + 5 + 5 + 9 + 1 = 24 => 2 + 4 = 6
    Erik => 5 + 9 + 9 + 2 = 25 => 2 + 5 = 7
    Helen => 8 + 5 + 3 + 5 + 5 = 26 => 2 + 6 = 8
    Izis => 9 + 8 + 9 + 1 = 27 => 2 + 7 = 9
    

এটি একটি , তাই বাইটের মধ্যে সংক্ষিপ্ত উত্তর ins

ভাষা দ্বারা সংক্ষিপ্ততম


অন্য যে কোনও কিছুর সাথে যুক্ত হওয়ার পরে 0 অদৃশ্য হয়ে যাবে
এফ। হাউরি

0 প্রাসঙ্গিক নয়! প্রাসঙ্গিক আউটপুট 1এবং এর মধ্যে 9!
এফ। হাউরি 21

আপনি কোন বর্ণমালা অক্ষর সমন্বিত কিছু উদাহরণ যুক্ত করতে পারেন?
ETH প্রোডাকশনগুলি

1
আমি এরকম কিছু বোঝাতে চাইছি !@#$%^&*(); ফিরে আসা উচিত যা কিছু *
ETH প্রোডাকশনগুলি

অর্থ ক্ষেত্রের কিছু প্রযুক্তিগত-বিশ্লেষণ আলোচনায় এর উদ্ধৃতি দেওয়া খুব কঠিন হয়েছে ... ;-পি
কেশলাম

উত্তর:


6

মতলব, 121 বাইট

s=[input('','s'),'*'];while nnz(s)>1;s=num2str(sum(mod([s(48<s&s<58)-4,s(96<s&s<123)+2,s(64<s&s<91)-2],9)+1));end;disp(s)

মতলব কেবল স্ট্রিং = এর জন্য তৈরি হয় না ((


3
আরে, কমপক্ষে এটি
মমার মতো ভার্চুয়াল নয়

আমার +1, আমি এর চেয়ে ভাল আর করতে পারি না। বিটিডব্লিউ, dispবিবৃতি দেওয়া কি দরকার?
ব্রেকিঙ্ক

@ ব্রাঙ্কজ সম্ভবত, তবে আমি সাধারণত এটি নিরাপদ দিকে থাকতে বাধ্য করি
flawr

3

গণিত, 174 168 163 বাইট

Catch[#-9Floor[Max[#-1,1]/9]&@If[(a=Tr[Characters@#/.{(b=a_String)?DigitQ:>FromDigits@a,b?LetterQ:>LetterNumber@a~Mod~9,b->0}])<1&&#~StringFreeQ~"0",Throw@"*",a]]&

প্রথম পদক্ষেপটি করে, তারপরে ডিজিটাল রুটটি গণনা করে।


3

রুবি, 97 74 টি অক্ষর

n=->s{(t=eval s.tr('a-z9A-Z','1-9'*6).scan(/\d/)*?+)&&t>9?n[t.to_s]:t||?*}

নমুনা রান:

2.1.5 :001 > n=->s{(t=eval s.tr('a-z9A-Z','1-9'*6).scan(/\d/)*?+)&&t>9?n[t.to_s]:t||?*}
 => #<Proc:0x00000001b4b3f0@(irb):4 (lambda)> 

2.1.5 :002 > puts ['13579', 'Hello, world!', '00 0 00', '!@#$%^&*();', ' ', '3.141592', '3.1415926535897932384', 'Bob', 'Charlie', 'Anna', 'Izis'].map{|s|'%s : %s'%[n[s],s]}
7 : 13579
7 : Hello, world!
0 : 00 0 00
* : !@#$%^&*();
* :  
7 : 3.141592
7 : 3.1415926535897932384
1 : Bob
2 : Charlie
3 : Anna
9 : Izis

3

পার্ল, 91 89 76 74 বাইট

-pসুইচ জন্য 73 + 1

s/[a-z]/(ord($&)%32-1)%9+1/eig;$t="*",s/\d/$t+=$&/eg,$_=$t until/^[*\d]$/

টেস্ট

for test in '13579' 'Hello, world!' '00 0 00' '!@#$%^&*();' ' ' \
    '3.141592' '3.1415926535897932384' \
    Bob Charlie Anna Fana Gregory Denis Erik Helen Izis ;do  
    perl -pe '
      s/[a-z]/(ord($&)%32-1)%9+1/eig;$t="*",s/\d/$t+=$&/eg,$_=$t until/^[*\d]$/
      ' < <(echo -n "$test")
    echo "  $test"
done
7  13579
7  Hello, world!
0  00 0 00
*  !@#$%^&*();
*   
7  3.141592
7  3.1415926535897932384
1  Bob
2  Charlie
3  Anna
4  Fana
5  Gregory
6  Denis
7  Erik
8  Helen
9  Izis

ধন্যবাদ @ মানাত্কার আমাকে 2 14 16 15 17 চর সংরক্ষণ করতে সাহায্য করার জন্য !!

... আমি ভেবেছিলাম: N % 32 + Yপ্রতিস্থাপন করতে পারে( N & 31 ) + Y !


1
আপনি যদি পুরো ম্যাচ করা সাবস্ট্রিং ক্যাপচার করেন তবে $1এটি সমান $&। সুতরাং ক্যাপচারিং অপসারণ এবং পরিবর্তনশীল নাম পরিবর্তন করুন।
manatwork

1
whileএর ব্লক হতে পারে $t="*";s/\d/$t+=$&/eg;$_=$t
manatwork

1
দুঃখিত, তবে এটির প্রকৃতপক্ষে এটি 1 অক্ষর দীর্ঘ -p
manatwork

1
আবার দুঃখিত (এবার আরও বড় দুঃখিত), তবে এটি একক শব্দহীন অক্ষরের ইনপুটগুলিতে ব্যর্থ হয়, উদাহরণস্বরূপ “!” ফলাফল একই ”!”। ( কাজটি দেখে মনে হচ্ছে কারণ এখানে স্ট্রিং দিয়ে ইনপুটটি সর্বদা একটি পেছনের নতুন লাইনের সাথে পাস করা হয়, সুতরাং আপনার পরীক্ষার ক্ষেত্রে কখনই একক অক্ষর ইনপুট পাস করে না echo -n "$test" | perl -pe '…'I আমার অর্থ কী তা বোঝার জন্য ব্যবহার করুন You) আপনি whileশর্তটি এটিকে পরিবর্তন করে সমাধান করতে পারেন !/^[\d*]$/। সেখানে স্কোর ক্ষতি কমাতে সময় আপনি সমগ্র প্রতিস্থাপন করতে পারি whileএই সঙ্গে: $t="*",s/\d/$t+=$&/eg,$_=$t until/^[\d*]$/
manatwork

1
আপনি আরও একটি উন্নতি করতে পারেন। হিসাবে &কম প্রাধান্য রয়েছে +, যখন %উচ্চতর, পরিবর্তন হয়েছে &31%32এবং আপনি সেই subexpression প্রায় প্রথম বন্ধনী অপসারণ করতে পারেন।
manatwork

3

ES6, 98 বাইট

s=>(m=s.match(/[1-9a-z]/gi))?(t=8,m.map(c=>t+=c>'@'?c.charCodeAt()&31:+c),t%9+1):/0/.test(s)?0:'*'

Ungolfed:

function(s) {
    var m = s.match(/[1-9a-z]/gi);
    if (m) {
        var t = 0;
        for (var i = 0; i < m.length; i++) {
            if (m[i] > '@')
                t += m[i].charCodeAt(0) & 31;
            else
                t += parseInt(m[i]);
        }
        return t % 9 || 9;
    }
    return /0/.test(s) ? 0 : "*";
}

94-বাইট সংস্করণ যা কেবল সংক্ষিপ্ত স্ট্রিংগুলিতে কাজ করে:

s=>(m=s.match(/[1-9a-z]/gi))?m.map(c=>c>'@'?c.charCodeAt()&31:c).join``%9||9:/0/.test(s)?0:'*'

ব্যবহার match, mapএবং joinনিষ্কাশিত ব্যবহার চেয়ে খাটো হতে replaceদুইবার:

s=>(m=s.replace(/[^1-9a-z]/gi,''))?m.replace(/[a-z]/gi,c=>c.charCodeAt()&31)%9||9:/0/.test(s)?0:'*'

এটি এখানে পরীক্ষা করুন: https://jsbin.com/zizosayisi/edit?js,console


এটি 00 0 00
ইনপুটটির

@ rink.attendant.6 আহ, REPL আমি শুধু কপি করে প্রিন্ট ব্যবহার করছিলেন ["0"]যেমন 0তাই আমি পার্থক্য বলতে না পারে।
নিল

@ Rink.attendant.6 সংস্করণ থেকে অনেক বেশি! চতুর গল্ফ হ্যাক ব্যবহৃত। ব্যাখ্যা গেল > '@', & 31এবং || 9?
পাভলো

1
@ পাভলো > '@'কেবলমাত্র অক্ষর এবং সংখ্যাগুলির মধ্যে পার্থক্য করে। & 31উচ্চ এবং নিম্নের অক্ষর কোডগুলির মধ্যে পার্থক্য উপেক্ষা করার একটি দরকারী উপায়, কারণ এটি স্বাচ্ছন্দ্যে অক্ষর কোডগুলিকে সরাসরি 1..26 মানগুলিতে মানচিত্র করে। || 9ব্যবহার করা হয় কারণ % 99 গুণিতক জন্য আয় 0 কিন্তু বারবার 9. এর নন-জিরো গুণিতক golfed কোড আমি ব্যবহার সালে জন্য ডিজিটের আয় 9 যোগ (t + 8) % 9 + 1পরিবর্তে যা একই জিনিস আসে।
নীল

ভাষার সাধারণত নাম দেওয়া হয়েছে "জাভাস্ক্রিপ্ট (ES6)"
edc65

2

গেম, 161 টি অক্ষর

*=@n{*}
n:\A=@set{t;};<L1>=@set{t;@add{$t;@add{@mod{@sub{@mod{@char-int{$0};32};1};9};1}}};<D1>=@set{t;@add{$t;$0}};?=;\Z=@cmps{$t;;;\*;@cmpn{$t;9;$t;$t;@n{$t}}}

(কেবল পুনরাবৃত্ত ডোমেন কলগুলি কাজ করে কিনা তা চেষ্টা করার জন্য লিখিত))

নমুনা রান:

bash-4.3$ for input in '13579' 'Hello, world!' '00 0 00' '!@#$%^&*();' ' ' '3.141592' '3.1415926535897932384'; do
>     echo -n "'$input' : "
>     gema '*=@n{*};n:\A=@set{t;};<L1>=@set{t;@add{$t;@add{@mod{@sub{@mod{@char-int{$0};32};1};9};1}}};<D1>=@set{t;@add{$t;$0}};?=;\Z=@cmps{$t;;;\*;@cmpn{$t;9;$t;$t;@n{$t}}}' <<< "$input"
>     echo
> done
'13579' : 7
'Hello, world!' : 7
'00 0 00' : 0
'!@#$%^&*();' : *
' ' : *
'3.141592' : 7
'3.1415926535897932384' : 7

1

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

f=_=>{for(_=_.replace(/\W+/g,''),g=$=>''+[...$.toUpperCase()].reduce((p,a)=>isNaN(a)?p+(a.charCodeAt()-64)%9:+a+p,0);1<(l=_.length);_=g(_));return!l?'*':g(_)}

এখনও বাহ্যিক কার্যগুলিতে অন্তর্নিহিত রিটার্ন ব্যবহার করার উপায় অনুসন্ধান করার চেষ্টা করছে।

অবরুদ্ধ + অবিহিত

f = str => {
  str = str.replace(/\W+/g, '');
  recursiveFunc = $ => String([...$.toUpperCase()].reduce(
    (prev, val) => isNaN(val) ? prev + (val.charCodeAt() - 64) % 9 : Number(val) + prev,
    0
  ));
  while (1 < (len = str.length)) {
    str = recursiveFunc(str);
  }
  return len === 0 ? '*' : recursiveFunc(str)
}
  1. সমস্ত অ-অক্ষরীয় অক্ষর বাদ দেয়
  2. স্ট্রিংটি 1 টি অক্ষরের চেয়ে বেশি হয়ে গেলে অক্ষরগুলিকে তাদের নিজ নিজ মানগুলিতে হ্রাস করতে পুনরাবৃত্তভাবে একটি ফাংশন কল করে।
    1. এএসসিআইআই কোডগুলি সহ সহজেই কাজ করতে স্ট্রিংটিকে বড় হাতের কাছে রূপান্তর করে
    2. স্প্রেড অপারেটর ব্যবহার করে অ্যারেতে রূপান্তর করুন এবং একটি সংযোজক চালান
    3. isNaNএটি কোনও নম্বর নয় কিনা তা পরীক্ষা করার জন্য গ্লোবাল ফাংশন (যা এর ইনপুটকে কাস্ট করে) ব্যবহার করুন
      • যদি তা না হয় তবে তার সংশ্লিষ্ট মান পেতে ASCII কোড এবং 9 মডে রূপান্তর করুন
      • এটি যদি একটি নম্বর হয় তবে এটি নিক্ষেপ করুন
  3. দৈর্ঘ্য যদি 0 হয় তবে কোনও বর্ণানুক্রমিক অক্ষর উপস্থিত ছিল না (একটি নক্ষত্র ফিরিয়ে দিন), অন্যথায় পুনরাবৃত্ত ফাংশনের আউটপুট ফিরিয়ে দিন।

এই ব্রেক নিয়ম 00 0 00, আউটপুট *পরিবর্তে 0!
এফ। হাউরি

@ এফ.হৌরি ফিক্সড।
rink.attendant.6

আপনি কম্যান্স অপারেটর ব্যবহার করে সুস্পষ্ট রিটার্ন এড়াতে পারবেন: _=>{expr;return expr}=>_=>(expr,expr)
পাভলো

@ পাভলো আমি আমার ক্ষেত্রে এটি কীভাবে প্রয়োগ করব?
rink.attendant.6

আমার জন্য কাজ করে না, সিন্ট্যাক্স এরির
পাভলো

1

হাস্কেল, 126 বাইট

l x=[n|(c,n)<-zip(['0'..'9']++['a'..'z']++'\0':['A'..'Z'])$0:cycle[1..9],c==x]
g[]="*"
g[x]=show x
g x=f$show$sum x
f=g.(l=<<)

ব্যবহার: f "Hello, world!"-> "7"

lঅক্ষরের জন্য পূর্ণসংখ্যার তালিকার জন্য সারণী হ'ল (সিঙ্গলটন তালিকা, যদি চরটি পাওয়া যায়, অন্যথায় খালি তালিকা)। fএটির প্রতিটি আর্গুমেন্ট অনুসন্ধান করে এবং প্রত্যাশিত তালিকার ফিরে আসা তালিকাটিকে একটি সাধারণ পূর্ণসংখ্যার তালিকা এবং gসমাপ্তির শর্ত (খালি তালিকা (-> *) বা একক পূর্ণসংখ্যার) পরীক্ষা করতে বা fঅন্য রাউন্ডের জন্য তালিকার যোগফলের সাথে কল করার জন্য কল করে।


1

এমএটিএল , 64 বাইট

jk42ht`YUt'[a-z]'XXY}3+w'[1-9]'XXY}6+h,9X\st9>]w2Y24Y2h!=~?x'*']

এটি ভাষার বর্তমান সংস্করণ (4.0.0) ব্যবহার করে।

আমার মনে হচ্ছে এটি আরও খাটো করা যায় ...

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

>> matl
 > jk42ht`YUt'[a-z]'XXY}3+w'[1-9]'XXY}6+h,9X\st9>]w2Y24Y2h!=~?x'*']
 > 
> 13579
7

>> matl
 > jk42ht`YUt'[a-z]'XXY}3+w'[1-9]'XXY}6+h,9X\st9>]w2Y24Y2h!=~?x'*']
 > 
> Hello, world!
7

>> matl
 > jk42ht`YUt'[a-z]'XXY}3+w'[1-9]'XXY}6+h,9X\st9>]w2Y24Y2h!=~?x'*']
 > 
> 00 0 00
0

>> matl 
 > jk42ht`YUt'[a-z]'XXY}3+w'[1-9]'XXY}6+h,9X\st9>]w2Y24Y2h!=~?x'*']
 > 
> !@#$%^&*();
*

>> matl
 > jk42ht`YUt'[a-z]'XXY}3+w'[1-9]'XXY}6+h,9X\st9>]w2Y24Y2h!=~?x'*']
 > 
> 3.141592
7

>> matl
 > jk42ht`YUt'[a-z]'XXY}3+w'[1-9]'XXY}6+h,9X\st9>]w2Y24Y2h!=~?x'*']
 > 
> 3.1415926535897932384
7

>> matl
 > jk42ht`YUt'[a-z]'XXY}3+w'[1-9]'XXY}6+h,9X\st9>]w2Y24Y2h!=~?x'*']
 > 
> Bob
1

>> matl
 > jk42ht`YUt'[a-z]'XXY}3+w'[1-9]'XXY}6+h,9X\st9>]w2Y24Y2h!=~?x'*']
 > 
> Charlie
2

>> matl
 > jk42ht`YUt'[a-z]'XXY}3+w'[1-9]'XXY}6+h,9X\st9>]w2Y24Y2h!=~?x'*']
 > 
> Anna
3

>> matl
 > jk42ht`YUt'[a-z]'XXY}3+w'[1-9]'XXY}6+h,9X\st9>]w2Y24Y2h!=~?x'*']
 > 
> Izis
9

দুর্ভাগ্যক্রমে, আমি আপনার নমুনা পরীক্ষা করতে পারিনি। সাম্প্রতিক যুক্ত টেস্টগুলি সহ পুরো পরীক্ষার কেস পোস্ট করুন (দুঃখিত)।
এফ। হাউরি 25'15

@ এফ.হৌরি হ্যাঁ, তাদের পরীক্ষা করার জন্য আপনার মতলব দরকার। সে সম্পর্কে দুঃখিত, এখনও কোনও অনলাইন সংকলক নেই। আমি পরীক্ষার কেসগুলি যুক্ত করেছি
লুইস মেন্ডো

1

সিরিয়াসলি, 50 বাইট

,$ù;ú1╤▀+;#pX╗@-@-;Y`'*.`╬X1WX`╜í;s9*@%u`MΣ$;lDWX

হেক্স ডাম্প:

2c24973ba331d1df2b3b237058bb402d402d3b5960272a2e7f
60ce5831575860bda13b73392a402575604de4243b6c445758

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

ব্যাখ্যা:

,$ù                                               Read input, make it a string, lowercase
    ú                                             Push lowercase alphabet
     1╤▀+                                         Prepend base 10 digits.
         ;#pX╗                                    Remove "0" from a copy and stash in reg0
   ;          @-                                  Remove alphanumerics from input copy
                @-                                Remove nonalphanumerics from input
                  ;Y                              Push 1 if string is empty, else 0
                    `'*.`╬                        If top is truthy, output * and halt
                          X                       Discard boolean
                           1                      Push 1 to enter loop
                            WX                 WX Loop while top of stack is truthy
                              `         `M        Map this function over the string
                               ╜                  Push alphanumeric string from reg0
                                í                 Push index of this char in it
                                 ;s9*             Push 9 if found, else -9
                                     @%u          Take index mod previous: this yields the
                                                  correct conversion from the numerology
                                          Σ       Sum the resulting digits.
                                           $      Convert the sum to a string.
                                            ;lD   push 1 less than its length

@ এফ.হৌরি "চেষ্টা করুন এটি অনলাইন" ক্লিক করুন। ইনপুট বাক্সে আপনার পরীক্ষার কেসগুলি প্রবেশ করান।
কুইন্টোপিয়া


1

খাঁটি বাশ, 199 194 বাইট

eval a+={a..z};r="$1";while [ "${r:1}" ];do o=;for ((i=0;i<${#r};i++));do
l=${r:i:1};case $l in [a-zA-Z])d=${a%${l,}*};((o+=$((${#d}%9+1))));;[0-9])
((o+=l));;esac;done;r="$o";done;echo "${o:-*}"

(দ্বিতীয় লাইন বিরতি কেবল স্ক্রোলবার এড়ানোর জন্য)

পরীক্ষার নিয়ম:

numerology() {
    eval a+={a..z};
    r="$1";
    while [ "${r:1}" ]; do
        o=;
        for ((i=0; i<${#r}; i++))
        do
            l=${r:i:1};
            case $l in 
                [a-zA-Z])
                    d=${a%${l,}*};
                    ((o+=$((${#d}%9+1))))
                ;;
                [0-9])
                    ((o+=l))
                ;;
            esac;
        done;
        r="$o";
    done;
    echo "${o:-*}"
}

for test in '13579' 'Hello, world!' '00 0 00' '!@#$%^&*();' ' ' \
            '3.141592' '3.1415926535897932384'\
            Bob Charlie Anna Fana Gregory Denis Erik Helen Izis ;do
    echo "$(numerology "$test")" $test
done
7 13579
7 Hello, world!
0 00 0 00
* !@#$%^&*();
*
7 3.141592
7 3.1415926535897932384
1 Bob
2 Charlie
3 Anna
4 Fana
5 Gregory
6 Denis
7 Erik
8 Helen
9 Izis

1

জাভাস্ক্রিপ্ট (ES6), 78 83

পুনরাবৃত্তির সমাধান। লেজ পুনরাবৃত্তি হওয়ার কারণে, ভেরিয়েবলগুলি t এবং r স্থানীয় হতে হবে না।

f=x=>(t=r=0,x.replace(/\w/g,d=>t+=1+~-parseInt(d,r=36)%9),t>9?f(''+t):r?t:'*')

ব্যাখ্যা

f=x=>(
  t = 0, // set initial value of counter to 0 
  r = 0, // flag to verify that we found at last one alphanumeric chars
  x.replace(/\w/g, d => ( // execute the following for each alphanumeric character
    // t += 1 + ~-parseInt(d,r=36) % 9 explained below
    r = 36, // set flag, could be any nonzero value
    d = parseInt(d,36), // convert to numeric. a..z -> 10..25, case insensitive.
    d = 1 + (d-1) % 9, // this is the arithmetic conversion required (
                       // works also with 0 because the strange implementation of % in javascript for negative numbers
    t = t + d // add to global counter
  ) ), 
  t > 9 // if t > 9 then we found some alphanumeric char, but we must repeat the loop on t
    ? f(''+t) // recursive call, t is numeric and must become a string
    : r // check flag r 
      ? t // if alphanumeric found, return t 
      : '*' // else return '*'
)

পরীক্ষার স্নিপেট

f=x=>(t=r=0,x.replace(/\w/g,d=>t+=1+~-parseInt(d,r=36)%9),t>9?f(''+t):r?t:'*')

console.log=x=>O.textContent+=x+'\n';

;[['13579',7],['Hello, world!',7],['00 0 00',0],['!@#$%^&*();','*'],
['3.141592',7],['3.1415926535897932384',7],
['Bob', 1],['Charlie', 2],['Anna', 3],['Fana', 4],['Gregory', 5],
['Denis', 6],['Erik', 7],['Helen', 8],['Izis', 9]]
.forEach(t=>{
  i=t[0]+''
  k=t[1]
  r=f(i)
  console.log(i+' -> ' + r + (k==r? ' OK':' Fail - expected '+k))
  })
<pre id=O></pre>



0

গণিত, 133 বাইট

f[s_]:= ToCharacterCode@ToUpperCase@s-64/.{a_/;17>-a>6:>a+16,b_/;b<1||b>26:>""}//If[Or@@NumberQ/@#,Tr@#/.""->0//.a_:>Tr@IntegerDigits@a,"*"]&

উপরের লেজিওনম্যামাল ৯78৮ এর থেকে কিছুটা আলাদা। আমার ফাংশন সমস্ত কিছুকে একটি অক্ষর কোডে পরিণত করে, তারপরে অ-বর্ণমালা সংক্রান্ত জিনিসগুলি ফিল্টার করে (তাদের খালি স্ট্রিংয়ের পরিবর্তে)। যদি কোনও বর্ণমালা না থাকে তবে এটি * * ফেরায়, অন্যথায় এটি ডিজিটাল রুট নেয় takes অল-জিরোস স্ট্রিংয়ের ক্ষেত্রে যদি আমাকে ডিল করতে না হয় তবে এটি উল্লেখযোগ্যভাবে (15 ডলার) কম হতে পারে। সি'স্ট লা ভি।

গাণিতিক যাদু, নিরবিচ্ছিন্ন জন্য: foo//.a_:>Tr@IntegerDigits@aএকটি পুনরাবৃত্তি প্রতিস্থাপন: এটি foo- র মধ্যে কোনও সংখ্যাকে aতাদের অঙ্কের যোগফলের সাথে প্রতিস্থাপন করে, তবে এটি একটি নির্দিষ্ট বিন্দুতে আঘাত না হওয়া পর্যন্ত এটি পুনরায় প্রতিস্থাপন করে, অর্থাৎ aপ্রতিস্থাপনের অধীনে পরিবর্তন বন্ধ করে দেয়।

পরীক্ষা:

f /@ {"13579", "Hello,world!", "00 0 00", "!@#$%^&*()", "3.141592","3.1415926535897932384"}
     => {7, 7, 0, "*", 7, 7}
f /@ {"Bob", "Charlie", "Anna", "Fana", "Gregory", "Denis", "Erik",  "Helen", "Izis"}
     => {1, 2, 3, 4, 5, 6, 7, 8, 9}

দুর্ভাগ্যক্রমে, আমি আপনার নমুনা পরীক্ষা করতে পারিনি। দয়া করে পরীক্ষার কেসগুলি পোস্ট করুন
এফ হৌরি

আমার পথে. পরীক্ষাগুলি একসাথে রাখার সময়, আমি ঠিক করার জন্য কিছু টাইপও পেয়েছি। ধন্যবাদ;)
hYPotenuser
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.