সংক্ষিপ্ত মাসের নামগুলিকে তাদের দীর্ঘ সমকক্ষগুলিতে রূপান্তর করুন [সমাপ্ত]


28

এই চ্যালেঞ্জ শেষ হয়েছে! অভিনন্দন ফ্লুক !

আমি নিশ্চিত যে আমি একটি ভাল গ্রেড পাব, তবে ফ্লোনকের আমার কাজটি সরিয়ে দেওয়ার পরে , আমার প্রফেসর বিশ্বাস করেননি এটি আমার এবং এটি কেন এত জটিল তা বুঝতে পারিনি ... আমি ব্যর্থ হয়েছি এবং আমার মা আমাকে ফেসবুক এবং মিনক্রাফ্ট থেকে ভিত্তি করে নিয়েছিলেন এক মাসের জন্য. আমি বুঝতে পারছি না। :(

আপনার সমস্ত জমা দেওয়ার জন্য ধন্যবাদ! কিছু দুর্দান্ত উত্তর এখানে। সরকারী বিজয়ী Flonk একটি স্কোর সঙ্গে 64 । শীর্ষ 5 টি হ'ল:

  1. ফ্লোনক , 64 (হাস্কেল, দক্ষ গণিত সহ!)
  2. ডিজিটালট্রামা , 40 (মেঘ, ভবিষ্যত এখন)
  3. প্রিমো , 38 (পাইথন, এবং আমার ব্যক্তিগত প্রিয় - এবং খুব পেশাদার!)
  4. সিলওয়েস্টার , 20 (র‌্যাকেট, যদিও জেনেমার এটি প্রসারিত করছে!)
  5. ইলমেল , 16 ( লুয়ায় একটি অত্যন্ত অনুকূলিত অ্যালগরিদম)

নীচে মূল চ্যালেঞ্জ।


আমাকে সাহায্য করুন, এটা খুব জরুরি !!! :(

আমাকে মাসের নামের সংক্ষিপ্ত সংস্করণগুলি তাদের দীর্ঘ উপস্থাপনগুলিতে রূপান্তর করতে হবে (যেমন "ডিসেম্বর" -> "ডিসেম্বর"), কেস-সংবেদনশীল। এখনই আমি জাভা ব্যবহার করছি; মাসের নামটি একটি স্ট্রিং এবং আমি এটির পরিবর্তে প্রথমে তারিখ অবজেক্টে রূপান্তর করব না। যে কোনও ভাষা যদিও করবে।

এটি করার কোন সহজ উপায় আছে ?? সহজ হয়ে যান দয়া করে আমি প্রোগ্রামিংয়ের নবাগত!


এটি একটি কোড ট্রোলিং জনপ্রিয়তার প্রতিযোগিতা (সেখানে সেরা ধরনের!)। 8 এপ্রিল, 2014-এ সর্বাধিক প্রচারিত উত্তরগুলি জিতেছে।


7
"দয়া করে আমাকে সাহায্য করুন, এটি অত্যন্ত জরুরি !!! :(" <<< আমার হোমওয়ার্ক করুন, তাড়াতাড়ি করুন?

13
@ ইটি যত তাড়াতাড়ি পারবেন !! আমার ক্লাসে ফেল করার আগে তাড়াতাড়ি কর!
জেসন সি

24
এমন একটি বৈশিষ্ট্য থাকতে হবে যা স্ট্যাকওভারফ্লো থেকে কোডগলফের কাছে এই জাতীয় প্রশ্নগুলি গোপনে অনুলিপি করে একটি কোড-ট্রোলিং ট্যাগ সহ কোডগল্ফ.এসএর উত্তরগুলি পেয়ে যাবে এবং স্পাগলারের ট্যাগগুলিতে টেক্সট মুছে ফেলা হলে মূল পোস্টে ফিরে স্থানান্তরিত হবে।
দানিরো

সরকারী অবস্থান অনুযায়ী কোড-ট্রোলিং অপসারণের প্রক্রিয়া চলছে এই প্রশ্নটি অনেক উত্তরের সাথে খুব বেশি ভোট দেওয়া হয়েছে, যার মধ্যে বেশিরভাগই চূড়ান্তভাবে ভোট পেয়েছে। এটি জরিপে 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 বিয়োগ করে এবং এমন একটি অ্যারে প্রস্তুত করে যাতে মাসের নামগুলির দীর্ঘতর সংস্করণ রয়েছে contains

[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

বাশ + জিএনইউ সরঞ্জামগুলি "মেঘ"

গুগলের কাছে সমস্ত কিছুর উত্তর রয়েছে এবং আমি নিজেকে ভাগ্যবান বোধ করছি :

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
ভাল খেলেছে স্যার!
ojblass

[a-zA-Z]প্রতিস্থাপন হিসাবে কাজ করবে না [[:alpha:]](আমি অন্তত চেষ্টা করার পরেও সেভাবে মনে হয়)? এটি 3 অক্ষর বাঁচাতে পারে। আরও কিছু অক্ষর জিজ্ঞাসা করে বাঁচানো যেতে পারে ask.com, তবে এটি নির্ভরযোগ্য হতে পারে না।
মাইকেল

7
@ মিক যা বিষয়টি বিবেচনা করবে তা যদি কোড গল্ফ হয়
আন্ডারগ্রাউন্ডোমোনাইল

7
@ জেসনসি এটি একটি "মেঘ-ভিত্তিক" সমাধান। অবশ্যই অন্য কোন ন্যায্যতা প্রয়োজন হয় না।
ডিজিটাল ট্রমা

4
@ ডিজিটালট্রামুম প্রিয় স্যার মেঘের কথা শুনেছেন এবং এটি খুব পেশাদার! খুব ভালো! খুব বিশ্বাস! টাই-জেসনসি
জেসন সি

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!


trolling

- এই কোডটি ভয়ঙ্করভাবে ধীর। অ্যারে অ্যাক্সেস হ্যাশম্যাপের তুলনায় প্রকৃতপক্ষে দ্রুত, এটি অ্যারেটি হ্যাশম্যাপের চেয়ে হাজার গুণ বড় হলে এটি প্রযোজ্য না।
- এই অবিশ্বাস্যভাবে বড় অ্যারেটি আবার তৈরি হয় এবং আবারও, প্রতিটি সময় ফাংশনটি ডাকা হয়। আরও কিছুটা জায়গা নষ্ট করতে প্রতিটি মান "অজানা" দিয়ে শুরু করা হয়।
- হ্যাশিং ফাংশনটি পাইথনের অসম্পূর্ণ ব্যক্তির কাছে অস্পষ্ট হতে বোঝানো হয়েছিল। আমি যুক্ত করেছি যে তদন্তকে নিরুৎসাহিত করার জন্য এটি "প্রচুর পেশাদার সরঞ্জামগুলিতে ব্যবহৃত হয়"।
- হ্যাশিং ফাংশনটি সঠিকভাবে বারো মাসের মধ্যে আলাদা করতে যথেষ্ট অনন্য, তবে অদলবদল করা অক্ষরগুলির মতো অনেকগুলি সাধারণ টাইপগুলি ধরবে না।
- 3 টির চেয়ে বেশি অক্ষরের যে কোনও স্ট্রিং সীমা ছাড়িয়ে অ্যারে সূচকে ক্রাশ হবে।
- "ফেব্রুয়ারি" ভুল বানান রয়েছে।
- "এই কাজটি অত্যন্ত গুরুত্বপূর্ণ।" অপারেটরটির জন্য গৌণ অহংকার rub


12
লোকেরা ভাল চেহারা দেখুন; এই একটি সঠিক কোড-trolling উত্তর! গীত। আমি নিশ্চিত যে আমি এটির সাথে আরও ভাল গ্রেড পাবো এবং এর চেয়ে আরও ভাল আমি স্লুও জাভা শেল স্ক্রিপ্টটি লেখার চেষ্টা করছি?! [চিত্রের বিবরণ এখানে লিখুন]
জেসন সি

2
"ফেব্রুয়ারি" ভুল বানান রয়েছে। - কিছু গুরুতর ট্রোলিং :)
জা-সি

10
+1 বলার জন্য যে হ্যাশ টেবিলগুলি অদক্ষ, তারপরে সত্যিই অদক্ষ হ্যাশ টেবিল প্রয়োগ করুন
জেমস_পিক

1
"হ্যাশ-ম্যাপের বিকল্প হয় সত্যিই ধীর অ্যারে তুলনায়। আপনি শুধুমাত্র একটি সংখ্যা প্রতিটি সংক্ষেপ রূপান্তর করতে হবে। সেখানে একটি প্রমিত হ্যাশ পন্থা যা এই জন্য ব্যবহার করা যেতে পারে ..." তাই অন্য কথায় একটি হ্যাশ মানচিত্র reimplement। Hah। +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"

স্পষ্টতই এখানে ট্রোলিংটি হ'ল এটি কেবল কয়েকটি ক্ষেত্রে কাজ করে তাই এটি অকেজো :-)


সম্ভবত কারণ, কোড-ট্রোলিং ট্যাগ উইকি থেকে, "কাজটি এমন কোড দেওয়া যা কাজ করে তবে অকেজো, ওপিকে মারাত্মক হতাশ করে।" আপনার কোডটিও কাজ করে না। এখানে, অন্য ডাউনটাওয়েট করুন।
ব্যবহারকারী 12205

@ace এটি কোনও ত্রুটি ফেলে না এবং এটি সঠিক উত্তর "ডিসেম্বর" দেয়। প্রশ্নটি নির্দিষ্ট করে দেয় নি যে এটি অন্যান্য মাসের জন্য কাজ করবে বা তাদের দীর্ঘ নামগুলি কীভাবে হবে তাই আমি আশা করি শেষে "এমবার" যুক্ত করা ভাল ট্রোল উত্তর answer
সিলেস্টার

1
প্রশ্ন থেকে, "আমাকে মাসের নামের সংক্ষিপ্ত সংস্করণগুলি তাদের দীর্ঘ প্রতিনিধিত্বগুলিতে রূপান্তর করতে হবে (যেমন" ডিসেম্বর "->" ডিসেম্বর ")" ডিসেম্বর একটি উদাহরণ, সমস্ত ক্ষেত্রে নয়। আপনার প্রোগ্রামটি সমস্ত মাসের নামের জন্য কাজ করা উচিত।
ব্যবহারকারী 12205

9
@ace এবং এটি করে। এটি "জান" কে "জেনেমার" রূপান্তরিত করে উদাহরণের দিকে তাকিয়ে যে ওপি কী চায় wants "ইচ্ছাকৃতভাবে প্রশ্নটির ভুল ব্যাখ্যা করা" এবং "প্রশ্নে প্রতারণা" উভয়ই এর উত্তর দেওয়ার ভাল উপায় যেহেতু কোড ট্রোলিং ট্যাগগুলির জন্য কীভাবে কেউ উত্তরকে হ্রাস করতে পারে তা আমি সত্যিই দেখতে পাচ্ছি না।
সিলওয়েস্টার

7
এটি হ'ল এক ধরণের সমাধানের প্রস্তাব দেওয়ার সাথে সাথে আমি "অস্বীকৃতি দানকারী" দিয়েছিলাম: আপনি বলেছিলেন এটি জরুরি ছিল, তাই আমি ছুটে এসেছি এবং কেবলমাত্র তিনটি কেস পরীক্ষা করেছি, তবে এটি সবার ক্ষেত্রেই পেরিয়ে গেছে "।
আশেলী

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

চলতি মাসের সংক্ষিপ্তসারটি পরীক্ষা করে দেখুন, সঠিকভাবে যদি দীর্ঘ স্ট্রিং ফিরে আসে অন্যথায় আবার চেষ্টা করুন .. এক মাসের পরে AT


উজ্জ্বল! আমি যখন ছিলাম তখন আমার পুরানো কাজের
সময়টির

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;

- রেগেক্স নরক আমি আশা করি রেজেক্স "অস্পষ্ট ভাষা দ্বারা ট্রোলিং" হিসাবে গণ্য হবে না।
- অত্যন্ত ভঙ্গুর। আপনার বাগসেমবারের জন্য সমর্থন যোগ করার জন্য খুব কঠিন সময় লাগবে।
- অপঠনযোগ্য নিদর্শন ভিতরে প্যাটার্ন এটি আরও বেশি করে তোলে।
- জুন এবং জুলাইয়ের একক বিবৃতিতে সংক্ষেপণ আসলে কিছুই সংকুচিত করে না।
- নজরদারি জন্য এলোমেলো ব্যবহার g, অন্যরা প্রতিস্থাপনে প্যাটার্ন পুনরাবৃত্তি।
- use re 'eval'আসলে প্রয়োজন হয় না; এটি তখনই ব্যবহৃত হয় যখন কোনও পরিবর্তনশীল প্যাটার্নটি চাওয়া হয়। এছাড়াও, eval"লাভ" করতে "সামান্য" সংক্ষেপণ "ব্যবহার করুন।


17
আমার কাছে সাধারণ পার্লের মতো মনে হচ্ছে ...
পিটার ওলসন

1
@ পিটারঅলসন ভাষাটি অ্যালগরিদমের সাথে মানানসই হিসাবে বেছে নেওয়া হয়েছিল, তবে অ্যালগরিদমটি কার্যটি মোটেই মানায় না, আপনি কি একমত নন? :-)
জন ডিভোরাক

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। যাইহোক, এটি স্পষ্টভাবে আমাদের কোডকে প্রভাবিত করতে পারে না, যেমন আমরা এটি পরীক্ষা করি, তাই না? লক্ষ্য করুন যে শর্টনামটাইমবারে একটি অনিচ্ছাকৃত সুইচ পতন রয়েছে, যার অর্থ প্রতি মাসে 0 টি শেষ হয় Hand হ্যান্ডলি JANUARY == 0, সুতরাং আমাদের পরীক্ষাটি পাস হয়।


1
ওহ ,শ্বর, আমি স্যুইচ বিবৃতিতে বিরতির অভাব লক্ষ্য করিনি। আমি একটি স্যুইচ ব্যবহার করার পরে এটি এত দীর্ঘ হয়েছে।
জো জে।

10

বাশ + কোর্টিল + পাক 8 এচপি 12

বর্তমানে যে উত্তরটি সর্বাধিক উন্নত করা হয়েছে তা প্রতিটি প্রশ্নের জন্য ইন্টারনেটে অ্যাক্সেস করতে হবে। খুব অদক্ষ হওয়ার পাশাপাশি এর অর্থ হ'ল ইন্টারনেট না থাকলে আপনার স্ক্রিপ্টটি ব্যর্থ হবে।

আপনার হার্ড ডিস্কে প্রয়োজনীয় তথ্য সংরক্ষণ করা ভাল। অবশ্যই, আপনি এই খুব স্ক্রিপ্টের জন্য প্রয়োজনীয় ডেটা সঞ্চয় করতে পারেন, তবে এটির জন্য বিভিন্ন কাজের জন্য বিভিন্ন ডেটা প্রয়োজন। আপনার সম্ভবত একটি একক বহু-উদ্দেশ্যমূলক ফাইলের জন্য প্রয়োজনীয় সমস্ত ডেটা সংরক্ষণ করা আরও ভাল।

# 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.

trolling

  • এসটিডিআরআর বন্ধ করে, তাই স্ক্রিপ্টটি ব্যর্থ হলে আমরা এটি ডিবাগ করতে পারব না।

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

  • বাস্তবায়ন প্রয়োজন এতে যান প্রথম। যেমন এটি নিজের পক্ষে যথেষ্ট খারাপ ছিল না, স্ক্রিপ্টের ফাইলনামে ফাঁকা স্থান ধারণ করলে গোটো ফাংশনটি কাজ করবে না।

  • বর্তমান ডিরেক্টরিতে এনওয়াইক 8 স্ট্রিংযুক্ত একটি ফাইল উপস্থিত থাকলে আমরা সংরক্ষণাগারটি ডাউনলোড করব না । এটি কাজ করতে পারে

  • একটি 100 এমবি ফাইল ডাউনলোড করা (এমনকি 36 মেগাবাইটে সংক্ষেপিত হলেও) এই কাজের জন্য স্পষ্টতই ওভারকিল। প্লাস, enwik8 এ 4+ গিগাবাইট উইকিপিডিয়া ডাম্পের প্রথম 100 এমবি রয়েছে, সুতরাং কোনও নির্দিষ্ট কাজের জন্য এটি কোনও কার্যকর তথ্য রাখার সম্ভাবনা কম।

  • Paq8hp12 দিয়ে ফাইলটি সংকুচিত করে এটি 16 এমবিতে সঙ্কুচিত হয় তবে সংক্ষেপণ এবং সংক্ষেপণ উভয়ই এক ঘন্টা সময় নেয়। এটি এই স্ক্রিপ্টটি প্রথমবার চালানোর সময় উভয়ই করবে।

  • স্ক্রিপ্টটি এনওয়াইক 8 এর জিপড বা কাঁচা সংস্করণ মুছবে না , সুতরাং এটি 16 এমবিতে সঙ্কুচিত করা আরও বেশি হার্ড ডিস্কের স্পেস ব্যবহার করেছে।

  • সংক্ষেপণ ইউটিলিটি কেবলমাত্র 64৪-বিট প্রসেসরের উপর কাজ করবে।

  • এটি বর্তমান ডিরেক্টরিতে ডাউনলোড করা বা নিষ্কাশিত সমস্ত ফাইলকে রেখে দেয়।

  • এটি স্ক্রিপ্টের সবচেয়ে জটিল অংশটি ব্যাখ্যা করে না, যা হ'ল রেজেক্স-পাইপ দৈত্য। এটি মূলত 4 এবং 19 বাইটের মধ্যে সমস্ত স্ট্রিংগুলি বের করে যার একটি শীর্ষস্থানীয় এবং পেছনের অঙ্ক রয়েছে, সংখ্যার সংখ্যা অনুসারে এই স্ট্রিংগুলি বাছাই করে, সংক্ষিপ্ত মাসের নামযুক্ত স্ট্রিংগুলি ফিল্টার করে, ঘটনাগুলির সংখ্যা অনুসারে আবার সাজিয়ে তোলে এবং সর্বাধিক ঘন ঘন প্রদর্শিত হয়।

  • এমনকি যদি উপরে ছিল একটি ভাল ধারণা, বিড়াল শুরুতে অপ্রয়োজনীয় হয়, egrep বরং এই কাজের জন্য ধীর, Regex ফিরে আসবে অনেক মিথ্যা positives এর (সবকিছু এক Regex সঙ্গে সম্পন্ন হতে পারে), প্রথম সাজানোর | uniq -c | সাজানো-এন | ট্যাক একেবারে কিছুই অর্জন করে না, এটি সাজান ব্যবহার করে Tac পরিবর্তে সাজানোর -r এবং কাটা নির্ভরযোগ্যভাবে কাজ করবে না যেহেতু শুরুতে স্পেস সংখ্যা পরিবর্তনশীল।

  • রেজেক্স একটি বর্ধিত পসিক্স নিয়মিত এক্সপ্রেশন, সুতরাং বিআরই সিনট্যাক্স গুগল করা মোটেই সহায়তা করবে না।

  • নভেম্বরের পরিবর্তে নভেম্বর এবং আগস্টের পরিবর্তে 6 ফেরত আসে ।


1
এগুলি খুব সহায়ক পরামর্শ! অবশ্যই এটি আরও দক্ষ এবং আমার প্রশিক্ষক আমাকে বলেছিলেন যে পেশাদাররা ওওপির জন্য ডেটা পুনরায় ব্যবহারযোগ্য করে তোলে এবং ওওপি দ্রুত এবং আরও ভাল!
জেসন সি

9

পাইথন + এসকিউএলাইট

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

আপনার যা প্রয়োজন তা হল একটি ডাটাবেস।

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

এটি সংক্ষিপ্ত ... তবে এটি "চরিত্রের প্রতি অশুভ" অনুপাত গণনা করুন ... মুওয়ুআআহহহহহ ...


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

এটি dateতারিখের বিন্যাস বৈশিষ্ট্যগুলির (এন) (আব) ব্যবহার এবং dateস্থানীয়করণকে সম্মান করে, এটি স্থানীয়করণের সাথে মেলে মাসের উত্পন্ন করে। -d"a_month_name 1নামযুক্ত মাসের প্রথম তারিখ (সম্ভবত সংক্ষিপ্ত নাম) তারিখ নির্ধারণ করে এবং অনুপস্থিত বছর সেট করা থাকে সুতরাং এটি পরবর্তী মাস হবে। +%Bপ্রদত্ত তারিখটি ভাড়া দেওয়ার ফর্ম্যাট এবং এর অর্থ 'মাসের দীর্ঘ নাম'। সমস্ত ট্যাট শেল ফাংশনে আবৃত এবং সেখানে কোনও BASH নির্দিষ্ট জিনিস নেই, এসএইচ এটি চালানোর জন্য যথেষ্ট হবে। সুতরাং মূলত dateসমস্ত প্রশংসা প্রাপ্য, আমার নয়! এবং আমি কোডগল্ফের ডাউনভোটগুলি সম্পর্কে চিন্তা করি না! : -Þ

আমি এটা ভালোবাসি! অপব্যবহারকারী।
ওজব্লাস 14

4

Perl

কিছু ভাল ওল 'ব্রুট ফোর্স সম্পর্কে কীভাবে?

$|++;

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
    
  • অ্যালগরিদম স্বজ্ঞাতভাবে সুস্পষ্ট, এবং আমি পাঠকের কাছে একটি অনুশীলন হিসাবে একটি প্রমাণ রেখেছি, তবে কেবল এটি সব ক্ষেত্রেই কাজ করে তা নিশ্চিত করার জন্য, আসুন আমরা আগস্টে পরীক্ষা করা যাক - মাসের এক মাস, এবং আমরা অবশ্যই এটি নিশ্চিত করতে পারি কিছু মিস করিনি:

    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

পিএস - আমার এমন কিছু কোড ছিল যা রানটাইমের আরও বেশি ছড়িয়ে পড়েছিল তবে এটি বিরক্তিকরভাবে সমস্ত ক্ষেত্রে সঠিক উত্তরকে আউটপুট করে দেয় যা মজাদার খুব কম।


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

নিখুঁত নয়, তবে QA এ পাঠানোর পক্ষে যথেষ্ট ভাল। জনস্রোসিংয়ের শক্তিটি কাজে লাগিয়ে আমি এই ফলাফলগুলি অর্জন করতে সক্ষম হয়েছি:

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.
}

যদি এটি স্পষ্ট না হয়, সম্প্রসারিতমনাথনাম ("জান") "জানুয়ার কি মাস" এর ফলাফল হিসাবে গুগল থেকে "জান" দিয়ে শুরু করে একটি এলোমেলোভাবে নির্বাচিত শব্দটি প্রদান করে। আপনি যদি প্রক্সিটির পিছনে না থাকেন তবে এই ক্ষেত্রে এটি "আগস্ট" এ ফিরে আসে।


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++;
}

ট্রলস:

  • এই উত্তর;

  • সময় অঞ্চলগুলি পরিচালনা করে না এবং একটি সতর্কতা বার্তা আউটপুট দেয়;

  • মাস ইনপুট হিসাবে গ্রহণ করে না, তবে আপনাকে এটি হার্ডকোড করা দরকার;

  • এমনকি আপনি এটি হার্ডকোড করার পরেও এটি কেস-সংবেদনশীল;

  • এই কোডটি যা করার চেষ্টা করে তা হচ্ছে চলতি মাসটি পাওয়া, প্রথম তিনটি অক্ষর পাওয়া এবং এটি কিনা এর সাথে মেলে কিনা তা পরীক্ষা করা $month। যদি এটি মেলে না, এটি টাইমস্ট্যাম্পটিকে 1 দ্বারা বাড়িয়ে তোলে এবং তারপরে আবার চেষ্টা করে। এটি অত্যন্ত স্লো হতে হবে ;

  • এই কোডটি কিছুই দেয় না (অবশ্যই সতর্কতা ব্যতীত);

  • মন্তব্যগুলি খুব বিভ্রান্তিমূলক: time()বর্ধিত সময়ের পাঠাগারটি লোড করে না, তবে বর্তমান টাইমস্ট্যাম্পটি পায়; substr($checkThis,1,4)মাসের প্রথম চিঠি অগ্রাহ্য করা হবে ও পায় নিম্নলিখিত 4 ( archজন্য Marchযেমন); সঠিক ফর্মটি মন্তব্যগুলির মধ্যে একটি;

  • এমনকি কোনও মিল পাওয়া গেলেও কোডটি লুপ থেকে প্রস্থান করবে না: আসলে, যে ভেরিয়েবল সেট হয়ে যায় trueতা ভিন্ন।


3
-1: কোড-ট্রোলিং ট্যাগ উইকি থেকে, "কাজটি কোড দেওয়া হয় যা কাজ করে তবে বেহুদা, ওপিকে মারাত্মক হতাশ করে।" আপনার কোডটিও কাজ করে না।
ব্যবহারকারী 12205

1
হুঁ? এটি কাজ করে এবং এটি অকেজো। অন্তহীন লুপটি শেষ করতে 10 বছর অপেক্ষা করা যথেষ্ট হতাশ নয়? "এটি কাজ করে" এর অর্থ (কমপক্ষে, এটি আমার জন্য অর্থ), কোডটি সংকলন করে এবং সফলভাবে চালিত হয়, এর অর্থ এই নয় যে এটি শেষ করতে হবে বা কোনও সমাধান দিতে হবে।
ভেরিওস

@ace (আমি আগের মন্তব্যে আপনাকে উল্লেখ করতে ভুলে গেছি); আমি এই মন্তব্যে যা বলার চেষ্টা করছি তা হ'ল আমি কী বোঝাতে চাইছি তা আরও ভাল করে বুঝতে চাই কারণ এটি আমার দৃষ্টিকোণ থেকে সঠিক।
ভেরিওস

archসমান হবে না কারণ সম্ভবত Mar?
ব্যবহারকারী 12205

সুতরাং আপনার কোড মাসের নাম রূপান্তর করতে পারে না, সুতরাং এটি কার্যকর হয় না।
ব্যবহারকারী 12205

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 মাস আগে তালিকায় রেখেছি earlier পরিসংখ্যানগতভাবে বলতে গেলে, তারিখগুলির এমনকি বিতরণ দেওয়া হলেও আপনি সেই মাসগুলির মধ্যে একটির মধ্যে সম্ভবত বেশি থাকবেন।

আমি আপনার বসকে প্রভাবিত করার জন্য প্রতিটি লাইন নথিভুক্ত করেছি।

এটি নামক কোনও ফাইলে সংরক্ষণ করুন lookup_month_script.bashএবং এটি পরীক্ষা করতে নীচের লাইনটি অনুলিপি করুন:

bash $PWD/lookup_month_script.bash "0ct"

আপনার প্রকল্পের সাথে সৌভাগ্য কামনা করছি!


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

- এছাড়াও অক্টোবরের জন্য কাজ করে না। কেন কেউ তা দেখতে পারে না।

- যদি ইনপুটটি খালি হয়ে যায়, সমস্ত 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
আমি ফেব্রুয়ারি - r :) ট্রোলডও হয়েছি বলে মনে হচ্ছে, উদ্দেশ্য ভিত্তিতে অবশ্যই ...
ম্যাট

কারও মতো উইন্ডসডেসের কেস পেয়েছে বলে মনে হচ্ছে।
জেসন সি

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

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

আমি নিশ্চিত আপনি যখন আপনার শিক্ষককে এটি দেখান তখন আপনি গর্বিত হবেন!


trolling

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


1

জাভা

প্রিয় কম্পিউটার বিজ্ঞানী শিক্ষানবিস,

এটি বেশ কঠিন কাজ, এবং আমি কেবলমাত্র আংশিক সমাধান করেছি: আমার ধারণা এটি আপনার থিসিসের কাজ বা কোনও গবেষণার উদ্দেশ্যে for

এখনও অবধি আমার কাছে কিছু ছোট ছোট বাগ সহ বিটা সংস্করণ রয়েছে: কখনও কখনও এটি ভুল ফলাফল দেয় তবে আমি নিশ্চিত যে আপনার প্রফেসর আপনার প্রচেষ্টা গ্রহণ করবেন।

ফাইল মাস.জাভা:

/**
 * 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;
            }
        }
    }
}

trolling

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


1


এই চিন্তা উদ্দীপনা এবং মূল প্রশ্ন পোস্ট করার জন্য আপনাকে ধন্যবাদ। আমাদের মধ্যে যারা স্ট্যাক ওভারফ্লোতে উত্তর পোস্ট করে তারা পোস্টারগুলিকে সহায়তা করার সুযোগ উপভোগ করে, কারণ এই ওয়েবসাইটটির উদ্দেশ্য যেমন পাঠ্য বইয়ের জন্য এবং স্ব-অনুপ্রাণিত শিক্ষাকে অপ্রচলিত করার জন্য এই জাতীয় সমস্ত প্রশ্নকে তালিকাভুক্ত করা। এই বিশেষ প্রশ্নটি সম্পর্কে আপনার বোঝার অভাবের কারণে আপনি শঙ্কিত হবেন না, কারণ এটি একটি সাধারণ ধরণের প্রশ্ন কারণ এটি কার্যকরভাবে সমাধান করার জন্য এটির গোপন কৌশল বলে। প্রশিক্ষকরা সাধারণত আপনার ভাষাটি বোঝার গভীরতাই নির্ধারণ করতে সাধারণত এই প্রশ্নটি জিজ্ঞাসা করবেন না, তবে আপনি যেখানে এই সাধারণ প্রোগ্রামার ক্ষতি সম্পর্কে অবগত আছেন: চরিত্রের এনকোডিংও রয়েছে কিনা তা নির্ধারণ করতে will নীচের লিঙ্কটি পুঙ্খানুপুঙ্খভাবে পড়ার পরে আপনি আরও সম্পূর্ণ বুঝতে পারবেন, আমি জানি যে আপনি যা করবেন: লিঙ্ক

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

You আপনি যেখানে ব্যবহার না করার পরামর্শ দেওয়ার ক্ষেত্রে খুব বুদ্ধিমান প্রদত্ত তারিখ অবজেক্ট, ডিফল্ট ভাষাগুলিতে কোড ব্যবহার করা আপনাকে আপনার প্রফেসরের কাছে ভাষার সত্যিকারের উপলব্ধি প্রদর্শন করতে দেয় না।

এই কঠিন প্রশ্নের মধ্য দিয়ে আপনাকে সহায়তা করার জন্য, আমি একটি গ্রোভির অ্যাপ্লিকেশন লিখেছি যা আপনার সমস্যার সমাধান করবে, এবং নিঃসন্দেহে সেই গুপ্ত জাভাটির চেয়ে আরও বেশি অর্থবোধ করব। এই উত্তরের জন্য গ্রোভির ব্যবহার সম্পর্কে শঙ্কিত হবেন না, কারণ গ্রোভী জাভা কোডের মতোই জেভিএম-তেও চালায়, তাই আপনি কয়েকটি কোড পরিবর্তন করে সহজেই এই কোডটি আপনার জাভা ক্লাসে ফেলে দিতে পারেন। এই প্রক্রিয়াটি আপনাকে সহায়তা করার জন্য আমি একটি লিঙ্ক সংযুক্ত করেছি, তবে সকাল অবধি আমি এটি নিয়ে চিন্তা করব না, কারণ এটির জন্য কেবল এক সেকেন্ড সময় লাগবে (পরবর্তী লিঙ্কটি এখানে: লিঙ্কটি রয়েছে লিঙ্ক। সুতরাং, এখনই কোডটি অনুলিপি করুন, কারণ আমি যথাযথভাবে কাজ করছে এমন কোডের প্রচুর পরীক্ষার কেস দেখাব, যাতে আপনি আপনার জমা দেওয়ার ক্ষেত্রে আত্মবিশ্বাসী বোধ করতে পারেন। আমি অবশ্যই বুঝতে পারি যে আপনি খুব ব্যস্ত আগ্রহী শিক্ষার্থী, আপনার প্লেটে প্রচুর দায়বদ্ধতা রয়েছে with আপনি সম্ভবত অবগত আছেন যে এখানে অবদানকারীরা পুরো সময় কাজ করে এবং ভাল ক্ষতিপূরণ হয়।

//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")

এটা কোন ভাষা?
ugoren

জুলিয়া, বোকা জিনিস ছেড়ে।
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))

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

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

বোনাস:

আপনি প্রথম 3 টি অক্ষরের চেয়ে বেশি ব্যবহার করতে পারেন (যেমন "সেপ্ট", "ফেবার" ইত্যাদি)

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


0

মধ্যে C #

 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।

আমি এটি সি ++ এ লিখেছি কারণ এই মুহূর্তে আমি এটিই ব্যবহার করি তবে এটি জাভাতে খুব সহজেই রূপান্তরিত হয়। একজন উত্সর্গীকৃত শিক্ষার্থী, আমি নিশ্চিত যে আপনি নিজেরাই এটি তৈরি করতে পারেন।

#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';
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.