টাইমস্প্যানগুলি গণনা করুন


17

বাস্তব জীবনের দৃশ্যের দ্বারা অনুপ্রাণিত হয়ে, যার উত্তর আমি এখানে চেয়েছি: /superuser/ মনে হচ্ছে,-ইন-একটি-সেট-টু-ডেট বিশেষত্বহীন

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

উদাহরণ স্বরূপ:

  #      Start      End
  1    2001-01-01 2001-01-01
  2    2001-01-01 2001-01-03
  3    2001-01-01 2001-01-02
  4    2001-01-03 2001-01-03
  5    2001-01-05 2001-01-05

উপরের ডেটা দেওয়া, ফলাফল নিম্নলিখিত হিসাবে হওয়া উচিত:

2001-01-01: 3 (Records 1,2,3)
2001-01-02: 2 (Records 2,3)
2001-01-03: 2 (Records 2,4)
2001-01-04: 0
2001-01-05: 1 (Record 5)

আপনাকে কেবল প্রতিটি দিনের জন্য গণনাগুলি আউটপুট করতে হবে (ক্রমানুসারে, সর্বাধিক সর্বাধিক সজ্জিত); কোন রেকর্ড তারা উপস্থিত।

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

ইনপুট / আউটপুট

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

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

আপনি ধরেও নিতে পারেন যে কোনও প্রদত্ত পরিসরের দুটি তারিখের মধ্যে প্রথমটি দ্বিতীয়টির সমান বা তার সমান হবে (যেমন আপনার নেতিবাচক তারিখের সীমা থাকবে না)।

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

সুতরাং, উপরের উদাহরণের জন্য আউটপুট হবে {3,2,2,0,1}

এটি সম্ভব যে কিছু দিন কোনও সময় ব্যাপ্তিতে অন্তর্ভুক্ত থাকে না, সেই ক্ষেত্রে 0সেই তারিখের আউটপুট।

বিজয়ী মানদণ্ড

এটি কোড-গল্ফ, তাই সর্বনিম্ন বাইটস জয়। সাধারণ বর্জন প্রযোজ্য

সিউডো-অ্যালগরিদমের উদাহরণ

For each time range in input
    If start is older than current oldest, update current oldest
    If end is newer than current newest, update current newest
End For
For each day in range oldest..newest
   For each time range
       If timerange contains day
            add 1 to count for day
End For
Output count array

একই ফল পেতে অন্যান্য অ্যালগরিদমগুলি ভাল।


3
পূর্ণসংখ্যার একটি অ্যারে প্রয়োজনীয়, বা আমাদের অন্য কিছু ফেরত দেওয়ার অনুমতি দেওয়া আছে, প্রতিটি তারিখ হিসাবে কী সহ একটি অভিধান বলুন? আমাদের যদি কোনও অভিধান ফেরত দেওয়ার অনুমতি দেওয়া হয়, তবে আমরা কি তারিখগুলি বাদ দিতে পারি যে কোনও টাইমস্প্যানের মধ্যে নেই?
জংহওয়ান মিন

1
আমরা কি দুটি তালিকা হিসাবে ইনপুট নিতে পারি, একটি শুরু তারিখ সহ এবং অন্যটি শেষের তারিখ সহ?
জিউসেপ

হ্যাঁ, একটি তারিখ বাদ দেওয়া ব্যতীত এই সমস্ত জিনিস ঠিক আছে - আমি স্পষ্ট করে বলছি যে 0 এর ক্ষেত্রে আউটপুট হওয়া উচিত
সাইমনালেএক্সান্ডার 20055

3
আমি জিজ্ঞাসা করতে পারি কেন 0একটি অভিধানে থাকা উচিত? এটা শুধুমাত্র থেকে পুনরুক্তি করতে ব্যবহারকারী জোর মনে হচ্ছে min(input)থেকে max(input), যা চ্যালেঞ্জ (কম্পিউটিং timespans) কোর কিছু যোগ করার জন্য মনে হয় না।
JungHwan মিন

2
@ জংহওয়ানমিন আমার ধারণা এটি এটিকে পরিবর্তন করে না; তবে আমি যখন পোস্ট করেছি তখন স্পষ্টভাবে আমার কাছে এটি ছিল, তাই আমি এটি নিয়ে
বিড়বিড়

উত্তর:


3

এপিএল (ডায়ালগ ইউনিকোড) , 32 বাইট এসবিসিএস

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

¯1+⊢∘≢⌸(R,⊢)∊(R←⌊/,⌊/+∘⍳⌈/-⌊/)¨⎕এটি অনলাইন চেষ্টা করুন!

যদি এটি অবৈধ হয়, (ওয়াইএমডি) জোড়ার একটি তালিকা অতিরিক্ত 21 বাইটের জন্য রূপান্তর করা যেতে পারে, মোট 53:

¯1+⊢∘≢⌸(R,⊢)∊(R⌊/,⌊/+∘⍳⌈/-⌊/)¨{2⎕NQ#'DateToIDN'⍵}¨¨⎕এটি অনলাইন চেষ্টা করুন!


 মূল্যায়ন ইনপুট জন্য প্রম্পট কনসোল

( প্রতিটি জোড়ায় নিম্নলিখিত ট্যাসিট ফাংশনটি প্রয়োগ করুন

⌊/ সর্বনিম্ন (লিট। মিনিট হ্রাস), অর্থাৎ শুরু করার তারিখ

⌈/- সর্বাধিক (অর্থাত্ শেষের তারিখ) বিয়োগ

⌊/+∘⍳ প্রারম্ভের তারিখের সাথে 1-মাধ্যমে-পরিসীমা

⌊/, আরম্ভের তারিখটি এতে চাপিয়ে দিয়েছে

R← এই ফাংশনটি বরাদ্দ করুন R( আর অ্যাঞ্জের জন্য)

ε nlist (চেপ্টা) একটা একক তালিকায় রেঞ্জ তালিকা

() এটিতে নিম্নলিখিত সূক্ষ্ম ফাংশন প্রয়োগ করুন:

R,⊢Rআর্গুমেন্টের পরে  প্রয়োগের (অর্থাত্ তারিখের সীমা) ফলাফল
  (এটি নিশ্চিত করে যে পরিসরের প্রতিটি তারিখ অন্তত একবার উপস্থাপন করা হয় এবং তারিখগুলি সাজানো ক্রমে প্রদর্শিত হয়)

 প্রতিটি জোড়ের জন্য অনন্য (তারিখ, ইনপুটটিতে উপস্থিতির সূচকগুলি), করুন:

⊢∘≢ সূচকের তালিকার পক্ষে প্রকৃত তারিখ উপেক্ষা করুন

¯1+ এই টিলেজিগুলিতে -1 যুক্ত করুন (কারণ আমরা প্রতিটি তারিখের মধ্যে একটি রেঞ্জের প্রেন্ডেন্ট করেছি)


9

জাভাস্ক্রিপ্ট (ES6), 85 বাইট

Dateজোড়াগুলির তালিকা হিসাবে ইনপুট নেয় । শুরুর তারিখ অনুসারে তালিকাটি বাছাই করা প্রত্যাশা করে। পূর্ণসংখ্যার একটি অ্যারে প্রদান করে।

f=(a,d=+a[0][0])=>[a.map(([a,b])=>n+=!(r|=d<b,d<a|d>b),r=n=0)|n,...r?f(a,d+864e5):[]]

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

বা 84 বাইট যদি আমরা জেএস টাইমস্ট্যাম্পগুলি ইনপুট হিসাবে নিতে পারি (@ শেগির পরামর্শ অনুসারে)



আদিম মানগুলি ইনপুট হিসাবে গ্রহণ করে একটি বাইট সংরক্ষণ করুন: টিআইও
শেগি

7

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

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

a=>a.map(g=([x,y])=>y<a[0][0]||g([x,y-864e5],o[y]=~~o[y]+(x<=y)),o={})&&o

চেষ্টা করে দেখুন


আমি এই by০ বাইট সংস্করণে কাজ করছিলাম যতক্ষণ না এটি নিশ্চিত হয়ে যায় যে কোনও রেঞ্জের মধ্যে উপস্থিত না হওয়া তারিখগুলি অবশ্যই তাড়াতাড়ি তা উপরের সমাধানটিতে আপডেট করা উচিত

a=>a.map(g=([x,y])=>x>y||g([x+864e5,y],o[x]=-~o[x]),o={})&&o

এটি অনলাইনে ব্যবহার করে দেখুন (বা আউটপুটে মানুষের পাঠযোগ্য তারিখ সহ )


দেখে মনে হচ্ছে ES6 একটি কী অর্ডার সংজ্ঞায়িত জাতীয় অবজেক্টের জন্য (মত stackoverflow.com/a/31102605/8127 STRING এবং প্রতীক কী জন্য) basicaly সন্নিবেশ অর্ডার (এবং Tio এর Nodejs যে অনুসরণ বলে মনে হচ্ছে না: tinyurl.com/ybjqtd89 )। এবং সাধারণভাবে আমার মতামত একটি বাস্তবায়নের বিশদ (যা এখানে বস্তুটি হ'ল) ​​চ্যালেঞ্জ বিধির ব্যাখ্যা ব্যাখ্যা করা উচিত নয়, তবে আমি মেটা পোস্টের জন্য অপেক্ষা করব।
- মনিকা

6

অক্টাভা , 63 বাইট

@(x)histc(t=[cellfun(@(c)c(1):c(2),x,'un',0){:}],min(t):max(t))

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

এখন যে কুৎসিত ছিল!

ব্যাখ্যা:

datenumউপাদানগুলির একটি সেল অ্যারে হিসাবে ইনপুট নেয় (অর্থাত্ একটি স্ট্রিংটিকে "2001-01-01"একটি সংখ্যাসূচক মানে রূপান্তরিত করা হয়, এটির মতো দেখতে:

{[d("2001-01-01") d("2001-01-01")]
[d("2001-01-01") d("2001-01-03")]
[d("2001-01-01") d("2001-01-02")]
[d("2001-01-03") d("2001-01-03")]
[d("2001-01-05") d("2001-01-05")]};

যেখানে d()ফাংশন হয় datenum। আমরা তারপর ব্যবহারcellfun প্রতিটি সারিটির জন্য প্রথম কলাম থেকে দ্বিতীয় পর্যন্ত সীমা তৈরি করে ঘর তৈরি করতে । আমরা এই রেঞ্জগুলিকে অনুভূমিকভাবে একত্রীকরণ করি, যাতে সমস্ত তারিখ সহ আমাদের দীর্ঘ অনুভূমিক ভেক্টর থাকে।

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


5

আর , 75 বাইট

function(x,u=min(x):max(x))rowSums(outer(u,x[,1],">=")&outer(u,x[,2],"<="))

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

ইনপুট এমন একটি ম্যাট্রিক্স যার প্রথম কলামটি শুরু এবং দ্বিতীয় কলামটি শেষ। ধরে নেওয়া শুরু করুন <= শেষ তবে শুরুর জন্য তারিখের প্রয়োজন হয় না।


এই আমি যতটুকু Stewie গ্রিফিন দ্বারা অক্টেভ উত্তর প্রতিলিপি বের করার চেষ্টা যেতে সক্ষম ছিল ... আমি ভুল কি করছি?
জয়সি

এটি আর এর বাঁধাগুলি যেভাবে করেছে তার কারণেই hist; আপনি আগে c(-25668,min(x):max(x))থেকে করতে পারেন তবে এটি আপনার প্রস্তাবিত উত্তরের চেয়ে বেশি দীর্ঘ হতে পারে longer বলা হচ্ছে, খেজুর উত্পন্ন করার আরও ভাল উপায় আছে ; আমার একটি by৮ বাইটে রয়েছে এবং আমি নিজে এটি পোস্ট করার সময় পাইনি। -255681900apply
জিউসেপ

আহ, না, আসলে ব্যবহার করুন (min(x)-1):max(x)এবং এটি প্রত্যাশা অনুযায়ী কাজ করা উচিত; তারপরে যদি আপনি applyতারিখগুলি উত্পন্ন করার উপায় খুঁজে পেতে পারেন তবে আপনি এটি 63 বাইটে পেতে এবং অক্টাভে উত্তরটি টাই করতে পারেন।
জিউসেপ

@ জিউজেপ্পে আপনার এটি আলাদা উত্তর হিসাবে পোস্ট করা উচিত :)
জয়সি

পোস্ট :-) আমি স্বীকার করতে হবে, আমি ব্যবহার ছিল tableএবংfactor আগে original৮ Mapবাইটের জন্য আমার আসল ব্যবহার ছিল , তবে histএটি একটি ঝরঝরে দৃষ্টিভঙ্গি যা আমি সবসময় ভুলে যাই, সম্ভবত এটি বিন্যাসগুলি ঠিক সঠিকভাবে পাওয়ার জন্য বিরক্তিকর কারণ (যেমন আমরা দেখেছি) )
জিউসেপ

4

লাল , 174 বাইট

func[b][m: copy #()foreach[s e]b[c: s
until[m/(c): either none = v: m/(c)[1][v + 1]e < c: c + 1]]c: first sort b
until[print[either none = v: m/(c)[0][v]](last b)< c: c + 1]]

বেশ দীর্ঘ এবং আক্ষরিক বাস্তবায়ন।

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

রিডেবল:

f: func [ b ] [
    m: copy #()
    foreach [ s e ] b [
        c: s
        until [
            m/(c): either none = v: m/(c) [ 1 ] [ v + 1 ]   
            e < c: c + 1
        ]      
    ]
    c: first sort b
    until[
        print [ either none = v: m/(c) [ 0 ] [ v ] ]
        ( last b ) < c: c + 1
    ]      
]

4

গ্রোভী, 142 বাইট

{a={Date.parse('yyyy-mm-dd',it)};b=it.collect{a(it[0])..a(it[1])};b.collect{c->b.collect{it}.flatten().unique().collect{it in c?1:0}.sum()}}

বিন্যাসিত:

 {                                   // Begin Closure
    a={Date.parse('yyyy-mm-dd',it)}; // Create closure for parsing dates, store in a().
    b=it.collect{                    // For each input date pair...
        a(it[0])..a(it[1])           // Parse and create date-range.
    };
    b.collect{                       // For each date range...
        c->
        b.collect{                   // For each individual date for that range...
           it
        }.flatten().unique().collect{ // Collect unique dates.
            it in c?1:0
        }.sum()                      // Occurrence count.
    }
}

4

পাইথন 2 , 114 87 93 বাইট

-27 বাইটস জোনাথন অ্যালানকে
ধন্যবাদ +6 বাইটস সূন্দরকে ধন্যবাদ

ডেটটাইম অবজেক্টের জোড়া তালিকা হিসাবে ইনপুট নেয়।
ধরে নেওয়া যায় যে প্রথম জুটিটি সর্বনিম্ন তারিখ দিয়ে শুরু হয়।

def F(I):
 d=I[0][0]
 while d<=max(sum(I,[])):print sum(a<=d<=b for a,b in I);d+=type(d-d)(1)

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


daysএর জন্য ডিফল্ট যুক্তি timedelta
জোনাথন অ্যালান

... আসলে আমি তোমাকে ড্রপ করতে পারেন মনে from datetime import*এবং প্রতিস্থাপন d+=timedelta(days=1)সঙ্গে d+=type(d-d)(1)যেহেতু ইনপুট ইতিমধ্যেই আছে dates। 87 বাইট
জোনাথন অ্যালান

1
এটি ধরে নেওয়া যায় যে প্রথম ব্যাপ্তির শুরুটি সর্বনিম্ন তারিখ এবং শেষ সীমার শেষটি সর্বাধিক - তবে আমি মনে করি যে কখনও কখনও ওপি আমাদের বাছাই করা ইনপুট নিতে দেয় এমনকি এটি সম্ভব হয় না। যেমন যেমন যদি ইনপুট হয় [(2001-01-01, 2001-01-05), (2001-01-02, 2001-01-03)]। প্রিপ্রসেসিংয়ের সময় ও.পি. আমাদের এই ব্যাপ্তিগুলি বিভক্ত ও পুনর্বিন্যাসের অনুমতি না দেয় (যা অসম্ভব বলে মনে হয়), এই কোডটি এই ইনপুটটিকে সঠিকভাবে প্রক্রিয়া করা যাবে না।
সূন্দর - মনিকা

@ সুন্দর হ্যাঁ, আপনি কী বলছেন তা আমি দেখতে পাচ্ছি। আমি এটি পরিচালনা করার সমাধান আপডেট করেছি updated ধন্যবাদ!
ডেড পসসাম

3

ওল্ফ্রাম ভাষা (গণিত) , 62 বাইট matic

Lookup[d=DayRange;Counts[Join@@d@@@#],#[[1,1]]~d~#[[-1,1]],0]&

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

+35 বাইট কারণ ওপি নির্দিষ্ট করেছে 0 অবশ্যই আউটপুটে অন্তর্ভুক্ত করা উচিত।

যদি কোনও অভিধানে একটি এন্ট্রি বাদ দেওয়া যায় তবে 27 বাইট

Counts[Join@@DayRange@@@#]&

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

অন্তর্নির্মিত DayRangeদুটি DateObjectটি (বা একটি স্ট্রিং সমতুল্য) গ্রহণ করে এবং Datesসেই তারিখগুলির মধ্যে একটি তালিকা অন্তর্ভুক্ত করে (অন্তর্ভুক্ত)।


3

আর , 65 63 বাইট

function(x)hist(unlist(Map(`:`,x[,1],x[,2])),min(x-1):max(x))$c

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

এটি জেসি এবং আমার মধ্যে একটি সহযোগিতা, স্টি গ্রিফিনের উত্তরটি আর-এর কাছে তুলে ধরে port

জাইসিকে উদ্ধৃত করতে:

ইনপুট এমন একটি ম্যাট্রিক্স যার প্রথম কলামটি শুরু এবং দ্বিতীয় কলামটি শেষ। ধরে নেওয়া শুরু করুন <= শেষ তবে শুরুর জন্য তারিখের প্রয়োজন হয় না।

সম্ভবত, $cঅপ্রয়োজনীয় তবে চ্যালেঞ্জের চেতনায় এটি যথেষ্ট নয় তাই আমি এটি অন্তর্ভুক্ত করেছি।


1
ন্যূনতম (এক্স -১) 2 বাইটের জন্য?
জয়সি

^ যার দ্বারা আমি বলতে চাচ্ছি এই
JayCe

@ জয়সি হ্যাঁ, দুর্দান্ত! আমি আগে এই ফিরে আসতে চেয়েছিলেন কিন্তু আমি ভুলে গিয়েছিলাম।
জিউসেপ

3

পাওয়ারশেল, 122 121 118 113 বাইট

filter d{0..($_[-1]-($s=$_[0])).Days|%{$s.AddDays($_)}}$c=@{};$args|d|%{++$c.$_};,($c.Keys.Date|sort)|d|%{+$c.$_}

এটি হিসাবে সংরক্ষণ করুন count-timespan.ps1। পরীক্ষার স্ক্রিপ্ট:

.\count-timespan.ps1 `
    @([datetime]"2001-01-01", [datetime]"2001-01-01")`
    @([datetime]"2001-01-01", [datetime]"2001-01-03")`
    @([datetime]"2001-01-01", [datetime]"2001-01-02")`
    @([datetime]"2001-01-03", [datetime]"2001-01-03")`
    @([datetime]"2001-01-05", [datetime]"2001-01-05")

ব্যাখ্যা

filter d{                           # define a function with a pipe argument (it's expected that argument is an array of dates)
    0..($_[-1]-($s=$_[0])).Days|%{  # for each integer from 0 to the Days
                                    # where Days is a number of days between last and first elements of the range
                                    # (let $s stores a start of the range)
        $s.AddDays($_)              # output to the pipe a date = first date + number of the current iteration
    }                               # filter returns all dates for each range
}                                   # dates started from first element and ended to last element
$c=@{}                              # define hashtable @{key=date; value=count}
$args|d|%{++$c.$_}                  # count each date in a array of arrays of a date
,($c.Keys.Date|sort)|d|%{+$c.$_}    # call the filter via pipe with the array of sorted dates from hashtable keys

# Trace:
# call d @(2001-01-01, 2001-01-01) @(2001-01-01, 2001-01-03) @(2001-01-01, 2001-01-02) @(2001-01-03, 2001-01-03) @(2001-01-05, 2001-01-05)
# [pipe]=@(2001-01-01, 2001-01-01, 2001-01-02, 2001-01-03, 2001-01-01, 2001-01-02, 2001-01-03, 2001-01-05)
# $c=@{2001-01-03=2; 2001-01-01=3; 2001-01-05=1; 2001-01-02=2}
# call d @(2001-01-01, 2001-01-02, 2001-01-03, 2001-01-05)
# [pipe]=@(2001-01-01, 2001-01-02, 2001-01-03, 2001-01-04, 2001-01-05)
# [output]=@(3, 2, 2, 0, 1)

ধন্যবাদ! $cnt.Keys.Dateঅবশ্যই.
মজজি

-3 বাইট: functionসঙ্গে প্রতিস্থাপন scriptblock। গল্ফযুক্ত এবং ungolfed কোড পরীক্ষা করা হয়।
mazzy

-5 বাইট: scriptblockচালু হয়েছে filter। কল একটি filterআরও কমপ্যাক্ট।
mazzy

3

জে, 43 বাইট

(],.[:+/@,"2="{~)&:((>./(]+i.@>:@-)<./)"1),

ইনপুট হ'ল জোড়া সংখ্যার তালিকা, যেখানে প্রতিটি পূর্ণসংখ্যা যে কোনও স্বেচ্ছাচারিত সাধারণ 0-দিনের থেকে অফসেট।

ungolfed

(] ,. [: +/@,"2 ="{~)&:((>./ (] + i.@>:@-) <./)"1) ,

ব্যাখ্যা

কাঠামোটি হ'ল:

(A)&:(B) C
  • সি একটি হুক তৈরি করে যা মূল ক্রিয়া দেয় A&:B বামদিকে ইনপুট দেয় এবং ডানদিকে চ্যাপ্টা দেয়
  • বি ওরফে ((>./ (] + i.@>:@-) <./)"1) সর্বনিম্ন এবং একটি তালিকার সর্বোচ্চ গ্রহণ করে এবং ফলাফলটি পরিসীমাটি প্রদান করে এবং 1 র‌্যাঙ্কের সাথে কাজ করে hence সুতরাং এটি ডানদিকে মোট পরিসর দেয় এবং বামে পৃথক রেঞ্জ দেয়।
  • এরপরে প্রতিটি ইনপুট যে কোনও রেঞ্জের মধ্যে প্রদর্শিত হয় তা গণনা করতে =র‌্যাঙ্ক "0 _(অর্থাত্, র‌্যাঙ্ক {) ব্যবহার করে। অবশেষে এটি প্রতি বছর এই সংখ্যাগুলি সহ জিপ করে।

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


2

জাভাস্ক্রিপ্ট (নোড.জেএস) , 80 বাইট

(a,u=[])=>a.map(g=([p,q])=>p>q||g([p,q-864e5],u[z=(q-a[0][0])/864e5]=-~u[z]))&&u

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

undefinedঅর্থ শূন্য; প্রথম উপাদানটি শীঘ্রই শুরু করা উচিত

(a,u=[])=>a.map(g=([p,q])=>p>q||g([p,q-1],u[z=(q-a[0][0])/864e5]=-~u[z]))&&u আপনি যদি কেবলমাত্র উপাদানগুলি দেখেন এবং আরও স্ট্যাক ব্যবহার করেন তবে সংক্ষিপ্ত


6
আপনার কাছে নিশ্চিতকরণের জন্য জিজ্ঞাসা করা উচিত যে এর জন্য অন্য কোনও মান প্রতিস্থাপনযোগ্য 0is
শেগি


1

আর (70)

function(x)(function(.)tabulate(.-min(.)+1))(unlist(Map(seq,x$S,x$E,"d")))

xদুটি কলাম ( Startএবং Endঅথবা সম্ভবত) সহ একটি ডেটা ফ্রেম ধরে রাখেS এবং।)Eতারিখ (বর্গ) সহ ) সহDate ) ।

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


হাই, আপনি উদাহরণস্বরূপ ইনপুট / আউটপুট সহ টিআইও লিঙ্কগুলি (অন্যান্য উত্তর দেখুন) অন্তর্ভুক্ত করতে পারেন? এটি কোনও প্যাকেজ অন্তর্ভুক্ত করার জন্য প্রতারণা করছে না, তবে library(magrittr)বাইট গণনাগুলিতে অন্তর্ভুক্ত করা দরকার।
জয়সি

এছাড়াও সম্মতি অনুসারে জমা দেওয়ার জন্য স্নিপেটস নয়, সম্পূর্ণ ফাংশন বা প্রোগ্রাম হওয়া দরকার, সুতরাং আপনি যদি এমন কোনও ফাংশন নিয়ে যান যাঁর একমাত্র যুক্তি xআপনার উত্তর দিয়ে শুরু হয় function(x)এবং তারপরে ফাংশনের মূল অংশটি।
জয়সি

1

জুলিয়া 0.6 , 77 বাইট

M->[println(sum(dM[r,1]:M[r,2]for r1:size(M,1)))for dM[1]:max(M...)]

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

@ ডেডপসসামের পাইথন সমাধান দ্বারা অনুপ্রাণিত ।

ম্যাট্রিক্স হিসাবে ইনপুট নেয়, যেখানে প্রতিটি সারিতে দুটি তারিখ থাকে: একটি ইনপুট ব্যাপ্তির প্রারম্ভিক এবং শেষের তারিখ। ধরে নিই ইনপুটটির প্রথমতম তারিখ রয়েছে এবং প্রতিটি সারিতে প্রথম শুরুর তারিখ রয়েছে তবে বিভিন্ন সারির মাঝে এর বাইরে কোনও বাছাই করা অনুমান করা যায় না।


পুরানো সমাধান:

জুলিয়া 0.6 , 124 বাইট

R->(t=Dict();[[dkeys(t)?t[d]+=1:t[d]=1 for dg]for gR];[dkeys(t)?t[d]:0 for dmin(keys(t)...):max(keys(t)...)])

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

তারিখের ব্যাপ্তিগুলির অ্যারে হিসাবে ইনপুট গ্রহণ করে। অ্যারের বিভিন্ন রেঞ্জের মধ্যে কোনও বাছাই ধরে নি।

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