বর্ণমালা সমাপ্তির হার


32

ভূমিকা

প্রদত্ত স্ট্রিংটি ইংরেজী বর্ণমালার কতটি ব্যবহার করে? পূর্ববর্তী বাক্যটি 77% ব্যবহার করে। এটিতে 20 টি স্বতন্ত্র অক্ষর (হাওমুফ্টেংলিজাপবিডিভিআর) এবং 20/26 ≃ 0.77 রয়েছে।

চ্যালেঞ্জ

ইনপুট স্ট্রিংয়ের জন্য, স্ট্রিংয়ে উপস্থিত ইংরেজি বর্ণমালার অক্ষরের শতাংশ ফিরিয়ে দিন।

  • উত্তর শতাংশে বা দশমিক আকারে হতে পারে।

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

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

ইনপুট

"Did you put your name in the Goblet of Fire, Harry?" he asked calmly.

কিছু বৈধ আউটপুট

77%, 76.9, 0.7692

ইনপুট:

The quick brown fox jumps over the lazy dog

সমস্ত বৈধ আউটপুট:

100%, 100, 1

এর প্রত্যাশিত আউটপুট "@#$%^&*?!"এবং ""0 হয়।


3
প্রস্তাবিত পরীক্ষার বিষয়: "@#$%^&*?!",""
আদম

4
যদি 77%এবং 76.9গৃহীত হয়, খুব 77গৃহীত হয়?
গ্রেজগোর্জ ওলেডজকি

শতাংশের দশমিক অংশগুলিও থাকতে পারে ...
জো কিং

2
@ শ্যাগি ওপি-র সর্বশেষ সম্পাদনাটি 16 ঘন্টা আগে হয়েছিল, আপনার উত্তর 15 এ ছিল এবং 14 এ আপনার মন্তব্য ছিল I মানে, আপনি ঠিক বলেছেন তবে ???
ভেস্কাহ

6
যদি 20/26 কে 0.7692, 0.769 বা 0.77 এ গোল করা যায়, তবে আমিও এটি 0.8, 1 বা 0 তে গোল করতে পারি? ;-)
নওরেলেফ

উত্তর:


18

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

lambda s:len({*s.upper()}-{*s.lower()})/26

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

আমরা বড় হাতের অক্ষর এবং ছোট হাতের উপস্থাপনার (সেট) পার্থক্যটি ধরে স্ট্রিংয়ের বাইরে সমস্ত অ-বর্ণমালা অক্ষরকে ফিল্টার করি। তারপরে, আমরা দৈর্ঘ্যটি নিয়েছি এবং 26 দ্বারা বিভক্ত হয়েছি।

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

lambda s:sum(map(str.isalpha,{*s.lower()}))/26

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

অনন্য বর্ণমালা (ছোট হাতের) অক্ষরগুলি গণনা করুন এবং ২ by দ্বারা ভাগ করুন Py পাইথন ২ এ আরও আরও তিনটি অক্ষর প্রয়োজন; দুটিতে পরিবর্তন {*...}করার set(...)জন্য এবং একটি 26 টি ফ্লোট তৈরির 26.জন্য:, মেঝে বিভাজন এড়াতে।

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

lambda s:sum('`'<c<'{'for c in{*s.lower()})/26

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

একই দৈর্ঘ্য, মূলত পূর্বের মতো একই, তবে "বিল্ট-ইন" স্ট্রিং পদ্ধতি ছাড়াই।


দ্বিতীয়টি কেন ফিরে আসে 1.0না 1? (আমি এটি নির্দিষ্টভাবে অস্বীকার করতে চাইনি যাতে এটি নির্দিষ্ট ভাষার অসুবিধে না হয় তবে আমি কৌতূহলী)
ছাগল টেলিফোনে

10
@ টেলপোর্টিংগোট বিভাগটি একটি একক স্ল্যাশ সহ সর্বদা পাইথন 3 এ ভাসিয়ে দেয়, এমনকি অপেরাডগুলি পূর্ণসংখ্যা হয়। পূর্ণসংখ্যা বিভাগের জন্য, আপনি ব্যবহার করতে চাইবেন //, তবে তারপরে এটি সর্বদা পূর্ণসংখ্যা বিভাগ হবে যা আমরা এখানে যা চাই তা স্পষ্টতই নয়। এটি উপলব্ধি করে যে তারা আউটপুটগুলির নির্দিষ্ট মানগুলির উপর নির্ভর করে আউটপুটটির ডেটা ধরণের তৈরি করে নি, যার অর্থ সর্বদা ভাসমান, এমনকি যদি এটি একটি সম্পূর্ণ সংখ্যাও থাকে।
আরবো

11

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

2Y2jkmYm

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

ব্যাখ্যা

2Y2    % Predefined literal for 'abcdefghijklmnopqrstuvwxyz'
j      % Explicitly grab input as a string
k      % Convert to lower-case
m      % Check for membership of the alphabet characters in the string. 
       % Results in a 26-element array with a 1 where a given character in 
       % the alphabet string was present in the input and a 0 otherwise
Ym     % Compute the mean of this array to yield the percentage as a decimal
       % Implicitly display the result

8

অক্টাভা / ম্যাটল্যাব, 33 বাইট tes

@(s)mean(any(65:90==upper(s)',1))

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

ব্যাখ্যা

@(s)                               % Anonymous function with input s: row vector of chars
             65:90                 % Row vector with ASCII codes of uppercase letters
                    upper(s)       % Input converted to uppercase
                            '      % Transform into column vector
                  ==               % Equality test, element-wise with broadcast. Gives a
                                   % matrix containing true and false
         any(                ,1)   % Row vector containing true for columns that have at
                                   % least one entry with value true
    mean(                       )  % Mean

7

05 এ বি 1 ই , 8 7 6 বাইট

lASåÅA

-১ বাইট @ লুইস মেন্ডোকে ধন্যবাদ ।

এটি অনলাইনে চেষ্টা করুন বা আরও কয়েকটি পরীক্ষার কেস যাচাই করুন

@ গ্রিমির দ্বারা সরবরাহিত 6 বাইট বিকল্প :

láÙg₂/

এটি অনলাইনে চেষ্টা করুন বা আরও কয়েকটি পরীক্ষার কেস যাচাই করুন

উভয় প্রোগ্রাম দশমিক হিসাবে আউটপুট।

ব্যাখ্যা:

l       # Convert the (implicit) input-string to lowercase
 AS     # Push the lowercase alphabet as character-list
   å    # Check for each if it's in the lowercase input-string
        # (1 if truthy; 0 if falsey)
    ÅA  # Get the arithmetic mean of this list
        # (and output the result implicitly)

l       # Convert the (implicit) input-string to lowercase
 á      # Only leave the letters in this lowercase string
  Ù     # Uniquify it
   g    # Get the amount of the unique lowercase letters by taking the length
    ₂/  # Divide this by 26
        # (and output the result implicitly)

বিকল্প হিসাবে @ লুইস মেন্ডো, láêg₂/6-বাইটারও।
গ্রিমি

1
@ লুইস মেন্ডো ধন্যবাদ (এবং আপনিও গ্রিমি )! :)
কেভিন ক্রুইজসেন

7

1
50 বাইট ( অক্ষর কোড ) এর দশমিক মানগুলির তুলনা করে আপনি 6 বাইট সংরক্ষণ করতে পারবেন
ইনাত 3

@ পরিবর্তন করে Innat3 49 বাইট &&থেকে &
কেভিন ক্রুইজসেন

@ কেভিন ক্রুইজসেন ~ 2 মিনিট -1 বাইট ক্রেডিট পাওয়ার আগেই তা করে ফেলেছিল এবং সম্পাদনা করছিল
ডেটা শেষ হয়েছে

এক্সপায়ার্ডডাটা এনপি, এটি একটি সুস্পষ্ট গল্ফ ছিল। এটি মূলত ইনাতে পরিচালিত হয়েছিল :)
কেভিন ক্রুইজসেন

6

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

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

26÷⍨∘≢⎕A∩⌈

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

 বড় হাতের

⎕A∩ বড় হাতের সাথে একটি ছেদ

 ট্যালি দৈর্ঘ্য

 তারপর

26÷⍨ ছাব্বিশ দ্বারা বিভক্ত


⌹∘≤⍨⎕A∊⌈­­­­­
এনজিএন

@ngn এটি খুব চালাক, তবে সম্পূর্ণ আলাদা। এগিয়ে যান এবং নিজের পোস্ট করুন। আপনি চাইলে আমি ব্যাখ্যাটি খুলে খুশি হব।
অ্যাডম


6

পার্ল 6 , 27 24 বাইট

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

*.uc.comb(/<:L>/).Set/26

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


1
+1 এছাড়াও, যদিও এটি .lc"সূক্ষ্মতা" দৃষ্টিকোণ থেকে ঠিক কাজ করে (এবং এটিও কাজ করবে), .fcআরও ভাল হতে পারে (বিশেষত যদি চ্যালেঞ্জটি অ-ইংরেজি অক্ষরগুলি থাকে)
ইউজার 0721090601

6

বাশ এবং জ্ঞান ব্যবহার ( 81 78 68 60 42 বাইট)

bc -l<<<`grep -io [a-z]|sort -fu|wc -l`/26

-8 বাইটস @ ওয়াস্টলকে ধন্যবাদ

-18 বাইট ধন্যবাদ নাহুয়েলকে এমন কিছু কৌশল ব্যবহার করে যা আমি জানি না:

  • sort -fএবং grep -iকেস উপেক্ষা করুন
  • sort -u জন্য একটি প্রতিস্থাপন | uniq

1
60 বাইট :echo $(tr A-Z a-z|tr -cd a-z|fold -1|sort -u|wc -l)/26|bc -l
wastl

ঠিক। ভেরিয়েবল আরেকটি চেষ্টা করার পরে একটি অনুস্মারক inder ধন্যবাদ!
গ্রেজগোর্জ ওলেডজকি


"গ্রেপ -io [আজ]" কে "গ্রেপ -ও [এজে]" ছোট করা যাবে না?
Gnudiff

@ জুনিডিফ ASCII ধরে নিচ্ছেন, এটিও [\ ^ _ `] এর সাথে মেলে।
jnfnt

6

কে (ওকে) , 19 15 বাইট

সমাধান:

1%26%+/26>?97!_

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

ব্যাখ্যা:

ইনপুটকে ছোট হাতের মধ্যে রূপান্তর করুন, মডুলো 97 ("এজে" ASCII- তে 97-122, মডুলো 97 0-25 দেয়), অনন্য গ্রহণ করুন, ফলাফলগুলি 26 এর চেয়ে কম হবে এবং 26 এর শতাংশে রূপান্তর করুন।

1%26%+/26>?97!_ / the solution
              _ / lowercase
           97!  / modulo (!) 97
          ?     / distinct
       26>      / is 26 greater than this?
     +/         / sum (+) over (/)
  26%           / 26 divided by ...
1%              / 1 divided by ...

নোট:

  • -1 বাইট এনএনজি, 1-%[;26]=> কে ধন্যবাদ1-1%26%
  • -3 বাইটগুলি ngn #(!26)^=> দ্বারা অনুপ্রাণিত+/26>?

1
আমি ব্যাখ্যার অপেক্ষায় রয়েছি! 97এখানে কী করছে তা আমার কোনও ধারণা নেই
টেলপোর্টিং ছাগল


1
%[;26]->1%26%
এনজিএন



6

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

($args|% *per|% t*y|sort|gu|?{$_-in65..90}).count/26

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

প্রথম প্রচেষ্টা, এখনও এলোমেলো ধারণা চেষ্টা করে

সম্পাদনা করুন: @ ওয়েসকাঃ উল্লেখ করেছেন টুপার সংখ্যার সীমার কারণে একটি বাইট সংরক্ষণ করে, অতিরিক্ত ()এবং একটি স্থানও সরিয়েছে

সম্প্রসারণ:
($args|% ToUpper|% ToCharArray|sort|get-unique|where{$_-in 65..90}).count/26

স্ট্রিং সকল নিম্ন আপারকেসে পরিবর্তন করে , একটি অ্যারেতে প্রসারিত হয়, উপাদানগুলি সাজায় এবং অনন্য বর্ণগুলি নির্বাচন করে (গুয়ের অনুসারে বাছাই করা ইনপুট প্রয়োজন), কেবলমাত্র ascii মানের অক্ষর 97 থেকে 122 (a to z) 65 থেকে 90 (A to Z) রাখুন, দশমিক আউটপুটটির জন্য মোট গুন এবং 26 কে ভাগ করুন



1
ওহ, কেবলমাত্র লক্ষ্য করা গেছে যে আপনার পরে অতিরিক্ত জায়গা রয়েছে।
ভেস্কাহ

6

আর , 47 বাইট

function(x)mean(65:90%in%utf8ToInt(toupper(x)))

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

আপার কেস-এ রূপান্তর করে তারপরে ASCII কোড-পয়েন্টে রূপান্তর করা হয় এবং A: Z এর সাথে সম্পর্কিত 65:90 মানের জন্য পরীক্ষা করে।


1
ইনপুটতে কোট থাকলে এটি ব্যর্থ হয়।
সি ব্রাউন

1
@ সি.ব্রাউন আমার পরীক্ষায় নেই ... উদাহরণস্বরূপ, টিআইওর প্রথম পরীক্ষার ক্ষেত্রে কোটস অন্তর্ভুক্ত রয়েছে এবং সঠিক ফলাফল দেয়। আপনি একটি উদাহরণ দিতে পারেন?
রবিন রাইডার

1
টিআইও-তে আপনি শিরোনাম অংশে কী করেছেন তা আমি পুরোপুরি বুঝতে পারি না, তবে কেবলমাত্র কোনও আর আরপেনটারে উপরের কোডটি চালানো কার্যকর হয় না। আপনি কি scanউদ্ধৃতি চিহ্নগুলিতে বিভক্ত না হওয়ার জন্য পুনরায় সংজ্ঞা দিচ্ছেন, যেমন ডিফল্ট?
সি। ব্রাউন

1
@ সি.ব্রাউন পেয়েছেন, ধন্যবাদ! আমি স্পষ্টভাবে এটিকে একটি ফাংশনে পরিণত করেছি (3 বাইট ব্যয়ে) এবং আমি মনে করি এটি এখন ঠিক আছে।
রবিন রাইডার

4

রেটিনা 0.8.2 , 45 বাইট

T`Llp`ll_
+`(.)(.*\1)
$2
.
100$*
^
13$*
.{26}

এটি অনলাইন চেষ্টা করুন! লিঙ্কে পরীক্ষার কেস অন্তর্ভুক্ত রয়েছে। ব্যাখ্যা:

T`Llp`ll_

ছোট হাতের অক্ষর এবং বিরামচিহ্ন মুছুন।

+`(.)(.*\1)
$2

Deduplicate।

.
100$*

100 দ্বারা গুণ করুন।

^
13$*

13 যোগ করুন।

.{26}

পূর্ণসংখ্যা 26 দ্বারা ভাগ করে দশকে রূপান্তর করুন।


আমি মনে করি আউটপুটের জন্য শতাংশ ব্যবহার করে রেটিনা এখানে একমাত্র ভাষা!
ছাগল

ওহ, বিভাজনের আগে আনরি 13 যোগ করার সাথে দুর্দান্ত কৌশল! আমি কেন এটি ভাবিনি ..>।> এটি আমার উত্তরটি 44 বাইট করে দেবে । যদিও আমি আমার আগের সংস্করণটি ছেড়ে দেব।
কেভিন ক্রুইজসেন

@ টেলপোর্টিংগোট সম্ভবত কারণ রেটিনাও এখন পর্যন্ত পোস্ট করা ভাষাগুলির মধ্যে একমাত্র ভাষা যার দশমিক বিভাগ উপলব্ধ নেই। কেবলমাত্র (অমান্য) পূর্ণসংখ্যা-বিভাগই সম্ভব।
কেভিন ক্রুইজসেন

4

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

⌹∘≤⍨⎕A∊⌈

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

আলগাভাবে অ্যাডামের উত্তরের উপর ভিত্তি করে

 বড় হাতের

⎕A∊বুলিয়ান (0 বা 1) দৈর্ঘ্যের ভেক্টর 26 ইঙ্গিত করে যে ইংরেজী এলফ্যাবেটের কোন অক্ষরটি স্ট্রিংয়ে রয়েছে

⌹∘≤⍨ গাণিতিক গড়, অর্থাত্ আর্গুমেন্টের ম্যাট্রিক্স বিভাগ এবং একই দৈর্ঘ্যের একটি সমস্ত -1 ভেক্টর


3

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

I∕LΦβ№↧θι²⁶

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। আউটপুট দশমিক হিসাবে (বা 1পেংগ্রামগুলির জন্য)। ব্যাখ্যা:

  L         Length of
    β       Lowercase alphabet
   Φ        Filtered on
     №      Count of
        ι   Current letter in
      ↧     Lowercased
       θ    Input
 ∕          Divided by
         ²⁶ Literal 26
I           Cast to string
            Implicitly printed

3

ব্যাচ, 197 বাইট

@set/ps=
@set s=%s:"=%
@set n=13
@for %%c in (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)do @call set t="%%s:%%c=%%"&call:c
@cmd/cset/an/26
@exit/b
:c
@if not "%s%"==%t% set/an+=100

STDIN এ ইনপুট নেয় এবং একটি গোল শতাংশের আউটপুট দেয়। ব্যাখ্যা:

@set/ps=

স্ট্রিং ইনপুট করুন।

@set s=%s:"=%

স্ট্রিপ উদ্ধৃতি, কারণ তারা ব্যাচে মোকাবেলা করার জন্য একটি মাথাব্যথা।

@set n=13

গোলাকার উদ্দেশ্যে অর্ধেক চিঠি দিয়ে শুরু করুন।

@for %%c in (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)do @call set t="%%s:%%c=%%"&call:c

স্ট্রিং থেকে প্রতিটি অক্ষর ঘুরিয়ে মুছুন। ব্যাচ যেভাবে ভেরিয়েবলকে পার্স করে, সে কারণে কিছু পরিবর্তন হয়েছে কিনা তা পরীক্ষা করতে সাবরোটিনকে জিজ্ঞাসা করুন।

@cmd/cset/an/26

শতাংশ হিসাবে ফলাফল গণনা করুন।

@exit/b
:c

সাবরুটাইন শুরু।

@if not "%s%"=="%t%" set/an+=100

যদি কোনও চিঠি মোছার ফলে স্ট্রিং পরিবর্তন হয় তবে বর্ণের সংখ্যা বৃদ্ধি করুন।


3

পেপে , 155 138 বাইট

rEeEeeeeeEREeEeEEeEeREERrEEEEErEEEeReeReRrEeeEeeeeerEEEEREEeRERrErEErerREEEEEeREEeeRrEreerererEEEEeeerERrEeeeREEEERREeeeEEeEerRrEEEEeereEE

এটি অনলাইন চেষ্টা করুন! আউটপুট দশমিক আকারে।

ব্যাখ্যা:

rEeEeeeeeE REeEeEEeEe # Push 65 -> (r), 90 -> (R)
REE # Create loop labeled 90 // creates [65,66,...,89,90]
  RrEEEEE # Increment (R flag: preserve the number) in (r)
  rEEEe # ...then move the pointer to the last
Ree # Do this while (r) != 90

Re # Pop 90 -> (R)
RrEeeEeeeee rEEEE # Push 32 and go to first item -> (r)
REEe # Push input -> (R)
RE RrE # Push 0 on both stacks, (r) prepend 0
rEE # Create loop labeled 0 // makes input minus 32, so the
    # lowercase can be accepted, since of rEEEEeee (below)
  re # Pop 0 -> (r)
  rREEEEEe REEee # Push item of (R) minus 32, then go to next item 
  RrE # Push 0 -> (R)
ree # Do while (R) != 0

rere # Pop 0 & 32 -> (r)
rEEEEeee # Remove items from (r) that don't occur in (R)
         # Remove everything from (r) except the unique letters
rE # Push 0 -> (r)
RrEeee # Push reverse pointer pos -> (r)
REEEE # Move pointer to first position -> (R)
RREeeeEEeEe # Push 26 -> (R)
rRrEEEEee reEE # Divide it and output it

যেহেতু পেপে কেবল একটি 4 কমান্ডের ভাষা তাই এটি 34.5 বাইটের মতো হয় যদি আপনি এটিকে পুনরায় আর 2 টি হিসাবে বিট হিসাবে এনকোড করে থাকেন?
ডেটা শেষ হয়েছে

3

1
32!খুব বিস্তৃত - এটি বাকী বাক্যটি কিছু বিরামচিহ্নগুলিকে অক্ষর হিসাবে বিবেচনা করে তোলে উদাহরণস্বরূপ উদাহরণ :
ইনপুটটিতে

@ngn আমি প্রথমদিকে যতিচিহ্ন দিয়ে পরীক্ষা করিনি। আমাকে মনে করার জন্য ধন্যবাদ.!
গ্যালেন ইভানভ

3

রেটিনা , 57 46 35 বাইট

.
$L
[^a-z]

D`.
.
100*
^
13*
_{26}

বিভাজনের আগে 13 ন্যারি যোগ করার কৌশলটি @ নীলের কৌশল থেকে অনুপ্রেরণা পেয়ে -11 বাইটস ।
অন্য -11 বাইট সরাসরি @ নীলকে ধন্যবাদ জানায় ।
পুরো পূর্ণসংখ্যার দিকে গোল করে (সঠিকভাবে)।

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

57 46 40 বাইট সংস্করণ যা দশমিক আউটপুট নিয়ে কাজ করে:

.
$L
[^a-z]

D`.
.
1000*
C`_{26}
-1`\B
.

একই -11 বাইট সেইসাথে একটি অতিরিক্ত -6 ধন্যবাদ বাইট @Neil

0.153842615.315.41000×unique_letters26

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

ব্যাখ্যা:

সমস্ত অক্ষর ছোট হাত থেকে রূপান্তর করুন:

.
$L

সমস্ত অ-অক্ষর সরান:

[^a-z]

সমস্ত অক্ষর একীকরণ:

D`.

প্রতিটি অনন্য অক্ষরকে 1000 আন্ডারস্কোর দিয়ে প্রতিস্থাপন করুন:

.
1000*

এতে 26 সংলগ্ন আন্ডারস্কোরগুলি কতবার ফিট হয় তা গণনা করুন:

C`_{26}

সঠিক জায়গায় একটি বিন্দু প্রবেশ করান:

-1`\B
.

1
.*শুধু কিছু হতে পারে .একটি 1 বাইট সঞ্চয় জন্য, কিন্তু আপনি ব্যবহার করার মাধ্যমে অন্যদের 10 বাইট সংরক্ষণ করতে পারবেন Deduplicate পরিবর্তে নিজে করছেন!
নিল

@ নীল আহ, বিল্টিন সম্পর্কে জানতেন না D, ধন্যবাদ! এবং নিশ্চিত না যে আমি এর .*পরিবর্তে কেন ব্যবহার করেছি ... উভয় সংস্করণে -11 বাইটের জন্য ধন্যবাদ! :)
কেভিন ক্রুইজসেন

1
এফওয়াইআই আমার একই বাইট গণনার জন্য কিছুটা ভিন্ন পদ্ধতি ছিল: এটি অনলাইনে চেষ্টা করে দেখুন!
নীল

1
দশমিক সংস্করণের জন্য আমি দেখতে পেলাম যে -1`\Bপছন্দসই সন্নিবেশ অবস্থানের সাথে সরাসরি মেলে।
নিল

@ নিল আবার ধন্যবাদ।
কেভিন ক্রুইজসেন

3

জাভা 8, 62 59 বাইট

s->s.map(c->c&95).distinct().filter(c->c%91>64).count()/26.

-3 বাইট @ অলিভিগ্রগ্রোয়ারকে ধন্যবাদ ।

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

ব্যাখ্যা:

s->                     // Method with IntStream as parameter and double return-type
  s.map(c->c&95)        //  Convert all letters to uppercase
   .distinct()          //  Uniquify it
   .filter(c->c%91>64)  //  Only leave letters (unicode value range [65,90])
   .count()             //  Count the amount of unique letters left
    /26.                //  Divide it by 26.0


@ অলিভিয়ারগ্রোওয়ের ধন্যবাদ! আমি সর্বদা কোনও কারণে c&95মিশ্রণে ভুলে যাই c%91>64। আমি মনে করি আপনি আমার কাছে কয়েকবার আগে এই গল্ফটির পরামর্শ দিয়েছিলেন।
কেভিন ক্রুইজসেন

হ্যাঁ, আমি ইতিমধ্যে সেগুলি প্রস্তাব দিয়েছি, তবে এটি ঠিক আছে, কোনও উদ্বেগ নয় ;-)
অলিভিয়ার গ্রোগোয়ার

আরও দীর্ঘতর তবে আরও মজাদার: s->{int r=0,b=0;for(var c:s)if((c&95)%91>64&&b<(b|=1<<c))r++;return r/26.;}(75 বাইট)
অলিভিয়ের গ্রাগোয়ার

3

জুলিয়া 1.0 , 34 বাইট

s->sum('a':'z'.∈lowercase(s))/26

From অপারেটরের ভেক্টরাইজড সংস্করণ ব্যবহার করে , একটি থেকে z পর্যন্ত পরিসরের সমস্ত অক্ষরের জন্য স্ট্রিংটিতে সংযোজন পরীক্ষা করে। তারপরে ফলাফল বিটআরয়ের উপর যোগফল এবং সম্ভাব্য অক্ষরের মোট সংখ্যা দ্বারা বিভাজন।

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


স্বাগতম এবং দুর্দান্ত প্রথম উত্তর!
mbomb007



2

1
আপনি প্যাকযুক্ত সংস্করণটি ফেলে uএবং ব্যবহার করে একটি বাইট নিতে পারেন |bতবে সঞ্চয়গুলি প্যাকিংয়ের আওতায় চলে যায়। আমার কাছে একটি 8-বাইটার থাকতে পারে তবে অনলাইন অনুবাদকটি অদ্ভুত এবং বগিযুক্ত।
খুলদ্রেশেথ না'বাড়িয়া

@ খুলদ্রেসেথনা'বাড়িয়া: ভাল লাগছে। আমি মনে করি বাগটি সম্ভবত একটি অ্যারে মিউটেশন। আমি এখন সেই আচরণের কিছু দেখতে পাচ্ছি। একটি সর্বনিম্ন তিরস্কারে কাজ করা ...
পুনরাবৃত্তি

আমি অনুমান করি যে সমস্যার সাথে আপনি যা করছেন তা এখানে একটি প্রতিস্থাপন রয়েছে |b। এটি অনুলিপিটি অনুলিপি করে একটি অনুলিপি তৈরি না করে। আমি বাগের জন্য একটি গিথুব ইস্যু তৈরি করেছি। github.com/tomtheisen/stax/issues/29 একটি workaround হিসাবে, |bপ্রথমবার সঠিকভাবে কাজ করবে। এর পরে, আপনাকে পৃষ্ঠাটি পুনরায় লোড করতে হতে পারে। যদি আপনি একটি ভিন্ন ত্রুটি পেয়ে থাকেন তবে আপনি যদি একটি পুনরুত্পাদন সরবরাহ করতে পারেন তবে আমি সম্ভবত এটি সংশোধন করতে সক্ষম হব।
পুনরাবৃত্তি

স্ট্যাক্স 1.1.4, 8 বাইট। নির্দেশাবলী: আনপ্যাক করুন, vশুরুতে সন্নিবেশ করুন, |bপরে সন্নিবেশ করুন Va, চালান, প্রথমে vসরান |b, সরান , পুনঃস্থাপন করুন। হ্যাঁ, এটি আমি খুঁজে পেয়েছি বাগ।
খুলনায়সথ না'বাড়িয়া

@ খুলদ্রেসেথনা'বাড়িয়া: আমি ১.১.৫ প্রকাশ করেছি, এবং আমি বিশ্বাস করি যে এই বাগটি এখনই ঠিক হয়ে গেছে। আপনার যদি এখনও সমস্যা হয় তবে আপনি আমাকে জানাতে পারেন। ধন্যবাদ।
রিকার্সিভ







1

সি, 95 বাইট

f(char*s){int a[256]={},z;while(*s)a[*s++|32]=1;for(z=97;z<'z';*a+=a[z++]);return(*a*100)/26;}

(দ্রষ্টব্য: রাউন্ড ডাউন)

বিকল্প দশমিক-রিটার্নিং সংস্করণ (95 বাইট):

float f(char*s){int a[256]={},z;while(*s&&a[*s++|32]=1);for(z=97;z<'z';*a+=a[z++]);return*a/26.;}

এটি @ স্টেডিবক্সের উত্তর থেকে কিছু ধার নিয়েছে।


1
স্বাগত! ভাল প্রথম উত্তর। আপনার উত্তরটি পড়া লোকদের পক্ষে এটি আপনার পক্ষে সহায়ক হতে পারে যদি আপনি নিজের কোড বা একটি অসম্পূর্ণ সংস্করণটির একটি সংক্ষিপ্ত ব্যাখ্যা সরবরাহ করেন। আপনার চলমান কোডের সাথে কোনও অনলাইন ইন্টারপ্রেটারকে একটি লিঙ্ক সরবরাহ করা সহায়ক হতে পারে (উদাহরণের জন্য আরও কিছু উত্তর দেখুন)। অনেকে টিআইও ব্যবহার করেন, এবং এখানে
জিসিসি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.