বছরের মাসগুলি বাছাই করুন


19

একটি ফাংশন বা প্রোগ্রাম যা স্ট্রিং ইনপুট নেয় লিখুন, সম্পূর্ণরূপে বানান, ইংরেজি মাস নাম শিরোনাম ক্ষেত্রে: January, February, March, ইত্যাদি (নাল / CR / LF এর অবসান ঠিক আছে, কিছু অ-আলফা অক্ষর দিয়ে বিভাজিত যদি আপনি তা চয়ন করুন) এবং হয়

  • দুটি ইনপুট তুলনা করে, দ্বিতীয় ইনপুট যদি প্রথমের চেয়ে বড় হয় (মাসের ক্রমে) হয় তবে সত্যবাদী মান প্রদান করে। সমান মানগুলির ফলস ফলসী মান

  • বা কালানুক্রমিক ক্রমে তাদের মধ্যে একটি স্বেচ্ছাসেবী ক্রম (তালিকা, সীমিত স্ট্রিং, ইত্যাদি) বাছাই করে

(চ্যালেঞ্জের কর্কট একটি পদ্ধতি / অভিব্যক্তি সংজ্ঞায়িত করছে যা সঠিক অভিধানিক ক্রম দেয় gives কিছু ভাষার একটি বা অন্যটির সাথে সংক্ষিপ্ত উত্তর থাকতে পারে)

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

উদাহরণ

কার্যকরী উদাহরণগুলি, যদিও প্রথমটি নিয়ম দ্বারা নিষিদ্ধ ...

import datetime
def is_later_month(a, b):
    '''
    Example of prohibited code because it relies on language 
    features about how to parse month names
    '''
    return datetime.strptime(a, '%B') < datetime.strptime(b, '%B') 

নীচের সংস্করণগুলি ঠিক আছে, কারণ আমরা সেই তথ্যটি কোড করি

months = {
    'January':  1, 'February':  2, 'March':      3,
    'April':    4, 'May':       5, 'June':       6,
    'July':     7, 'August':    8, 'September':  9,
    'October': 10, 'November': 11, 'December':  12,
}
def is_later_month(a, b):
    """
    Returns True/False when comparing two months.
    """
    return months[a] < months[b]

বা আপনি একটি বাছাই ফাংশন করতে পারে

months = {'as above...'}
def sort_months(l):
    """
    Sorts list and returns it. Different input and output than the above, 
    but equally valid. Sorting versus comparing might be shorter in your
    favorite language.
    """
    return sorted(l, key=lambda x: months[x]) 

উদাহরণ পরীক্ষা

assert is_later_month('January', 'February')
assert is_later_month('January', 'December')
assert is_later_month('November', 'December')
assert not is_later_month('July', 'July')
assert not is_later_month('October', 'September')

মাসের নামটিকে একটি সংখ্যায় অনুবাদ করতে আপনি কোনও অভ্যন্তরীণ সময় পার্সিং পদ্ধতি (উদাহরণস্বরূপ স্ট্র্যাপটাইম) ব্যবহার করতে পারবেন না। এটি কিছুটা অস্পষ্ট। আমরা কি কোনও ভাষার পূর্বনির্ধারিত আক্ষরিক ব্যবহার করতে পারি যা মাসের নাম রয়েছে?
লুইস মেন্ডো

আমি আমার উত্তরটি তখন মুছে ফেলব। তবে এটি কী অনুমোদিত এবং কী নয় তা এখনও পরিষ্কার নয়।
লুইস মেন্ডো

সমস্যাটি হ'ল আপনি পূর্বনির্ধারিত অ্যারেগুলির মতো সমস্ত সম্ভাব্য কৌশলগুলি অনুমান করতে পারবেন না। সম্ভবত এর চেয়ে ভাল বিকল্প হ'ল মেক-আপ নামগুলির মতো স্ট্রিংগুলির কম সাধারণ সেট ব্যবহার করা। তবে আমার অনুমানের জন্য এখন অনেক দেরি হয়ে গেছে
লুইস মেন্ডো

আমি কি স্পষ্ট প্রকাশ করছি? পাইথনের যদি কোনও বিল্টিন থাকে monthsযা সমস্ত মাসের নামের তালিকা ছিল তবে আমি months[x] < months[y]উত্তর হিসাবে বারণ করতে চাই । মাসের নামের তালিকায় আরও কিছু অদ্ভুত বৈশিষ্ট্য রয়েছে (বিভিন্ন দৈর্ঘ্য, সাধারণতা) যা এলোমেলোভাবে উত্পন্ন স্ট্রিংয়ের চেয়ে চ্যালেঞ্জটিকে সহজ / শক্ত করে তোলে।
নিক টি

হ্যাঁ, আমি মনে করি এটি পরিষ্কার। আমি কেবল আশঙ্কা করি যে এর সাথে সম্পর্কিত অন্যান্য ঘটনাও ঘটতে পারে যা আপনি স্পষ্টভাবে অস্বীকার করেন নি (তবে আমি কোনটি জানি না)
লুইস মেন্ডো

উত্তর:


41

জেলি , 19 বাইট

11ị“bMAanlseovc”iµÞ

এটি একটি মোনাডিক লিঙ্ক যা একটি তালিকাটি আর্গুমেন্ট হিসাবে গ্রহণ করে এবং এটি সাজায়। এটি অনলাইন চেষ্টা করুন!

পটভূমি

জেলি মডুলার, 1-ভিত্তিক সূচক ব্যবহার করে। যদি আমরা 11 টি অক্ষর পাওয়ার জন্য পর্যাপ্ত মাসের নামগুলি পুনরাবৃত্তি করি তবে আমরা নীচের অ্যারেটি পাই।

J a n u a r y J a n u
F e b r u a r y F e b
M a r c h M a r c h M
A p r i l A p r i l A
M a y M a y M a y M a
J u n e J u n e J u n
J u l y J u l y J u l
A u g u s t A u g u s
S e p t e m b e r S e
O c t o b e r O c t o
N o v e m b e r N o v
D e c e m b e r D e c

১১ তম (শেষ) কলামে, সমস্ত অক্ষর আলাদা, তাই আমরা মাসগুলির ক্রম সনাক্ত করতে তাদের ব্যবহার করতে পারি।

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

11ị“bMAanlseovc”iµÞ  Monadic link. Argument: A (array of months)

                 µ   Combine the preceding chain into a link.
                  Þ  Sort A by that link.
11ị                    Select the 11th character of the month's name.
   “bMAanlseovc”       Find the index of that character in "bMAanlseovc".
                       For 'u' ("January"), this returns 0 (not found).

1
শুধু কৌতূহল, আপনি কীভাবে "বিএমএএনলসোভ্যাক" দিয়ে মাসের র‌্যাঙ্কিং করছেন? প্রথম চরিত্রের ম্যাচের সূচি?
ljeabmreosn

আমি একটি ব্যাখ্যা যুক্ত করেছি।
ডেনিস

8
বাহ, সত্যিই চালাক!
ljeabmreosn

15

x86 মেশিন কোড, 26 25 বাইট

Hexdump:

ff 32 8b 01 34 c0 68 30 5f 43 01 59 f7 e1 91 5a
80 f2 c0 f7 e2 3b c8 d6 c3

সমাবেশ কোড:

    push dword ptr [edx];
    mov eax, [ecx];
    xor al, 0xc0;
    push 0x01435f30;
    pop ecx;
    mul ecx;
    xchg eax, ecx;
    pop edx;
    xor dl, 0xc0;
    mul edx;
    cmp ecx, eax;
    _emit 0xd6;
    ret;

নিম্নলিখিত হ্যাশ ফাংশনটি মাসের নামগুলি যথাযথ ক্রমে রাখার জন্য ঘটায় (ব্রুট ফোর্স দ্বারা পাওয়া):

(x ^ 0xc0) * 0x01435f30

এটি ইনপুট স্ট্রিংয়ের প্রথম 4 বাইট (32 বিট) এ প্রয়োগ করা হয়, স্বল্প-এন্ডিয়ান ক্রমে সাজানো। তারপরে ফলাফলের তুলনা করে ফলাফল SALCরেজিস্টার (আল) সেট করতে ব্যবহার করুন :

  • -1 (সত্য) যদি মাসগুলি ক্রম হয়
  • 0 (মিথ্যা) যদি দ্বিতীয় মাস প্রথম মাসের আগে হয় (বা তারা একই হয়)

4
আমি অভিভূত. কোড-গল্ফ নির্দিষ্ট ভাষা ব্যবহার না করেই কোডের একটি খুব ছোট অংশ।
ShuberFu

13

জেলি , 15 বাইট

Oḅ32 354*%991µÞ

এখানে কোনও অনলাইন অনুবাদক লিঙ্ক নেই কারণ এটি একটি ধীর জমা। প্রোগ্রামটি হ্যাশিং ফাংশনটিকে 354^(input interpreted as base 32 int) % 991বাছাই কী হিসাবে ব্যবহার করে , যা সঠিক ক্রমে আউটপুট দেয়। প্রোগ্রামটি শীঘ্রই কোনও সময় শেষ করবে না কারণ ক্ষয়ক্ষতির ফলাফল দৈত্য - "সেপ্টেম্বর" এর জন্য, 0.24 কোয়াড্রিলিয়ন অঙ্কের একটি সংখ্যা গণনা করা দরকার!

জেলি ব্যাখ্যা:

              Þ         Sort by...
             µ          Monadic link consisting of...

O                       Convert month string to code points
 ḅ32                    Take base 32
     354*               Perform 354 to the power of the result
         %991           Take modulo 991

ধারণা স্ক্রিপ্টের পাইথন প্রুফ - powমডুলার এক্সপেনসিয়েশনের জন্য ব্যবহারটি লক্ষ্য করুন , যা আরও কার্যকর efficient

import random

def base_convert(string, base):
    total = 0

    for c in string:
        total = total * base + ord(c)

    return total

def month_hash(month):
    return pow(354, base_convert(month, 32), 991)

months = ["January", "February", "March", "April", "May", "June", "July",
    "August", "September", "October", "November", "December"]
random.shuffle(months)

print(months)
print(sorted(months, key=month_hash))

5
"এখানে কোনও অনলাইন অনুবাদক লিঙ্ক নেই কারণ এটি একটি ধীর জমা"। কোন ক্ষেত্রে, আপনি পাশাপাশি হাতে মাসগুলি বাছাই করতে পারেন। ;-)
owacoder

সম্ভবত আপনি পা / মোডের অনুকূলকরণের জন্য কোনও বৈশিষ্ট্যের অনুরোধটি জনসংযোগ করতে পারেন ...
নিক

@ নিকটি এটি একটি দুর্দান্ত ধারণা, তবে দুর্ভাগ্যক্রমে যেভাবে দোভাষীর সেট আপ করা হয়েছে (প্রতিটি অপারেটর পৃথকভাবে সংজ্ঞায়িত করা হয়েছে) দিয়ে এটি কিছুটা জটিল হতে পারে। এবং জেলি অপারেটরগুলির সাথে
দু'বারের

কোনও পৃথক অপারেটর বা কিছুই নয়, কোনও পাওয়ার অপারেশন মডিউলার বিভাজন অনুসরণ করে কিনা তা দেখার জন্য আরও কিছু গভীর অন্তর্মুখি। সহজ শোনাচ্ছে? : পি
নিক

5

পাইথন, 64 61 57 বাইট

lambda x,y,g='bMAanlseovc'.find:g((x*4)[10])<g((y*4)[10])

ল্যাম্বদা ইনপুট হিসাবে দুই মাস সময় নেয় এবং তাদের তুলনা করে। আইডিয়নে এটি পরীক্ষা করুন ।

@ বেলজ্যাব্র্যামেনোজনকে 3 বাইট বন্ধ করে আরও 3 টির পথ সুগম করার জন্য ধন্যবাদ!


2
অবশেষে, আপনি আপনার জেলি উত্তরে সঠিক মাস গণনা করতে যে কালো ম্যাজিকটি ব্যবহার করেছিলেন তার পেছনের গোপনীয়তাটি প্রকাশ করেছেন!
মূল্য কালি

1
কাজ s[10%len(s)]করতে চান (4*s)[10]?
ljeabmreosn

1
@ ljeabmreosn এটি কার্যকরভাবে কাজ করে। ধন্যবাদ!
ডেনিস

1
এখনও কোনও ল্যাম্বডায় <স্ট্রাইক> আব </ translation> ডিফল্ট আর্গুমেন্টের ব্যবহার দেখেনি: পি
নিক টি

4

পাইথন, 81 71 বাইট

lambda x,y,m='anebarprayunulugepctovec':m.index(x[1:3])<m.index(y[1:3])

https://repl.it/CluN/1

mদুই মাসের দ্বিতীয় এবং তৃতীয় বর্ণের সূচকের সাথে তুলনা করে ।

মাসের একটি তালিকা সাজানোর জন্য 83 বাইট সংস্করণ:

lambda x:sorted(x,key=lambda i:'JanFebMarAprMayJunJulAugSepOctNovDec'.index(i[:3]))


3

জে, 66 65 বাইট

F (এম) = 2 * (অর্ড (মি [0]) + অর্ড (এম [-1])) // লেন (এম) 12 মাসের সীমিত ডোমেনে একটি বৈধ ফাংশন: এই সত্যটি ব্যবহার করুন

>/@:('7/HEäWa<+0'&i.@(3 :'u:<.(#>y)%~+:+/3&u:({.>y),({:>y)')"0)"1

ব্যবহার:

   bigger =: >/@:('7/HEäWa<+0'&i.@(3 :'u:<.(#>y)%~+:+/3&u:({.>y),({:>y)')"0)"1
   bigger ('May'; 'March')
1
   bigger ('May'; 'June')
0

(কোনওভাবেই এটি সেরা ধারণা নয়, তবে আমি কারও র‌্যাঙ্কিং ট্রিক চুরি করতে চাইনি!)

@ অ্যাটলোলজিস্টের পদ্ধতিটি ব্যবহার করে এখানে একটি ছোট সংস্করণ দেওয়া হয়েছে :

জে, 63 বাইট

m=:[:}.3{.]
[:>/(12 2$'anebarprayunulugepctovec')i.([:m[),:[:m]

ব্যবহার:

   bigger =: [:>/(12 2$'anebarprayunulugepctovec')i.([:m[),:[:m]
   'January' bigger 'May'
0
   'June' bigger 'May'
1

@ ডেনিসের চতুর পদ্ধতিটি ব্যবহার করে একটি আরও সংক্ষিপ্ত সংস্করণ :

জে, 34 বাইট

>&:('ubMAanlseov'&i.@:{.@:(10&|.))

3

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

আমার প্রথম কোড গল্ফ, হ্যাঁ! এটির সাধারণ ধারণাটি জেলের শীর্ষ উত্তরের দ্বারা অনুপ্রাণিত হয় এবং মাসের নামগুলি যখন সাইকেল চালানো হয় তখন 11 তম চরিত্রটি সর্বদা অনন্য।

e s=head.drop 10$cycle s;a#b=elem(e b)$tail$dropWhile(/=e a)"ubMAanlseovc"

এটি কীভাবে কাজ করে তা দেখার জন্য এখানে একটি অসমাপ্ত সংস্করণ দেওয়া হয়েছে:

order :: String
order = "ubMAanlseovc"

eleventhChar :: String -> Char
eleventhChar
  = head . drop 10 $ cycle

inOrder :: String -> String -> Bool
inOrder m1 m2
  = elem (eleventhChar m2) (tail $ dropWhile (/= eleventhChar m1) order)

eফাংশন eleventhChar ফাংশন (দুঃখিতভাবে monomorphism সীমাবদ্ধতা আমি মনে করি কারণে 4 বাইট বন্ধ স্ট্রিপ করা যাবে না) এবং প্রতিনিধিত্ব করে #করতে পোতা ফাংশন অনুরূপ inOrderফাংশন।

একটি ঝরঝরে সামান্য সমাধান, তবে আরও বাইট শেভ করার উপায় থাকতে পারে (আমি এটি লেখার সময় কিছুটা খুঁজে পেয়েছি!)


আপনি কমান পারে e s=head.drop 10$cycle sমত ব্যবহার করে আপনার ব্যাখ্যা করেছিল .পরিবর্তে $: e=head.drop 10.cycle। তবে তালিকা সূচক অপারেটরটি ব্যবহার !!আরও ছোট:e=(!!10).cycle
লাইকনি

দুর্দান্ত পরামর্শ। কখনও কখনও আপনি কেবল এই বিষয়গুলি উপেক্ষা করেন। অনেক ধন্যবাদ. এটি শীঘ্রই সম্পাদনা করবে।
বোর

2

জাভা, 133 123

Golfed:

boolean f(String a,String b){return h(a)<h(b);}int h(String s){return"anebarprayunulugepctovec".indexOf(s.substring(1,3));}

আমি এসেম্বলারের উত্তরের মতো একটি চতুর কৌশলটি অনুসন্ধান করছিলাম, তবে এটি বের করতে খুব বেশি সময় লাগছিল তাই আমি প্রত্যেকে যেভাবে ব্যবহার করেছি একই কৌশলটি নিয়ে চলেছি।

Ungolfed:

import java.util.Random;

public class SortTheMonthsOfTheYear {

  public static void main(String[] args) {
    // @formatter:off
    String[] MONTHS = new String[] {
        "January", "February", "March",
        "April",   "May",      "June",
        "July",    "August",   "September",
        "October", "November", "December"
    };
    // @formatter:on

    Random r = new Random();
    for (int i = 0; i < 100; ++i) {
      int m1 = r.nextInt(MONTHS.length);
      int m2 = r.nextInt(MONTHS.length);
      System.out.println("Input: " + MONTHS[m1] + " < " + MONTHS[m2]);
      System.out.println("Expected: " + (m1 < m2));
      System.out.println("Actual:   " + new SortTheMonthsOfTheYear().f(MONTHS[m1], MONTHS[m2]));
      System.out.println();
    }
  }

  // Begin golf
  boolean f(String a, String b) {
    return h(a) < h(b);
  }

  int h(String s) {
    return "anebarprayunulugepctovec".indexOf(s.substring(1, 3));
  }
  // End golf

}

substringপরিবর্তে আপনি যদি ব্যবহার করতে পারেনcharAt
অ্যানাটোলিগ

@ অ্যানটোলিগ ধন্যবাদ, আমি নিশ্চিত না যে সে কীভাবে আমাকে পলায়ন করেছে। "" +কোনও কাঁচা নেই বলে আমিও সরাতে সক্ষম হয়েছি char

2

লিনাক্স 44 এ 40 বাইটে এআরএম মেশিনের ভাষা

e28fc001     add ip, pc, #1
e12fff1c     bx ip
6803         ldr r3, [r0, #0]
6808         ldr r0, [r1, #0]
4a05         ldr r2, [pc, #20]
f08303dd     eor.w r3, r3, #221
f08000dd     eor.w r0, r0, #221
4353         muls r3, r2
4350         muls r0, r2
4283         cmp r3, r0
bfac         ite ge
2000         movge r0, #0
2001         movlt r0, #1
4770         bx lr
2f68f24c

আমি চেয়ে ভিন্ন হ্যাশ ফাংশন ব্যবহার করা anatolyg এর সমাধান এবং কয়েক বাইট সংরক্ষণ করতে ব্যবহার থাম্ব নির্দেশাবলী চেষ্টা (যদিও আমি 8 বাইট থাম্ব মোড প্রবেশ blew)।

আপনি এটি GNURoot সহ একটি রাস্পবেরি পাই বা অ্যান্ড্রয়েড ডিভাইসে ব্যবহার করে দেখতে পারেন।

int main(int argc,char**argv){
return ((int(*)(char*,char*))"\
\1\xc0\x8f\xe2\
\x1c\xff\x2f\xe1\
\3\x68\x8\x68\
\5\x4a\x83\xf0\
\xdd\3\x80\xf0\
\xdd\x43\x53\x43\
\x50\x4a\x83\x42\
\xac\bf\0\x20\
\1\x20\x70\x47\
\x4c\xf2\x68\x2f\
")(argv[1],argv[2]);}

চালানোর জন্য কিছু লিখুন

$ ./foo January February; echo $?

বর্তমান সংস্করণ এখন সমতা কেস (এবং অন্যদের) সঠিকভাবে পরিচালনা করে।


আমি মনে করি আপনার এমন কোডের দরকার নেই যা স্পষ্টভাবে থাম্ব মোডে স্যুইচ করে। আমি যা মনে করি তা থেকে আপনার লিঙ্কারটি কেবলমাত্র আপনার পদ্ধতিটি থাম্ব মোডে থাকা দরকার, এবং লিঙ্কারটি আপনার পদ্ধতির ঠিকানায় LSB সেট করে 1 তে সেট করে রাখবে, সুতরাং আপনার কোডটি কল করার সময় প্রসেসরটি স্বয়ংক্রিয়ভাবে থাম্ব মোডে স্যুইচ করবে।
anatolyg

এছাড়াও, কি করে bfac?
anatolyg

@anatolyg ite geশর্তসাপেক্ষে (পরবর্তী নির্দেশ executes movge r0, #0হলে) r3 >= r0, অন্যথায় নির্দেশ নিম্নলিখিত যে মৃত্যুদন্ড কার্যকর করা হয় ( movlt r0, #1)। আমি মনে করি এখানে বেশ কয়েকটি বাইট
ছুঁড়ে ফেলার

1

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

*.sort({index 'anebarprayunulugepctovec',.substr(1,2)})

তুলনা সংস্করণগুলির জন্য এটি আরও কয়েকটি বাইটের প্রয়োজন হবে:

{[<] @_».&{index 'anebarprayunulugepctovec',.substr(1,2)}}
{[<] .map: {index 'anebarprayunulugepctovec',.substr(1,2)}}

টেস্ট:

#! /usr/bin/env perl6
use v6.c;
use Test;

my @months = <
  January February March April May June July
  August September October November December
>;

my &month-sort = *.sort({index 'anebarprayunulugepctovec',.substr(1,2)});

plan 100;

for ^100 {
  # 「.pick(*)」 returns all elements in random order
  is-deeply month-sort(@months.pick(*)), @months.List;
}

1

হাস্কেল, ১১৮ টি অক্ষর

data M=Ju|Fr|Mc|Ai|My|Je|Jy|Au|St|Oo|Ne|De deriving(Ord,Eq,Read)
r=read.([head,last]<*>).lines.take 4
a#b=(r a::M)<r b

এই তথ্যের ব্যবহার করে যে প্রতিমাসের নামটি তার প্রথম এবং চতুর্থ অক্ষরগুলিতে (বা মে মাসের জন্য 3 য়) অনন্য, এমন একটি ডেটা টাইপ সংজ্ঞায়িত করতে পারে যা ভাষার সাথে স্বয়ংক্রিয়ভাবে পার্স এবং তুলনা করা যায়। 'আর' ফাংশনটি প্রথম চারটি অক্ষর (বা তার চেয়ে কম) ধরে ধরে একটি স্ট্রিংকে রূপান্তর করে, তারপরে কেবল প্রথম এবং শেষটি বাছাই করে। তারপরে 'a # b' মানগুলির তুলনা করতে অপারেটর:

*Main> "June" # "March"
False
*Main> "June" # "July"
True
*Main> "January" # "July"
True
*Main> "January" # "November"
True
*Main> "December" # "November"
False

সম্ভবত আরও দক্ষ উপায়ে করা যেতে পারে, তবে আমি মাসগুলি উপস্থাপনের জন্য একটি দরকারী ডেটা টাইপ ব্যবহার করে এটি চেষ্টা করে দেখতে চেয়েছিলাম।


1

পাওয়ারশেল, 96 88 63 বাইট

$input|Sort{'anebarprayunulugepctovec'.IndexOf((-join$_[1,2]))}

যেমন

PS C:\Code> 'February', 'January', 'December', 'April' | .\monthsort.ps1
January
February
April
December

তালিকার ক্রম অনুসারে বাছাইয়ের দ্বিতীয় চ্যালেঞ্জ এখন; আগের সংস্করণগুলি দুই মাসের পরীক্ষার তুলনা করেছে:

v2.
$l,$r=$args|%{-join$_[1,2]};($d='anebarprayunulugepctovec').indexof($l)-lt$d.IndexOf($r)

v1.
$l,$r=$args|%{-join$_[1,2]};$r-match('an|eb|ar|pr|ay|un|ul|ug|ep|ct|ov|ec'-split$l)[1].Trim('|')

e.g.

PS C:\code> .\Test-MonthsInOrder.ps1 January February
True

মাসের নামের দ্বিতীয় দুটি অক্ষরের উপর ভিত্তি করে।



0

জাভাস্ক্রিপ্ট, 118 বাইট

u=p=>{p=p.split` `.sort();c=[];for(i=0;i<12;i++){c.push(p["4 3 7 0 8 6 5 1 11 10 9 2".split` `[i]]);}return c.join` `}

আরও গল্ফ করা যেতে পারে, সম্ভবত পরিত্রাণ পেয়ে cএবং ব্যবহারের মাধ্যমে array.map, তবে আমার কাছে এটিই এখন ...


for(i=0;i<12;)c.push(p[[4,3,7,0,8,6,5,1,11,10,9,2][i++]]);
গোলাপিফ্লোয়েডএক্স 33

0

বাশ, 101 বাইট

এটি is_later এর মতো ফাংশন

f(){ s=ubMAanlseovc a=$1$1$1 b=$2$2$2 c=${a:10:1} d=${b:10:1} e=${s%$c*} f=${s%$d*};((${#e}<${#f}));}

পরীক্ষা

$ f January December && echo later || echo not later
not later

0

k4, 29

{x@<"ubMAanlseovc"?(*|11#)'x}

@ ডেনিসের জেলি উত্তরের একটি বন্দর ।

এটি বাছাইকারী, তুলনামূলক নয়; মজার বিষয় হল, তুলকটি একই অ্যালগরিদম দ্বারা তুচ্ছভাবে প্রয়োগযোগ্য এবং কেবলমাত্র একটি বাইট দীর্ঘায়িত:

{(<)."ubMAanlseovc"?(*|11#)'x}

0

বাশ + কোর্টিলস, 94 বাইট 93 বাইট

s(){ x=FMAyulgSOND;for y;{ rev<<<${y:0:3}|tr -d -C $x|tr $x C-M;echo B$y;}|sort|cut -f2 -dB;}

এটি এমন একটি রূপান্তর নিয়ে আসার চেষ্টা যা অভিধানিকভাবে সাজানো s আপনি যদি রূপান্তর কীটি ঘনিষ্ঠভাবে লক্ষ্য করেন তবে FMAyulgSONDআপনি ফেব্রুয়ারী মাস থেকে ডিসেম্বর মাসের মধ্যে দেখতে পাবেন (ট্রান্সফর্মের পরে জানুয়ারি খালি হয়ে যায়; এটি বিভাজক হিসাবে 'বি' ব্যবহার করে শীর্ষে টানানো হয়)। বিপরীতকরণ, ছাঁটাই করা এবং নন-কীযুক্ত অক্ষরগুলি সরিয়ে ফেলা এই কৌশলটিকে টেনে তোলার অনুমতি দেয়।

সি লোকেল ব্যবহার করে 90 বাইট

s(){ x=FMAyulgSOND;for y;{ rev<<<${y:0:3}|tr -d -C $x|tr $x C-M;echo \␉$y;}|sort|cut -f2;}

... যেখানে the ট্যাব চরিত্র।

সি লোকেল ব্যবহার করে 80 বাইট

s(){ x=anebarprayunulugepctovec;for y;{ echo ${x%${y:1:2}*}\␉$y;}|sort|cut -f2;}

... অ্যাটলাসোলজের পদ্ধতিটি ব্যবহার করে। আরও লোকেল নিয়ে কাজ করার জন্য এই পদ্ধতির ব্যবহারের উপায় হতে পারে ound

পরীক্ষা / ব্যবহারের

s December November October September August July June May April March February January

আউটপুট:

January
February
March
April
May
June
July
August
September
October
November
December
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.