অনন্য সস্তা


93

কোনও ফাংশন বা প্রোগ্রাম লিখুন যা প্রদত্ত স্ট্রিংয়ের ব্যয় নির্ধারণ করে , কোথায়

  • প্রতিটি অক্ষরের ব্যয় স্ট্রিংয়ের এই বিন্দু অবধি কতবার অক্ষরটি ঘটেছে তার সংখ্যার সমান এবং
  • স্ট্রিংয়ের ব্যয় হ'ল এর অক্ষরগুলির ব্যয়ের যোগফল।

উদাহরণ

একটি ইনপুট জন্য abaacab, মূল্য নিম্নলিখিত হিসাবে গণনা করা হয়:

a b a a c a b
1   2 3   4    occurrence of a
  1         2  occurrence of b
        1      occurrence of c
1+1+2+3+1+4+2 = 14

সুতরাং স্ট্রিংয়ের জন্য ব্যয় abaacab14 হয়।

বিধি

  • আপনার জমা দেওয়ার স্কোরটি আপনার কোডের মূল্য উপরে বর্ণিত হিসাবে ব্যয় করা হয় , এটি হ'ল আপনার জমাটি তার নিজস্ব উত্স কোডে চালিত হয়, যার সাথে কম স্কোর আরও ভাল হয়।
  • আপনার জমাটি প্রিন্টযোগ্য এএসসিআইআই-অক্ষরযুক্ত স্ট্রিংগুলিতে কাজ করবে, পাশাপাশি আপনার জমাতে ব্যবহৃত সমস্ত অক্ষর।
  • অক্ষরগুলি কেস-সংবেদনশীল, যে হয় aএবং Aবিভিন্ন অক্ষর।

Testcases

input -> output
"abaacab" -> 14
"Programming Puzzles & Code Golf" -> 47
"" -> 0
"       " -> 28
"abcdefg" -> 7
"aA" -> 2

লিডারবোর্ড


2
-nপার্ল গণনার জন্য প্রোগ্রামের পতাকাগুলি কীভাবে স্কোরের দিকে যায়? এটি traditionতিহ্যগতভাবে 1 বাইট হিসাবে গণ্য কারণ মান perl -eএবং সম্পাদনা দূরত্ব perl -ne1 এবং এই চ্যালেঞ্জের জন্য, nনকল গণনা করার উদ্দেশ্যে গণনা করা হবে?
মান কালি

2
@ ভ্যালিউইঙ্ক হ্যাঁ, আমি মনে করি গণনাটি সবচেয়ে nসহজ বিকল্প।
লাইকনি

1
আমি সত্যিই চাই এই চ্যালেঞ্জের একটি মস্তিষ্কযুক্ত সমাধান ছিল।
পিটার1807

10
আপনার জমা দেওয়ার স্কোরের
লুয়েফফিজ

1
একটি চরিত্রের ব্যয় হিসাবে সংজ্ঞায়িত করা হয়েছে how often this character has already occurred in the string, আমি সম্ভবত how many times the character has occurred up to this pointএটি পরিষ্কার করে তুলতে চাই যে প্রথম ব্যবহারের জন্য 0 নয়, 1
আন্ডারগ্রাউন্ডোমোরাইল

উত্তর:


83

এমএটিএল , স্কোর 4

&=Rz

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

ব্যাখ্যা

'ABBA'উদাহরণ হিসাবে ইনপুট বিবেচনা করুন ।

&=   % Implicit input. Matrix of all equality comparisons
     % STACK: [1 0 0 1;
               0 1 1 0;
               0 1 1 0;
               1 0 0 1]
R    % Upper triangular part
     % STACK: [1 0 0 1;
               0 1 1 0;
               0 0 1 0;
               0 0 0 1]
z    % Number of nonzeros. Implicitly display
     % STACK: 6

14
আপনি কি লিনিয়ার বীজগণিত অধ্যাপক?
ম্যাজিক অক্টোপাস উরান

4
@ কারাসোকম্পুটিং প্রকৃতপক্ষে একজন মোবাইল যোগাযোগ অধ্যাপক। আমার ম্যাট্রিক ব্যবহারের প্রবণতা মাতলাব
লুইস মেন্ডো

ঝরঝরে! মতলব কি সে এলাকায় বড়? আমি সত্যিই কখনই জিএসএম বা এর মতো কিছু দেখিনি।
ম্যাজিক অক্টোপাস উরন

2
আমি কেবল এই উজ্জ্বল সমাধানের জন্য আপনাকে প্রশংসা করতে এই সম্প্রদায়টিতে যোগদান করেছি!
Wboy

1
@ কারসোকম্পুটিং মাতলাব সাধারণভাবে ইঞ্জিনিয়ারিংয়ের একটি খুব সাধারণ সরঞ্জাম / ভাষা। এটি সংখ্যার গণনায় ভাল: লিনিয়ার বীজগণিত, সংকেত প্রক্রিয়াকরণ এবং অন্যান্য। এবং ব্যাখ্যামূলক ভাষা
লুইস মেন্ডো

17

পাইথন , স্কোর 49

lambda S:sum(1+S.count(C)for[C]in	S)/2

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

এর পরে একটি ট্যাব আছে in

স্কোর ব্রেকডাউন:

  • 27 স্বতন্ত্র অক্ষরের জন্য +27
  • 8 টি ডাবল অক্ষরের জন্য +16: ()Camnou
  • 1 টি ত্রিগুণ চরের জন্য +6: S

13
বাইট সংরক্ষণ করতে কোনও জায়গার পরিবর্তে একটি ট্যাব ব্যবহার করুন।
mbomb007

1
@ mbomb007 সবেমাত্র একই ধারণা ছিল :-)
xnor

1
@ এমবম্ব ২০০7 হাহ, এটি একটি প্রতিভা ট্রিক :-)
ইটিএইচ প্রোডাকশনস

14
@ এমবিম্ব ২০০7 এটি কেবলমাত্র ট্যাবগুলি বনাম গল্ফ কোডের অভ্যন্তরে স্পেস ওয়ার
এরিক দি আউটগল্ফার

2
আমি একটি ফর্ম ফিড ব্যবহার করার পরামর্শ দিতে যাচ্ছি (যা পাইথন সিনট্যাক্সেও হোয়াইটস্পেসের অনুমতি রয়েছে), তবে প্রতিস্থাপনের জন্য আপনার আর কোনও শ্বেত স্পেস নেই।
ব্যবহারকারী 2357112

8

টি-এসকিউএল, স্কোর 775 579! 580

declaRe @ char(876),@x int,@v int=0Select @=q+CHAR(9)from z X:seleCT @x=len(@),@=REPLACE(@,LEFT(@,1),''),@v+=(@x-LEN(@))*(@x-LEN(@)+1)/2IF LEN(@)>0GOTO X prINT @v-1

সম্পাদনা : বেশ কয়েকটি ভেরিয়েবল ফেলেছে, কিছুটা কমপ্যাক্ট করেছে। @22 এর পরিবর্তে 16 টি প্রতীক, এটি নিজেই আমার স্কোরকে পুরো 117 পয়েন্ট কমিয়ে দেয়!

চমৎকার প্রতিযোগিতা, আমি মোট চরিত্রের গণনা ছাড়াও কোনও কিছুর জন্য অনুকূলতা প্রয়োজন like

ইনপুট varchar ক্ষেত্র মারফত কুই পূর্ব বিদ্যমান সারণিতে z- র , আমাদের আই নিয়ম অনুযায়ী । এই ইনপুট টেবিলযুক্ত ডাটাবেস অবশ্যই কেস-সংবেদনশীল কোলেশন সেট করা উচিত ।

বিন্যাসকৃত:

declaRe @ char(876), @x int, @v int=0
Select @=q+CHAR(9)from z
X:
    seleCT @x=len(@)
          ,@=REPLACE(@,LEFT(@,1),'')
          ,@v+=(@x-LEN(@))*(@x-LEN(@)+1)/2
IF LEN(@)>0 GOTO X
prINT @v-1

এসকিউএল কীওয়ার্ড কেস সংবেদনশীল নয়, তাই আমি মিশ্র হাতের ব্যবহৃত ডুপ্লিকেট অক্ষর (গণনা কমান AAAA চেয়ে ভাল / নিম্ন স্কোর উত্পন্ন সেও কি মুসলিম ছিল )।

প্রধান লুপটি প্রথম চরিত্রের সমস্ত দৃষ্টান্তগুলি ছড়িয়ে দেওয়ার আগে এবং পরে দৈর্ঘ্যের সাথে তুলনা করে। এই পার্থক্যটি এন * (এন + 1) / 2 একটি চলমান মোটে যুক্ত করা হয়েছে।

এসকিউএল LEN()ফাংশন বিরক্তিকরভাবে পিছনের স্থানগুলি উপেক্ষা করে, তাই আমাকে একটি নিয়ন্ত্রণ চরিত্র যুক্ত করতে হবে এবং শেষে 1 টি বিয়োগ করতে হয়েছিল।

সম্পাদনা : আমার নিজস্ব স্কোরের একটি ভুল হিসাব 2 পয়েন্ট (উদ্ধৃতি কোটেশন সহ ইস্যু) দ্বারা স্থির হয়েছে, একটির কেসিং পরিবর্তন করে 1 দ্বারা হ্রাস পেয়েছে R। এছাড়াও সম্পূর্ণ ভিন্ন কৌশল নিয়ে কাজ করছি, আমি এটিকে তার নিজস্ব উত্তর হিসাবে পোস্ট করব।


3
প্রথমে আমি ভেবেছিলাম আপনার স্কোরটি ছিল579! ≈ 8.22 x 10^1349
ইঞ্জিনিয়ার টোস্ট

8

সি (জিসিসি) , স্কোর:  113  103 100   96  91

@Ugoren, @ CalculatorFline, @gastropner, @ l4m2, এবং @ জেএস 1 তাদের পরামর্শের জন্য ধন্যবাদ।

g(char*s){int y[238]={};while(*s)*y-=--y[*s++];*y/=1;}

শূন্যের একটি অ্যারের সূচনা করে, তারপরে স্ট্রিংয়ের প্রতিটি অক্ষরের উদাহরণগুলির সংখ্যা ট্র্যাক রাখতে স্ট্রিংয়ের অক্ষরের ASCII মানগুলি সেই অ্যারের সূচক হিসাবে ব্যবহার করে।

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


3
প্রস্তাবনা: পরিবর্তনশীল নামের যে কিওয়ার্ড মধ্যে ব্যবহার করা হয় না ব্যবহার করুন, মত z, x, c
ক্যালকুলেটরফলাইন

@ ক্যালকুলেটরফ্লাইনে charঅন্তর্ভুক্ত রয়েছে c...
নীল

3
এছাড়াও, আপনার কেবল একটি 127 উপাদান অ্যারে প্রয়োজন ( \x7fমুদ্রণযোগ্য নয়) এবং দয়া করে একটি ব্যাখ্যা যুক্ত করুন।
ক্যালকুলেটরফলাইন

1
পার্টিতে দেরীতে, তবে এটি হতে হবে 96:z;g(char*s){int y[238]={z=0};while(*s)z+=--y[*s++];z/=~0;}
গ্যাস্ট্রোপনার

1
g(char*s){int y[238]={};while(*s)*y+=--y[*s++];*y/=~0;}
l4m2

7

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

@ অর্নল্ডকে 3 পয়েন্ট সংরক্ষণ করা হয়েছে

s=>s.replace(d=/./g,z=>q+=d[z]=-~d[z],q=0)&&q

আমার আসল স্কোর -১১ পুনরাবৃত্ত সমাধান:

f=([c,...s],d={})=>c?(d[c]=-~d[c])+f(s,d):0



7

রেটিনা , স্কোর 34

s(O`.
M&!`^|(?<=(.))\1*
.

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

ব্যাখ্যা

s(O`.

আমরা ইনপুটটিতে সমস্ত অক্ষর বাছাই করে শুরু করি যাতে অভিন্ন অক্ষরগুলি একক রানে একত্রে ভাগ করা যায়। s(সকল পর্যায়ে জন্য singleline মোড (অর্থাত তোলে সক্রিয় .ম্যাচ linefeeds)।

M&!s`^|(?<=(.))\1*

লক্ষ্য হ'ল এন অক্ষরের একটি রানকে টি এন অক্ষরগুলিতে পরিণত করা ( এন ত্রি ত্রিভুজাকার সংখ্যা) কারণ এটি এই চরিত্রের সংঘটনগুলির স্কোর। এটি করতে, আমরা ওভারল্যাপিং মিলগুলি খুঁজে পাই। বিশেষ করে, প্রত্যেকের জন্য আমি[1, এন] , আমরা অন্তর্ভুক্ত করতে যাচ্ছেন আমি -1 ম্যাচে অক্ষর। ওভারল্যাপিং পতাকার কারণে আমরা সে সব ম্যাচ পেয়েছি &। এটি আমাদের ম্যাচগুলি থেকে কেবলমাত্র n * (n-1) / 2 = T n-1 = T n - n টি অক্ষর দেয়। কিন্তু ম্যাচ পর্যায় linefeeds, যা হয় এই যোগ দেবেন n জন্য linefeeds এনম্যাচ। কেবল একটি সমস্যা আছে। শেষ ম্যাচের পরে লাইনফিড থাকবে না, সুতরাং আউটপুটে সামগ্রিক অক্ষরের সংখ্যা আমাদের প্রয়োজনের চেয়ে কম less আমরা ইনপুটটির শুরুর সাথে মিলে এটিও ঠিক করি, যা কমপক্ষে অন্য কোনও ম্যাচ থাকলে আমাদের একক শীর্ষস্থানীয় লাইনফিড দেয়।

.

অবশেষে, আমরা কেবল স্ট্রিংয়ের মধ্যে কতগুলি অক্ষর রয়েছে তা গণনা করি।


6

হাস্কেল, স্কোর 52 51

f(a:b)=1+sum[1|c<-b,c==a]+f b;f _=0

তার মাঝে একটি ট্যাবে fএবং _

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

খালি স্ট্রিং এর মান স্ট্রিং গুলি, যেখানে এর মান 0. aপ্রথম গৃহস্থালির কাজ এবং bস্ট্রিং বাকি 1 টি প্লাস এর ঘটনার হল aমধ্যে bখ থেকে আপনার প্লাস একটি recursive কল।


5

জে , স্কোর 16

1#.,@(*+/\"1)&=

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

ব্যাখ্যা

1#.,@(*+/\"1)&=
              =  Self-classify: bit matrix of equality between input
                 and its unique elements.
     (      )&   Apply verb in parentheses to it:
       +/\         running sums
          "1       of each row
      *            multiplied with original matrix.
                 This causes the i'th 1 on each row to be replaced by i.
   ,@            Flatten the resulting matrix
1#.              and interpret as a base-1 number, computing its sum.

যোগফলের 1#.পরিবর্তে ব্যবহার করা +/@কয়েক পয়েন্ট সাশ্রয় করেছে এবং আরও একটি সংরক্ষণের জন্য এক মোনাডিক প্রসঙ্গে &পরিবর্তে ব্যবহার করা যেতে পারে @। বারবার 1আমার জন্য একটি অতিরিক্ত পয়েন্ট ব্যয় করে তবে আমি এ থেকে মুক্তি পেতে পারিনি।


"পরবর্তীতে" একটি গতকাল অপেক্ষা করে
ক্যালকুলেটরফলাইন

2
@ ক্যালকুলেটরফ্লাইন 10 ঘন্টা পরে এখনও আছে। : পি
জাগারব

আসুন এখন এটি একটি sesquisemiday করা যাক।
ক্যালকুলেটরফলাইন

কোড বিভাগে একটি সঠিক বাইট গণনা প্রতিফলিত করার জন্য আমি ব্যক্তিগতভাবে এই টিআইওর উত্তরগুলির জন্য এই ফর্ম্যাটটিটি ব্যবহার করি , সম্ভবত আপনি এটি ব্যবহার করতে চান
কনর ও'ব্রায়ান

5

আর , স্কোর: 67 83 95 128

-১১ জিউসেপ থেকে শীর্ষস্থানীয় টিপসকে ধন্যবাদ

function(x,y=table(utf8ToInt(x)))y%*%{y+1}/2

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

স্ট্রিংটি ব্যবহার করে বিভক্ত হয় utf8ToIntএবং প্রতিটি আসকি মান গণনা করা হয় table। ফলাফলটি %*%নিজের উপর একটি ম্যাট্রিক্স গুণকে ব্যবহার করে গণনা করা হয় + 1 এবং শেষ পর্যন্ত অর্ধেক।


tableপরিবর্তে ব্যবহার rle; আপনি sortপাশাপাশি মুক্তি পেতে পারেন (এবং [[1]]এর ফলাফলের জন্য আপনাকে সূচী করতে হবে না strsplit)
জিউসেপ

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

2
আমি মনে করি আপনি পরিবর্তে আলাদা ভেরিয়েবলের নাম ব্যবহার করে n(যেহেতু এটি functionদু'বারের মধ্যে রয়েছে) ব্যবহার করে এবং আরও পরিবর্তন (n+1)করতে পারেন{n+1}
জিউসেপ

স্কোর: 67 । এতে কিছু ভিন্নতা স্কোরকে আরও কমিয়ে আনা সম্ভব করে।
জিউসেপ

@ জিউস্পেপ ... আমার এটি আবার পড়া উচিত ছিল। ওহো
মিকিটি


4

পাইথ , স্কোর 6

1 বাইট isaacg ধন্যবাদ।

+F/V._

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

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

+F/V._
+F/V._QQ  implicit input
  /V      vectorize count: for each element in the first argument,
                           count the number of occurrences of the
                           second argument:
    ._Q       all prefixes of input
       Q      input
+F        fold (reduce) on +, base case 0.

s+0হিসাবে একই +F
isaacg

ভাল! আমি সবচেয়ে ভাল করতে পারি usaShHGrScQ1 8Z16 এর জন্য you আপনি কি একটি ব্যাখ্যা যুক্ত করতে পারেন?
ডিজিটাল ট্রমা

1
@ ডিজিটালট্রামা আমি একটি ব্যাখ্যা যুক্ত করেছি।
ফাঁস নুন

s/LQস্কোর 4, এটি কি এমন বৈশিষ্ট্যগুলি ব্যবহার করে যা চ্যালেঞ্জকে পোস্টডেট করে?
ডেভ

4

চতুর ব্যবহার $
কোলে

খুশী হলাম। সামান্য 11 বাইট প্রকরণ:1#.2!1+1#.=
জোনা

@ জোনাঃ পুনরায় ব্যবহার করার ফলে গ্লাইফগুলি একটি জরিমানার
ফলস্বরূপ হয়

আহ, সেই অংশটি মিস করেছেন।
জোনাহ


4

সি, 60 বাইট, স্কোর 108 95

g(char*s){int y[256]={},z=0;while(*s)z-=--y[*s++];return z;}

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

সাধারণত প্রি এবং পোস্ট-ইনক্রিমেন্ট অপারেটররা কোড গল্ফের জন্য দুর্দান্ত তবে তারা এই চ্যালেঞ্জটিতে সত্যই আঘাত করেছে!

সম্পাদনা: ধনাত্মক মান যোগ করার পরিবর্তে নেতিবাচক সংখ্যাগুলি বিয়োগ করে, আমি পুরো স্কোরটি বাঁচিয়েছি। প্রতিস্থাপন করা হচ্ছে for()সঙ্গে while()পাশাপাশি একটি সেমিকোলন কাটানো।


3

পার্ল 6 , স্কোর  61 56 53 46  44

(1 X..*.comb.Bag.values).flat.sum

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

{sum flat 1 X.. .comb.Bag.values}

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

{sum flat 1 X.. values(.comb.Bag)}

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

{[+] flat	1	X.. values(.comb.Bag)}

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

{[+] flat	1	X.. values(bag
.comb)}

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


3

সি # (.নেট কোর) , স্কোর ∞ (মানে 209)

b=>b.Distinct().Select(z=>{var w=b.Count(p=>p==z);return w*(w+1)/2;}).Sum()

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

স্কোরটিতে নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছে:

using System.Linq;

আমি জানি এটা অনেক দিন হয়ে গেছে, কিন্তু আপনি পরিবর্তন করতে পারেন return w*(w+1)/2থেকে return-~w*w/2(স্কোর 196)। সম্পাদনা: আপনি 149 এর স্কোর জন্য আমার জাভা 8 উত্তরের একটি বন্দর তৈরি করতে পারেন : এটি অনলাইনে চেষ্টা করুন। using System.Linq;b=>{int[]x=new int[256];return\nb.Select(z=>++x[z]).Sum();}
কেভিন ক্রুইজসেন 22'18

1
@ কেভিন ক্রুজসেন: আমি আপনার সমাধানটি 111 এর স্কোর এ পেয়েছি:b=>{var x=new int[256];return\nb.Sum(z=>++x[z]);}
রাজনগুল

@ রজনগুল ( * অর্ধ বছরের পুরানো প্রতিক্রিয়া আগত * ) 109 যদি আপনি দ্বিতীয় স্থানটি একটি ট্যাবে পরিবর্তন করেন। ;) এটি অনলাইনে চেষ্টা করে দেখুন।
কেভিন ক্রুইজসেন

1
ইন্টারেক্টিভ সংকলক সহ @ কেভিন ক্রুইজসেন (আরও অর্ধ বছরের পুরানো প্রতিক্রিয়া) ৪৯, এবং আমি মনে করি এটি আর ৪৮ এর নিচে নামবে না। আমি যতটা গল্ফ সি # উত্তর পেয়েছি, ততই পঠনযোগ্য বলে মনে হয় যে এগুলি সর্বদা পঠনযোগ্য বলে মনে হয়। এটি অনলাইন চেষ্টা করুন!
কেউ

3

আহ্ আমি এই প্রশ্নটি যথেষ্ট দ্রুত লক্ষ্য করিনি।
ফাঁস নুন

@ লেকিউন পিএস আপনি সর্বদা নিনজা নন, বা কেউ নেই
এরিক দ্য আউটগোল্ফার

সত্যি? আমি তাই মনে করি না.
ক্যালকুলেটরফলাইন

স্কোর 5:ĠJ€ẎS
লিকি নুন

@ ল্যাকইনুন যেমন প্রতিশ্রুতি দিয়েছিলেন ... হ্যাঁ, কৃতিত্ব আছে :)
এরিক দ্য আউটগল্ফার

3

পাওয়ারশেল, স্কোর 64

$z=@{}
$ARGS|% getE*|%{$u+=($Z.$_+=1)};$U

(স্কোরটি একটি একক লাইনফিড নিউলাইন ভিত্তিক, যা উইন্ডোজ মান নয় তবে পিএসে কাজ করে)।

PS C:\> D:\unique-is-cheap.ps1 (gc D:\unique-is-cheap.ps1 -raw)
64
  • হ্যাশটেবল কাউন্টার @{}
  • চিঠিগুলির মাধ্যমে ইটারেট; $argsপরামিতিগুলির একটি অ্যারে - এই ক্ষেত্রে ইনপুট স্ট্রিং এটিকে একটি একক আইটেমের অ্যারে করে তোলে; |%আইটেমগুলির উপর একটি ফোরচ লুপ করে এবং স্ট্রিং পদ্ধতির getE*সাথে মেলে শর্টকাটটি ব্যবহার করে GetEnumerator()এবং স্ট্রিংটিকে একটি অক্ষর প্রবাহে রূপান্তর করতে কল করে।
  • |%অক্ষরগুলির উপর লুপ করুন এবং তাদের হ্যাশটেবল এন্ট্রি বৃদ্ধি করুন, এটি চলমান মোটে যুক্ত করুন। ($x+=1)ডান বন্ধনী দিয়ে ফর্ম উভয় পরিবর্তনশীল পরিবর্তন এবং ব্যবহারের জন্য নতুন মান আউটপুট।
  • চলমান মোট আউটপুট।

(আমি যখন এটি প্রথম লিখলাম, তখন এটি $c=@{};$t=0;[char[]]"$args"|%{$c[$_]++;$t+=$c[$_]};$t128 এর স্কোর সহ ছিল এবং মনে হয়েছিল এটি খুব কম হবে না it৪ এ নামিয়ে দেওয়া বেশ আনন্দদায়ক)।


1
61 পিটিএস / 38 বাইটগুলি ইনক্রিমেন্টের সাথে
গণ্ডগোল করে


3

জুলিয়া 0.6 , 45 বাইট, স্কোর: 77

এমএটিএল সমাধান দ্বারা অনুপ্রাণিত:

f(w)=sum(UpperTriangular([z==j for z=w,j=w]))

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

গণনাগুলি ব্যবহার করে একটি কম সুন্দর সমাধান:

জুলিয়া 0.6 , স্কোর: 82

F(w)=sum(l->[l+1]l/2,count(x->x==i,w)for i=Set(w))

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

স্কোরিংটি নির্দেশ করার জন্য এবং টিপসের জন্য গুইস্প্পকে ধন্যবাদ। এই মন্তব্যগুলি আমাকে বোঝা সাহায্য করে।


1
আপনার জমা দেওয়ার স্কোর হ'ল আপনার কোডের দাম , যা আমি মনে করি 135
জিউসেপ্পে

1
আমি জুলিয়াকে খুব ভাল জানি না তবে আমি মনে করি আপনি কিছু পরিবর্তনশীল নাম পরিবর্তন করে এবং প্রথম বন্ধনীর সেট সরিয়ে 110 কে স্কোর হ্রাস করতে পারবেন । যদি একটি একক উপাদান ভেক্টর ফেরার অনুমতি দেওয়া হয়, তাহলে আপনি প্রতিস্থাপন করতে পারেন (x+1)সঙ্গে [x+1]আরও স্কোর কমাতে।
জিউসেপ

আপনি দ্বিতীয় স্থানটি একটি ট্যাবে বা নতুন লাইনে পরিবর্তন করে স্কোর সংরক্ষণ করতে পারেন: স্কোর 104 । এবং @ জিউস্পেপ ব্যবহারের [x+1]পরিবর্তে (x+1)এটি 98 এর স্কোরকে কমিয়ে দেয় ।
কেভিন ক্রুইজসেন

3

জাভা 10, স্কোর: 149 138 137 134 133 130 103 102 101 100

( বাইটস: 72 73 74 75 64 62 61 61 ) বাইটগুলি উপরে চলে যায় তবে স্কোর হ্রাস পায়। : ডি

x->{int j=0,q[]=new int[256];for(var    C:x)j+=++q[C];return
j;}

-২৮ স্কোর (এবং -11 বাইট) @ নেভায়ে ধন্যবাদ ।
-1 স্কোর (এবং -2 বাইট) @ অলিভিগ্রগ্রোয়ারকে ধন্যবাদ ।
জাভা 8 কে জাভা 10 এ রূপান্তর করে -1 স্কোর (এবং -1 বাইট)।

ব্যাখ্যা:

এখানে চেষ্টা করুন।

x->{                     // Method with character-array parameter and integer return-type
  int j=0,               //  Result-integer, starting at 0
      q[]=new int[256];  //  Integer-array with 256 times 0
  for(var   C:x)         //  Loop over the characters of the input array
    j+=++q[C];           //   Raise the value in the array by 1,
                         //   and then add it to the result-integer
  return                 //  Return 
  j;}                    //         the result

1
আপনি ~যদি ব্যবহার করেন j=0এবং return-j;(133) মুছে ফেলতে পারেন ।
নেভায়ে

1
103:x->{int[]q=new int[256];return\nx.chars().map(v->++q[v]).sum();}
নেভায়ে

1
আসলে 103 @Nevay যখন আমি ব্যবহার jপরিবর্তে u( returnধারণ করে u) এবং একটি নতুন লাইন এবং স্পেস করার পরিবর্তে ট্যাবের মধ্যে। সম্পাদনা: হেই, আমি এই মন্তব্যটি করার সময় আপনি ঠিক সম্পাদনা করেছেন। :)
কেভিন ক্রুইজসেন

3

এফ #, স্কোর 120 118

let j z=Seq.countBy id z|>Seq.sumBy(fun x->List.sum[0..snd x])

-2 কেভিন ক্রুইজসেনকে ধন্যবাদ !

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

stringএকটি ইনপুট হিসাবে লাগে । Seq.countByপ্রতিটি স্বতন্ত্র অক্ষরকে তার গণনার সাথে জুড়ুন ( idএটি পরিচয় ফাংশন) যাতে আপনি শেষের মতো সংগ্রহ সহ শেষ করেন 'a' = 4, 'b' = 2etc.

Seq.sumByপ্রত্যেক চিঠির জন্য গণনা নেয় এবং থেকে সমস্ত সংখ্যার অঙ্কের 0যে চিঠির জন্য গণনা করা হয়। সুতরাং যদি 'a' = 4সংগ্রহটি হবে 0, 1, 2, 3, 4যা একসাথে যোগফল 10। তারপরে Seq.sumByall সমস্ত মোটের যোগফল।


2
উভয়টিতে ইতিমধ্যে ব্যবহৃত হওয়ায় let qআপনি এতে পরিবর্তন করে আপনার স্কোর 2 টি কমিয়ে আনতে পারেন । let jqSeq
কেভিন ক্রুইজসেন

2

এপিএল (ডায়ালগ) , স্কোর 15

+/1 1⍉+\∘.=⍨⍞

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

 পাঠ্য ইনপুট পান

∘.=⍨ স্ব সাথে সমতা টেবিল

+\ জুড়ে সমষ্টিগত যোগফল

1 1⍉ তির্যক (লিটার। উভয় মাত্রাকে এক মাত্রায় বিভক্ত করুন)

+/ সমষ্টি


2

রেটিনা , স্কোর 68 45 43

s`(.)(?<=((\1)|.)+)
$#3$*
1

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


2

পিএইচপি , 45 বাইট, স্কোর 78

WHILE($x=ORD($argn[$v++]))$y+=$$x-=-1;echo$y;

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

পিএইচপি , 46 বাইট, স্কোর 79 বাইট

WHILE(~$xy=$argn[$vz++])$su-=-$$xy+=1;echo$su;

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

পিএইচপি , 56 বাইট, স্কোর 92

FOREAch(COUNT_CHARS($argn)as$z)WHILE($z)$y+=$z--;echo$y;

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


2

পার্ল 5 স্কোর 91 83

-pপতাকাটি ব্যবহার করে যা বিভক্ত পি এর কারণে 2 যোগ করে।

$x=$_;$b+=++$a{$_}for(split//,$x);$_=$b

পিপিসিজিতে আপনাকে স্বাগতম!
লাইকনি

1
আপনার উত্তরটিকে বেস হিসাবে ব্যবহার করা এবং টিপস পৃষ্ঠা থেকে কিছু কৌশল প্রয়োগ করে, আমি আপনার স্কোরটি 31 এ নামিয়ে আনতে সক্ষম হয়েছি: অনলাইনে চেষ্টা করে দেখুন! $` is automatically মুদ্রণ ed after each call so we can use that to store the score and /./ g` সমস্ত অক্ষরের একটি তালিকা ফেরত দেয় $_যা তুলনায় সস্তা split//
ডম হেস্টিংস

আমি জানি এটি একটি পুরানো চ্যালেঞ্জ, তবে আপনি স্কোরটি আরও কাটাতে পারেন: অনলাইনে চেষ্টা করে দেখুন!
এক্সকালি

2

অক্টাভা , 39 বাইট, স্কোর 69

@(a)sum((b=hist(a,unique(1*a))).^2+b)/2

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

অন্য একটি অষ্টাভে উত্তর থাকার সময়, এটি পুরোপুরি আমার নিজস্ব এবং একটি ভিন্ন পদ্ধতির, এটির স্কোরও কম :) :)

হিস্টোগ্রাম ফাংশনটি ব্যবহার করে প্রাপ্ত প্রতিটি অনন্য চরিত্রের গণনা (খ) খুঁজে বের করতে প্রথমে পদ্ধতির উত্সাহিত হয়। তারপরে প্রতিটি উপাদানগুলির জন্য আমরা সূত্রটি ব্যবহার করে সম্পন্ন 1 থেকে বি এর সমষ্টি গণনা করি (b*(b+1))/2। তারপরে স্বতন্ত্র অঙ্কগুলি চূড়ান্ত স্কোর হিসাবে যোগ করা হয়।

পরীক্ষায় মনে হচ্ছে স্কোরিংগুলিতে বন্ধনীগুলি সত্যই ব্যয়বহুল কারণ অনেকের প্রয়োজন। আমি খোলার / বন্ধ বন্ধনী সংখ্যা কমিয়ে আনার জন্য প্রশ্নগুলি পুনরায় সাজিয়ে প্রায় 88 এর প্রাথমিক স্কোর থেকে অপ্টিমাইজ করেছি - অতএব আমরা এখন পৃথক পৃথক পরিবর্তে চূড়ান্ত মোট / 2 করতে, এবং আমি সূত্রটি পরিবর্তন করেছি (b^2+b)/2যে হিসাবে কম বন্ধনী প্রয়োজন।


1
দুর্ভাগ্যক্রমে এটি খালি স্ট্রিংয়ে ব্যর্থ বলে মনে হচ্ছে:error: hist: subscript indices must be either positive integers less than 2^31 or logicals
লাইকনি

2

কমন লিস্প, স্কোর 286 232 222

(loop with w =(fill(make-list 128)0)as z across(read)sum(incf(elt w(char-code z))))

প্রচলিত লিস্পের বিল্টিন অপারেটরগুলির শব্দযুক্ত সিনট্যাক্সের কারণে উচ্চ-মূল্যবান স্কোর।

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

অবারিত কোড:

(loop with w = (fill (make-list 128) 0)  ; create a list to count characters
   as z across (read)                   ; for each character of input
   sum (incf (elt w (char-code z))))     ; increase count in list and sum

2

গণিত, স্কোর 54

Total[#(#+1)/2&@Counts@Characters@#]&

ইনপুট

[ "Abcdefg"]

Hftf ধন্যবাদ


Total[#(#+1)/2&@Counts@Characters@#]&স্কোর 54.
hftf
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.