শব্দের বর্ণগুলি বর্ণানুক্রমিক ক্রমে আছে কিনা তা পরীক্ষা করুন


37

একটি ফাংশন / প্রোগ্রাম লিখুন যা নিম্ন / বড় হাতের অক্ষরের একটি স্ট্রিং [এ-জে-জেড] ইনপুট হিসাবে গ্রহণ করে, যা উপস্থিত অক্ষরগুলি অনন্য এবং বর্ণানুক্রমিক ক্রমে (নিম্ন এবং বড় হাতের দিকে অগ্রাহ্য করে) কিনা তা পরীক্ষা করে। আউটপুট অবশ্যই সত্য হতে হবে যদি তারা অনন্য হয় এবং বর্ণানুক্রমিক ক্রমে এবং মিথ্যা না হয় তবে।

এখানে কিছু টেস্টকেস

a                           true
abcdefGHIjklmnopqrSTUVWXyz  true     
aa                          false
puz                         true
puzz                        false
puzZ                        false
puZ                         true
PuZ                         true
pzu                         false
pzU                         false
abcdABCD                    false
dcba                        false

আপনি যদি চান, মত একটি wordlist সব শব্দের উপর আপনার প্রোগ্রাম চালানো এই এক এবং কিছু মজার বেশী পোষ্ট =)।

স্কোর

সর্বনিম্ন সংখ্যা বাইট জিতেছে।


3
দুর্বল পরীক্ষার মামলা। (দেখুন আমার মন্তব্য উপর রিচার্ড একজন 'র পিএইচপি উত্তর ।)
manatwork

বর্ণমালা লুপ করে? উচিত zaএকটি truthy মান হতে?
মেয়রমন্টি

না, বর্ণমালাটি শুরু হয় aএবং শেষ হয় z
flawr

আপনার এমন কিছু পরীক্ষার কেস থাকতে হবে যা বর্ণানুক্রমিক ক্রমে নয়
জো কিং

1
@ জোকিং আমি কিছু যুক্ত করেছি।
flawr

উত্তর:


28

সিজেম, 8 বাইট

lel_$_&=

চ্যালেঞ্জের সমস্ত উদাহরণের জন্য এখানে একটি পরীক্ষার জোতা দেওয়া আছে । এই আয় 0বা 1(যা falsy এবং truthy হয়, যথাক্রমে CJam মধ্যে)।

এবং প্রশ্নের একটি শব্দ তালিকা ফিল্টার করার জন্য এখানে একটি স্ক্রিপ্ট রয়েছে (চালাতে কয়েক সেকেন্ড সময় লাগে)। আপনাকে ইনপুট ক্ষেত্রে ম্যানুয়ালি শব্দের তালিকাটি অনুলিপি করতে হবে, কারণ এটি পারমিলিংকের জন্য অনেক দীর্ঘ।

ব্যাখ্যা

l        "Read input.";
 el      "Convert to lower case.";
   _$    "Get a copy and sort it.";
     _&  "Remove duplicates (by computing the set intersection with itself).";
       = "Check for equality with original (lower case) word.";

21

রেজেক্স (কোনও স্বাদ), 55 বাইট

কিছু লোক রেজেক্সকে প্রোগ্রামিং ভাষা হিসাবে বিবেচনা করে না, তবে এটি আগে ব্যবহার করা হয়েছে, এবং এটি সবচেয়ে সংক্ষিপ্ত হওয়ার কাছাকাছি নয়।

^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?$

আমি i(কেস-সংবেদনশীল) পতাকাটির জন্য একটি বাইট যুক্ত করেছি । এটি খুব সোজা এবং উড়তে উত্পন্ন করার জন্য সংক্ষিপ্ততর হতে পারে।

যদি একমাত্র রেইজেক্সকে অনুমতি না দেওয়া হয় তবে আপনি মার্টিন বাটনার প্রস্তাবিত এই 56-বাইট রেটিনা প্রোগ্রামটি ব্যবহার করতে পারেন :

i`^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?$

উপরে লিঙ্কযুক্ত শব্দ তালিকায় এটি চালানোয় বর্ণানুক্রমিক ক্রমে 10 টি 6-বর্ণের শব্দ পাওয়া গেছে।

["অবজ্ঞা", "প্রায়", "শুরু", "বেগিটার", "বিজোক্স", "বায়োপসি", "শিম্পস", "চিনোস", "চিন্টজ", "ভূত"]


2
আপনি ব্যবহার করতে পারেন অক্ষিপট : যদি কেউ অভিযোগ করে Regex একটি ভাষা নয় ES6 পরিবর্তেi`^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?$
মার্টিন Ender

@ মার্টিনব্যাটনার আমি রেটিনার কথা ভুলে গেছি। ধন্যবাদ!
নিনজা বিয়ারমোনকি

@ মার্টিনব্যাটনার মেটার (মেটা কোডেগল্ফ.স্ট্যাকেকেক্সচেঞ্জ / প্রশ্নগুলি / ২০২২ / ২ ) মতে রেজেজসকে কিছুটা প্রোগ্রামিং ভাষা হিসাবে দেখা যেতে পারে।
ইসমাইল মিগুয়েল

@ ইসমাইল মিগুয়েল আমি জানি এবং প্রকৃতপক্ষে সংজ্ঞাটি বিশেষত এটি নিশ্চিত করার জন্যই বেছে নেওয়া হয়েছিল যে এটি রেজেক্সকে বাতিল করে না। তবে কিছু লোক এখনও নিয়মিত অভিযোগ করে, কারণ আপনি অন্য কোনও ভাষার মতো রেজেক্স ব্যবহার করতে পারবেন না।
মার্টিন এন্ডার

@ মার্টিনব্যাটনার যারা অভিযোগ করেন তারা মেটা নামে একটি জায়গায় গিয়ে এটি সন্ধান করতে পারেন। বেশিরভাগ সমস্যার সমাধানকারী প্রশ্নাবলীতে এত সুন্দর জায়গা কেউ কেন দেখেনি?
ইসমাইল মিগুয়েল

19

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

*s,=input().lower()
print(sorted(set(s))==s)

একটি সহজ পদ্ধতির - স্বতন্ত্রতা পরীক্ষা করুন, বাছাই করুন।


আপনি কি ব্যাখ্যা করতে *s,=...পারেন?
flawr

@ ফ্লোয়ার এটিকে 'তারকাচিহ্নিত অ্যাসাইনমেন্ট' বলা হয়। এই কোডটিতে এটি ডান দিকটি কেবল একটি তালিকায় রূপান্তর করে। এটা যেমন হয় s=list(input().lower())
জাকুবে

1
@ ফ্লেয়ার যেমন যাকুব বলেছেন, এখানে এটি কেবল অক্ষরের তালিকায় ইনপুট রূপান্তর করছে। সাধারণভাবে এটি একটি বিশেষ অ্যাসাইনমেন্ট সিনট্যাক্স যা আপনাকে এমন কাজ করতে দেয় x,*y = [1, 2, 3, 4]যা 1 xএবং এর মধ্যে 1 প্রদান [2, 3, 4]করে y
Sp3000

@ mbomb007 *s,= হল list(s) ... লিঙ্ক
Sp3000

আপনি 2 বাইট সংরক্ষণ করার {*s}পরিবর্তে করতে পারেন set(s)
mbomb007

12

> <> , 52 42 39 বাইট

0>i:1+?v1n;
? )'`':/'@'v
0v?){:-<'`'/;n

এই ধরণের প্রশ্নটি এমন কয়েকটি ধরণের মধ্যে রয়েছে যা> <> সাথে বেশ স্বাচ্ছন্দ্যযুক্ত, যেহেতু আমাদের কেবল একবারে একটি চর নিয়ে কাজ করতে হবে।

ব্যাখ্যা

হারিয়ে যাবেন না! এখানে অনেক মোড়ানো রয়েছে।

0            Push 0. We'll be mapping a-z to 1-26, so 0 will be smaller than everything

(loop)
i            Read a char of input
:1+? 1n;     If there's no more input, print 1
:'`')?       If the char is bigger than backtick...
  '`'          Push backtick  (which is one before 'a'), else...
  '@'          Push an @ sign (which is one before 'A')
-            Subtract, mapping a-z to 1-26
:{)?         If the new char is bigger than the previous char...
               Repeat from the beginning of the loop, else...
  0n;          Print 0

পূর্ববর্তী সমাধান, 42 বাইট

0i:1+?v1n;n0/\!
?)'`':/'@'v
? ){:-<'`'/ vv

মজার বিষয় হ'ল, একই কার্যকারিতা উপস্থিত থাকলেও বিকল্পটি

0i:1+?v1n;n0\/!
?)'`':/'@'v
? ){:-<'`'/ ^^

(পরিবর্তনটি ডানদিকে তীর এবং আয়নাতে রয়েছে)

পাইথন ডিফল্টডিক্ট্টিক্ট ব্যবহার করে> <> এর দোভাষীর কারণে আসলে ভুল ফলাফল দেয় । যা ঘটে তা হ'ল, দ্বিতীয় সারির শেষের ফাঁকা জায়গাটি অতিক্রম করে,> <> কক্ষটি অ্যাক্সেস করার চেষ্টা করার পরে 0 টি স্পষ্টভাবে ফাঁকা জায়গায় রেখে দেওয়া হয়। এটি তখন ?একই সারির শুরুতে শর্তসাপেক্ষ ট্রামপোলিনের সাথে মিশে যায়, যেহেতু নতুন রাখা 0 টি vশেষের পরিবর্তে বাদ দেওয়া হয় ।


আমার মনে হচ্ছে আপনি সমস্ত অক্ষরের বর্ণমালা সূচী না হয়ে কেবল ছোট হাতের অক্ষর থেকে 32 বিয়োগ করে কিছু বাইট সংরক্ষণ করতে পারেন
অ্যারন

9

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

import Data.Char
and.(zipWith(>)=<<tail).map toLower

ব্যবহার: (and.(zipWith(>)=<<tail).map toLower) "abcd"যা আউটপুট True


9

সি, 67 65 57 54 (52) অক্ষর

f(char*s){int c,d=0;for(;(c=*s++)&&(c&~32)>(d&~32);d=c);return!c;}

একটু খাটো:

f(char*s){int c,d=0;for(;(c=*s++)&&(c&~32)>d;d=c&~32);return!c;}

এবং আরও ছোট:

f(char*s){int d=32;for(;(*s|32)>d;d=*s++|32);return!*s;}

এখানে একটি ছোট পরীক্ষা: http://ideone.com/ZHd0xl

এখানে সর্বশেষ পরামর্শের পরে এখনও দুটি সংক্ষিপ্ত সংস্করণ রয়েছে:

// 54 bytes
f(char*s){int d=1;for(;(*s&=95)>d;d=*s++);return!*s;}

// 52, though not sure if valid because of global variable
d;f(char*s){d=1;for(;(*s&=95)>d;d=*s++);return!*s;}

এছাড়াও এই কোডটি এই সত্যের উপর নির্ভর করে যে ASCII ছোট এবং বড় হাতের অক্ষরে আমি কেবল 5 তম বিট (32) দ্বারা পৃথক করি যা আমি ফিল্টার আউট করি। সুতরাং এটি সম্ভবত অন্য এনকোডিংগুলির সাথে স্পষ্টভাবে কাজ করবে না।

সম্পাদনা: সর্বশেষতম সংস্করণটি সর্বদা |32সংক্ষিপ্ত হিসাবে 5 তম বিট সেট করে &~32


কেস সংবেদনশীলতা সমস্যাটি পরিচালনা করতে ডোমেন জ্ঞানের ভাল ব্যবহার।
রোমস্টেডি

লুপটি প্রতিস্থাপন করে 2 টি সংরক্ষণ করুন for(;(*s&=95)>d;d=*s++);। আর তুমি আরম্ভ করতে পারেন dকরতে 1ফলাফলের পরিবর্তন না করে, আরো 1 টি সংরক্ষণ। দেখুন।
অ্যাশেলি

1
আমি এটিকে কোড গল্ফে আইনী বিবেচনা করা হয় কিনা তা নিশ্চিত নই, তবে d;f(char*s){d=32;for...}কাজ করে, dগ্লোবাল ইনট হিসাবে স্পষ্টভাবে ঘোষণা করে (যা জিসিসিতে, একটি সতর্কতা - "ডেটা সংজ্ঞায় কোনও ধরণের বা স্টোরেজ শ্রেণি নেই - তবে ত্রুটি নয়)"। এটি দুটি বাইট সংরক্ষণ করে।
wchargin

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

1
কেন শুরু করা dমধ্যে forলুপ বদলে নিজস্ব বক্তব্য? এইভাবে আপনি একটি সংরক্ষণ করুন ;
জোশ

6

রুবি, ৩৩

->s{c=s.upcase.chars
c==c.sort|c}

বাছাই করা অনন্য অক্ষরগুলি সমস্ত অক্ষরের মতো কিনা তা পরীক্ষা করে দেখুন।


1
c==c.sort|c
59

ওহ, আমি এটি পছন্দ করি, এটি চালাক। ধন্যবাদ।
ব্রিটিশটি

5

জাভাস্ক্রিপ্ট (ES5), 101

function i(s){b=0;l=''.a
s.toUpperCase().split('').forEach(function(c){if(c<=l)b=1
l=c})
return!b}

Edc95 দ্বারা 87 এ উন্নত:

তার মন্তব্য upvote :)

function i(s){return!s.toUpperCase().split(l='').some(function(c){return(u=l,l=c)<=u})}

বিটিডব্লিউ, বর্তমানে ওপিতে পরীক্ষার কেসগুলি পূরণ করা হয় যদি কোনও প্রোগ্রাম কেবল স্বাতন্ত্র্য পরীক্ষা করে থাকে, আদেশকে অবজ্ঞা করে।


আমি এখনও মন্তব্য লিখতে পারি না, তাই আমি এখানে কিছু মন্তব্যগুলির উত্তর দেব:

@ এডসি 65: ধন্যবাদ! আমি এটি ব্যবহার করে এটি পুনরায় লেখার চেষ্টা করেছি some(), তবে আমি একটি সংক্ষিপ্ত সমাধান পেতে পারি না, যদিও এটি দেখে মনে হচ্ছে এটি অতিশয় বি ভেরিয়েবল থেকে মুক্তি পেতে সক্ষম করবে, আপনাকে দুবার "একই" দিয়ে টাইপ করতে হবে reduce(), এবং আপনি কেবল তুলনা ফলাফলটি সরাসরি ফিরিয়ে দিতে পারে না, কারণ শেষ চরিত্রটির সাথে তুলনার পরে এটি সংরক্ষণ করা দরকার।

@ edc65: এটি কমা অপারেটরের একটি দুর্দান্ত ব্যবহার 87 87 এর জন্য! আরও দৃশ্যমানতার জন্য আমি এটিকে আমার উত্তরে সম্পাদনা করেছি।


এটা আমার চেয়ে ভাল ধারণা। .Some ব্যবহার করা আরও ভাল হতে পারে (ES6 সহ 52)
edc65

আপনি একটি চর সংরক্ষণ করতে returnএবং এর মধ্যে স্থান সরাতে পারেন !b
প্রোগ্রামফক্স

যেমনটি, কেবল সাদা স্থানের যত্নশীল, 96:function i(s){b=0;l='';s.toUpperCase().split('').forEach(function(c){if(c<=l)b=1;l=c});return!b}
edc65

একই, আরও গল্ফ করেছে, 92:function i(s){s.toUpperCase(b=0).split(l='').forEach(function(c){if(c<=l)b=1;l=c});return!b}
edc65

1
কিছু (বা প্রতিটি, একই স্কোর), 87:function i(s){return!s.toUpperCase().split(l='').some(function(c){return(u=l,l=c)<=u})}
edc65

4

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

ফাংশন সরবরাহ করে f :: String -> Bool

import Data.List
import Distribution.Simple.Utils
f l=g$lowercase l
g l=sort l==l&&l==nub l

ব্যবহার (ধরে নিলাম এটি গল্ফ.এইচ হিসাবে সংরক্ষণ করা হয়েছে)। এর ভার্বোজ লোড বার্তাগুলি ...প্রতিস্থাপন করতে ব্যবহৃত হয় ghci

$ ghci golf.hs
...
*Main> f "as"
...
True
*Main> f "aa"
False

কারও কাছে যদি এর lowercaseচেয়ে কম পদ্ধতি থাকে import Distribution.Simple.Utilsতবে মন্তব্য করুন।


1
পরিবর্তে map toLowerথেকে ব্যবহার করুনData.Charlowercase
নিমি

1
এছাড়াও: আপনি প্যারামিটার অপসারণ করতে পারেন lf, অর্থাত্ f=g.lowercase(অথবা f=g.map toLowerআপনি স্যুইচ যদি toLower)। মধ্যে gএক তুলনা যথেষ্ট: g l=nub(sort l)==l
নিমি

4

ওল্ফ্রাম ম্যাথামেটিকা, 49 37 বাইট

f[x_]:=(l=Characters[ToLowerCase[x]];Union[l]==l)

মার্টিন বাটনার পিএস সংক্ষিপ্ত সমাধান:

Union[l=Characters@ToLowerCase@#]==l&

2
#⋃#==#&@*Characters@*ToLowerCase
আলেফাল্ফ

1
@ এলফাল্ফ যে সুন্দর!
মার্টিন এন্ডার

4

জে, 17 বাইট

চেক যদি ছোট হাতের সাজানো /:~স্ট্রিং সমান -:ছোট হাতের সারকথা ~.পংক্তি।

   (/:~-:~.)@tolower

   NB. testing with the example inputs
   ((/:~-:~.)@tolower) every (1$'a');'abcdefGHIjklmnopqrSTUVWXyz';'aa';'puz';'puzz';'puzZ';'puZ';'PuZ'
1 1 0 1 0 0 1 1

জে হিসাবে একটি 1-চরিত্রের দীর্ঘ "স্ট্রিং" একটি নিয়মিত স্ট্রিং হিসাবে উপস্থাপিত হয় (উদ্ধৃতি সহ) কেবল একটি অক্ষর পরমাণুর একটি আসল স্ট্রিং নয় আমি ইনপুটটিকে যথাযথভাবে ফর্ম্যাট করেছিলাম যাতে সমস্ত ইনপুট আসল স্ট্রিং হয়। (উপরের উদাহরণে আমি ব্যবহার করেছি 1$'a'।)


4

ম্যাটল্যাব, 29 27 বাইট

এখন এমন এক-লাইনারের জন্য যা কোড-গল্ফের বাইরেও বোঝায়।

বেনামে ফাংশন হিসাবে (হিসাবে ব্যবহার করুন o('yourstring'))

o=@(s)all(diff(lower(s))>0)

আমি অনুমান করি যে এটি কোনও সংবাদপত্রের বিজ্ঞাপনের মতো পড়ার কারণে এই ফাংশনটি বেশ স্ব-বর্ণনামূলক।

পূর্ববর্তী সংস্করণ (29 বাইট):

all(diff(lower(input('')))>0)

ইনপুট মধ্যে উপস্থাপন করা আবশ্যক ', যেমন চিহ্ন 'Potato'


4

ব্র্যাচল্যাগ , 3 বাইট

ḷ⊆Ạ

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

ইনপুটটি রূপরেখার প্রয়োজনীয়তাগুলি পূরণ করে এবং প্রিন্টিং true.বা false.প্রোগ্রাম হিসাবে চালিত না হলে ব্যর্থ হয় তবে প্রিডিকেট সফল হয় ।

       The input,
ḷ      lowercased,
 ⊆     is a not-necessarily-contiguous sub-list of
  Ạ    "abcdefghijklmnopqrstuvwxyz".

আমি প্রথম সংস্করণটি নিয়ে এসেছি, স্পষ্টভাবে বর্ণমালার উল্লেখ না করে:

ব্র্যাচল্যাগ , 4 বাইট

ḷ≠.o

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

        The input,
ḷ       lowercased,
 ≠      in which every character is distinct,
  .     is the output variable,
   o    which sorted,
        is still the output variable.

3

জে, 21 অক্ষর

এটি অনেক দীর্ঘ। যুক্তিটির অবশ্যই র‌্যাঙ্ক 1থাকতে হবে, অর্থাত এটি স্ট্রিং বা ভেক্টর হতে হবে।

*/@(<=~.;/:~)@tolower
  • tolower y- yনিম্ন ক্ষেত্রে।
  • /:~ y- yআভিধানিক ক্রমে।
  • ~. y- এর সারকথা y, যে, yমুছে সদৃশ সঙ্গে।
  • x ; y- xএবং yবাক্সে রাখা এবং তারপরে সংক্ষিপ্ত করে।
  • < y- yএকটি বাক্সে রাখা।
  • x = y- x সাথে উপাদান অনুসারে তুলনা করা y
  • (< y) = (~. y) ; (/:~ y)- একটি ভেক্টর নির্দেশ করে যে yএটি তার নবের সমান এবং নিজেই বাছাই হয়েছে।
  • */ y- এর আইটেমগুলির পণ্য yবা এর যৌক্তিক এবং যদি আইটেমগুলি বুলিয়ান হয়।
  • */ (< y) = (~. y) ; (/:~ y)- একটি বুলিয়ান যা ছোট হাতের জন্য পছন্দসই সম্পত্তি নির্দেশ করে y

3

জুলিয়া, 44 বাইট

s->(l=lowercase(s);l==join(sort(unique(l))))

এটি একটি বেনামে ফাংশন তৈরি করে যা একটি একক যুক্তি নেয় s, এটিকে ছোট ক্ষেত্রে রূপান্তর করে এবং স্ট্রিংয়ের অনন্য সাজানো সংস্করণের সাথে তুলনা করে। এটি একটি বুলিয়ান, অর্থাৎ trueবা ফেরত দেয় false। আপনি যদি এটি পরীক্ষা করে দেখতে চান f=s->...তবে এটি পছন্দ করুন এবং তারপরে কল করুন f("PuZ")ইত্যাদি


আমেন, ফ্লোয়ার সমর্থনের জন্য ধন্যবাদ.
অ্যালেক্স এ 16

3

খাঁটি বাশ 4.x, 37

[[ ${1,,} =~ ^`printf %s? {a..z}`$ ]]

কমান্ড-লাইন প্যারামিটার হিসাবে নেওয়া ইনপুট। স্ট্যান্ডার্ড শেল শব্দার্থক হিসাবে, প্রস্থান কোড 0 এর অর্থ সত্য (বর্ণমালা) এবং প্রস্থান কোড! = 0 অর্থ মিথ্যা (বর্ণানুক্রমিক নয়)।

প্রিন্টফ @ hsl এর দ্রবণ হিসাবে রেজেেক্স তৈরি করে । ইনপুট স্ট্রিংটি ছোট হাতের কাছে প্রসারিত করা হয় এবং রেজেক্সের সাথে তুলনা করা হয়।


পূর্ববর্তী উত্তর:

বাশ + কোর্টিলস, 52

সোজা সমাধান:

a=`fold -1<<<${1,,}`
cmp -s <(sort -u<<<"$a")<<<"$a"

নোট করুন যে এর জন্য বাশ 4.x প্রয়োজন Note
মার্ক রিড

পছন্দ করুন উল্লেখযোগ্য।
ডিজিটাল ট্রমা

3

সি # 6, 18 + 82 76 = 94 বাইট

প্রয়োজনীয় (18 বাইট):

using System.Linq;

কোড (by 76 বাইট):

bool a(string s)=>(s=s.ToLower()).Distinct().OrderBy(x=>x).SequenceEqual(s);

সি # 6 ল্যাম্বডাসকে কোনও ফাংশন সংজ্ঞায়িত করতে সমর্থন করে যা গল্ফিংয়ের জন্য দরকারী।

নন-সি # 6 সংস্করণ:

bool a(string s){return (s=s.ToLower()).Distinct().OrderBy(x=>x).SequenceEqual(s);}

অবহেলিত কোড:

bool IsInAlphabeticalOrder(string s)
{
    s = s.ToLower();
    return s.Distinct()
            .OrderBy(x => x)
            .SequenceEqual(s);
}

3

জাভাস্ক্রিপ্ট (ES6) 54

বড় হাতের অক্ষরে রূপান্তর করুন, তারপরে অ্যারে এবং বাছাই করুন। যদি সাজানোর সময় দুটি উপাদান ভুল ক্রমে বা সমান হয় তবে 0 (মিথ্যা) অন্য 1 (সত্য)

@ অপ্টিমাইজারে সংক্ষিপ্ততর thx সম্পাদনা করুন (তবে ES6 তে কার্যকর @ টামাস সমাধানের চেয়ে আরও 2 টি বেশি F=s=>[...s.toUpperCase()].every(c=>(u=l,l=c)>u,l='')) :

F=s=>[...s.toUpperCase(x=1)].sort((a,b)=>a<b?1:x=0)&&x

টেস্ট ফায়ারফক্স / Firebug কনসোলে

;['a','abcdefGHIjklmnopqrSTUVWXyz','aa','puz','puzz','puzZ','puZ','PuZ']
.map(w=>w+' '+F(w))

["এ 1", "abcdefGHIjklmnopqrSTUVWXyz 1", "এএ 0", "পুজ 1", "পাজ 0", "পুজ 0", "পুজ 1", "পুজ 1"]


1
s=এটি প্রয়োজনীয় বলে মনে হচ্ছে না ...
অপ্টিমাইজার

@ অপ্টিমাইজার ডান, এটি প্রথম চেষ্টা ছিল যখন আমি শেষের তুলনায় মূল (বড় হাতের) এবং সাজানো
এডিসি 65

3

সি (৪৪ বাইট)

f(char*s){return(*s&=95)?f(s+1)>*s?*s:0:96;}

এটি এখানে পরীক্ষা করুন: http://ideone.com/q1LL3E

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

যদি স্ট্রিং অর্ডার না করা হয় তবে 0 এবং অর্ডার দেওয়া হলে একটি শূন্য-মান দেয়।


3

গোলং (65 বাইট)

গো কোনও গল্ফ বান্ধব ভাষা নয়, আমি গল্ফকে স্তন্যপান করি ...

func a(s[]byte)(bool){return len(s)<2||s[0]|32<s[1]|32&&a(s[1:])}

এটি এখানে চালান: http://play.golang.org/p/xXJX8GjDvr

106-> 102 সম্পাদনা করুন

102-> 96 সম্পাদনা করুন

96-> 91 সম্পাদনা করুন

91-> 87 সম্পাদনা করুন

87-> 65 সম্পাদনা করুন

আমি জাভা সংস্করণটি মারলাম, আমি আজকের জন্য থামতে পারি


3

জাভা 8 - 90 89 87 85 অক্ষর

এখানে ধারণাটি হ'ল একটি 'কমানো' ফাংশন যা শেষ চরটি ট্র্যাক করে এবং "ছেড়ে দেয়" যখন সনাক্ত করে সিকোয়েন্সটি কঠোরভাবে আরোহণ নয়।

golfed:

int f(String s){return s.toLowerCase().chars().reduce(0,(v,c)->(v<0)?v:(c>v)?c:-1);}

ungolfed:

int f(String s){
    return s.toLowerCase()
            .chars()
            .reduce(0, (v,c) -> (v<0)? v : (c>v)?c:-1);
}

উদাহরণ:

System.out.println(new Quick().f("abc"));
System.out.println(new Quick().f("aa"));
System.out.println(new Quick().f("abcdefGHIjklmnopqrSTUVWXyz"));
System.out.println(new Quick().f("puZ"));
System.out.println(new Quick().f("Puz"));
System.out.println(new Quick().f("cba"));

আউটপুট:

99
-1
122
122
122
-1

3

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

{my@c=.uc.comb;@c eq@c.sort.unique}

এটি কলযোগ্য ব্লক তৈরি করে; যদি আমি কেবল ধরে নিতে পারি যে $_এটি ইতিমধ্যে পছন্দসই শব্দের সাথে সেট করা আছে, তবে আমি পার্শ্ববর্তী কোঁকড়ানো ধনুর্বন্ধনী মুছে ফেলতে পারি এবং আরও দুটি বাইট হারাতে পারি, তবে সম্ভবত অনুমান করার একমাত্র যুক্তিযুক্ত উপায় হ'ল -nশব্দটিকে স্ট্যান্ডার্ড ইনপুট হিসাবে চালানো এবং চালানো to , যা ডান পিছনে দুটি বাইট যোগ করবে।


অবশ্যই এটি। .uc.combকোনও কিছুর পুনর্বিন্যবহার করে না, তাই যদি বড় হাতের এবং কঙ্কযুক্ত অ্যারেটি বাছাই করা বড় এবং আঁচড়িত অ্যারের সমান হয় , এর অর্থ এটি সাজানো ক্রমে শুরু হয়েছিল।
মার্ক রিড

ঠিক আছে, এটি ছেদটির আকার পরীক্ষা করছে যা ক্রমকে অগ্রাহ্য করে। ঠিক আছে, আপডেট হয়েছে।
মার্ক রিড

3

আর , 37 বাইট

all(diff(utf8ToInt(scan(,''))%%32)>0)

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

এটি পোস্ট করা যেহেতু মিশালের আর উত্তরের চেয়ে যথেষ্ট আলাদা এবং খাটো ।

অক্ষরগুলিকে ASCII কোডপয়েন্টের সাথে রূপান্তর করে utf8ToInt, তারপরে মডুলো 32 লাগে যাতে নিম্ন এবং উপরের বর্ণগুলি একই সংখ্যায় 1 ... 26 তে রূপান্তরিত হয়। জোড়াযুক্ত পার্থক্যগুলি গণনা করে এবং তারা সকলেই ইতিবাচক।


2

পার্ল, 27

@ এইচএসএল এর রেজিপ এক্সটি গতিশীলভাবে তৈরি করুন।

#!perl -p
$"="?";@x=a..z;$_=/^@x?$/i

এছাড়াও আমরা একটি বিপরীত ম্যাচ করতে পারি: ইনপুটটিকে একটি রেজিপ্লেক্সে রূপান্তর করুন: PuZ=> .*p.*u.*z.*এবং তারপরে এটি বর্ণানুক্রমিক বর্ণের একটি স্ট্রিংয়ের সাথে মেলে। ফলাফল - এছাড়াও 27 টি অক্ষর।

#!perl -lp
$_=join(s//.*/g,a..z)=~lc

2

কে (6 বাইট)

&/>':_

& উভয় আর্গোস সত্য হলে সত্য প্রত্যাবর্তন করে

/&কার্যকরী ভাষায় ভাঁজের মতো একটি তালিকা "ওভার" প্রয়োগ করতে সংশোধন করে

> অপেক্ষা বৃহত্তর

':মডিফাই >আবেদন করতে "প্রতিটি-পূর্বে", তাই জানায় Booleans থেকে একটি ভেক্টর যা উপাদান তাদের পূর্বসুরী চেয়ে অনেক বেশী হয় ফেরৎ

_ এটি তর্ক করে লোকেস করে তোলে

  _"puzZ"
"puzz"
  >':_"puzZ"
1110b
  &/>':_"puzZ"
0b

( 0bবুলিয়ান মিথ্যা মানে)

কিউ (১৩ বাইট)

all(>':)lower

q শুধুমাত্র কে-তে সিনট্যাকটিক চিনি। allহিসাবে সংজ্ঞায়িত করা হয় &/, এবং নিম্ন হয়_


4
এটি কীভাবে কাজ করে তা ব্যাখ্যা করতে পারেন?
flawr

এটি প্রায় অন্যান্য ভাষার সাথে প্রতারণার মতো অনুভব করে ... কার ফাংশন নাম, প্রথম বন্ধনী এবং সেমিকোলন প্রয়োজন? :)
সানাইজাইজ

@ সানচাইজেস কে এর সমস্ত জিনিস রয়েছে এবং তারা সি স্টাইলের ভাষাগুলির মতো একইভাবে কাজ করে। এই সমস্যাটি একক বিবৃতি হিসাবে প্রকাশযোগ্য হতে পারে তা ঠিক।
mollmerx


2

ভিবিএ (161 বাইট)

Function t(s As String)
t = 0
For i = 2 To Len(s)
a = Left(LCase(s), i)
    If Asc(Right(a, 1)) <= Asc(Right(a, 2)) Then Exit Function
Next
t = 1
End Function  

ছোট অক্ষরে পূর্ববর্তী অক্ষরের সাথে ascii মানটির তুলনা করে, 0 (মিথ্যা) যখন এর মান ছোট / সমান হয় এবং প্রস্থান ফাংশন হয় তখন ফিরে আসুন


2

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

lambda s:eval('"%s"'%'"<"'.join(s.lower()))

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

<সমস্ত অক্ষরের মধ্যে চিহ্ন রাখে (ছোট হাতের মধ্যে রূপান্তরিত) এবং তারপরে evalএটি। পাইথনের শৃঙ্খলিত তুলনা অপারেটররা পুরো জিনিসটিকে একটি বড় বুলিয়ান এক্সপ্রেশন হিসাবে মূল্যায়ন করতে পুরোপুরি খুশি।


1

এরলং, 51

f(S)->G=string:to_lower(S),ordsets:from_list(G)==G.

java.util.TreeSetঅক্ষরগুলি বাছাই করতে এবং কোনও সদৃশ ফেলে দেওয়ার জন্য একটি অর্ডারযুক্ত সেট (সমতুল্য ) ব্যবহার করে । নতুন তালিকাটি তখন ইনপুট স্ট্রিংয়ের সাথে তুলনা করা হয়।

টেস্ট ফাংশন:

test() ->
    [io:format("~p ~p~n", [S, f(S)]) || S <- ["a","abcdefGHIjklmnopqrSTUVWXyz","aa","puz","puzz","puzZ","puZ","PuZ"]].

1

জাভা, 96

boolean a(char[]a){int i=-1,l=0;for(;++i<a.length;l+=i>0&&a[i]<=a[i-1]?1:0)a[i]|=32;return l<1;}

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

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