छोटे महीने के नाम को उनके लंबे समकक्षों में बदलें [समाप्त]


28

यह चुनौती समाप्त हो गई है! बधाई हो फूलक !

मुझे यकीन था कि मुझे एक अच्छा ग्रेड मिलेगा, लेकिन फ्लोंक के मेरे काम में बदल जाने के बाद , मेरे प्रोफेसर को विश्वास नहीं हुआ कि यह मेरा है और यह भी समझ नहीं सका कि यह इतना जटिल क्यों था ... मैं असफल रहा और मेरी माँ ने मुझे फेसबुक और माइनक्राफ्ट से हटा दिया। एक महीने के लिए। मुझे समझ नहीं आ रहा है। :(

आपके सभी प्रस्तुतियाँ के लिए धन्यवाद! कुछ बेहतरीन जवाब यहाँ। आधिकारिक विजेता 64 के स्कोर के साथ फ्लोंक है । शीर्ष 5 हैं:

  1. फ्लोंक , 64 (हास्केल, कुशल गणित के साथ!)
  2. DigitalTrauma , 40 (बादल, भविष्य अब है)
  3. प्राइमो , 38 (पायथन, और मेरा व्यक्तिगत पसंदीदा - और बहुत पेशेवर!)
  4. सिल्वेस्टर , 20 (रैकेट, हालांकि जेनम्बर इसे खींच रहा है!)
  5. ilmale , 16 ( लुआ में एक अत्यधिक अनुकूलित एल्गोरिदम)

नीचे मूल चुनौती।


कृपया मेरी मदद करो, यह बहुत जरूरी है !!! :(

मुझे महीने के नामों के छोटे संस्करणों को उनके लंबे अभ्यावेदन (जैसे "दिसंबर" -> "दिसंबर"), केस-इनसेंसिटिव में बदलने की आवश्यकता है। अभी मैं जावा का उपयोग कर रहा हूं; महीने का नाम एक स्ट्रिंग है और मैं इसे पहले दिनांक ऑब्जेक्ट में परिवर्तित नहीं करूंगा। कोई भी भाषा, हालांकि करेगी।

क्या इसे करने का कोई आसान तरीका है?? जाओ आसान कृपया मैं प्रोग्रामिंग के लिए नौसिखिया हूँ!


यह एक कोड ट्रोलिंग लोकप्रियता प्रतियोगिता है (सबसे अच्छी तरह वहाँ है!)। 8 अप्रैल 2014 को सबसे अधिक उत्थान के साथ जवाब जीत गया।


7
"कृपया मेरी मदद करो, यह बहुत जरूरी है !!! :(" <<< मेरा होमवर्क करो, जल्दी करो?

13
@ यति जितनी जल्दी हो सके !! इससे पहले कि मैं अपनी कक्षा में विफल हो जाऊं!
जेसन सी

24
एक ऐसी सुविधा होनी चाहिए जो कि Stackoverflow से codegolf.SE को कोड-ट्रोलिंग टैग के साथ गुप्त रूप से इस तरह के प्रश्नों को कॉपी करेगी, और फिर कोडगॉल्फ से उत्तर दिए होंगे। पाठ को स्पॉइलर टैग में पाठ के साथ मूल पोस्ट पर वापस स्थानांतरित कर दिया जाए।
डानिएरो

कोड-ट्रोलिंग आधिकारिक रुख के अनुसार हटाए जाने की प्रक्रिया में है यह सवाल बहुत सारे जवाबों के साथ बहुत ज्यादा वोट दिया जाता है, जिनमें से कई बेहद उच्च मतदान वाले होते हैं। इसने मतदान पर केवल 50% "हटाएं" वोटों को प्राप्त किया , लेकिन यह अद्वितीय है कि इसने इतने सारे उत्तर और वोट प्राप्त किए, इसलिए मैं इसे ऐतिहासिक महत्व के लिए बंद कर रहा हूं।
डॉर्कनोब

जवाबों:


74

यह थोड़ा सा बहुपद प्रक्षेप के साथ वास्तव में सरल है!

सबसे पहले, मैंने छोटे महीने के नामों की सूची देखी

["jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"]

और उनके पात्रों के योग ASCII मान की जाँच की

[313,301,320,323,327,333,331,317,328,326,339,300]

फिर उन लोगों से 300 घटाया, जो मैं यहाँ काम कर रहा हूँ, यह समझने के लिए, और एक ऐसा एरे तैयार किया, जिसमें महीनों के नामों के सभी लंबे संस्करण शामिल हैं।

[13,1,20,23,27,33,31,17,28,26,39,0]
mons = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]

मुझे लगता है कि आप देख सकते हैं कि अभी क्या चल रहा है - मुझे बस एक फ़ंक्शन मिल रहा है, जो कि 13 से 0, 1 से 1, 20 से 2 तक के नक्शे हैं, और इसी तरह, इसलिए मैं बस कर सकता हूं

getMonthName shortname = mons !! (getIndex shortname)

सौभाग्य से, वुल्फराम | अल्फा मेरे लिए यह कर सकता है ! संख्या थोड़ी बड़ी हो जाती है, लेकिन हास्केल अनुग्रह के साथ इसे संभाल सकता है। हमें केवल परिणामों को गोल करने की ज़रूरत है, क्योंकि फ्लोटिंग-पॉइंट-अंकगणित थोड़ा अशुद्ध है! तो तुम वहाँ जाओ, तेज, सुरुचिपूर्ण, और मुहावरेदार हास्केल:

import Data.Char

getIndex x = round $ 11 -
    (220797068189915461*x)/11644212222720 +
    (184127469431441671621*x^2)/6982771136140800 -
    (8800438195450444577647153*x^3)/1013060436431307264000 +
    (2826703553741192361967823*x^4)/2026120872862614528000 -
    (269098602165195540339443*x^5)/2026120872862614528000 +
    (13744405529566098359*x^6)/1692665725031424000 -
    (13060656886070844161*x^7)/39727860252208128000 +
    (5939638907108115199*x^8)/675373624287538176000 -
    (303426664924585177*x^9)/2026120872862614528000 +
    (2983240583426137*x^10)/2026120872862614528000 -
    (12901227927103*x^11)/2026120872862614528000

mons = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
getMonthName = (mons!!).getIndex.subtract 300.fromIntegral.sum.fmap (ord.toLower)

इसे इस तरह से चलाएं:

λ> getMonthName "DeC"
"December"

λ> getMonthName "jan"
"January"

3
बहुत अच्छे और पूर्णांक बहुत कुशल हैं मुझे यकीन है कि मेरा प्रशिक्षक मेरे काम को पसंद करेगा!
जेसन सी

8
मुझे सिखाने के लिए +1 interpolating polynomial
प्रिमो

3
आपका पहला वाक्य पढ़ते हुए मुझे हँसना पड़ा।
एनाफोरी

46

बैश + जीएनयू उपकरण + "बादल"

Google के पास हर चीज का जवाब है, और मैं भाग्यशाली महसूस कर रहा हूं :

wget -qU Mozilla -O- "http://www.google.com/search?q=$1+month&btnI" | grep -Eo "<title>[[:alpha:]]+" | cut -d\> -f2

उपयोग में:

$ ./longmonth.sh jan
January
$ ./longmonth.sh feb
February
$

1
अच्छा खेला सर!
ओजबलास

के [a-zA-Z]लिए एक प्रतिस्थापन के रूप में काम नहीं करेगा [[:alpha:]](ऐसा लगता है जब मैं इसे कम से कम कोशिश करता हूं)? इससे 3 वर्ण बचेंगे। क्वेरी करने से कुछ और वर्णों को बचाया जा सकता है ask.com, लेकिन यह उतना विश्वसनीय नहीं हो सकता है।
माइकल

7
@ मायिक जो अगर बात करता तो यह कोड गोल्फ होता
अंडरग्राउंडोरेल

7
@JasonC इसका "क्लाउड-आधारित" समाधान है। निश्चित रूप से किसी और औचित्य की जरूरत नहीं है।
डिजिटल ट्रामा

4
@DigitalTrauma प्रिय महोदय Ive बादल के बारे में सुना है और यह बहुत ही पेशेवर है! बहुत अच्छा! बहुत आश्वस्त हैं! Ty -JasonC
जेसन सी

43

अजगर

क्योंकि यह फ़ंक्शन बहुत महत्वपूर्ण है, यह संभवतः बहुत अधिक उपयोग किया जाएगा, इसलिए आपको इसे जितनी जल्दी हो सके बनाने की कोशिश करनी चाहिए। अन्य पोस्टरों में हैशमैप लुक-अप का उपयोग करने की सिफारिश की गई है ... ऐसा न करें! सरणियों की तुलना में हैशमैप वास्तव में धीमे होते हैं । आपको बस प्रत्येक संक्षिप्त नाम को संख्या में बदलना होगा। इसके लिए एक मानक हैशिंग तकनीक का उपयोग किया जा सकता है:

index = reduce(int.__mul__, (ord(c) for c in abbr))

यह लगभग अद्वितीय होने की गारंटी है, और बहुत सारे पेशेवर उपकरण इसका उपयोग करते हैं।

अब आपको एक लुक-अप फ़ंक्शन बनाने की आवश्यकता है:

def month_abbr_to_name(abbr):
  months = ["Unknown"] * 2000000

  months[679932]  = "December"
  months[692860]  = "Febuary"
  months[783315]  = "August"
  months[789580]  = "January"
  months[829920]  = "April"
  months[851466]  = "March"
  months[903749]  = "May"
  months[907236]  = "October"
  months[935064]  = "July"
  months[938896]  = "September"
  months[952380]  = "June"
  months[1021644] = "November"

  index = reduce(int.__mul__, (ord(c) for c in abbr))

  month_name = months[index]

  if month_name == "Unknown":
    raise ValueError("Invalid month abbreviation!")

  return month_name

और इसे इस तरह से उपयोग करें:

print month_abbr_to_name("Dec")December

HTH!


ट्रोलिंग

- यह कोड भयावह रूप से धीमा है। हालाँकि सरणी एक्सेस वास्तव में हैशमैप्स से अधिक तेज़ है, यह लागू नहीं होता है यदि सरणी आवश्यक हैशमैप की तुलना में हजारों गुना बड़ा है।
- यह अविश्वसनीय रूप से बड़े सरणी को फिर से बनाया जाता है, और फिर से, हर बार फ़ंक्शन को कहा जाता है। थोड़ी अधिक जगह बर्बाद करने के लिए, प्रत्येक मूल्य को "अज्ञात" के साथ आरंभ किया जाता है।
- हैशिंग फंक्शन का अर्थ किसी ऐसे व्यक्ति के प्रति अस्पष्ट होना है जो पायथन के साथ अपरिचित है। मैं जोड़ता हूं कि जांच को हतोत्साहित करने के लिए इसे "बहुत सारे पेशेवर साधनों में उपयोग किया जाता है"।
- हैशिंग फ़ंक्शन बारह महीनों के बीच सही ढंग से भेद करने के लिए अद्वितीय है, लेकिन कई सामान्य टाइपोस को नहीं पकड़ता है, जैसे कि स्वैप किए गए वर्ण।
- बस किसी भी स्ट्रिंग के बारे में 3 चार्ट से अधिक सरणी सूचकांक पर दुर्घटनाग्रस्त हो जाएगा।
- "फेएशोर" गलत वर्तनी है।
- "यह समारोह बहुत महत्वपूर्ण है।" ओपी के लिए मामूली अहंकार-रगड़।


12
अच्छी तरह देख लो, दोस्तों; यह एक उचित कोड-ट्रोलिंग उत्तर है! Ps। मुझे यकीन है कि मुझे इसके साथ एक अच्छा ग्रेड मिलेगा और यह बेहतर होगा तो स्लो जावा शेल स्क्रिप्ट जिसे मैं लिखने की कोशिश करता हूं?! [यहाँ चित्र विवरण दर्ज करें]
जेसन सी

2
"फ़्यूचर्स" गलत वर्तनी है। - कुछ गंभीर ट्रोलिंग :)
Jaa-c

10
+1 यह कहने के लिए कि हैश टेबल अक्षम हैं, फिर वास्तव में अक्षम हैश तालिका को लागू करना
James_pic

1
"हैशमैप वास्तव में सरणियों की तुलना में धीमा हैं । आपको बस प्रत्येक संक्षिप्त नाम को संख्या में बदलने की आवश्यकता है। इसके लिए एक मानक हैशिंग तकनीक है जिसका उपयोग किया जा सकता है ..." इसलिए दूसरे शब्दों में एक हैश मानचित्र को फिर से लागू करें। हा। +1
wchargin

25

रैकेट

मैं एक के लिए जाना KISS समाधान । मैंने ओपी के उपयोग के मामले में "डिक" के साथ सभी कैप्स के साथ यह जांचने के लिए परीक्षण किया है कि क्या सही परिणाम वापस आ गया है। यह उड़ते हुए रंगों के साथ गुजरा।

(define (long-month short-month)
  (define end "ember")   
  (string-titlecase 
   (string-append short-month end)))

;; Test OP's use case
(long-month "DEC") ;;==> "December"

जाहिर है यहां ट्रोलिंग यह है कि यह केवल कुछ मामलों के लिए काम करता है इसलिए यह बेकार है :-)


शायद इसलिए, कोड-ट्रोलिंग टैग विकी से, "कार्य कोड देना है जो काम करता है, लेकिन बेकार है, ओपी को गंभीर रूप से निराश करता है।" आपका कोड भी काम नहीं करता है। यहाँ, एक और नीचे है।
user12205

@ यह कोई त्रुटि नहीं है और यह सही उत्तर "दिसंबर" देता है। प्रश्न में यह निर्दिष्ट नहीं किया गया है कि यह अन्य महीनों के लिए काम करना चाहिए या उनके पास कौन से लंबे नाम होंगे, इसलिए मैं उम्मीद कर रहा हूं कि अंत में "एम्बर" जोड़ने के लिए एक अच्छा ट्रोल उत्तर है।
सिल्वेस्टर

1
इस सवाल से, "मुझे महीने के नामों के छोटे संस्करणों को अपनी लंबी अभ्यावेदन (जैसे" दिसंबर "->" दिसंबर ") में बदलने की आवश्यकता है" दिसंबर एक उदाहरण है, सभी मामलों में नहीं। आपका कार्यक्रम सभी महीने के नामों के लिए काम करना चाहिए।
user12205

9
@ace और यह करता है। यह "जन" को "जनम्बर" में बदल देता है, इस उदाहरण को देखते हुए कि वास्तव में ओपी क्या चाहता है। मैं वास्तव में यह नहीं देख सकता कि "प्रश्न को जानबूझकर गलत तरीके से व्याख्या करने" और "प्रश्न पर धोखा" देने के बाद से कोई भी कोड-ट्रोलिंग टैग के लिए उत्तर को कैसे रद्द कर सकता है।
सिल्वेस्टर

7
यह ठीक उसी प्रकार का समाधान है जिसे मैं पेशकश करने के बारे में सोच रहा था, "अस्वीकरण के साथ: आपने कहा कि यह जरूरी था, इसलिए मैं भाग गया और केवल 3 मामलों का परीक्षण किया, लेकिन यह उन सभी के लिए पारित हो गया"।
एशेल्ली

22

LUA

मेरा समाधान आपकी स्थानीय भाषा में काम करेगा, आपके प्रोफेसर खुश होंगे

input = ...
found = false
input = string.lower(input)

i = 12
while i > 0 do
   abb = os.date("%b")
   if string.lower(abb) == input then
      print(os.date("%B"))
      return
   end
   os.execute('sleep 28d')
   i = i - 1
end
print('not found')

परीक्षा

lua 25207.lua aPr
April

चालू माह के संक्षिप्त नाम की जाँच करें, यदि सही है तो लंबी स्ट्रिंग वापस करें अन्यथा पुनः प्रयास करें .. एक महीने का समय


प्रतिभाशाली! मुझे अपनी पुरानी नौकरी में उस समय की याद दिलाता है जब मैं <<< त्रुटि थी: कनेक्शन समय समाप्त हो गया। >>>
joeytwiddle

13

पर्ल

use re 'eval';$_=lc<>;
s/b/br/;s/an|br/$&uary/;s/(?<!u)ar/arch/;s/r$/ril/;s/p$/pt/;s/t|v|c$/$&ember/;
s/ju(.)/$&.$1=~tr\/nl\/ey\/r/e;s/(?<=g)/ust/;s/ctem/cto/;
print ucfirst;

- रेगेक्स नर्क। मुझे आशा है कि रेगेक्स की गिनती "अस्पष्ट भाषा द्वारा ट्रोलिंग" के रूप में नहीं होती है।
- बेहद नाजुक। आपके पास Bugsember के लिए एक समर्थन जोड़ने का कठिन समय होगा।
- अपठनीय। पैटर्न के अंदर पैटर्न इसे और भी अधिक बनाता है।
- एक बयान में जून और जुलाई का संपीड़न वास्तव में कुछ भी संपीड़ित नहीं करता है।
- gजबकि अन्य लोगों के प्रतिस्थापन में पैटर्न को दोहराते हैं, के लिए खोज के यादृच्छिक उपयोग ।
- use re 'eval'वास्तव में जरूरत नहीं है; इसका उपयोग केवल तब किया जाता है जब एक चर पैटर्न चाहता है। इसके अलावा, evalथोड़ा "संपीड़न" "लाभ" का उपयोग करें ।


17
मेरे लिए सामान्य पर्ल की तरह दिखता है ...
पीटर ओल्सन

1
@PeterOlson एल्गोरिथम को सूट करने के लिए भाषा को चुना गया था, लेकिन एल्गोरिथ्म कार्य को बिल्कुल भी सूट नहीं करता है, क्या आप सहमत नहीं हैं? :-)
जॉन ड्वोरक

10

जावा

आपने जावा में अपने वर्तमान कोड को कहा है, इसलिए मैंने सोचा कि मैं आपके लिए चीजें आसान कर दूंगा।

// The standard library's there, so you should use it
import static java.util.Calendar.*;

public class MonthConverter {

  private static int shortNameToNumber(String shortName) {
    int i;
    switch (shortName) {
      case "jan": i = 1;
      case "feb": i = 2;
      case "mar": i = 3;
      case "apr": i = 4;
      case "may": i = 5;
      case "jun": i = 6;
      case "jul": i = 7;
      case "aug": i = 8;
      case "sep": i = 9;
      case "oct": i = 10;
      case "nov": i = 11;
      case "dec": i = 12;
      default: i = 0;
    }
    return i;
  }

  private static String numberToLongName(int month) {
    switch (month) {
      case JANUARY: return "January";
      case FEBRUARY: return "February";
      case MARCH: return "March";
      case APRIL: return "April";
      case MAY: return "May";
      case JUNE: return "June";
      case JULY: return "July";
      case AUGUST: return "August";
      case SEPTEMBER: return "September";
      case OCTOBER: return "October";
      case NOVEMBER: return "November";
      case DECEMBER: return "December";
      default: return "Unknown";
    }
  }

  public static String fullName(String shortName) {
    return numberToLongName(shortNameToNumber(shortName));
  }

  public static void main(String[] args) {
    // Always test your code
    System.out.println("jan is: " + fullName("jan"));
    assert fullName("jan").equals("January");
  }
}

कैलेंडर क्लास में एक छोटा सा गेटा होता है, जहाँ महीने 0 से शुरू होते हैं JANUARY == 0। हालाँकि, यह स्पष्ट रूप से हमारे कोड को प्रभावित नहीं कर सकता है, क्योंकि हम इसका परीक्षण करते हैं, है ना? ध्यान दें कि shortNameToNumber में एक अनपेक्षित स्विच फ़ॉलथ्रू है, जिसका अर्थ है कि हर महीने 0. हाथ से समाप्त होता है JANUARY == 0, इसलिए हमारा परीक्षण पास हो जाता है।


1
हे भगवान, मैंने स्विच स्टेटमेंट में टूट की कमी को नोटिस नहीं किया। यह एक लंबे समय के बाद से मैं एक स्विच का उपयोग किया है।
जो जेड।

10

बैश + कोरुटिल्स + paq8hp12

वर्तमान में सबसे अधिक उत्तर दिया गया है कि हर क्वेरी के लिए इंटरनेट का उपयोग करना है। बहुत अक्षम होने के अलावा, इसका मतलब यह भी है कि अगर कोई इंटरनेट नहीं है, तो आपकी स्क्रिप्ट विफल हो जाएगी।

अपनी हार्ड डिस्क पर आवश्यक जानकारी संग्रहीत करना बेहतर है। बेशक, आप इस बहुत ही स्क्रिप्ट के लिए आवश्यक डेटा संग्रहीत कर सकते हैं, लेकिन इसके लिए अलग-अलग कार्यों के लिए अलग-अलग डेटा की आवश्यकता होगी। यह संभवतः उन सभी डेटाों को संग्रहीत करने के लिए बेहतर है, जिनकी आपको संभवतः एकल बहुउद्देश्यीय फ़ाइल में आवश्यकता हो सकती है।

# This script is supposed to output only the wanted information, so we'll have to close
# STDERR and make sure accidental keyboard presses don't show any characters on the screen.

exec 2>&-
stty -echo

# Unfortunately, Bash doesn't have goto labels. Without them, it's impossible to use if
# statements, so we'll implement them.

goto()
{
    exec bash <(egrep -A 1000 "^: $1" $0) $BASH_ARGV
}

# We'll need enwik8, a magic file containing all the important Wikipedia data. EVERYTHING
# can be found on Wikipedia, so this file contains all the information any script could
# possibly need.

ls | grep -q enwik8 && goto alreadydownloaded

# Too bad.

wget http://mattmahoney.net/dc/enwik8.zip
unzip enwik8.zip

# ZIP is a very wasteful format and hard disk space is expensive. It is best to compress
# the file using a more efficient algorithm.

wget http://mattmahoney.net/dc/paq8hp12any_src.zip
unzip paq8hp12any_src.zip

# Make the compression program executable and compress the magic Wikipedia file.

chmod +x paq8hp12_l64
./paq8hp12_l64 enwik8.paq8 enwik8

: alreadydownloaded

# Extract the enwik8 file from the paq archive.

./paq8hp12_l64 enwik8.paq8 enwik8

# Now we use a simple POSIX Basic Regular Expression to find the required information in
# the file.

cat enwik8 | egrep -io "[0-9].[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?.[0-9]" | sort | uniq -c | sort -n | tac | egrep -o "$1[a-z]*" | sort | uniq -c | sort -n | tac | head -n 1 | cut -d ' ' -f 7

# We're done.

ट्रोलिंग

  • STDERR को बंद कर देता है, इसलिए यदि यह विफल होता है तो हम स्क्रिप्ट को डीबग नहीं कर पाएंगे।

  • इनपुट की गूंज को निष्क्रिय करता है, जो स्क्रिप्ट के समाप्त होने के बाद बनी रहती है। यदि किसी टर्मिनल से निष्पादित किया जाता है, तो आपको अपने टर्मिनल को फिर से उपयोग करने के लिए स्टिक इको निष्पादित करना होगा। यदि किसी टर्मिनल से निष्पादित नहीं किया जाता है, तो यह स्क्रिप्ट को क्रैश कर सकता है।

  • पहले गोटो को लागू करने की आवश्यकता है । जैसे कि यह अपने आप में बहुत खराब नहीं था, अगर स्क्रिप्ट के फ़ाइलनाम में रिक्त स्थान हैं , तो गोटो फ़ंक्शन काम नहीं करेगा।

  • हम स्ट्रिंग को डाउनलोड नहीं करेंगे यदि स्ट्रिंग युक्त फ़ाइल ww8 वर्तमान निर्देशिका में मौजूद है। यह काम कर सकता है

  • 100 एमबी फ़ाइल डाउनलोड करना (भले ही 36 एमबी तक संकुचित हो) स्पष्ट रूप से इस कार्य के लिए ओवरकिल है। इसके अलावा, enwik8 में 4+ जीबी विकिपीडिया डंप का पहला 100 एमबी है, इसलिए एक विशिष्ट कार्य के लिए, इसमें कोई उपयोगी जानकारी शामिल होने की संभावना नहीं है।

  • Paq8hp12 के साथ फ़ाइल को संपीड़ित करना 16 एमबी तक सिकुड़ता है, लेकिन संपीड़न और विघटन दोनों एक घंटे लगते हैं। यह वास्तव में पहली बार दोनों इस स्क्रिप्ट को चलाया जाएगा।

  • स्क्रिप्ट enwik8 के ज़िपित या कच्चे संस्करण को नष्ट नहीं करता है , इसलिए इसे 16 एमबी तक सिकोड़ने से और भी अधिक हार्ड डिस्क स्थान की खपत होती है।

  • संपीड़न उपयोगिता केवल 64-बिट प्रोसेसर पर काम करेगी।

  • यह उन सभी फाइलों को छोड़ देता है जिन्हें वर्तमान निर्देशिका में डाउनलोड या निकाला गया है।

  • यह स्क्रिप्ट के सबसे पेचीदा हिस्से की व्याख्या नहीं करता है, जो रेगेक्स-पाइप मॉन्स्टर है। यह मूल रूप से 4 और 19 बाइट्स के बीच के सभी स्ट्रिंग्स को निकालता है जिसमें एक अग्रणी और अनुगामी अंक होता है, उन स्ट्रिंग्स को आवृत्तियों की संख्या से सॉर्ट करता है, छोटे महीने के नाम वाले स्ट्रिंग्स को फ़िल्टर करता है, पुन: घटनाओं की संख्या से सॉर्ट करता है और सबसे अक्सर प्रदर्शित करता है।

  • यहां तक कि अगर ऊपर था एक अच्छा विचार, बिल्ली शुरुआत में अनावश्यक है, egrep बल्कि इस कार्य के लिए धीमी है, regex वापस आ जाएगी एक बहुत गलत परिणामों की की (सब कुछ एक regex के साथ किया जा सकता है), पहली तरह | uniq -c | सॉर्ट-एन | tac कुछ भी नहीं पूरा करता है, यह सॉर्ट का उपयोग करता है | टैक के बजाय तरह -r और कटौती मज़बूती से काम नहीं करेगा क्योंकि शुरुआत में स्थानों की संख्या चर रहा है।

  • Regex एक विस्तारित POSIX रेग्युलर एक्सप्रेशन है, इसलिए BRE सिंटैक्स को पूरा करने में मदद नहीं करेगा।

  • रिटर्न नवम्बर के बजाय नवम्बर और 6 के बजाय अगस्त


1
ये बहुत मददगार सलाह हैं! निश्चित रूप से यह अधिक कुशल है और मेरे प्रशिक्षक ने मुझे बताया कि पेशेवर OOP के लिए डेटा को पुन: प्रयोज्य बनाते हैं और OOP तेज और बेहतर होता है!
जेसन सी

9

पायथन + SQLite

अब तक के कई जवाब महीने के नामों की हार्ड-कोडिंग की गलती करते हैं। लेकिन, आप कभी नहीं जानते कि कब कोई पोप या राष्ट्रपति हमें किसी अन्य कैलेंडर में बदलने जा रहा है, और फिर टन पार्सिंग / स्वरूपण कोड तुरन्त बेकार हो जाएगा! (या, अधिक सामान्यतः, जब आपको अपने कार्यक्रम का अंतर्राष्ट्रीयकरण करने की आवश्यकता होती है।)

आपको एक डेटाबेस की आवश्यकता है।

CREATE TABLE tblShortMonthNames (
   MonthAbbr CHAR(3) PRIMARY KEY NOT NULL COLLATE NOCASE,
   MonthID   INTEGER NOT NULL
);

CREATE TABLE tblFullMonthNames (
   MonthID   INTEGER PRIMARY KEY,
   MonthName VARCHAR(9) NOT NULL
);

INSERT INTO tblFullMonthNames VALUES (1, 'January');
INSERT INTO tblFullMonthNames VALUES (2, 'February');
INSERT INTO tblFullMonthNames VALUES (3, 'March');
INSERT INTO tblFullMonthNames VALUES (4, 'April');
INSERT INTO tblFullMonthNames VALUES (5, 'May');
INSERT INTO tblFullMonthNames VALUES (6, 'June');
INSERT INTO tblFullMonthNames VALUES (7, 'July');
INSERT INTO tblFullMonthNames VALUES (8, 'August');
INSERT INTO tblFullMonthNames VALUES (9, 'September');
INSERT INTO tblFullMonthNames VALUES (10, 'October');
INSERT INTO tblFullMonthNames VALUES (11, 'November');
INSERT INTO tblFullMonthNames VALUES (12, 'December');

INSERT INTO tblShortMonthNames
   SELECT SUBSTR(MonthName, 1, 3), MonthID FROM tblFullMonthNames;

फिर, इसे क्वेरी करने के लिए केवल एक सरल प्रोग्राम लिखें।

import sqlite3
import sys

QUERY = """SELECT tblFullMonthNames.MonthName
FROM tblShortMonthNames INNER JOIN tblFullMonthNames USING (MonthID)
WHERE tblShortMonthNames.MonthAbbr = ?"""

with sqlite3.connect('months.db') as db:
    for abbr in sys.argv[1:]:
        row = db.execute(QUERY, [abbr]).fetchone()
        if row:
            print(row[0])
        else:
            print(abbr + ' is not a valid month name.')

5

एसएच और एक दोस्त (तारीख)

कार्यक्रम:

longmonth() {
    date +%B -d"$1 1"
}

इसका परीक्षण:

$ echo $LANG
de_DE.utf8
$ for i in jan feb mar apr may jun jul aug sep oct nov dec ; do longmonth $i ; done
Januar
Februar
März
April
Mai
Juni
Juli
August
September
Oktober
November
Dezember
$ LANG=C
$ for i in jan feb mar apr may jun jul aug sep oct nov dec ; do longmonth $i ; done
January
February
March
April
May
June
July
August
September
October
November
December

यह छोटा है ... लेकिन गणना करें कि यह "प्रति वर्ण बुराई" अनुपात है ... mwhuaaahahahaaa ...


मैं भाषा नहीं जानता इसलिए मुझे यहाँ कुछ भी बुरा नहीं दिख रहा है। मुझे लगता है कि आपके डाउनवोट्स समान स्थिति में दूसरों से हैं। कृपया समझाएं कि क्या चल रहा है और यह क्यों बुराई है। मैं उत्सुक हूँ।
लेवल रिवर सेंट

यह (n) (एब) उपयोग की dateतारीख स्वरूपण सुविधाओं का है। और dateस्थानीयकरण का सम्मान करता है, यह स्थानीयकरण से मेल खाता महीना उत्पन्न करता है। -d"a_month_name 1नामित महीने के 1 (शायद कम नाम) को तारीख सेट करता है और लापता वर्ष निर्धारित किया जाता है, इसलिए यह अगले महीने होगा। +%Bदी गई तारीख और 'महीने का लंबा नाम' का अर्थ है के लिए प्रारूप है। सभी टाट को शेल फ़ंक्शन में लपेटा जाता है और क्योंकि इसमें कोई BASH विशिष्ट चीज नहीं है, इसलिए SH इसे चलाने के लिए पर्याप्त होगा। तो मूल रूप dateसे सभी तालियों के हकदार हैं, न कि मैं! और मैं codegolf में downvotes के बारे में परवाह नहीं है! :

मुझे यह पसंद है! Abuser।
ojblass

4

पर्ल

कैसे के बारे में कुछ अच्छा राजभाषा 'जानवर बल?

$|++;

use List::Util qw(reduce);

sub hash {
    my $t=9;
    (reduce { $a*$b*log(++$t+$a) } map { ord() } split//, shift)%54321098
}

my @m = (qw( january february march april may june
             july august september october november december ) );
my %targets = map { hash($m[$_]) => 1 } (0..$#m);

chomp(my $in = lc <>);

print ucfirst $in;

my $r;
if(!$targets{hash($in)}) {
  $r = "a";
  ++$r until $targets{hash($in.$r)};
}
print "$r\n";

यह भयानक क्यों है:

  • जानवर बल हमेशा ऐसा करने का सबसे पहला तरीका है।
  • आपकी सुविधा के लिए, इसका पता चलते ही आंशिक उत्तर प्रिंट कर देता है (मुझे यकीन है कि आपको नहीं पता था कि "फ़रवरी" किसी चीज़ के लिए छोटा है "फरवरी ..." ???)
  • अधिकतम सुरक्षा के लिए कस्टम हैशिंग फ़ंक्शन।
  • पर्ल के बिल्ट-इन ऑपरेटर ओवरलोडिंग (स्ट्रिंग्स पर वेतन वृद्धि) का उपयोग इस कोड को मूल सी कोड जितना तेज़ बनाता है। उन सभी शून्य को देखें, यह दिखाते हुए कि यह कितनी तेजी से चलता है!

    ski@anito:/tmp$ for m in mar apr may jun jul  ; do echo $m | time -f "%U user" perl brute.pl ; done 
    March
    0.00 user
    April
    0.00 user
    May
    0.00 user
    June
    0.00 user
    July
    0.00 user
    
  • एल्गोरिथ्म सहज रूप से स्पष्ट है, और मैं एक प्रमाण के रूप में पाठक को एक अभ्यास के रूप में छोड़ देता हूं, लेकिन यह सुनिश्चित करने के लिए कि यह सभी मामलों में काम करता है, चलो अगस्त की जाँच करें, -ber महीने में से एक, और हम सुनिश्चित करने के लिए -uaries में से एक सुनिश्चित करें कुछ भी याद नहीं है:

    ski@anito:/tmp$ for m in aug jan oct ; do echo $m | perl brute.pl  ; done 
    August
    January
    October
    

Trollage:

अलग-अलग कोडिंग प्रथाओं को छोड़कर जो डेमियन कॉनवे को दृष्टि से मर जाएगा, यह कोड आंतरायिक रूप से गलत है, और आंतरायिक रूप से बेहद धीमा है। "फ़रवरी" परिमाण के 6 आदेशों के बारे में चलता है - एक मिलियन गुना - "मई", "जून", या "जूल" की तुलना में धीमा। फ़ोबापिक, सीपाइंड, नोवगेपेज और डेकाबूज महीनों नहीं हैं (हालांकि वे उच्चारण करने के लिए मजेदार हैं)।

    ski@anito:/tmp$ for m in jan feb mar apr may jun jul aug sep oct nov dec ; do echo $m | time -f "%U user" perl  brute.pl  ; done 
    January
    3.14 user
    Feboapic
    62.77 user
    March
    0.00 user
    April
    0.00 user
    May
    0.00 user
    June
    0.00 user
    July
    0.00 user
    August
    0.10 user
    Sepibnd
    1.33 user
    October
    2.22 user
    Novgpej
    1.11 user
    Decabjuj
    4.27 user

PS - मेरे पास कुछ कोड थे जो रनटाइम्स का और भी अधिक प्रसार है, लेकिन यह उबाऊ रूप से सभी मामलों में सही उत्तर देता है, जो बहुत कम मजेदार है।


3

जावास्क्रिप्ट - अनुकूलित नोड क्लस्टर को शाखाओं, पत्तों और स्ट्रिंग बैरल के साथ।

// fullMon - Converts month key names to full names using a highly optimized tree for fast traversal.
function fullMon(key) {

    // Initialize the full month string
    var fullMonth = "";

    // Make sure the key is capitalized.
    key = key.substr(0,1).toUpperCase() + key.substr(1).toLowerCase();

    // Set the current node to the tree root.
    var current = fullMon.tree;

    // Traverse the characters in key until we can go no further.
    for (var i = 0; i < key.length; i++) {
        var c = key.charAt(i)
        fullMonth += c
        if (typeof current[c] === "undefined") return key // no full month for this key
        current = current[c]
    }

    // The remaining leaves are the characters in the full month.
    while (current !== null) {
        for (c in current) fullMonth += c
        current=current[c]
    }
    return fullMonth
}

// fullMon.treeBuilder - Builds a character node tree of full month names.
fullMon.treeBuilder = function() {
    // Set a barrel of month keys.
    var barrel = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];

    // Root node for letter tree.
    var tree = {};

    // Loop through all month keys.    
    for (var i = 0; i < barrel.length; i++) {

        // Get the next month key and do a barrel roll by
        // splitting into an array of single character strings.
        var monKey = barrel[i].split("");

        // Set the current branch to the tree root.
        var branch = tree;

        // Climb branches in the tree by looping through
        // month key characters and doing leaf wipes.
        for (var c = 0; c < monKey.length; c++) {

            // The next character is the next leaf of the branch.
            var leaf = monKey[c];

            // Wipe this leaf on the branch if it doesn't already exist.
            if (typeof branch[leaf] === "undefined") {
                // If the leaf is the last character then it's not sticky should be set to null.
                branch[leaf] = (c === (monKey.length-1)) ? null : {};
            }

            // Switch to the next branch.
            branch = branch[leaf];
        }
    }
    return tree;
}

fullMon.tree = fullMon.treeBuilder();

fullMon.demo = function () {
    // Demonstrates keys that are not found "none" and found keys.
    var short = ["none","jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"];
    for (var i = 0; i < short.length; i++) {
        console.log(fullMon(short[i]));
    }
    // Shows the optimized tree for fast lookups.
    console.log(JSON.stringify(fullMon.tree));
}

fullMon.demo();

3

जावा, गूगल और संभावना

मुझे निराशा है कि यहाँ बहुत सारे समाधान "पहिया को फिर से मजबूत करते हैं" जब जवाब इंटरनेट पर आसानी से उपलब्ध है।

यहाँ मेरे कार्यक्रम का आउटपुट है:

The short version of jan is january
The short version of feb is february
The short version of mar is margin
The short version of apr is april
The short version of may is mayinhistory
The short version of jun is june
The short version of jul is july
The short version of aug is august
The short version of sep is september
The short version of oct is october
The short version of nov is november
The short version of dec is december

सही नहीं है, लेकिन क्यूए को भेजने के लिए काफी अच्छा है। मैं क्राउडसोर्सिंग की शक्ति का लाभ उठाकर इन परिणामों को प्राप्त करने में सक्षम था:

public static String expandMonthName(String shortMonthName) {
    try {
        // First, we ask Google for the answer

        String query = "https://www.google.com/search?q="
                + "what+month+is+" + shortMonthName;
        String response = curl(query);

        // now sift through the results for likely answers.
        // The best way to parse HTML is regex.

        List<String> possibleMonths = new ArrayList<>();
        Pattern pattern = Pattern.compile(shortMonthName + "[A-Za-z]+");
        Matcher matcher = pattern.matcher(response);
        while (matcher.find())
            possibleMonths.add(matcher.group(0));

        // And finally, choose the likeliest answer using 
        // the ineluctable laws of probability

        return possibleMonths.get(new Random().nextInt(possibleMonths.size()));

    } catch (Exception e) { return "August";}   // well, we tried.
}

यदि यह स्पष्ट नहीं है, तो विस्तार करेंमाउथनाम ("जान") एक यादृच्छिक रूप से चयनित शब्द "जन" के साथ Google परिणाम "क्या महीना है जान" से शुरू होता है। जब तक आप एक प्रॉक्सी के पीछे नहीं होते, उस स्थिति में यह "अगस्त" वापस आ जाता है।


2

बैश + बिनतीले

मैंने इनपुट को दिनांक ऑब्जेक्ट में परिवर्तित करके स्पष्ट करने की बहुत कोशिश की, लेकिन बुरी तरह विफल रहा। अंत में मैंने पाशविक बल दृष्टिकोण का सहारा लिया।

while read -e line; do
  [[ "${line,,}" == "${1,,}"* ]] && o=$line && break
done < <(strings /bin/date)
o=${o:=$1}
o=${o,,}
echo ${o^}

टेस्ट रन:

$ bash getmonth.sh jan
January
$ bash getmonth.sh may
May
$ bash getmonth.sh DEC
December

2

मैं समझता हूं कि महीनों के नामों की जाँच करना बहुत कठिन है, और इसके लिए बहुत संगणना और तर्क सोच की आवश्यकता होती है। यहां महीनों के नामों की जाँच के लिए बज़-स्ट्रालेमन अल्ग्रोथ्म का अनुकूलित संस्करण है ।

पीएचपी

$month = "Jan"; //Change this to search for a different month, noob :)
$time = time(); //This loads an extended time library
$ivefoundthismonthnowexit = false;
while (!$ivefoundthismonthnowexit) {
    $checkThis = date('F', $time); //"F" stands for "Find it"
    if (substr($checkThis, 1, 4) == $month) $ivefondthismonthnowexit = true; //You can also replace it with ($checkThis, 0, 3)
    //since PHP understands if you are counting from 0 or 1!
    $time++;
}

trolls:

  • यह उत्तर;

  • टाइमज़ोन को संभालता नहीं है और चेतावनी संदेश का उत्पादन करेगा;

  • महीने को इनपुट के रूप में स्वीकार नहीं करता है, लेकिन आपको इसे हार्डकोड करने की आवश्यकता है;

  • जब आप इसे हार्डकोड करते हैं, तब भी यह केस-संवेदी होता है;

  • यह कोड क्या करने की कोशिश करता है, चालू महीने को प्राप्त करने के लिए, पहले तीन अक्षर प्राप्त करें, और जांचें कि क्या यह मेल खाता है $month। यदि यह मेल नहीं खाता है, तो यह टाइमस्टैम्प को 1 से बढ़ाता है और फिर पीछे हटता है। यह अत्यधिक धीमी हो जाती है ;

  • यह कोड कुछ नहीं (चेतावनी के अलावा) को आउटपुट करता है;

  • टिप्पणियाँ बहुत भ्रामक हैं: time()एक विस्तारित समय पुस्तकालय लोड नहीं करता है, लेकिन वर्तमान टाइमस्टैम्प प्राप्त करता है; substr($checkThis,1,4)महीने के पहले अक्षर को छोड़ देता है और हो जाता है निम्नलिखित 4 ( archके लिए March, उदाहरण के लिए); सही रूप टिप्पणियों में एक है;

  • यहां तक ​​कि जब एक मैच पाया जाता है, तो कोड लूप से बाहर नहीं निकलेगा: वास्तव में, जो चर सेट किया जाता है trueवह अलग है।


3
-1: कोड-ट्रोलिंग टैग विकी से, "कार्य कोड देना है जो काम करता है, लेकिन बेकार है, ओपी को गंभीर रूप से निराश करता है।" आपका कोड भी काम नहीं करता है।
user12205

1
हम्म? यह काम करता है और यह बेकार है। एक अंतहीन लूप को खत्म करने के लिए 10 साल का इंतजार करना काफी निराशाजनक नहीं है? "यह काम करता है" का अर्थ है (कम से कम, मेरे लिए इसका मतलब है), कि कोड संकलित करता है और सफलतापूर्वक चलता है, इसका मतलब यह नहीं है कि इसे समाप्त करना है या कोई समाधान देना है।
वीरोस

@ace (मैं पिछली टिप्पणी में आपका उल्लेख करना भूल गया); मैं उस टिप्पणी में जो कहना चाह रहा हूं, वह यह है कि मैं बेहतर समझना चाहता हूं कि आपका क्या मतलब है, क्योंकि यह मेरे दृष्टिकोण से सही है।
Vereos

शायद इसलिए archकभी बराबर नहीं होगा Mar?
user12205

इसलिए आपका कोड महीने के नामों को परिवर्तित नहीं कर सकता है, इसलिए यह काम नहीं करता है।
user12205

2

जत्था

आप जो पूछ रहे हैं वह गैर-तुच्छ है। हालाँकि मुझे आपके लिए सही समाधान मिल गया है! यह कार्य अंग्रेजी भाषा की अत्यधिक जटिल सूची को आपकी हार्ड-डिस्क में डाउनलोड करने से कैसे होता है। फिर डाउनलोड की गई सूची के खिलाफ इनपुट की जाँच की जाती है और महीने का अंतिम नाम दिया जाता है! प्रतिभाशाली!

अब, इस विधि के अन्य तरीकों पर कई पेशेवरों, कुछ किया जा रहा है:

  • आपके पास शब्द का कोई भी संक्षिप्त नाम हो सकता है! जैसे Janया Januजनवरी के लिए!
  • "आप कभी नहीं जानते हैं कि कब कुछ पोप या राष्ट्रपति हमें किसी अन्य कैलेंडर पर स्विच करने जा रहे हैं, और फिर टन पार्सिंग / प्रारूपण कोड तुरंत बेकार हो जाएगा!" यह हमारे तरीके के साथ कोई समस्या नहीं है!
  • उपयोगकर्ता को पुष्टि के संकेत भेजे जाते हैं, क्षमा से बेहतर सुरक्षित!

कोड:

@ECHO OFF
setlocal EnableDelayedExpansion
REM Remove this at the end ^^^
REM First off, we have to get the user's input
set /p abbreviatedUserInput= Please input your abbreviated form of the month: 
REM echo out confirmation message. Without this, the thing won't work
SET /P variableThatIsUsedForConfirmation= Are you sure you want to look for %abbreviatedUserInput% (Y/N)? 
REM if the user said no, send him elsewhere
if /i {%variableThatIsUsedForConfirmation%}=={n} (goto :hell)
REM to keep things clean, we clear the screen!
cls
ECHO Prepare for launch!
REM make sure the user reads what we wrote, we spent time on this and the user must understand that... 
REM BTW this pings an incorrect ip address and waits 3000 millisex for the output
ping 1.1.1.1 -n 1 -w 3000 > nul
REM to keep things clean, we clear the screen!
cls
REM We must inform the user that something is going on, otherwise they might get bored and quit the app
ECHO LOA-DING!
REM Now, how this works is by utilizing the dictionary.. I believe we all know what that is. First of all, let's get a dictionary!
powershell -Command "(New-Object Net.WebClient).DownloadFile('http://www.mieliestronk.com/corncob_caps.txt', 'dic.txt')"
REM to keep things clean, we clear the screen!
cls
REM The user probably already got bored, let's inform them that we're still working...
ECHO STILL WORKING...
REM wait what?!! The dictionary is all caps!! Lets fix that...
REM Lets loop through the file like so:

for /F "tokens=*" %%A in (dic.txt) do (
    SET "line=%%A"
    REM replace ALL the letters!!
    SET "line=!line:A=a!"
    SET "line=!line:B=b!"
    SET "line=!line:C=c!"
    SET "line=!line:D=d!"
    SET "line=!line:E=e!"
    SET "line=!line:F=f!"
    SET "line=!line:G=g!"
    SET "line=!line:H=h!"
    SET "line=!line:I=i!"
    SET "line=!line:J=j!"
    SET "line=!line:K=k!"
    SET "line=!line:L=l!"
    SET "line=!line:M=m!"
    SET "line=!line:N=n!"
    SET "line=!line:O=o!"
    SET "line=!line:P=p!"
    SET "line=!line:Q=q!"
    SET "line=!line:R=r!"
    SET "line=!line:S=s!"
    SET "line=!line:T=t!"
    SET "line=!line:U=u!"
    SET "line=!line:V=v!"
    SET "line=!line:W=w!"
    SET "line=!line:X=x!"
    SET "line=!line:Y=y!"
    SET "line=!line:Z=z!"
    ECHO !line! >> dic-tmp.txt
)

REM to keep things clean, we clear the screen!
cls
REM The user probably already got bored, let's inform them that we're still working...
:lookup
ECHO WOW! THAT TOOK LONG! ALMOST THERE...
REM Alright, now we need to find the correct date in the dictionary, we might need the users help in this...
REM Lets loop through ALL the lines again
set match=seriously?
for /F "tokens=*" %%a in (dic-tmp.txt) do (
    SET "line=%%a"
    REM to keep things clean, we clear the screen!
    cls
    REM replace the user input with some other stuff...
    SET "test=!line:%abbreviatedUserInput%=lol!"
    REM if the original line does not equal the test variable, then we have a match!
    IF NOT !line!==!test! (
        REM ask the user if the match is correct..
        set /P variableThatIsUsedForConfirmation= "Did you mean !line!? (Y/N): "
        REM if the user entered "y"
        IF /i {!variableThatIsUsedForConfirmation!}=={y} (
            REM set the variable "match" to the current line and goto the matchFound section...
            set match=!line!
            goto :matchFound
        )
    )
)
:matchFound
REM to keep things clean, we clear the screen!
cls
REM give the user their match
Echo Here's your month's full name: %match%
PAUSE
:hell
ECHO screw you!

Trollz

- बैच ... - शब्दों की एक सूची डाउनलोड करना, क्योंकि हम महीनों को मैन्युअल रूप से टाइप नहीं कर सकते हैं ... - स्विच केस हैक का उपयोग नहीं करना - बहुत कम - पाठ फ़ाइल को लोअरकेस में कनवर्ट करना और इसे किसी अन्य फ़ाइल में सहेजना - इसे चलाना बनाए गए पाठ फ़ाइलों को हटाने के बिना दूसरी बार और यह और भी धीमा हो जाएगा - कुछ स्क्रिप्ट स्क्रिप्ट को बंद कर देता है, जबकि dic.txt फ़ाइल को लोअरकेस में कनवर्ट करते हुए, यह वापस इको सेट करता है - इस स्पॉइलर चीज़ ने प्रारूपण को गड़बड़ कर दिया है ...


2

! #/दे घुमा के

! #/bash

# Make the MONTH variable equal to the $1 variable
MONTH="$1"

# Run grep passing the $MONTH variable and the -i flag
# Then use the << operator followed by a list of months
grep -i "$MONTH" << January
March
May
July
August
0ctober
December
April
June                                      
September
November
February
January

आपके कार्यक्रम को तेज़ी से प्रतिक्रिया देने के लिए, मैंने महीनों को सूची में 31 दिन पहले रखा है। सांख्यिकीय रूप से, तारीखों के समान वितरण को देखते हुए, आप उन महीनों में से एक होने की अधिक संभावना रखते हैं।

मैंने आपके बॉस को प्रभावित करने के लिए प्रत्येक पंक्ति का दस्तावेजीकरण किया।

नामक फ़ाइल में इसे सहेजें lookup_month_script.bashऔर इसे जांचने के लिए निम्न पंक्ति को कॉपी-पेस्ट करें:

bash $PWD/lookup_month_script.bash "0ct"

आपकी परियोजना के लिए शुभकामनाएं!


- दो बार सूचीबद्ध होने के बावजूद, जनवरी के लिए काम नहीं करता है । (हम वास्तव Januaryमें heredoc की शुरुआत और अंत के लिए सीमांकक के रूप में उपयोग कर रहे हैं ।)

- अक्टूबर के लिए भी काम नहीं करता है। कोई भी क्यों नहीं देख सकता।

- यदि इनपुट खाली होता है, तो सभी 11 महीने वापस आ जाते हैं।

- यदि स्क्रिप्ट कॉपी-पेस्ट की जाती है, तो जून की प्रतिक्रिया लंबाई में 42 अक्षर होगी।

माइनर:

- शेबंग कुछ गलत है, लेकिन कोई चेतावनी नहीं दी गई है।

- टिप्पणियाँ जो टिप्पणियां हैं जो कहती हैं कि उनके नीचे की रेखा क्या कह रही है।

- यहां तक ​​कि अगर कार्यक्रम ने पहले की प्रविष्टियों के लिए जल्द ही प्रतिक्रिया दी, तो भी यह तेजी से पूरा नहीं होगा।


1

जावास्क्रिप्ट - 209

यह तारीख को परिवर्तित नहीं करने के लिए कहता है, जो कि यहां नहीं हो रहा है, मैं संक्षिप्त नाम के विस्तार को उत्पन्न करने के लिए बस तारीख का उपयोग कर रहा हूं।

function m(s){c=s.charAt(0).toUpperCase()+s.substr(1).toLowerCase();a="ember,ember,ober,tember,ust,y,e,,il,ch,uary,uary".split(",");b=[];for(i=12;i--;)b[(""+new Date(1,i,1)).slice(4,7)]=11-i;return c+a[b[c]];}

टेस्ट इनपुट / आउटपुट:

jan: January
feb: Febuary
mar: March
apr: April
may: May
Jun: June
JUL: July
AuG: August
sEp: September
OCT: October
nov: November
dec: December

3
मैं भी फेलुअरी - आर :) के उद्देश्य से ट्रोल होता हुआ दिखाई देता हूँ, बेशक ...
मैट

लगता है जैसे किसी को वेन्ड्सडे का मामला मिल गया है।
जेसन सी

5
@ मैट का मतलब यह नहीं है कि आप "पुतले पर"?
जस्टिन

कॉउंस @ क्विंनक्स
मैट

1

परीक्षण इनपुट सहित जावा 696

public class DateConverter {
    String months[] = 
    {
        "January", "February","March","April","May","June","July",
        "August","September","October","November","December"
    };
    DateConverter(){}
    String LongMonth(String shortMonth)
    {
        String m = "Invalid";
        for(int i=0;i<months.length;i++)
        {
            if(months[i].toLowerCase().contains(shortMonth.toLowerCase()))
            {
                m=months[i];
                break;
            }
        }
        return m;
    }

    public static void main(String[] args) {

        String input[] = {"jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"};
        for(int i=0; i<input.length; i++)
        {
            System.out.println((new DateConverter()).LongMonth(input[i]));
        }
    }
}

1

प्रोग्रामिंग भाषा "ब्रेनफ * सीके" इसके लिए एक आदर्श उपकरण है! यह बिल्कुल वैसा नहीं हो सकता है जैसा आप देख रहे थे, निश्चित है, लेकिन यह त्रुटिपूर्ण रूप से काम करता है!

>+<+[>[>[-]+<-]>[<+>>>>>>>>>>>>>>>>>>+<<<<<<<<<<<<<<<<<<->-]>>>>>>>>>>>>>>>>>>>>>
[<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>-]<<<<<<<<<<<<<<<<<<<<<<[>[-]+<-]>[<+

This is the debug part of the code used when looping more than once

>>+++++++++++++++[>+++++>+++++++>++>+++++++>+++<<
<<<-]>--.>+++++.++.+++++.-.>++.<.>>-.---.<.<.>>+++.<<--.>>---..>.<<<------.>>.
<<++++++++..>>.<<--.>.>----.+..<<.>>+++.<<++++.>>++++.--------
.<<--.>>++++++++.<<-----.-.>+.>>[-]<[-]<[-]<[-]<[-]<++++++++++.[-]

It takes a dummy argument due to the nature of my interpreter 
If you're using some other intepreter I can rewrite the code for you

>>>>>>>>>>>>>>>>>>>>>>>,<+<<<<<<<<<<<<<<<<<<<<<<<<->-]>>>>>>>>>>>>>>>>>
[<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>-]<<<<<<<<<<<<<<<<<<[>[-]+<-]>[<+

This is the normal part of the code, used when starting the programme the first time

>>+++++++++++++++[>+++++>+++++++>++>+++++++>+++<<<<<-]>--.>
+++++.++.+++++.-.>++.<.>>-.---.<.<.>>+++.<<--.>>---..>.<<<------.>>.<<++++++++..>>.<<-
-.>.>----.+..<<.>>+++.<<++++.>>++++.--------.<<--.>>++
++++++.<<-----.-.>+.>>[-]<[-]<[-]<[-]<[-]<++++++++++.[-]<-]>>>>>>>>>>>>>>>>>>>>>>>
[<<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>>>-]<<<<<<
<<<<<<<<<<<<<<<<<<[>[-]+<-]>[<+

Here we take three arguments and assign them to variables; This is the three-letter 
abbreviation of the month

>>>>>>>>>>>>>>,<,<,

Now we check if the abbreviation is good; note that it will fail if it doesn't begin 
with a capital letter and isn't followed by two lowercase letters
In general it will print an error message and wait for you to input a letter 
(or just hit enter) before it exits

<<<[-]>>>>>[<<<<<+<<<<<<<+>>>>>>>>>>>>-]<<<<<<<<<<<<[>>>>>>>>>>>>+<<<<<<<
<<<<<-]>>>>>>>----------------------------------------------------------------->[-]    
<[<<<+>>>-]->[<<<<<<<+>+<<+>>>>>>>>-]<<<<<<<<[>>>>>>>>+<<
<<<<<<-]>>[>>[<+<<<+>>>>-]<<<<[>>>>+<<<<-]+>>>[<<->>>-<<<<->>>[-]]<<<[>>[-]+<<-]>>-]>>
[>>>+<<<[-]]<<<[-]<->>>>>>>[<<<<<<<->>>>>>>-]<<<<<<<[>
>>>>>>+<<<<<<<-]>>>>>>>[>>>>>>>>>>>>>>+<<<<<<<<<<<<<<<<<<<<<<<->>>>>>>>>[-]]<<<<<<<<-]
<[>[-]+<-]>[<+>>+++++++++++[>++++++>++++++++++>+++<<<-
]>+++.>++++..---.+++.>.[-]<[-]<[-]<++++++++++.[-]>>>>>>>>>>>>>>>,,<<<<<<<<<<<<<<<<<-<-
>>-]>>>>>>>>>>>>>>>>>>>>>>[<<<<<<<<<<<<<<<<<<<<<<<+>>>
>>>>>>>>>>>>>>>>>>>>-]<<<<<<<<<<<<<<<<<<<<<<<[>[-]+<-]>[<+>>>>>>>>>[-]>>>>[<<<<+    
<<<<<<<+>>>>>>>>>>>-]<<<<<<<<<<<[>>>>>>>>>>>+<<<<<<<<<<<-]>>
>>>>>-------------------------------->[-    
]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<[<<<+>>>-]>    
[<<<<<<<+>+<<+>>>>>>>>
-]<<<<<<<<[>>>>>>>>+<<<<<<<<-]>>[>>[<+<<<+>>>>-]<<<<[>>>>+<<<<-]+>>>[<<->>>-<<<<->>>[-]]
<<<[>>[-]+<<-]>>-]<[>>>>>>-<<<<<<[-]]>>>[-]>>>>[-]>>
>[<<<+<<<<<<<<+>>>>>>>>>>>-]<<<<<<<<<<<[>>>>>>>>>>>+<<<<<<<<<<<-]>>>>>>>>---------------
----------------->[-]+++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<[<<<<+>>>>-]>[<<<<<<<<+>+
<<+>>>>>>>>>-]<<<<<<<<<[>>>>>>>>>+<<<<<<<<<-]>>[>>[<+<<
<+>>>>-]<<<<[>>>>+<<<<-]+>>>[<<->>>-<<<<->>>[-]]<<<[>>[-]+<<-]>>-]>>[>>>>-<<<<[-]]<<<[-
]>>>>>>[<<<<<<<+>>>>>>>-]<<<<<<<[>>>>>>>-<<<<<<<[-]]>
>>>>>>>[<<<<<<<<+>+>>>>>>>-]<<<<<<<[>>>>>>>+<<<<<<<-]<[>>>>>>>[-]-<<<<<<<[-]]->>>>>>>
[<<<<<<<->>>>>>>-]<<<<<<<[>>>>>>>+<<<<<<<-]>>>>>>>[>>>>
>>>>>>+<<<<<<<<<<<<<<<<<<<->>>>>>>>>[-]]<<<<<<<<-]<[>[-]+<-]>[<+>>+++++++++++
[>++++++>++++++++++>+++<<<-]>+++.>++++..---.+++.>.[-]<[-]<[-]<+
+++++++++.[-]>>>>>>>>>>>>>>>,,<<<<<<<<<<<<<<<<<-<->>-]>>>>>>>>>>>>>>>>>>
[<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>-]<<<<<<<<<<<<<<<<<<<[>[-]+<
-]>[<+>>>>>>>>>[-]>>>[<<<+<<<<<<<+>>>>>>>>>>-]<<<<<<<<<<[>>>>>>>>>>+<<<<<<<<<<-]>>>>>>>-    
------------------------------->[-]+++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++<[<<<+>>>-]>[<<<<<<<+>+<<+>>>>>>>>-]
<<<<<<<<[>>>>>>>>+<<<<<<<<-]>>[>>[<+<<<+>>>>-]<<<<[>>>>+
<<<<-]+>>>[<<->>>-<<<<->>>[-]]<<<[>>[-]+<<-]>>-]<[>>>>>>-<<<<<<[-]]>>>[-]>>>>[-]>>[<<+
<<<<<<<<+>>>>>>>>>>-]<<<<<<<<<<[>>>>>>>>>>+<<<<<<<<<<-
]>>>>>>>>-------------------------------->[-
]++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
<[<<<
<+>>>>-]>[<<<<<<<<+>+<<+>>>>>>>>>-]<<<<<<<<<[>>>>>>>>>+<<<<<<<<<-]>>[>>[<+<<<+>>>>-]
<<<<[>>>>+<<<<-]+>>>[<<->>>-<<<<->>>[-]]<<<[>>[-]+<<-]>>
-]>>[>>>>-<<<<[-]]<<<[-]>>>>>>[<<<<<<<+>>>>>>>-]<<<<<<<[>>>>>>>-<<<<<<<[-]]>>>>>>>>
[<<<<<<<<+>+>>>>>>>-]<<<<<<<[>>>>>>>+<<<<<<<-]<[>>>>>>>[-
]-<<<<<<<[-]]->>>>>>>[<<<<<<<->>>>>>>-]<<<<<<<[>>>>>>>+<<<<<<<-]>>>>>>>[>>>>>>>>>>>+
<<<<<<<<<<<<<<<<<<<<->>>>>>>>>[-]]<<<<<<<<-]<[>[-]+<-]>[
<+>>+++++++++++[>++++++>++++++++++>+++<<<-]>+++.>++++..---.+++.>.[-]<[-]<[-]<++++++++++.    
[-]>>>>>>>>>>>>>>>,,<<<<<<<<<<<<<<<<<-<->>-]>>>>>>>>
>>>>>>>>>>>[<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>-]<<<<<<<<<<<<<<<<<<<<[>[-]+<-]>[<+

This part of the code handles special exceptions to the pattern

>>>>>>>>>[-]>>>>>[<<<<<+<<<<<<<+>>>>>>>>>>>>-]<<<<<<<<<<<<[>>>>>>>>>>>>+<<<<<<<<<<<<-
]>>>>>>>>[-]++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++<[<<<<<<+>>>>>>-]->[<<<<<<<-<+>>>>>>>>-]    
<<<<<<<<[>>>>>>>>+<<<<<<<<-]>[>>>>>>+<<<<<<[-]]>>>>>>>[-]>
>>[<<<+<<<<<<<<+>>>>>>>>>>>-]<<<<<<<<<<<[>>>>>>>>>>>+<<<<<<<<<<<-]>>>>>>>>>[-    
]++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++<[<<<<<<<+>>>>>>>-]->[<<<<<<<<-<+>>>>>>>>>-]
<<<<<<<<<[>>>>>>>>>+<<<<<<<<<-]>[>>>>>>>+<<<<<<<[-]]>>>>>>[<<
<<<<<+>>>>>>>-]<<<<<<<[[-]>>>>>>>>[<<<<<<<<+>+>>>>>>>-]<<<<<<<[>>>>>>>+<<<<<<<-]
<[>>>>>>>-<<<<<<<[-]]]>>>>>>>>[-]>>[<<+<<<<<<<<+>>>>>>>>>>-]
<<<<<<<<<<[>>>>>>>>>>+<<<<<<<<<<-]>>>>>>>>>[-
]++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++<[<<<<<<<+>>>>>>>-]->[<<<<<<<<-<+>>>>>>>>>-]<<<<<<<<<[>>>>>>>>>+
<<<<<<<<<-]>[>>>>>>>+<<<<<<<[-]]>>>>>>[<<<<<<<+>>>>>>>-]<<<<
<<<[[-]>>>>>>>>[<<<<<<<<+>+>>>>>>>-]<<<<<<<[>>>>>>>+<<<<<<<-]<[>>>>>>>-<<<<<<<[-]]]-
>>>>>>>[<<<<<<<->>>>>>>-]<<<<<<<[>>>>>>>+<<<<<<<-]>>>>>>
>[>>>>>>>>>>>>+<<<<<<<<<<<<<<<<<<<<<->>>>>>>>>[-]]<<<<<<<<-]<[>[-]+<-]>[<+>>++++++++++++
[>++++++>++++++++>+++++++++<<<-]>++.>+.>++.+++++++.<
.>---.+++++++.[-]<[-]<[-]<++++++++++.[-]>>>>>>>>>>>>>>+<<<<<<<<<<<<<<<<->-
]>>>>>>>>>>>>>>>>>>>>[<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>-
]<<<<<<<<<<<<<<<<<<<<<[>[-]+<-]>[<+

This part of the code handles the regular pattern

>>>>>>>>>[-]>>>>>[<<<<<+<<<<<<<+>>>>>>>>>>>>-]<<<<<<<<<<
<<[>>>>>>>>>>>>+<<<<<<<<<<<<-]>>>>>>>.[-]>>>>[<<<<+<<<<<<<+>>>>>>>>>>>-]       
<<<<<<<<<<<[>>>>>>>>>>>+<<<<<<<<<<<-]>>>>>>>.[-]>>>[<<<+<<<<<<<+>>>>
>>>>>>-]<<<<<<<<<<[>>>>>>>>>>+<<<<<<<<<<-]>>>>>>>.<<<<<<<++++++++++++
[>++++++++++>++++++++<<-]>---.>+.<---.+++++++.>[-]<[-]<++++++++++.[-]>>
>>>>>>>>>>>>+<<<<<<<<<<<<<<<<->-]<[>[-]+<-]>[<+

Here the programme checks if you want to insert another abbreviation or are done with the programme

>-]>>>>>>>>>>>>>>>[<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>-]<<<<<<<<<<<<<<<<[>[-]+<-]>
[<+>>+++++++++++++++[>+++++>++++++++>++>+++++++>++++>+
+++++<<<<<<-]>--.>-----.>++.<+.>>-.-------.<<.>.>.<<--------..>>>+++.<<.>>>+.--.
<<<+++++++++++++++.<<+++++.>>>----.>>[-]<[-]<[-]<[-]<[-]<[-]
<++++++++++.[-]>>>>>>>>>>>>>>>>>>>>>>>,<<<<<<<<<<,<<<<<<[-]>>>>>>[<<<<<<+
<<<<<<<+>>>>>>>>>>>>>-]<<<<<<<<<<<<<[>>>>>>>>>>>>>+<<<<<<<<<<<<<-]>
>>>>>>>[-]++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
<[<<<<<<+>>>>>>-]->[<<<<<<<-<+>>>>>>>>-]<<<<<<<<[>>>
>>>>>+<<<<<<<<-]>[>>>>>>+<<<<<<[-]]>>>>>>[>>>>>>>>>>>>>+<<<<<<<<<<<<<<<<<<<<<<->>>>>>>>>
[-]]<<<<<<<<-]<[>[-]+<-]>[<+>>>>>>>>>[-]>>>>>>[<<<<<
<+<<<<<<<+>>>>>>>>>>>>>-]<<<<<<<<<<<<<[>>>>>>>>>>>>>+<<<<<<<<<<<<<-]>>>>>>>>[-
]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++<[<<<<<<+>>>>>>-]->[<<<<<<<-<+>>>>>>>>-]<<<<<<<<[>>>>>>>>+
<<<<<<<<-]>[>>>>>>+<<<<<<[-]]<->>>>>>>[<<<<<<<->>>>>>>
-]<<<<<<<[>>>>>>>+<<<<<<<-]>>>>>>>[>>>>>>>>>>>>>>>>>+<<<<<<<<<<<<<<<<<<<<<<<<<<-
>>>>>>>>>[-]]<<<<<<<<-]<[>[-]+<-]>[<+-<->>-]>>>>>>>>>>>>>>>>
>>>>>>>>>[<<<<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>>>>>-]
<<<<<<<<<<<<<<<<<<<<<<<<<<[>[-]+<-]>[<+>>+++++++++++[>++++++>++++++++++>+++
<<<-]>+++.>++++..---.+++.>.[-]<[-]<[-]<++++++++++.[-]<<<->>-]<<]

मुझे यकीन है कि जब आप उसे यह दिखाएंगे तो आपके शिक्षक को गर्व होगा!


ट्रोलिंग

कार्यक्रम, सबसे पहले, काफी बुरी तरह से लिखा गया है। मैंने कुछ लूप बनाए हैं जो बेहतर शब्द की कमी के लिए यादृच्छिक त्रुटि प्रिंट और सामान्य गैर-कार्यशीलता का कारण बनते हैं। शालीनता से काम करने वाले कोड (मुख्यतः इसके पहले दो पैराग्राफ में) को प्राप्त करने के लिए यह थोड़ा साफ होता है जो किसी भी तरह से बेकार है क्योंकि यह "संक्षिप्त नाम + 'uge' के रूप में लंबे नाम देता है।" "जनवरी" के लिए निरर्थक कोड शामिल है (एक अपवाद के रूप में परिभाषित और अलग से कोडित)। स्टैकएक्सचेंज पर पहला जवाब, इसलिए मुझे उम्मीद है कि यह मानदंड पूरा करता है


1

जावा

प्रिय कंप्यूटर वैज्ञानिक अपरेंटिस,

यह काफी मुश्किल काम है, और मैंने केवल आंशिक रूप से हल किया है: मुझे लगता है कि यह आपके शोध कार्य या कुछ शोध उद्देश्य के लिए है।

अब तक मेरे पास केवल बीटा संस्करण है जिसमें कुछ मामूली कीड़े हैं: कभी-कभी यह गलत परिणाम देता है, लेकिन मुझे यकीन है कि आपका प्रोफेसर आपके प्रयास को स्वीकार करेगा।

फ़ाइल माह.जावा:

/**
 * This bean keep track of a month-code (e.g. Apr) and month-name (e.g. April)
 * pair.
 */
public class Month{
    String month_name;
    String month_code;
    public void Month(monthName,monthCode){
        setMonthName(monthName);
        setMonthCode(monthCode);
    }
    public String getMonthName(){
        return this.monthName;
    }
    public void setMonthName(String monthName){
        this.monthName=monthName;
    }
    public String getMonthCode(){
        return this.monthCode;
    }
    public void setMonthCode(String monthCode){
        this.monthCode=monthCode;
    }

फ़ाइल Era.java:

/**
 * This bean keep contains every couple of month-code,month-name in a year.
 */
public class Era{
    List <Month>months;
    public void Era(){
        months.add(new Month("Jan","January"));
        months.add(new Month("Feb","Febrary"));
        months.add(new Month("Apr","March"));
        months.add(new Month("May","May"));
        months.add(new Month("June","June"));
        months.add(new Month("Jul","July"));
        months.add(new Month("Aug","August"));
        months.add(new Month("Sep","September"));
        months.add(new Month("Oct","October"));
        months.add(new Month("Nov","Novemeber"));
        months.add(new Month("Dec","December"));
   }
   public String getMonthByCode(String monthName){

       return String.format("[%s]",months.get(new Random().nextInt((11) + 1) + 0));
   }
   public static void main(String ... argv){
        String monthCode="jan";
       System.out.println(String.format("%s: %s",monthCode, new Era().getMonthByCode(monthCode));
   }

इसे चलाने के लिए निष्पादित करें:

javac Month.java
javac Era.java
java Era jan

उत्पादन:

jan: [January]

%JAVAPATH%अपने Javaकंपाइलर को उस पथ पर सेट करने के लिए याद रखें जहाँ आपका कंपाइलर स्थापित है!

यह सिर्फ एक यादृच्छिक महीना लौटाता है। वास्तव में मैंने इसका परीक्षण भी नहीं किया था। मुझे लगता है कि कुछ आयात गायब हैं।


1

चूंकि ओपी जावा का उपयोग कर रहा है, इसलिए मैं एक जावा समाधान दूंगा। विचार सरल है:

  1. Mapलंबे नाम से संक्षिप्त नाम बनाएँ ।
  2. एक यादृच्छिक स्ट्रिंग उत्पन्न करें, इसे संक्षिप्त नाम पर मैप करें।
  3. String.equalsIgnoreCaseयह जाँचने के लिए उपयोग करें कि क्या संक्षिप्त नाम मामलों की अनदेखी करने वाले इनपुट लघु नाम के समान है। यदि हां, तो सफलता, बाहर निकलें।
  4. अन्यथा चरण 2 पर जाएं।

यहाँ स्रोत है:

import java.util.*;

public class Short2Long {
    static final Map<String, String> long2Short = new HashMap<String, String>();
    static {
        long2Short.put("Janurary", "jan");
        long2Short.put("February", "feb");
        long2Short.put("March", "mar");
        long2Short.put("April", "apr");
        long2Short.put("May", "may");
        long2Short.put("June", "jun");
        long2Short.put("July", "jul");
        long2Short.put("August", "aug");
        long2Short.put("September", "sep");
        long2Short.put("October", "oct");
        long2Short.put("November", "nov");
        long2Short.put("December", "dec");
    }

    static Random rand = new Random();

    static String genString() {
        int len = rand.nextInt(9-3) + 3;
        StringBuffer res = new StringBuffer(len);
        res.append((char)('A' + rand.nextInt(26)));
        for (int i = 1; i < len; i ++) {
            res.append((char)('a' + rand.nextInt(26)));
        }
        return res.toString();
    }

    public static void main(String[] args) {
        String s = args[0];
        while (true) {
            String l = genString();
            if (s.equalsIgnoreCase(long2Short.get(l))) {
                System.out.println(s + " -> " + l);
                break;
            }
        }
    }
}

ट्रोलिंग

कार्यक्रम को एक तेज सीपीयू और आपके रोगी की आवश्यकता है। जब आप मल्टी-थ्रेडिंग सीखते हैं और आपके पास मल्टी-कोर सीपीयू होता है, तो आप इसे तेजी से बनाने की कोशिश कर सकते हैं।


1


इस विचार उत्तेजक और मूल प्रश्न को पोस्ट करने के लिए धन्यवाद। हम में से जो स्टैक ओवरफ्लो पर उत्तर पोस्ट करते हैं, वे पोस्टर की मदद करने का अवसर प्राप्त करते हैं, क्योंकि इस वेबसाइट का उद्देश्य पाठ्य पुस्तकों और आत्म-प्रेरित सीखने की आवश्यकता को अप्रचलित करने के लिए ऐसे सभी सवालों को सूचीबद्ध करना है। इस विशेष प्रश्न को समझने की आपकी कमी के कारण चिंतित न हों, क्योंकि यह एक सामान्य प्रकार का प्रश्न है, क्योंकि इसकी छिपी हुई चाल के कारण इसे प्रभावी ढंग से हल करने की आवश्यकता होती है। प्रशिक्षक आमतौर पर इस प्रश्न को न केवल आपकी भाषा की समझ की गहराई निर्धारित करने के लिए कहेंगे, बल्कि यह भी कि क्या आप इस आम प्रोग्रामर के नुकसान के बारे में जानते हैं: चरित्र एन्कोडिंग। आप पूरी तरह से निम्नलिखित लिंक के माध्यम से पढ़ने के बाद पूरी तरह से समझ जाएंगे, जैसा कि मुझे पता है कि आप होंगे: लिंक

मुझे अब तक यकीन है कि आपके प्रोफेसर ने कोड पुन: उपयोग के महत्व को बहुत विस्तार से वर्णित किया है, इसलिए जैसा कि आपने चरित्र एन्कोडिंग लिंक पढ़ा है जो मैंने प्रदान किया है, आप बिल्कुल समझ में आ रहे हैं कि आपको एक सामान्य पर्याप्त कक्षा बनाना होगा जो कि किसी भी भाषा को संभाल सकता है, भले ही मूल प्रश्न इस आवश्यकता को विशेष रूप से निर्दिष्ट नहीं करता है (आप आवश्यकता विनिर्देश के बारे में भी जानना चाह सकते हैं, जो आपको आवश्यकताओं को समझने में मदद करेगा, इस लिंक के माध्यम से पढ़ें: लिंक।

जहां आप उपयोग न करने का सुझाव देने में बहुत बुद्धिमान हैं। प्रदान की गई दिनांक ऑब्जेक्ट, डिफ़ॉल्ट भाषा में कोड का उपयोग करते हुए आपको अपने प्रोफेसर को भाषा की सही समझ दिखाने की अनुमति नहीं देगा।

इस कठिन प्रश्न के माध्यम से आपकी मदद करने के लिए, मैंने एक ग्रूवी एप्लिकेशन लिखा है जो आपको समस्या का समाधान करेगा, और निस्संदेह उस गूढ़ जावा की तुलना में अधिक समझ में आएगा। इस उत्तर के लिए ग्रूवी के उपयोग से चिंतित न हों, क्योंकि ग्रूवी भी जावा कोड की तरह ही जेवीएम पर चलता है, इसलिए आप आसानी से केवल कुछ संशोधनों के साथ इस कोड को अपने जावा वर्ग में छोड़ सकते हैं। मैंने इस प्रक्रिया के माध्यम से आपकी मदद करने के लिए एक लिंक संलग्न किया है, लेकिन मैं सुबह तक इसके बारे में चिंता नहीं करूंगा, क्योंकि इसे केवल एक सेकंड में लेना चाहिए (यहाँ बाद के लिए लिंक है: लिंक। इसलिए, अभी के लिए कोड की प्रतिलिपि बनाएँ, क्योंकि मैं उचित रूप से काम करने वाले कोड के बहुत सारे परीक्षण मामलों को दिखाऊंगा, ताकि आप अपनी अधीनता में आत्मविश्वास महसूस कर सकें। मैं निश्चित रूप से समझता हूं कि आप बहुत व्यस्त उत्सुक छात्र हैं, आपकी प्लेट पर बहुत सारे दायित्व हैं। आप शायद जानते हैं कि यहां योगदानकर्ता पूरे समय काम करते हैं, और अच्छी तरह से मुआवजा दिया जाता है।

//Definetely leave the comments in so your instructor
//can see how well you document your code!

//see how easy it is to specify other languages!
//the users of your software will probably have an IDE just
//like yours, so they can easily come into the source
//code and edit these to their liking, That's Code Reuse!
def EnglishNames ="""January
February
March
April
May
June
July
August
October
November
December
"""

//change this to use other encodings, as discussed above
final String encodingToUseSoThatOurCodeIsSuperRobust = "UTF-8"

//it is a good idea to number your lists for clarity,
//just in case you need more
def list1 = []
def list2 = []

//specifying the method name like this will help make it
//easy to add more languages, another method for another
//language

//this is called a 'Closure', which is pretty much identical
//to that cool new Java thing called the 'Lambda', so if you
//wanted to turn this into Java code, it would be soo easy!
EnglishNames.eachLine() {
    //You probably remember you instructor telling you
    //never to do this String 1 == String 2
    //So to get around that, we will convert the String
    //to bytes, Easy huh!
    list1.add(it.getBytes(encodingToUseSoThatOurCodeIsSuperRobust))
}

//change this to run a different test, the IDE no doubt makes
//it very easy to do this!
//See the very very descriptive variable name for readability?
def iAmLookingForThisCountriesLongNameWithThisShortName = "Dec"
def theFoundAnswerInTheListIs

//this is the real important part as you can easily see
for(BigInteger index = 0; index < list1.size(); index ++){
    for(BigInteger indeX = 0; indeX < list1[index].size(); indeX ++){
        list2[index] = [list1[index][0],list1[index][1],list1[index][2]]
    }
}

boolean foundTheAnswerSoDontDoAnymore = false

//now we just find the correct answer in the list!
for(BigInteger index = 0; index < list1.size(); index ++){
    for(BigInteger indeX = 0; indeX < list1[index].size(); indeX ++){
        //see how readable the following code is!
        if((list2.get(index)) == iAmLookingForThisCountriesLongNameWithThisShortName.getBytes(encodingToUseSoThatOurCodeIsSuperRobust)){
            //see how we can now use the == so we can compare the two strings!
            if(!(new Boolean(foundTheAnswerSoDontDoAnymore))){
                println new String(list1[index], encodingToUseSoThatOurCodeIsSuperRobust)
                foundTheAnswerSoDontDoAnymore = true
            }
        }
    }
}

क्षमा करें कि मैंने आपके लिए यहां कुछ भी करने के लिए नहीं छोड़ा, मैं आपके विचार उत्तेजक प्रश्न का उत्तर देने से दूर हो गया। तो बस इस प्रतिक्रिया को कॉपी और पेस्ट करें। जैसा कि आप कोड के निम्नलिखित रन से देख सकते हैं, यहां यह है कि यह क्या कर सकता है:

input: Dec, output: December
input: Jan, output: January
input: Feb, output: February

1

जूलिया

आप यहां कई प्रेषण की शक्ति का उपयोग करना चाहते हैं। पहले हम प्रत्येक महीने के एक प्रकार को परिभाषित करेंगे। फिर हम प्रत्येक महीने प्रकार के लिए सरल फ़ंक्शन परिभाषाएं लिख सकते हैं जो वांछित उत्तर देते हैं। यह आपको nicename(Jan)उन कष्टप्रद उद्धरण चिह्नों से परेशान किए बिना सुविधाजनक रूप का उपयोग करने की अनुमति देगा । साथ ही हम स्ट्रिंग्स को स्वीकार करने के लिए एक सुविधा फ़ंक्शन को परिभाषित कर सकते हैं और उन्हें प्रकारों में परिवर्तित कर सकते हैं, उन सभी कार्यों का पुन: उपयोग कर सकते हैं जो हमने पहले से ही एक पूरी तरह से नया इंटरफ़ेस प्रदान करने के लिए किया था।

abstract Month
abstract Jan <: Month
abstract Feb <: Month
abstract Mar <: Month
abstract Apr <: Month
abstract May <: Month
abstract Jun <: Month
abstract Jul <: Month
abstract Aug <: Month
abstract Sep <: Month
abstract Oct <: Month
abstract Nov <: Month
abstract Dec <: Month
nicename(::Type{Jan})="January"
nicename(::Type{Feb})="February"
nicename(::Type{Mar})="March"
nicename(::Type{Apr})="April"
nicename(::Type{May})="May"
nicename(::Type{Jun})="June"
nicename(::Type{Jul})="July"
nicename(::Type{Aug})="August"
nicename(::Type{Sep})="September"
nicename(::Type{Oct})="October"
nicename(::Type{Nov})="Novermber"
nicename(::Type{Dec})="December"

nicename(s::String)=nicename(eval(symbol(ucfirst(s))))



nicename(Jan)
nicename("jan")

यह कौन सी भाषा है?
बदसूरत

जूलिया, बाहर निकलने के लिए मूर्खतापूर्ण बात।
gggg

0

अजगर 2.75

def getMonthName(short):
    from time import time, gmtime, strftime
    time = time()
    while not (lambda t:strftime("%B",t).upper().startswith(short.upper()))(gmtime(time)): time += 1
    return strftime("%B",gmtime(time))

सच्ची सुंदरता सादगी में है, जिसका अर्थ है कम स्मृति आवश्यकताएं। कोड के उन pesky शब्दकोशों और पैराग्राफ को भूल जाओ। यह फ़ंक्शन बहुत अच्छा है, यह किसी भी मामले का उपयोग करते हुए छोटे महीने के नामों से मेल खाएगा। ध्यान से देखें।

>>> getMonthName("Apr")
'April'
>>> getMonthName("apr")
'April'
>>> getMonthName("APR")
'April'

बोनस:

आप पहले 3 वर्णों से अधिक का उपयोग कर सकते हैं (उदाहरण के लिए "सेप्ट", "febr", आदि)

जब भी आप इस कोड को चलाते हैं, नाम की शुरुआत में मैच की जाँच करते हैं, तो यह हर दूसरे से लूप होगा, इसलिए यदि अपेक्षित परिणाम आपका चालू माह नहीं है, तो इसे हमेशा के लिए चला जाएगा। इसके अलावा कई शैली त्रुटियों।


0

में सी #

 var Dictonery = "january,febuary,March,April,May,June,July,August,September,October,November,December";
                     var input = "jan";
                     var outpt= Regex.Match(Dictonery , input + "[a-z]*",
RegexOptions.IgnoreCase).Value;

0

यहाँ एक छोटा सा कार्यक्रम है जो आपने अनुरोध किया है।

या वास्तव में, उनमें से 13।

मैंने इसे C ++ में लिखा है क्योंकि इस समय मैं इसका उपयोग करता हूं , लेकिन यह जावा को बहुत आसानी से परिवर्तित करता है। एक समर्पित छात्र होने के नाते, मुझे यकीन है कि आप अपने आप को थोड़ा सा काम कर सकते हैं।

#include <iostream>
#include <fstream>
#include <cstdlib>

int main()
{
   std::string months[] = { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" };

   for(int i = 0; i <= 12; ++i)
   {
       std::string filename = months[i] + ".cpp";
       std::ofstream myfile;
       myfile.open( filename.c_str() );
       myfile << "#include <iostream>\n\nint main()\n{\n\tstd::cout << \"" << months[i] << "\" << std::endl;\n return " << i << ";\n}";
       myfile.close();

       std::string compile = "g++ " + months[i] + ".cpp -o " +  months[i].substr(0, 3);
       system( compile.c_str() );
   }

   system("Dec");

   return 0;
}

ओह और मैंने लूप में थोड़ी ऑफसेट त्रुटि की अनदेखी की हो सकती है।

मैंने अच्छा बनने का फैसला किया और std::stringएस के बजाय एस का उपयोग किया char*। मुझे यकीन है कि मैंने आपको सिंटैक्स के साथ भ्रमित किया होगा char*[]और मैं निश्चित रूप से कॉल करना भूल गया होगा delete, या कॉल के deleteबजाय कुछ बेवकूफ जैसा किया था delete[]


0

सी

पूर्ण शब्दों के लिए संक्षिप्त प्रकार के सामान्य परिवर्तन, बस dataसरणी समायोजित करें ...

#include <stdio.h>
#include <string.h>
#include <stdint.h>

const char* getLong(char *shrt) {
    size_t position;
    size_t found = 0;
    static int32_t data[19];

    data[000] = 0x756e614a;
    data[001] = 0x46797261;
    data[002] = 0x75726265;
    data[003] = 0x4d797261;
    data[004] = 0x68637261;
    data[005] = 0x69727041;
    data[006] = 0x79614d6c;
    data[007] = 0x656e754a;
    data[010] = 0x796c754a;
    data[011] = 0x75677541;
    data[012] = 0x65537473;
    data[013] = 0x6d657470;
    data[014] = 0x4f726562;
    data[015] = 0x626f7463;
    data[016] = 0x6f4e7265;
    data[017] = 0x626d6576;
    data[020] = 0x65447265;
    data[021] = 0x626d6563;
    data[022] = 0x00597265;

    for (position = 0; position < strlen(shrt); position++) {
        shrt[position] = position < 1 ? (shrt[position] >= 97 ?
        shrt[position] - 97 + 65 : shrt[position]) : (
        shrt[position] <= 90 ? shrt[position] - 90 + 122 : shrt[position]);
    }

    for (position = 0; position < strlen(((char*)data)); position++) {
        if (((char*)data)[position] == shrt[found]) {
            found++;
            if (found == strlen(shrt)) {
                found = position;
                position -= strlen(shrt);
                for (;((char*)data)[found] > 90; found++);
                ((char*)data)[found] = 0;
                return &(((char*)data)[position + 1]);
            }
        } else {
            found = data[0] - data[1] - 0x2EF4EEE9;
        }
    }
    return "not a month";
}

int main(int argc, char *argv[]) {
    if (argc != 2) return 1;
    printf("%s is %s\n", argv[1], getLong(argv[1]));
    return 0;
}

0

पीएचपी

$month = strtolower($month);
if($month = 'jan') {
return 'January';
}
if($month = 'feb') {
return 'February';
}
if($month = 'mar') {
return 'March';
}
if($month = 'apr') {
return 'April';
}
if($month = 'may') {
return 'May';
}
if($month = 'jun') {
return 'June';
}
if($month = 'jul') {
return 'July';
}
if($month = 'aug') {
return 'August';
}
if($month = 'sep') {
return 'September';
}
if($month = 'oct') {
return 'October';
}
if($month = 'nov') {
return 'November';
}
if($month = 'dec') {
return 'December';
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.