এটি কি সত্যিই কানাডার দিন ছিল?


22

১ লা জুলাই কানাডার দিন (ইয়ে কানাডা)! অথবা এটা? দেখে মনে হয় যে এই দিনের উইকিপিডিয়া পৃষ্ঠায় কানাডা সম্পর্কিত প্রচুর সামগ্রী রয়েছে তবে আরও একটি দিন আছে যা কানাডিয়ান বেশি?

আপনার কাজ হ'ল একটি প্রোগ্রাম বা ফাংশন লিখুন যা ইনপুট হিসাবে একটি তারিখ (মাস এবং দিন) লাগে এবং ইনপুটড তারিখের জন্য উইকিপিডিয়া পৃষ্ঠায় "কানাডা" উল্লেখের সংখ্যাকে আউটপুট দেয় বা আউটপুট করে। কিছু নিয়ম:

  • তারিখগুলি আপনার পছন্দের যেকোন যুক্তিসঙ্গত বিন্যাসে ইনপুট হতে পারে
  • আপনার জমা দিতে অবশ্যই url থেকে ডেটা টানতে হবে en.wikipedia.org/wiki/Month_Day
  • কেবলমাত্র "Canada"অন্তর্ভুক্ত সাবস্ট্রিংগুলির সন্ধান এবং গণনা করতে হবে এবং কেবল শিরোনামের ক্ষেত্রে। "Canadian"গণনা করে না, তবে গণনা করে না "Canada's"। যতক্ষণ সঠিক, কেস-সংবেদনশীল পাঠ্য "Canada"একটি স্ট্রিংয়ের মধ্যে বিদ্যমান, এটি একটি মিল
  • পৃষ্ঠার বিষয়বস্তু সম্পর্কিত .htmlফাইলের মধ্যে যে কোনও কিছু বিবেচনা করা হয় (যেমন আপনি পৃষ্ঠাগুলি হিসাবে ডাউনলোড .htmlকরে নোটপ্যাডে খুললে কী প্রদর্শিত হবে)
  • ফলাফল STDOUT এ আউটপুট, ফিরে আসা বা অন্য কোনও যুক্তিসঙ্গত পদ্ধতিতে প্রদর্শিত হতে পারে

পরীক্ষার কেস:

July 1 => 34
May 14 => 1
Oct 31 => 2
July 4 => 2

এটি কোড গল্ফ, তাই সংক্ষিপ্ততম জমাটি জয়ী

(অচলিত বোনাস হিসাবে, আমি সর্বোচ্চ গণনা সহকারে দিনটি কী তা দেখতে আগ্রহী)


উইকিপিডিয়া এপিআই ব্যবহার করা যেতে পারে?
LegionMammal978

আমি এ সম্পর্কে তেমন কিছুই জানি না, তাই এর মধ্যে যদি তুচ্ছ কাজ হয় তবে আমি হ্যাঁ বলতে দ্বিধা বোধ করছি। আপনার সেরা রায়টি ব্যবহার করুন এবং এটি যদি খুব সহজ করে তোলে তবে দয়া করে
বর্জন করুন

9
উল্লেখ সুতরাং Canadaville , Canadair , Canadarm , Canadaga , Canadarago , Canaday , Canadaspis , এট অল। গণনা?
msh210

@ এমএস 210, হ্যাঁ, তারা করেন
wnnmaw

1
৩০ জুলাই দিনটি সর্বোচ্চ গণনা সহ! এটির জন্য একটি দ্রুত প্রোগ্রাম লিখেছেন, যদিও এটি গল্ফ হয় না।
অ্যান্ড্রু

উত্তর:


4

পাইথ, 31 বাইট

/jk'+"http://enwp.org/"z"Canada

অনলাইন প্রয়োগে কাজ করে না, সার্ভারটি ইন্টারনেট অ্যাক্সেস অক্ষম করে। আমি http://wki.pe/July_1 ব্যবহার করতে চেয়েছিলাম তবে দুঃখের বিষয় এটি একটি ক্লায়েন্টের দিক থেকে পুনর্নির্দেশ করা হয়েছে যাতে এটি ভুল পৃষ্ঠাটি নিয়ে আসে। ইনপুট ফর্ম্যাটটি July_1

কোডটি মূলত:

"".join(open("http://enwp.org/"+input())).count("Canada")

24

বাশ, 43 42 40 বাইট

curl -L enwp.org/$@|grep -o Canada|wc -l

ব্যবহার curl, grepএবং wcনির্দিষ্ট ওয়েব পেজ এ "কানাডা" এর ঘটনার গণনা। অন্যান্য উত্তরের মতো, ইনপুটটি ফর্ম্যাটে দেওয়া হয়েছে July_1। কোড গল্ফ এসইতে পোস্ট করা এটি আমার প্রথমবার এবং আমি সমস্ত নিয়মের সাথে যথেষ্ট পরিচিত নই। যে কোনও প্রতিক্রিয়া সর্বাধিক স্বাগতম।

বুঝতে পারিনি যে আউটপুটটি STDERR traditionতিহ্যগতভাবে উপেক্ষা করা হয়। 3 বাইটের জন্য ধন্যবাদ, ডেনিস !


তবে কি তার curl -sLচেয়েও কম হবে না wget -qO-?
নিক মাত্তিও

1
Stderr হবে আউটপুট ডিফল্টরূপে উপেক্ষা করা হয় , তাই আপনি ব্যবহার করতে পারেন curlছাড়া -s(অথবা wgetছাড়া -q)।
ডেনিস

@ ডেনিস ধন্যবাদ! আমি জানতাম না যে STDERRউপেক্ষা করা হয়। অনেক প্রশংসিত.
শ্রীরাম

@ কুন্ডর এটি একটি ভাল পয়েন্ট। কিছু কারণে দুটি পতাকা একত্রিত করার বিষয়টি আমার কাছে কখনও ঘটেনি। তবুও, যেহেতু আউটপুটটি STDERRডিফল্টরূপে উপেক্ষা করা হয়, তাই এটি -sসম্পূর্ণরূপে বাদ দেওয়া আরও কম হবে be
শ্রীরাম

15

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

38 বাইট, প্লাস 1 এর -peপরিবর্তে-e

$_=()=`curl -L enwp.org/$_`=~/Canada/g

ইনপুট লাগে July_1

আমাকে সাতটি বাইট সংরক্ষণ করার জন্য বুসুক্সুয়ানকে ধন্যবাদ ।


1
আমি কার্লের সাথে পরিচিত নই, তবে "http: //" এর ছয়টি বাইট সংরক্ষণ করা কি সম্ভব?
বুসুক্সুয়ান

1
@ বুসুক্সুয়ান, হ্যাঁ, অনেক ধন্যবাদ
msh210

7

পাইথন 3.5, 117 111 98 90 বাইট

( -8 বাইট ( 98 -> 90) অ্যালেক্সওয়ালঞ্চকে ধন্যবাদ )

from urllib.request import*
lambda i:urlopen('http://enwp.org/'+i).read().count(b"Canada")

এইচটিএমএল ডেটা আনার জন্য পাইথনের অন্তর্নির্মিত "urllib" লাইব্রেরিটি কেবল ব্যবহার করে এবং তারপরে সেই ডেটাতে "কানাডা" শব্দের উপস্থিতি গণনা করে। আমি কখন এবং কখন পারব আরও সময় চেষ্টা করব এবং গল্ফ করব। পুনঃনামকরনের দ্বারা এটি কল lambdaকিছু ফাংশন এবং তারপর একটি স্বাভাবিক আবৃত ফাংশন মত যে নাম কলিং print()। উদাহরণস্বরূপ, যদি ফাংশনটির নামকরণ করা হয় H, তবে আপনি এটি পছন্দ করুন print(H(Month_Day))


4
আমার মনে হয় আপনি প্রতিস্থাপন আট অক্ষর সংরক্ষণ করতে পারবেন .decode().count("Canada")সঙ্গে .count(b"Canada")
অ্যালেক্সওয়ালচান

@ আলেক্সওয়ালঞ্চান হ্যাঁ, আপনি ঠিক বলেছেন। ধন্যবাদ! :)
আর কাপ

অবশ্যই এটি পাইথন ২-এ সংক্ষিপ্ত হবে, যেহেতু urllib.urlopenফাংশনটি একটি সাবপ্যাকেজ ( from urllib import*বনাম from urllib.request import*) নয়, এবং পাইথন 2 এর স্ট্রিংগুলি ডিফল্টরূপে বাইট হওয়ায় b"Canada"এটি প্রতিস্থাপন করা যেতে পারে "Canada"। পাইথন 2 এ আমি 81 বাইট গণনা করি এবং এটি আমার পরীক্ষার অনুসারে কাজ করে।
মেগো

5

গণিত, 60 বাইট

Import["http://enwp.org/"<>#,"Source"]~StringCount~"Canada"&

বেনামে ফাংশন। পার্ল 5 সমাধানে একইভাবে ইনপুট লাগে July_1


কেবল লুপটি বন্ধ করতে, API- এর এই ব্যবহারটি সম্পূর্ণ জরিমানা
wnnmaw

5

পাওয়ারশেল, 52 বাইট

((iwr enwp.org/$($args[0]))-csplit"Canada").length-1
  • ইনপুট হিসাবে July_1
  • iwrজন্য সংক্ষিপ্ত Invoke-WebRequest
  • $($args[0])প্রথম কমান্ড লাইন আর্গুমেন্ট। হিসাবে স্ক্রিপ্ট শুরু করুন OhCanada.ps1 July_1
  • -csplit কেস সংবেদনশীল বিভাজন।

5

সি #, 85 বাইট

return Regex.Matches(new WebClient().DownloadString("http://enwp.org/"+d),"Canada").Count;

ইনপুট লাগে dমত July_1

আর July_1 হল সত্যিই কানাডা ডে সবচেয়ে রেফারেন্স থাকার। সঙ্গে February_1এবং April_2318 সঙ্গে 2nd জায়গা ভাগ "Canada"প্রতিটি s।

এই "Canada"(সমান্তরাল) দিন, 207 বাইট:

return Enumerable.Range(0,366).Select(i=>new DateTime(8,1,1).AddDays(i).ToString("MMMM_d")).AsParallel().OrderBy(d=>Regex.Matches(new WebClient().DownloadString("http://enwp.org/"+d),"Canada").Count).Last();

(8 বছর সংক্ষিপ্ত প্রতিনিধিত্ব সহ লিপ বছর)। সম্ভাব্যভাবে অদক্ষ, OrderByসম্ভবত এটি তৈরি করে> 366 ওয়েব কল, তবে কেবল সংক্ষিপ্ততর হয়ে চলেছে এবং আরও বেশি সময়ে সম্পূর্ণ হবে না বলে মনে হয়।


4

আর, 99 96 বাইট

x = ফাংশন (ডি) {পি = রিডলাইনস (পেস্ট0 (" http://enwp.org/ ", ডি)); যোগফল (এনসিআর (পি) -চ্যানার (জিএসব ("কানাডা", "", পি))) / 6}

d=scan(,"");p=readLines(paste0("http://enwp.org/",d));sum(nchar(p)-nchar(gsub("Canada","",p)))/6

এটি "জুলাই_1" আকারে ইনপুট ডি নেয় এবং কানাডাসের গণনা প্রদান করে। এটি পৃষ্ঠায় অক্ষরের সংখ্যা গণনা করে শব্দগুলিকে গণনা করে, তারপরে পৃষ্ঠা থেকে কানাডা শব্দটি সরিয়ে দেয় এবং আবার অক্ষরগুলি গণনা করে। কানাডা যতবার দেখায় তা হ'ল কানাডার চিঠির সংখ্যা দ্বারা বিভক্ত এই গণনাগুলির মধ্যে পার্থক্য, 6।

সম্পাদনা: স্ক্যান দিয়ে আমার ফাংশন প্রতিস্থাপন সম্পর্কে নীচের টিপটি প্রশংসা করি।


আমি মনে করি আপনি ফাংশন এবং কিছু বাইট সংরক্ষণের পরিবর্তে এটিকে প্রোগ্রাম তৈরি করে x=function(d){প্রতিস্থাপন করতে পারেন d=scan(,'')
pajonk

ধন্যবাদ! এটি তিনটি বাইট সঞ্চয় করেছে। আমি এর আগে স্ক্যান ব্যবহার করিনি।
অস্টিন

4

ES6, 89 বাইট

d=>fetch('http://enwp.org/'+d).then(r=>r.text().then(t=>alert(t.split`Canada`.length-1)))

দুঃখের সাথে সমস্ত প্রতিশ্রুতি মোছার ফলে আকারটি দণ্ডিত হয়: /


ভাল উত্তর, সাইটে আপনাকে স্বাগতম!
ডিজেএমসিএমহেম

1
দম্পতি মন্তব্য। আপনি July_1কয়েকটি বাইট সংরক্ষণ করতে বাকি প্রশ্নের মতো একই "ইনপুটটি ফর্ম্যাটে রয়েছে " কৌশলটি প্রয়োগ করতে পারেন । আপনার ব্যবহারেও ত্রুটি রয়েছে split().length(), যা আপনাকে লক্ষ্যটির চেয়ে বেশি প্রতিক্রিয়া দেবে।
ইভানসানচেজ

ইনপুট ফর্ম্যাটে @ ইভানসানচেজের সাথে সম্মত হন এবং এর -1পরে একটি প্রয়োজন .length, তবে আপনি https:ইউআরএলটির কিছু অংশ বাদ দিয়ে কিছু বাইট সংরক্ষণ করতে পারেন এবং আরও কয়েকটা সংরক্ষণ করার split'Canada'পরিবর্তে (তবে ব্যাকটিক্স দিয়ে!) ব্যবহার split('Canada')করতে পারেন!
ডম হেস্টিংস

বাহ ব্যাকটিক্স সম্পর্কে কোন ধারণা ছিল! আমি উল্লিখিত পরিবর্তনগুলি করেছি।
ইয়ার্ডগ্লাসঅফকোড

ফায়ারফক্স আপনাকে //পরে ড্রপ করতে দেয় http
ব্যবহারকারী 2428118

3

রুবি + কার্ল, 44 বাইট

p`curl -L enwp.org/#$_`.scan(/Canada/).size

ruby -n+ 43 বাইট। ইনপুট লাগে July_1


2

ক্লোজার, 71 বাইট

#(count(re-seq #"Canada"(slurp(str"https://en.wikipedia.org/wiki/"%))))

হ্যাঁ, এটি ব্যবহার করা ভাল লাগবে http://enwp.orgতবে আমি অনুমান করি slurpযে পুনর্নির্দেশগুলি (?) পরিচালনা করে না। অজ্ঞাতনামা ফাংশন যা "জুলাই_1" ফর্ম্যাটে দিন নেয়।


2

পিএইচপি, 65 বাইট

echo substr_count(file_get_contents('http://enwp.org'),'Canada');
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.