ধারাবাহিক অক্ষর গণনা করুন


24

কেবলমাত্র অক্ষরযুক্ত একটি স্ট্রিং দেওয়া হয়েছে, শব্দটি থাকা ধারাবাহিক বর্ণানুক্রমিক বর্ণগুলির দীর্ঘতম দৈর্ঘ্যের আউটপুট দেয়, যেখানে ক্রমটি বিবেচনা করে না। একটি উদাহরণ অ্যালগরিদম শব্দটি বাছাই করতে পারে, সদৃশগুলি সরিয়ে ফেলতে পারে এবং তারপরে দীর্ঘতম রানের দৈর্ঘ্য আউটপুট দেয়।

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

watch -> 1
stars -> 3
antidisestablishmentarianism -> 3
backdoor -> 4
a -> 1
tutorials -> 4

উদাহরণস্বরূপ, antidisestablishmentarianismঅক্ষর রয়েছে abdehilmnstr। দীর্ঘতম রানগুলি lmnএবং rstউভয় দৈর্ঘ্যের 3।

নোট

আপনি সমস্ত ছোট হাতের অক্ষর, সমস্ত বড় হাতের বা মিক্সড কেস অক্ষরগুলিকে ইনপুট হিসাবে নিতে পারেন, তবে কেসটি শব্দের সম্পর্কে তথ্য এনকোড করতে পারে না (যেমন আপনি প্রথম nঅক্ষরকে nসবচেয়ে দীর্ঘস্থানের দৈর্ঘ্য যেখানে মূলধনী করতে পারবেন না )।

এটি , তাই বাইট জেতে সংক্ষিপ্ত উত্তর।


@ এইচ.পি.উইজ, আমি অনুমান করছি যে এটি একটি টাইপো এবং এটি হওয়া উচিত rst- একত্রিত করা, সাজানো এবং দীর্ঘতম টানা দীর্ঘতম রান পাওয়া। আমরা কি অক্ষরের অ্যারে হিসাবে ইনপুট নিতে পারি?
শেগি

@ শেগি হ্যাঁ, অবশ্যই, আমি এটি অন্তর্ভুক্ত করিনি কারণ আমি ভেবেছিলাম এটি একটি ডিফল্ট
স্টিফেন

'Z' সংলগ্ন 'একটি' - কি 'জেব্রা' স্কোরটি 2 বা 3 করা উচিত?
জোনাথন অ্যালান

(... আপনার উদাহরণ অ্যালগরিদম দ্বারা বিচার করে আমি অনুমান "না" এবং "2")
জোনাথন অ্যালান

@ জোনাথান অ্যালান আপনি সঠিক
স্টিফেন

উত্তর:


10

জেলি ,  10 9 8 7  6 বাইট

OṬṣ0ZL

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

9 সকের পদ্ধতি ব্যবহার করছিল :ṢQẆẇƇØaṪL

কিভাবে?

OṬṣ0ZL - Link: list of (single-case) characters  e.g.  codegolf
O      - ordinal (vectorises)           [99,111,100,101,103,111,108,102]
 Ṭ     - untruth (1s at those indices)  [0,0,0,...,1,1,1,1,1,0,0,0,0,1,0,0,1]
       -                                 ^         ^       ^         ^     ^
       -                   i.e. indices: 1        99     103       108   111
   0   - literal zero
  ṣ    - split at                       [[],[],[],...,[1,1,1,1,1],[],[],[],[1],[],[1]]
    Z  - transpose                      [[1,1,1],[1],[1],[1],[1]]
     L - length                         5

8

আর , 44 43 বাইট

ছোট হাতের অক্ষরের অ্যারে নিয়ে কাজ করে। সম্পাদনা: এটি বাইটের জন্য টি / এফ দ্বারা গুণিত করতে সত্য মানগুলি পরীক্ষা করে পরিবর্তন করেছে।

function(x,r=rle(letters%in%x))max(r$l*r$v)

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

সরবরাহ করা অক্ষরগুলিতে থাকা অক্ষরগুলিতে একটি রান দৈর্ঘ্য এনকোডিং করে তবে ট্রুসের সর্বাধিক মান ফেরত দেয়।


Utf8ToInt ব্যবহার করে একটি অনুরূপ rle সমাধানে কাজ করছিল তবে স্ট্রিংয়ের অ্যারে নেওয়া অনেক বেশি স্মার্ট। +1
জেসি

@ জেইসি একইভাবে শুরু করেছিলেন, কিন্তু তখন বুঝতে পেরেছিলেন যে% চেক% এ থাকা একটি
চিঠিই

7

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

-1 বাইট ধন্যবাদ এইচ.পি.উইজকে

≢⍉↑⊆⍨⎕a∊⍞

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

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

⎕a বড় হাতের ইংরেজি বর্ণমালা

⎕a∊⍞ একটি বুলিয়ান দৈর্ঘ্য -26 ভেক্টর - কোন অক্ষরে স্ট্রিং হয়?

⊆⍨ পরপর 1s এর ভেক্টর গঠন

≢⍉↑ একটি ম্যাট্রিক্সে মিশ্রিত করুন, স্থানান্তর করুন এবং এর উচ্চতাটি ফিরিয়ে দিন - কার্যকরভাবে, 1 এস এর দীর্ঘতম ভেক্টরের দৈর্ঘ্য সন্ধান করুন


1
⌈/≢¨->≢⍉↑
এইচ.পি.উইভিজ

6

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

{max values bag .ords.sort.squish Z-0..*}

এটা পরীক্ষা করো

সম্প্রসারিত:

{  # bare block lambda with implicit param $_

  max       # find the max
    values  # get the values from the following Bag (repeat counts)
      bag   # find the repeats

          .ords.sort.squish # get the unique ordinals (method call on $_)
        Z-                  # zip subtract with
          0 .. *            # Range starting with 0
}

দেওয়া হয়েছে 'stars', .ords.sort.squish Z-0..*ফিরে আসবে(97,113,113,113)



6

জাভাস্ক্রিপ্ট (নোড.জেএস) , 51 বাইট

ইনপুট স্ট্রিংয়ের ক্ষেত্রে কিছু যায় আসে না।

s=>(g=_=>s&&1+g(s&=s*2))(Buffer(s).map(c=>s|=1<<c))

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

কিভাবে?

আমরা প্রথমে ইনপুট স্ট্রিংকে এর সাথে মুখোমুখি অক্ষরের বিটমাস্কে রূপান্তর করি:

Buffer(s).map(c => s |= 1 << c)

বিটওয়াইফ শিফটটি অন্তর্ভুক্ত মডুলো 32 দিয়ে প্রক্রিয়া করা হয়।

উদাহরণ:

"feedback" --> 100001111110
               kjihgfedcba-

তারপরে আমরা বার বার বিটমাস্কে টানা 1 এর রানকে 'হ্রাস' করব এবং সমস্ত বিট সাফ না হওয়া পর্যন্ত নিজের বাম-স্থানান্তরিত অনুলিপি সহ এটি'র'এর মাধ্যমে করেছি:

0100001111110 AND 1000011111100 --> 0000001111100
0000001111100 AND 0000011111000 --> 0000001111000
0000001111000 AND 0000011110000 --> 0000001110000
0000001110000 AND 0000011100000 --> 0000001100000
0000001100000 AND 0000011000000 --> 0000001000000
0000001000000 AND 0000010000000 --> 0000000000000

বর্ণানুক্রমিক ক্রমে ধারাবাহিক বর্ণের সংখ্যা হ'ল উপরের প্রক্রিয়াটির পুনরাবৃত্তির সংখ্যা। সুতরাং পুনরাবৃত্তি ফাংশন:

g = _ => s && 1 + g(s &= s * 2)

5

পাইথ , 9 বাইট

le}#G.:S{

ইনপুটটিকে লোয়ার কেস স্ট্রিং হিসাবে ধরে নেওয়া হয়। এটি এখানে অনলাইনে ব্যবহার করে দেখুন , বা এখানে সমস্ত পরীক্ষার কেস একবারে যাচাই করুন

le}#G.:S{Q   Q=eval(input()), G=lowercase alphabet. Trailing Q inferred.

        {Q   Deduplicate input string
       S     Sort it
     .:      Take all substrings (these are generated in length order)
  }#G        Filter out those that aren't found in the alphabet
le           Find the length of the last remaining element

সাবস্ট্রিংগুলি দৈর্ঘ্য অনুসারে অর্ডার করা হয়েছে তা ব্যবহার করে দুর্দান্ত পদ্ধতি!
জোনাথন অ্যালান

এটি অনেক কম দক্ষ হবে, তবে আপনি তার yজায়গায় ব্যবহার করতে পারেন .:
FryAmTheEggman

5

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

2Y2imY'*X>

ইনপুট ছোট হাতের অক্ষরে আছে।

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন

এটি @ সুন্দর এর (পুরানো) এবং @ ngn এর পদ্ধতির মিশ্রণ ব্যবহার করে।

ব্যাখ্যা

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

2Y2   % Push predefind literal 'abcdefghijklmnopqrstuvwxyz'
      % STACK: 'abcdefghijklmnopqrstuvwxyz'
i     % Push input
      % STACK: 'abcdefghijklmnopqrstuvwxyz', 'tutorials'
m     % Ismember: true for letters present in the input
      % STACK: [1 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 1 1 1 0 0 0 0 0]
Y'    % Run-length encoding
      % STACK: [1 0 1 0 1 0 1 0 1 0], [1 7 1 2 1 2 1 2 4 5]
*     % Multiply, element-wise
      % STACK: [1 0 1 0 1 0 1 0 4 0]
X>    % Maximum. Implicitly display
      % STACK: 4

5

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

f=lambda s:s and-~f({*s}&{chr(ord(c)+1)for c in s})or 0

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


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

f=lambda s,c=99,r=0:c and max(r,f(s,c-1,-~r*(chr(c)in s)))

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


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

n=t=0
for c in input():n|=2**ord(c)
while n:n&=n/2;t+=1
print t

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


ইনপুট হিসাবে পাইথন 3 বাইট ব্যবহার সম্পর্কে কী f=lambda s:s and-~f({*s}&{c+1for c in s})or 0?
ভিনসেন্ট

5

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

ধন্যবাদ 1 বাইট ধন্যবাদ Œ...éæ

êæAÃθg

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

এছাড়াও 6 বাইট

2 বাইট সংরক্ষণ করা হয়েছে, আবার ধন্যবাদ আদনানকে : ASåপরিবর্তে ব্যবহার করে êÇ¥Θ, এভাবে শেষে সর্বাধিক বর্ধনের প্রয়োজনীয়তাও সরিয়ে দেওয়া হয়। দুটি পদ্ধতির অনুপাতের তুলনা করতে সংশোধন ইতিহাস দেখুন ।

ASåγOà

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

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

আমি এই জাতীয় চ্যালেঞ্জ পছন্দ করি যা বিভিন্ন পদ্ধতির বিভিন্ন দিকে পরিচালিত করে।

êæAÃθg | Full program.
ê      | Push a sorted and without duplicates version of the input.
 æ     | Powerser.
  AÃ   | Keep those that also occur in the lowercase alphabet.
    θg | Take the length of the last one. θ and ` can be used interchangeably.
-------+-------------------------------------------------------------------------------
ASåγOà | Full program.
A      | Push the lowercase alphabet.
 S     | Listify it (i.e. convert it to a sequence of characters).
  å    | Replace each char in the alphabet by 1 if its in the input, else by 0.
   γ   | Split into chunks of equal adjacent elements.
    O  | Sum each part.
     à | Extract the maximum of this list. Again, à and Z can be used interchangeably.

প্রথম প্রোগ্রামটি গল্ফ করা যেতে পারে êæAÃ`gএবং দ্বিতীয় প্রোগ্রামটি গল্ফ করা যেতে পারে ASåγOZ
আদনান

@ আদনান, ধন্যবাদ! আমি ASåকৌশলটি পছন্দ করি ।
মিঃ এক্সকোডার

4

টিএসকিউএল (মাইক্রোসফ্ট এসকিউএল সার্ভার), 206 বাইট

WITH C AS (SELECT 1p,SUBSTRING(@,1,1)c UNION ALL SELECT p+1,SUBSTRING(@,p+1,1)FROM C WHERE p<LEN(@)),R AS(SELECT c d,1r FROM C UNION ALL SELECT c,r+1FROM R JOIN c ON ASCII(d)+1=ASCII(c))SELECT MAX(r)FROM R

ইনপুট জন্য, নিম্নলিখিত ব্যবহার করুন DECLARE কোডের আগে বিবৃতি :

DECLARE @ varchar(200) = 'propinquities';

এটা প্রত্যাশা করা হয় যে ইনপুটটি সমস্ত একই ক্ষেত্রে (উপরের বা নিম্নতর কোনও বিষয় নয় তবে মিশ্র ক্ষেত্রে কাজ করবে না)।

Ungolfed:

DECLARE @data varchar(200) = 'propinquities'

;WITH CTE AS (
    SELECT
        1 as CharacterPosition,
        SUBSTRING(@data,1,1) as Character
    UNION ALL
    SELECT
        CharacterPosition + 1,
        SUBSTRING(@data,CharacterPosition + 1,1)
    FROM
        CTE
    WHERE CharacterPosition < LEN(@data)
), Runs AS
(
    SELECT Character, 1 rc
    FROM CTE
    UNION ALL
    SELECT b.Character, rc + 1
    FROM Runs r
    JOIN CTE b ON ASCII(r.Character) + 1 = ASCII(b.Character)
)
SELECT max(rc)
from runs

ব্যাখ্যা:

Cte এ প্রতিটি অক্ষরের জন্য /programming//a/27623321/1474939 থেকে অভিযোজিত ) স্ট্রিংটি এএ সারিতে বিভক্ত করে CTE

তারপরে, Runsসিটি-তে ASCII কোডে রূপান্তর করে একটানা অক্ষরের রানের সন্ধান পান ।

শেষ অবধি, এটি বৃহত্তম রান সংগ্রহ করে এবং নির্বাচিত বিবৃতিতে ফিরে রিপোর্ট করে।


ভাল উত্তর, সিটিই খুব সুন্দর ব্যবহার। এটি আপনার বাইট গণনাটিকে সাহায্য করবে বা ক্ষতি করবে কিনা তা নিশ্চিত নয়, তবে টি-এসকিউএল ইনপুট পেতে "অনুমোদিত" পদ্ধতিটি একটি প্রাক-তৈরি টেবিলের মাধ্যমে
ব্র্যাডিসি

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

4

সি (জিসিসি) , 58 56 বাইট

@ গ্যাস্ট্রোপনারকে ধন্যবাদ 2 বাইট সংরক্ষণ করা হয়েছে

আমার নোড.জেএস উত্তর হিসাবে একই পদ্ধতির ব্যবহার । ইনপুট স্ট্রিংয়ের ক্ষেত্রে কিছু যায় আসে না।

m,i;f(char*s){for(i=0;*s?m|=1<<*s++:(i++,m&=m*2););s=i;}

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

মন্তব্য

m,                   // m = bitmask of encountered letters
i;                   // i = counter of max. consecutive letters
f(char *s) {         // f = function taking the input string s
  for(               // main loop:
    i = 0;           //   start with i = 0 and assume m = 0 on first call
                     //   (it is forced back to 0 when the program terminates)
    *s ?             //   if we haven't reached the end of the string:
      m |= 1 << *s++ //     update m by setting the appropriate bit for this character
                     //     (with implicit modulo 32) and advance the string pointer
    : (              //   else:
        i++,         //     increment i
        m &= m * 2   //     'reduce' runs of consecutive 1's in m by AND'ing it with a
      );             //     left-shifted copy of itself (e.g. 11101 & 111010 -> 11000;
                     //     11000 & 110000 -> 10000); we stop when m = 0
  );                 // end of for()
  s = i; }           // return i

এটি বাস্তবায়ন নির্দিষ্ট যা 1<<*sমোড়ানো বা এটি স্ট্যান্ডার্ড আচরণ?
জোনাথন ফ্রেচ

@ জোনাথানফ্রেচ আমি মনে করি এটি আনুষ্ঠানিকভাবে অপরিবর্তিত আচরণ। সুতরাং এটি অবশ্যই বাস্তবায়ন নির্দিষ্ট হতে হবে।
আর্নল্ড

কারণ আকর্ষণীয়ভাবে যথেষ্ট এটি র‌্যাপটাইমটিতে গণনা করা হয় কেবল তখনই মোড়ানো দেখা যায়। সংকলনের সময় 1<<32ফলাফল আসে 0এবং একটি ডেটা টাইপের আকারের সতর্কতা জারি করে।
জোনাথন ফ্রেচ

আসলে, আমি সন্দেহ করি যে সংকলকটি স্পষ্টভাবে একটি 5-বিট মাস্ক প্রয়োগ করবে। সম্ভাবনা হ'ল এটি সিপিইউ পর্যায়ে করা হয়েছে।
আর্নল্ড

2
@ আরনাউল্ড এটি হ'ল (দ্রষ্টব্য দেখুন: "[...] কাউন্ট অপারেন্ডের একটি তাত্ক্ষণিক মান বা সিএল নিবন্ধন করা যেতে পারে The গণনাটি 5 বিটগুলিতে মুখোশযুক্ত, যা গণনার পরিধি 0 থেকে 31 পর্যন্ত সীমাবদ্ধ করে"
এরিকএফএফ

3

সি (জিসিসি) , 100 বাইট

c,o,u;n(t,e,r)char*r,*e,*t;{for(u=0,e=t;c=*t++;u=u<o?o:u)for(o=0,r=e;*r;*r++-c||(c++,r=e,++o));o=u;}

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

ব্যাখ্যা

c,o,u;n(t,e,r)    // setup, function declaration
char*r,*e,*t;{    // K&R style
 for(u=0,e=t;     // initialize global maximum u to 0, write string start to e
 c=*t++;          // look at every character in the string
 u=u  <o?o:  u)   // funny face
  for(o=0,r=e;*r; // initialize local maximum o to 0, look at entire string again
  *r++-c||(c++,   // equal character found, search for next one
   r=e,++o));     // reset local pointer, increment local maximum
o=u;}             // return maximum character streak

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


"সি, ও, ইউ; এন (টি, ই, আর)" এর জন্য +1

3

এমএটিএল , 12 10 বাইট

91:wX-dX>q

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

ব্যাখ্যা:

91:- 1 থেকে 91 পর্যন্ত সংখ্যাগুলির তালিকা তৈরি করুন 91 91 হল অক্ষর '[', যা 'জেড' এর পরে আসে। সুতরাং এটি কার্যকরভাবে '1 x1' থেকে '[' থেকে সমস্ত অক্ষরের তালিকা তৈরি করে। (আমরা সাধারণত ['A'-1:' Z '+ 1] এর মধ্যে থাকা শ্রেণীর লোকদের চাই, তবে বাকীটি থাকা ক্ষতিগ্রস্থ হয় না, এবং কম বাইকোয়েন্টের প্রয়োজন হয়))

w - অন্তর্নিহিত ইনপুট, স্ট্যাকের শীর্ষে ইনপুট আনুন (ধরে নিন 'টিউটরিয়ালস')

X- - পার্থক্য সেট করুন। এই পাতার শুধুমাত্র অক্ষর আছে যা ছিল না ইনপুট স্ট্রিং পাওয়া তাদের মূল অর্ডার ( 'স্থিতিশীল') মধ্যে। স্ট্যাক:' !"#$%&'()*+,-./0123456789:;<=>?@BCDEFGHJKMNPQVWXYZ['

d - সেই তালিকার ধারাবাহিক উপাদানগুলির মধ্যে পার্থক্য। স্ট্যাক:[1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 2 1 2 1 2 1 5 1 1 1 1 1]

X> - এই পার্থক্যের সর্বাধিক অর্থাত্ সারণির পার্থক্য থেকে নিখোঁজ টানা বর্ণমালার সর্বাধিক সংখ্যা পান।

q - প্রকৃত চরিত্রের সংখ্যা পেতে হ্রাস


পুরোনো:

12 বাইট

Sud1=Y'*X>sQ

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



3

কে (এনএনজি / কে) , 17 15 বাইট

#1_{x^x^x+1}\-:

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

- অক্ষরগুলিকে কেবল সংখ্যায় রূপান্তর করতে হবে (তারা নেতিবাচক হলে তা বিবেচ্য নয়)

{ }\ অন্তর্বর্তী ফলাফল সংরক্ষণ করে কনভার্জেন্স পর্যন্ত একটি ফাংশন প্রয়োগ করে

x+1 প্রতিটি সংখ্যায় 1 যুক্ত করুন x

^ "ছাড়াই" - ডানদিকে তালিকায় উপস্থিত উপাদানগুলির ছাড়াই বামে তালিকা

x^x^x+1xএর সাথে ছেদ করা মানেx+1

1_ প্রথম উপাদানটি ফেলে দিন

# গণনা


#1_{x^x^x+1}\-?
অ্যাডাম

@ আদম হ্যাঁ, একদিন আমার ট্রেনগুলি কাজ করা উচিত ...
এনজিএন

এটিকে বর্ধনের সাথে ছেদ হিসাবে ধারণাটি রূপান্তরিত হওয়া অবধি বেশ সুন্দর
জোনা

ট্রেনগুলি কাজ করে
ngn

2

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

O`.
D`.
.
$&$&¶
T`l`_l`¶.
(.)¶\1
$1
.(.+)
$.1
O#^`
1G`

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

O`.

অক্ষরগুলি ক্রম অনুসারে বাছাই করুন।

D`.

চিঠিগুলি নকল করুন।

.
$&$&¶

প্রতিটি বর্ণ আলাদা আলাদা লাইনে নকল করুন।

T`l`_l`¶.

প্রতিটি জুটির প্রথমটি হ্রাস করুন।

(.)¶\1
$1

এটি যদি এখন আগের চরিত্রের সাথে মেলে তবে তাদের সাথে আবার যোগ দিন join

.(.+)
$.1

সমস্ত রানের দৈর্ঘ্য গণনা করুন।

O#^`

বিপরীত সংখ্যায় ক্রমে তাদের বাছাই করুন।

1G`

প্রথম (বৃহত্তম) নিন।


2

জে, 16 বাইট

-7 বাইট ধন্যবাদ ফ্রাউনফ্রোগের জন্য

[:>./a.#;._1@e.]

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

ব্যাখ্যা

[: >./ a. #;._1@e. ]    
       a. (    )e. ]    is the ascii alphabet an element of the input:
                        this will transform the alphabet into a 1-0 array,
                        the ones representing the letters in the input
          #;._1@        split that 1-0 list up into pieces, using 0
                        as the delimiter, and transforming each chunk
                        into its length. now we have a list of ints
[: >./                  take the max 

আমি মনে করি আপনি বর্ণমালার ]পরিবর্তে ব্যবহার করতে পারেন ~.@/:~ইতিমধ্যে বাছাই করা হয়েছে, সুতরাং আপনার ইনপুটটি বাছাই করতে হবে এবং কেবল অনন্য আইটেম রাখার দরকার নেই। টিআইও - 18 বাইট
গ্যালেন ইভানোভ


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

2

সি (জিসিসি) , 98 92 বাইট

পরামর্শের জন্য জোনাথন ফ্রেঞ্চকে ধন্যবাদ।

আপারকেস শুধুমাত্র।

f(char*s){int a[99]={0},i,j,k=j=i=0;for(;*s;a[*s++]++);for(;i<99;j=!!a[i++]*++j,k=j>k?j:k);}

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


আপনার আসলে k;শেষের দরকার নেই। অন্তর্ভুক্ত জিসিসি রিটার্নিং হল ভেরিয়েবল অ্যাসাইনমেন্টের একটি পার্শ্ব প্রতিক্রিয়া যা স্পষ্টতই আপনার লুপের জন্য শেষ ধাপ হিসাবে কার্যকর করা হয়।
জোনাথন ফ্রেচ

সম্ভাব্য 95 বাইট
জোনাথন ফ্রেচ

@ জোনাথানফ্রেচ আমি জিসিসির অন্তর্ভুক্ত রিটার্নে বিশ্বাস করি না। আমি যেভাবে তাদের প্রত্যাশা করি সেগুলি এগুলি সর্বদা ঘটে না এবং পয়েন্টার এবং ভাসমান পয়েন্টের জন্য তারা প্রায়শই কাজ করে না। ভাগ্যক্রমে, কোড গল্ফের বাইরে আমি এগুলি কখনও ব্যবহার করি না! :-)
এরিকএফ

2

Japt -h , 9 বাইট

কেস সংবেদনশীল, স্ট্রিং বা অক্ষরের অ্যারে হিসাবে ইনপুট নেয়।

;CôkU mÊn

এটি ব্যবহার করে দেখুন বা একাধিক পরীক্ষা চালান (দ্বিতীয় লাইনটি -hপতাকাটির প্রতিস্থাপন হিসাবে কাজ করে যাতে পতাকার পরিবর্তে একাধিক ইনপুট প্রক্রিয়া করতে ব্যবহৃত হতে পারে)


ব্যাখ্যা

              :Implicit input of string/array U
;C            :The lowercase alphabet
  ô           :Partition at characters returning truthy
   kU         :  Remove all characters in U from the current letter
              :  This will return a non-empty string (truthy) if the current letter ISN'T in U
     m        :Map
      Ê       :  Length
       n      :Sort
              :Implicitly output the last element in the array

@ ডাউনভোটার, -1দয়া করে আপনার জন্য কোনও কারণ সরবরাহ করতে পারেন ?
শেগি


2

সি (জিসিসি) , 66 65 63 বাইট

ধরে নিই ইনপুটটিতে কেবল ছোট অক্ষর রয়েছে। প্রথমত, এটি স্ট্রিংয়ের উপরে লুপ করে এবং কোনও পূর্ণসংখ্যায় বিট সেট করে যা বর্ণগুলি দেখা হয়। এরপরে, এটি পূর্ণসংখ্যার মধ্যে 1 বিটের দীর্ঘতম রেখা গণনা করে।

সম্পাদনা: aবিশ্বব্যাপী, তাই প্রথম কলটিতে 0 থেকে শুরু করা হবে। দ্বিতীয় লুপটি ফিরে আসার আগে এটি 0 এ পুনরায় সেট করা হয়েছে তা নিশ্চিত করে। সুতরাং, আমরা এটি ম্যানুয়ালি পুনরায় সেট করা এড়াতে পারি।

a,l;f(char*s){for(l=0;*s;)a|=1<<*s++-97;for(;a;l++)a&=a*2;s=l;}

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


2

পার্ল 5, 62 + 2 ( -nFপতাকা) = 64 বাইট

$c[ord lc$_]=1for@F;$y[y///c]++for"@c "=~/((1 )+)/g}{say@y/2|0

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

পার্ল 5, 68 বাইট

<>=~s/./$c[ord lc$&]=1/gre;$y[y///c]++for"@c "=~/((1 )+)/g;say@y/2|0

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


1
চমৎকার পন্থা! আমি বিবেচনা করা চাই যে এ সব পদ্ধতি ... আপনি ব্যবহার করে একটি কয়েক বাইট সংরক্ষণ করতে পারবেন -pFএবং -MList::Util+(max)56 পেতে: এটি অনলাইন ব্যবহার করে দেখুন!
ডম হেস্টিংস

@ ডোমহাস্টিংস -MList::Util=maxফলাফল স্কোরটিতে 16 বাইট যুক্ত করে।
ডেনিস ইবায়েভ

আমি যদি নতুন স্কোরিংটি সঠিকভাবে বুঝতে পারি তবে কমান্ড-লাইন পতাকাগুলি বাইট হিসাবে গণনা করা হয় না, তবে আলাদা পার্স করা ভাষা হিসাবে, কেবল পার্লের চেয়ে এটি পার্ল -MList::Util+(max) -pFবা অনুরূপ হতে পারে । কোডগল্ফ.মেটা.স্ট্যাকেক্সেঞ্জিং / এ
ডম হেস্টিংস

2

এসকিউএলাইট 265

WITH w AS(SELECT'a'w),n AS(SELECT 1 n UNION ALL SELECT n+1 FROM n LIMIT(SELECT length(w)FROM w)),l AS(SELECT substr(w,n,1)l FROM n,w)SELECT max(v)FROM(SELECT min(n)v FROM(SELECT*FROM l,n EXCEPT SELECT l.l,unicode(l.l)-unicode(b.l)d FROM l,l b WHERE d>0)GROUP BY l);

Ungolfed:

WITH w AS (SELECT 'antidisestablishmentarianism' w)
   , n AS (SELECT 1 n
           UNION ALL
           SELECT n+1 FROM n
           LIMIT (SELECT length(w) FROM w) )
   , l AS (SELECT DISTINCT substr(w,n,1) l FROM n,w ORDER BY l)
   , d AS (
           SELECT l,n FROM l,n
           EXCEPT
           SELECT a.l l, unicode(a.l) - unicode(b.l) d 
           FROM l a, l b 
           WHERE d > 0 
           )

SELECT max(v) FROM ( SELECT min(d.n) v FROM d GROUP BY d.l );

2

ব্র্যাচল্যাগ , 14 13 12 বাইট

{⊇pS∧ẠsSl}ᶠ⌉

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

{        }ᶠ    % Find all values that satisfy this predicate
           ⌉   % And get their maximum
               % The predicate being:
 ⊇pS           % There exists a permutation of a subset of the input
               %  Call it S
    ∧          % And, 
      sS       % S is a substring of
     Ạ         %  the set of alphabets, Ạ, 
        l      % Then, the length of that substring is the return value of the 
               %  predicate

পর্যাপ্ত ধীরে ধীরে এটি টিআইও-তে "অ্যান্টিডিসেস্টাব্লিশমেন্টারিয়ানিজম" ইনপুটটির জন্য শেষ করে না। তুলনামূলকভাবে +1 বাইটের জন্য খুব দ্রুত এক:

13 বাইট

{dosS∧ẠsSl}ᶠ⌉

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

ব্যবহার করুন dosপরিবর্তে ⊇pএস একটি হল: deduplicated গুলি orted sশুধু কিছু উপসেট কিছু বিন্যাস পরিবর্তে ইনপুটের ubstring।


1

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

import Data.List
maximum.map length.filter(`isInfixOf`['a'..'z']).subsequences.nub.sort

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

ছোট হাতের অক্ষর আশা করে

ব্যাখ্যা:

maximum.map length.filter(`isInfixOf`['a'..'z']).subsequences.nub.sort
                                                                  sort {- sort the characters -}
                                                              nub      {- remove duplicates -}
                                                 subsequences          {- all subsequences -}
                   filter(`isInfixOf`['a'..'z'])                       {- all characters are adjacent -}
        map length                                                     {- length of filtered subsequences -}
maximum                                                                {- maxmimum length -}


1

পাইথ - 11 বাইট

le@.:G).:S{

ইনপুট অবশ্যই উদ্ধৃতিতে আবৃত করা উচিত। যদি অনুমতি না দেওয়া হয়:

পাইথ - 12 বাইট

le@.:G).:S{z

ব্যাখ্যা:

l(
  e(
    @(
      .:(G),
      .:(
         S(
           {(Q)
         )
      )
    )
  )
)
length(
    last element(
        intersection(
            all positive length substrings(the alphabet as string),
            all positive length substrings(
                sorted(
                    uniquified(input)
                )
            )
        )
    )
)


1

জাভা 8, 77 বাইট

int i,j,m;
c->{for(i=j=0;(m=j<c.length?m|1<<c[j++]:m&m*2+0*++i)>0;);return i;}

আর্নৌল্ড এর সি উত্তর বন্দর । এটি এখানে অনলাইনে চেষ্টা করুন

Ungolfed:

int i, j, m; // instance variables of the surrounding class - initialised to 0
c -> { // lambda - c is of type char[]; return type is int
    for(i = j = 0; // i is the length of the longest run, j is used to step through c - both start at 0
        (m = j < c.length // work with the bitmask of all the letters present in c: if we have not reached the end of c ...
             ? m | 1 << c[j++] // ... set the bit corresponding to the current character, advance one character ...
             : m & m * 2 + 0 * ++i) > 0 ;) ; // ... else reduce runs of consecutively set bits in m by AND-combining it with a left-shifted copy of itself until m hits 0
    return i; // return the result - by now m is back to 0
}

1

> <> , 63 বাইট

স্টিডিন থেকে ছোট হাতের অক্ষর পড়েন, স্টডআউটে একটি সংখ্যার আউটপুট দেয়।

0l55*)?\
8/?(0:i<]r1~r[-*c
~/00
}</?)@:{:*+1/?(3l
  \~:03. ;n~/

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

0l55*)?\             Push 26 zeroes onto the stack

Record which characters are used
      i              Read a character from the input
 /?(0:               Check if it is -1, marking the end of the input
8             -*c    Subtract 96 from the character code, 
                         giving 1 for 'a', 2 for 'b' etc.
            r[       Pop that many values on to a new stack and reverse 
                         it, putting that character's value at the top of 
                         the stack
          1~         Write 1 to that value
        ]r           Return the stack back to it's normal state

Count the longest run of ones in the stack
  00                 Push values for currentRun = 0, and bestRun = 0
}                    Move bestRun to the bottom of the stack
            /?(3l    Check if there are only 2 values left on the stack
          +1         Increment currentRun
         *           Multiply currentRun by the next value in the stack, 
                         resetting it to 0 if the run is broken
  /?)@:{:            Check if currentRun > bestRun
  \~:                Overwrite bestRun if so
     03.             Jump back to the start of loop
         ;n~/        Once all values have been consumed, 
                         print bestRun and exit
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.