গ্রেট পিরিয়ডের জন্য অ্যাকাউন্টিং সম্পাদনাগুলি গণনা করুন


23

আপনি যখন এসইতে কোনও পোস্ট সম্পাদনা করেন, 5 মিনিটের অনুগ্রহের মধ্যে আরও যে কোনও সম্পাদনা এতে মেশানো হয়। আপনি কোনও পোস্ট সম্পাদনার সময়গুলির তালিকা দিয়েছেন, গ্রেট পিরিয়ডে নয় সম্পাদনাগুলি গণনা করুন।

বলুন আপনি কয়েক মিনিটে সম্পাদনা করুন [0,3,4,7,9,10,11,12]। এর ফলাফলগুলি সময়ে সময়ে 3 টি সম্পাদনাতে আসে [0,7,12], বাকীগুলি তাদের অনুগ্রহকালীন সময়ে ঘটে থাকে।

0:  [3,4]
7:  [9,10,11]
12: []
  • প্রথম সম্পাদনাটি 0 মিনিটে হয় 3 এবং 4 মিনিটের সম্পাদনাগুলি এর 5 মিনিটের অনুগ্রহকালীন সময়ের মধ্যে থাকে এবং সুতরাং এটি গণনা করবেন না।
  • দ্বিতীয় সম্পাদনাটি minute মিনিটে 9, ১০, ১১ মিনিটের সম্পাদনাগুলি এর গরিব সময়ের মধ্যে।
  • 12 মিনিটে তৃতীয় সম্পাদনাটি 7 মিনিটের 7 মিনিট থেকে শুরু হওয়া 5 মিনিটের গ্রেস পিরিয়ডের ঠিক ধারে।

সুতরাং, আউটপুট 3 হয়।

মিনিটের মধ্যে বারের তালিকাটি ক্রমবর্ধমান পূর্ণসংখ্যার একটি তালিকা হবে। প্রথম পোস্টের জন্য সর্বদা প্রথম 0 হবে, যা আমরা একটি সম্পাদনা হিসাবে গণনা করি count

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

[0]
[0,3,5,7]
[0,3,4,7,9,10,11,12]
[0,30,120]
[0,4,8,12,16]
[0,4,8,12,16,20]
[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]
[0,5,10,15,20]
[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
[0,1,4,5,9,11,12,14,16,18,23,24,26,28,29,30]

আউটপুট:

1
2
3
3
3
3
4
5
5
6

অনুলিপি করার জন্য, এখানে ইনপুট, আউটপুট এবং ইনপুট / আউটপুট জোড়া রয়েছে:

[[0], [0, 3, 5, 7], [0, 3, 4, 7, 9, 10, 11, 12], [0, 30, 120], [0, 4, 8, 12, 16], [0, 4, 8, 12, 16, 20], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [0, 5, 10, 15, 20], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], [0, 1, 4, 5, 9, 11, 12, 14, 16, 18, 23, 24, 26, 28, 29, 30]]
[1, 2, 3, 3, 3, 3, 4, 5, 5, 6]
[([0], 1), ([0, 3, 5, 7], 2), ([0, 3, 4, 7, 9, 10, 11, 12], 3), ([0, 30, 120], 3), ([0, 4, 8, 12, 16], 3), ([0, 4, 8, 12, 16, 20], 3), ([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19], 4), ([0, 5, 10, 15, 20], 5), ([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], 5), ([0, 1, 4, 5, 9, 11, 12, 14, 16, 18, 23, 24, 26, 28, 29, 30], 6)]

লিডারবোর্ড:


যদিও আপনার সম্পাদনাটি অনুগ্রহকালীন সময়সীমা না তৈরি করে তা সত্যিই বিরক্তিকর কারণ কারণ তারপরে আপনাকে এটির চেহারা তৈরি করতে আপনার নতুন গ্রেস পিরিয়ডটি ব্যবহার করতে হবে যেন আপনি বোঝাচ্ছেন যে সেভাবেই এটি সম্পাদনা করার জন্য ...
নীল

উত্তর:


20

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

f=$=>$>f&&1+f($.filter(b=>b-$[0]>4))

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

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

প্রতিটি পুনরাবৃত্তির কলটিতে আমরা অ্যারে থেকে সমস্ত উপাদান মুছি যা প্রথম উপাদান থেকে 4 মিনিটের বেশি দূরে থাকে।
পরিবর্তনশীল নামের সাথে একটি সামান্য কৌশল আছে $। চেকটি $>fপ্রথমে অ্যারেটিকে একটি স্ট্রিংয়ে রূপান্তর করে এবং তারপরে এটি ফাংশনের স্ট্রিং প্রতিনিধিত্বের fসাথে তুলনা করে এবং তার পরে অভিধানের সাথে তুলনা করে। স্ট্রিংফাইড অ্যারের প্রথম অক্ষর হ'ল একটি অঙ্ক এবং অতএব কেবলমাত্র একটি চরের পরিবর্তনশীল নাম যার ascii সূচক সমস্ত সংখ্যার সূচকগুলির চেয়ে ছোট $$অন্য কোনও পরিবর্তনশীল নামের সাথে প্রতিস্থাপন করা সর্বদা ফিরে আসবে false


3
আমি এই সাইটের মত উত্তরগুলির কারণে এই সাইটটিকে ভালবাসি।
ক্রিশ্চিয়ান লুপাস্কু

1
খুব সুন্দর কৌশল!
আরনাউল্ড

1
ওহ, এখন, এটি দুর্দান্ত কৌশল!
শেগি

8

গণিত, 46 40 37 33 বাইট

(i=1;j=0;#-j<5||(i++;j=#)&/@#;i)&

ব্যাখ্যা

i=1;j=0

সেট iথেকে 1এবং jথেকে 0

... /@#

ইনপুটটির সমস্ত উপাদানগুলিতে মানচিত্র ...

#-j<5||(i++;j=#)&

যদি (element) - j < 5মিথ্যা হয়, তবে ইনক্রিমেন্ট iএবং jএলিমেন্টে (শর্ট সার্কিট মূল্যায়ন) সেট করুন।

;i

আউটপুট i



5

পাইথন 2 , 58 বাইট

a=input()
x=[0]
for k in a:x+=[k]*(k-x[-1]>4)
print len(x)

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

  • @ মিঃ কে 2 বাইট সংরক্ষণ করা হয়েছে Xcoder।

49 বাইট

f=lambda a:a>[]and-~f([x for x in a if x-a[0]>4])

@ দ্য পাইরেটবেয়ের সমাধানটিতে দেখানো পুনরাবৃত্ত পদ্ধতিটি ব্যবহার করে ।

  • @ মিঃ এর জন্য একটি বাইট সংরক্ষণ করা হয়েছে। Xcoder।
  • @ হালওয়ার্ড হুমেলকে 2 বাইট সংরক্ষণ করা হয়েছে।

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


and 1+f(...)and-~f(...)49 বাইট দ্বারা প্রতিস্থাপন করা যেতে পারে
মিস্টার এক্সকোডার

@ মিঃ এক্সকোডার ওহ, bit সমস্ত বিটওয়াইজ কৌশলগুলি ভুলে যেতে পারে না।
মাইল

x=a[:1]সমতুল্য x=[0], যেহেতু প্রশ্নটি স্পষ্টতই বলেছে যে প্রথম উপাদানটি সর্বদা 0( 62 বাইট )
মিঃ এক্সকোডার



3

ম্যাটল্যাব, 34 বাইট

@(x)nnz(uniquetol(x+1,4/max(x+1)))

বেনামে ফাংশন যা একটি অ্যারের ইনপুট করে এবং একটি সংখ্যা আউটপুট করে।

এটি uniquetolফাংশনটি ব্যবহার করে , বিশেষত এটির রূপটি y = uniquetol(x, t), যা সহনশীলতার সাথে yঅনন্য উপাদানগুলি সরবরাহ করে । এটি করার ফলে, ফাংশনটি একটি "অলস" পদ্ধতির অনুসরণ করে বলে মনে হচ্ছে : বাছাই করুন , এটির প্রথম প্রবেশটি চয়ন করুন এবং যতক্ষণ না তারা সর্বশেষ চয়ন করা এন্ট্রির সহনশীলতার মধ্যে থাকে ততক্ষণ প্রবেশ এড়িয়ে চলুন। এখানে ঠিক এটিই প্রয়োজন।xtx

uniquetolফাংশন স্বয়ংক্রিয়ভাবে সর্বোচ্চ পরম মান দ্বারা নির্দিষ্ট সহনশীলতা আইশ a। এ কারণেই আমাদের এখানে বিভাগ প্রয়োজন। 0 দ্বারা বিভাজন এড়ানোর x+1পরিবর্তে ব্যবহৃত হয় x

পরীক্ষার মামলার যাচাইকরণ:

>> f = @(x)nnz(uniquetol(x+1,4/max(x+1)));
>> inputs = {...
       [0] ...
       [0,3,5,7] ...
       [0,3,4,7,9,10,11,12] ...
       [0,30,120] ...
       [0,4,8,12,16] ...
       [0,4,8,12,16,20] ...
       [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19] ...
       [0,5,10,15,20] ...
       [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20] ...
       [0,1,4,5,9,11,12,14,16,18,23,24,26,28,29,30] ...
   };
>> outputs = cellfun(f, inputs)
outputs =
     1     2     3     3     3     3     4     5     5     6

1
টিআইএল সম্পর্কে uniquetol... R2015a এ পরিচয় করিয়ে দেওয়া । আমার কাছে আর -2014 বি আছে :( চমৎকার উত্তর :)
স্টিভি গ্রিফিন

@ স্টিওয়ে জানতাম এটির অস্তিত্ব ছিল, তবে আমি মনে করি এটিই প্রথম আমি ব্যবহার করছি
লুইস মেন্ডো

2

05 এ বি 1 , 20 19 18 15 14 11 বাইট

v®y‹iy4+©\¼

ব্যাখ্যা:

v          # loop on input
 ®          # push register_c, start at -1
  y‹i         # if current item greater than last item
   y4+         # push new max on stack
    ©\          # push new max on register_c, and pop it from stack
     ¼           # increment counter_variable
                  # implicit print of counter_variable

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

সম্পাদন করা

  • -3 বাইট রিলে ধন্যবাদ এবং পাল্টে ব্যবহারের পরিবর্তনযোগ্য
  • সর্বোপরি কাউন্টার_ভেরিয়েবলের দরকার নেই
  • -3 বাইট আবার রিলি এবং রেজিস্টার_সি ব্যবহারের জন্য ধন্যবাদ

3 টি বাইট সংরক্ষণের জন্য আপনি কাউন্টার ভেরিয়েবলটি ব্যবহার করতে পারেন:¼4¹vDy‹i¼y4+}}¾
রিলে

ওহোহ, একটি পাল্টা পরিবর্তনশীল আছে, এটি সহজ! ধন্যবাদ!!
সিরিল গ্যান্ডন

1
11 বাইট:v®y‹iy4+©\¼
রাইলি

2

কাস্তে, 6 বাইট

Lüo<+5

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

  o<+5        a function that takes two arguments and checks if
              the second is less than the the first plus 5
 ü            remove equal elements from the input list using the above
              function as the equality test
L             return the length of the remaining list

ওহ, আমি এর üমতো কাজ বুঝতে পারি নি ! এটা খুব সহজ।
জাগারব

@Zgarb: আমি প্রথম চেষ্টা ġকিন্তু এটা, না কাজ যেহেতু Haskell, এর groupByকাজ: length.groupBy((>).(+5))। এমতাবস্থায় দেখলাম üযা একটি সংক্ষিপ্ত Haskell, সমতুল্য বাড়ে: nubBy
নিমি

2

হাস্কেল , 31 30 বাইট

f(x:y)=f[z|z<-y,z-4>x]+1
f x=0

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

Zgarb ধন্যবাদ 1 বাইট সংরক্ষণ করা


z-4>xএকটি বাইট সংরক্ষণ করা উচিত।
জাগারব

@ জগারব আমি কী ভাবছিলাম ??? ধন্যবাদ! :)
ক্রিশ্চিয়ান লুপাস্কু

1

এটা উন্মাদ, æসুপারসেটের জন্য, এটি দুর্দান্ত কৌশল!
সিরিল গ্যান্ডন

@ সিরিলগ্যান্ডনের æঅর্থ "পাওয়ারসেট"।
এরিক আউটগলফার

1

এমএটিএল , 13 12 বাইট

`ttX<4+>)t}@

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা

`        % Do..while
  t      %   Duplicate. Takes input (implicitly) the first time
  tX<    %   Duplicate and get minimum, i.e the first entry
  4+     %   Add 4
  >      %   Greater than? Element-wise
  )      %   Keep entries that fulfill that
  t      %   Duplicate. This is used as loop condition
}        % Finally (execute at the end of the loop)
  @      %   Push number of iterations. This is the output
         % End (implicit). A new iteration is run if top of the stack is truthy

1

পাইথ , 14 বাইট

L&lbhyfg-Thb5b

এটি একটি পুনরাবৃত্তি ফাংশন। এটির সাথে কল করুন y[0 1 2 3 4 5 6 7 8), [...)আপনার তালিকাটি কোথায় ।

বিকল্পভাবে, এখানে চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন।


ব্যাখ্যা

এটি মোটামুটি পাইথন সমাধানের সমান। একটি অনুবাদ নিম্নলিখিত ফলাফল দেবে:

def y(b):
 return (len(b) and y(filter(lambda T:T>=b[0]+5,b)) + 1)

কোড ব্রেকডাউন

L&lbhyfg-Thb5b   - Function called y that accepts a list parameter b.

L                - Define the function.
  lb             - The length of b...
 &               - ... Logical AND ...
    h            - Increment by 1.
     y           - The result given by calling the function recursively on the following:
      f      b     - b filtered...
        -Thb       - ... For the elements whose difference compared to the first element...
       g    5      - ... Is greater than or equal to 5.

আমি এর সাথে একপর্যায়ে সন্ধান করার চেষ্টা করছি .U। পরামর্শগুলি স্বাগত
মিঃ এক্সকোডার

1

জাভা 8, 78 61 60 59 56 বাইট

@ জংহওয়ানমিনের উত্তর বন্দর

a->{int i=0;for(int l:a)if(l-a[i]>4)a[++i]=l;return-~i;}

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


আপনি এই জাতীয় 4 বাইট সংরক্ষণ করতে পারেন:a->{int i=0;for(int l:a)if(l-a[i]>4)a[++i]=l;return-~i;}
কেভিন ক্রুইজসেন

1

সি #। নেট, 63 বাইট

a=>{int e=0;foreach(int l in a)if(l-a[e]>4)a[++e]=l;return-~e;}

ব্যাখ্যা:

এখানে চেষ্টা করুন।

a=>{                   // Method with integer-array parameter and integer return-type
  int e=0;             //  Amount of edits (starting at 0)
  foreach(int l in a)  //  Loop over the input-array
    if(l-a[e]>4)       //   If the current value minus the current edit is larger than 4:
      a[++e]=l;        //    Raise the edit-count by 1 first,
                       //    and set the current value to this next current edit
                       //  End of loop (implicit / single-line body)
  return-~e;           //  Return the amount of edits + 1
}                      // End of method





0

রেটিনা , 32 26 বাইট

.+
$*11
(1+)(¶1{1,4}\1)*\b

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

.+
$*11

অ্যানারিতে রূপান্তর করুন, তবে ১ টি যুক্ত করুন, কারণ 0 রেটিনাতে একটি জটিল ধারণা।

(1+)(¶1{1,4}\1)*\b

সম্পাদনার সংখ্যা গণনা করুন তবে প্রতিটি ম্যাচে সমস্ত অনুগ্রহ সম্পাদনা অন্তর্ভুক্ত করুন।


0

কোটলিন, 52 বাইট

একটি ফাংশন হিসাবে পোস্ট করা, এটি গ্রহণযোগ্য না হলে আমি এটিকে কোনও পদ্ধতিতে পরিবর্তন করব

নমন

{var x=it[0]
var o=1
it.map{if(it>x+4){o++
x=it}}
o}

শোভিত

{
    // Last counted edit
    var x=it[0]
    // Current edit total
    var o = 1
    // For each edit
    it.map{
        // If it was 5 or more minutes ago
        if (it>x+4) {
            // Increase edit count
            o++
            // Make it the last counted edit
            x=it
        }
    }
    // Return the edit count
    o
}

পরীক্ষা

var r:(IntArray)->Int=
{var x=it[0]
var o=1
it.map{if(it>x+4){o++
x=it}}
o}

fun main(args: Array<String>) {
    println(r(intArrayOf(0)))
    println(r(intArrayOf(0,3,5,7)))
    println(r(intArrayOf(0,3,4,7,9,10,11,12)))
    println(r(intArrayOf(0,30,120)))
    println(r(intArrayOf(0,4,8,12,16)))
    println(r(intArrayOf(0,4,8,12,16,20)))
    println(r(intArrayOf(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19)))
    println(r(intArrayOf(0,5,10,15,20)))
    println(r(intArrayOf(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20)))
    println(r(intArrayOf(0,1,4,5,9,11,12,14,16,18,23,24,26,28,29,30)))
}

TryItOnline


0

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

for($x,$y=$args[0];$y;$x,$y=$y){if($l-le$x-5){$i++;$l=$x}}$i+1+($l-le$x-5)

Iterative সমাধান। forশেষ পর্যন্ত অতিরিক্ত চেকের প্রয়োজন লুপে বেড়া পোস্টিংয়ের কারণে দৈর্ঘ্য । গল্ফিং পরামর্শ স্বাগত জানাই।

আমরা $args[0]আক্ষরিক অ্যারে হিসাবে ইনপুট নিই, প্রথম উপাদানটি খোলে $xএবং বাকী অংশটি $y। তারপরে, যতক্ষণ পর্যন্ত উপাদান রয়েছে এখনও $yআমরা লুপ করব।

প্রতিটি পুনরাবৃত্তির, আমরা চেক কিনা বর্তমান টাইমস্ট্যাম্প $xহয় 5বা থেকে আরো দূরে $lAST সম্পাদন করা টাইমস্ট্যাম্প। যদি তা হয় তবে আমরা আমাদের কাউন্টারকে $i++বাড়িয়ে তুলি এবং আমাদের টাইমস্ট্যাম্পটিকে বর্তমান হিসাবে সেট করি। তারপর, লুপের পুনরাবৃত্তির উপর, আমরা পরবর্তী উপাদান বন্ধ মধ্যে ছুলা $xএবং অবশিষ্ট ছেড়ে$y

লুপটি বের হয়ে যাওয়ার পরে, আমরা প্রাথমিক সম্পাদনার জন্য আউটপুট $i, এবং 1শেষ সম্পাদনা থেকে পাঁচটি বেশি দূরে কিনা চূড়ান্ত টাইমস্ট্যাম্প (বুলিয়ান মানটি পূর্ণসংখ্যার সাথে স্পষ্টভাবে কাস্ট করা হয়)। সেই ফলাফলটি পাইপলাইনে রেখে গেছে এবং আউটপুট অন্তর্ভুক্ত।

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


0

আর , 52 বাইট

function(l){while(sum(l|1)){l=l[l-l[1]>=5]
F=F+1}
F}

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

সরল বেনাম ফাংশন যা তালিকার খালি না হওয়া অবধি প্রথম উপাদান থেকে 5 থেকে কম দূরে তালিকা থেকে উপাদানগুলি সরিয়ে দেয়, তারপরে কাউন্টারটি ফেরত দেয়।


0

Clojure, 53 বাইট

#(count(set(reductions(fn[r v](if(<(- v r)5)r v))%)))

এটি "সম্পাদনা শুরুর সময়গুলি" র উপরে নজর রাখে এবং তারপরে তাদের স্বতন্ত্র গণনা প্রদান করে।


0

জাপট , 14 বাইট

Ê©1+ßUf_aUg)>4

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


ব্যাখ্যা

অ্যারের অন্তর্নিহিত ইনপুট U

Ê

দৈর্ঘ্য পান U

©

লজিকাল এ্যান্ড ( &&) - Êসত্যবাদী (শূন্যহীন) হলে কেবল নিম্নলিখিতটি সম্পাদন করুন।

ß

পুনরাবৃত্তি কল।

Uf_

একটি ফাংশন মাধ্যমে প্রতিটি উপাদান পাস করে ফিল্টার ( f) U

aUg

aবর্তমান উপাদান এবং এর প্রথম উপাদানটির ( g) এর মধ্যে পার্থক্য ( ) পান U

>4

4 এর চেয়েও বড়?

1+

যোগ 1

ফলাফল পূর্ণসংখ্যার অন্তর্নিহিত আউটপুট।


0

জেলি , 11 বাইট

+4Ḣ<x@µÐĿL’

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

ব্যাখ্যা

+4Ḣ<x@µÐĿL’  Input: array A
      µÐĿ    Repeat until the results converge
+4             Add 4
  Ḣ            Head
   <           Greater than
    x@         Copy only the true values
         L   Length
          ’  Decrement

12 বাইট

;I4<1;x@;ð/L

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

ব্যাখ্যা

;I4<1;x@;ð/L  Input: array A
         ð/   Reduce A from left-to-right using
;               Concatenate
 I              Increment
  4<            Greater than 4
    1;          Prepend 1
      x@        Times each of
        ;       Concatenate
           L  Length
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.