আমি কয়টি পদক্ষেপে হেঁটেছি?


14

একটি সাধারণ পেডোমিটারকে দুটি দুলের বিপরীতে দুটি দুল দিয়ে মডেল করা যায় can একটি x = 0 এবং একটি x = l এ । দুলটি সুদূর স্যুইচ-এ যোগাযোগ করলে, অ্যাম্বুলেটরটি আধা পদক্ষেপ নিয়েছে বলে ধরে নেওয়া যেতে পারে। এটি যখন নিকটবর্তী সুইচে যোগাযোগ করে, পদক্ষেপটি সম্পন্ন হয়।

দুলের অবস্থানের প্রতিনিধিত্ব করে পূর্ণসংখ্যার একটি তালিকা দেওয়া, পেডোমিটারে রেকর্ড করা পূর্ণ পদক্ষেপের সংখ্যা নির্ধারণ করুন।

ইনপুট

  • একটি পূর্ণসংখ্যা l > 0, ট্র্যাকের দৈর্ঘ্য।

  • প্রতিটি সময়ে পেডোমিটারের দুলের অবস্থানের প্রতিনিধিত্ব করে পূর্ণসংখ্যার একটি তালিকা।

আউটপুট

পরিমাপ করা পূর্ণ পদক্ষেপের সংখ্যা। দুলটি সুদূর স্যুইচ (x> = l) এবং তারপরে নিকটবর্তী সুইচ (x <= 0) সাথে যোগাযোগ করলে একটি পদক্ষেপ নেওয়া হয়।

পরীক্ষার মামলা

8, [8, 3, 0, 1, 0, 2, 2, 9, 4, 7]
1

দুলটি তত্ক্ষণাত x = 8 এ টি = 0 এ দূরবর্তী সুইচের সাথে যোগাযোগ করে। তারপরে এটি এক ধাপ সমাপ্ত করে t = 2 এবং t = 4 এ কাছের স্যুইচটি স্পর্শ করে। এর পরে, এটি x = 9 টি = 8 এ আবার দূরবর্তী স্যুইচটিকে স্পর্শ করে তবে এটি আর কখনও কাছেরের সুইচে স্পর্শ করে না।

1, [1, 5, -1, -4, -1, 1, -2, 8, 0, -4]
3

15, [10, -7, -13, 19, 0, 22, 8, 9, -6, 21, -14, 12, -5, -12, 5, -3, 5, -15, 0, 2, 11, -11, 12, 5, 16, 14, 27, -5, 13, 0, -7, -2, 11, -8, 27, 15, -10, -10, 4, 21, 29, 21, 2, 5, -7, 15, -7, -14, 13, 27]
7

7, [5, 4, 0]
0

7, [5, 8, 6, 1, 2] 
0   

1
কি হবে 7, [5, 4, 0]? এটা কি 0 বা 1? তা হ'ল - আপনি কি ধরে নিয়েছেন যে একটি দোল সবসময় "পূর্ণ দৈর্ঘ্য" থাকে? নাকি 7, [5, 8, 6, 1, 2]? এটা কি 0 বা 1?
চার্লস

1
পছন্দ করেছেন
lirtosiast

আমি ধরে নিই যে একটি পদক্ষেপ সর্বদা হ'ল: প্রান্তটি খুব দূরে, তারপরে প্রায় শেষ। এটি: নিকটে শেষ, তারপরে প্রান্তটি কোনও পূর্ণ পদক্ষেপ নয়। সুতরাং ইনপুট দেওয়া 8, [0 8 0 8]উচিত 1, না 2। আমি কি সঠিক?
লুইস মেন্ডো

পছন্দ করুন
লিটারোসিয়াসট

উত্তর:


4

সিজেম, 27 24 বাইট

l~:Xfe<0fe>_[XT]:Y--Y/,(

ইনপুট ফর্ম্যাটটি lএকক লাইনে অনুসরণ করে পেন্ডুলাম পজিশনের তালিকা ।

এটি এখানে পরীক্ষা করুন।

ব্যাখ্যা

l~     e# Read and evaluate input.
:X     e# Store track length in X.
fe<    e# Clamp each position to X from above.
0f>    e# Clamp each position to 0 from below.
_      e# Duplicate.
[XT]   e# Push the array [X 0].
:Y     e# Store it in Y.
-      e# Set subtraction from the clamped input list. This gives all the
       e# intermediate values.
-      e# Another set subtraction. Remove intermediate values from input list.
Y/     e# Split remaining list around occurrences of ...X 0...
,(     e# Count them and decrement. This is the number of times the pendulum
       e# moved from X to 0.

2

এমএটিএল , 22 বাইট

>~2G0>~-XzY'nw1)0<-H/k

এটি ভাষা / সংকলকের বর্তমান সংস্করণ (14.0.0) ব্যবহার করে।

ইনপুটগুলি নতুন লাইন দ্বারা পৃথক করে, চ্যালেঞ্জের মতো একই ক্রম এবং ফর্ম্যাটে রয়েছে।

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

ব্যাখ্যা

>~     % take the two inputs implicitly. Generate an array that contains true 
       % where the second input (array of positions) is >= the first input (l)
2G     % push second input (positions) again
0      % push a 0
>~     % true where the second input (array of positions) is <= 0
-      % subtract: array of 1, -1 or 0
Xz     % discard the 0 values
Y'     % run-length encoding: push values and number of repetitions
n      % length of the latter array: number of half-steps, perhaps plus 1
w1)    % swap. Get first element
0<     % true if that element is -1. We need to discard one half-step then
-      % subtract
H/k    % divide by 2 and round down

1

জাভাস্ক্রিপ্ট ES6 57 বাইট

(t,a)=>a.map(a=>a<t?a>0?'':0:1).join``.split`10`.length-1

ধন্যবাদ -4-এর জন্য নটট্যাচারেলস


1
কেন বিভক্ত হয় না /10/?
চার্লস

@ নোটহাট চার্লস আমি নিশ্চিত ছিলাম যে কাজ করে না, কেবল এটি চেষ্টা করে দেখেছি এবং দুর্দান্ত! - ধন্যবাদ
চার্লি উইন 21

4
একজন চার্লস থেকে অন্য
চার্লস

1

পার্ল, 28 বাইট

এর জন্য +1 অন্তর্ভুক্ত -p

এসটিডিআইএন-এ পৃথক পৃথক পূর্ণ সংখ্যার দীর্ঘ লাইন হিসাবে ইনপুটটি চালান, প্রথম সংখ্যাটি দৈর্ঘ্য:

perl -p steps.pl <<< "8 8 3 0 1 0 2 2 9 4 7"

steps.pl:

s; ;$'>=$_..$'<1;eg;$_=y;E;

পার্ল ফ্লিপ-ফ্লপ অপারেটর ব্যবহার করে এবং এটি মিথ্যাতে ফিরে আসার সংখ্যা গণনা করে


1

পাইথ, 18 বাইট

/.:@J,Q0m@S+Jd1E2J

পরীক্ষা স্যুট

ব্যাখ্যা:

/.:@J,Q0m@S+Jd1E2J
                      Implicit: Q is the length of the track.
    J,Q0              Set J to [Q, 0]
        m      E      Map over the list
           +Jd        Add the current element to J
          S           Sort
         @    1       Take the middle element.
                      This is the current element, 
                      clamped above by Q and below by 0.
   @J                 Filter for presence in J.
 .:             2     Form 2 element substrings
/                J    Count occurrences of J.

0

রুবি, 42

->i,a{r=!0
a.count{|v|r^r=v>=i||r&&v>0}/2}

rহিসাবে শুরু হয় false। আমরা rট্র্যাকের প্রতিটি প্রান্তে টগল করি এবং এটি আমাদের গণনায় যুক্ত করি। তারপরে, পদক্ষেপের সংখ্যা পেতে গণনাটি অর্ধেক (গোল করে)


0

রেটিনা, 34

-1*

^(1*)((?>.*?\1.*? \D))*.*
$#2

এটি অনলাইন চেষ্টা করুন! বা দশমিক ইনপুট দিয়ে চেষ্টা করে দেখুন

অ্যানারিতে ইনপুট নেয়, নেতিবাচক অ্যানারি সংখ্যার হিসাবে বিবেচনা করা হয় -111...এবং শূন্যটি শূন্য স্ট্রিং। প্রথম সংখ্যাটি শূন্যের পরে প্রদর্শিত হবে এমন সংখ্যা গণনা করে। ম্যাচগুলি ন্যূনতম হওয়ার গ্যারান্টি দিতে একটি পারমাণবিক গোষ্ঠী ব্যবহার করে (দুঃখজনকভাবে পরমাণু গোষ্ঠীগুলি ক্যাপচারযোগ্য নয় সুতরাং এটি অন্য একটি গ্রুপে আবৃত হতে হবে ...)।


0

পাইথন 3, 82

ডিএসএমকে 2 বাইট সংরক্ষণ করা হয়েছে।

এখনও সুপার গল্ফ হয়নি।

def f(x,s):
 c=l=0
 for a in s:
  if a>=x:l=x
  elif a<1:c+=l==x;l*=l!=x
 return c

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

assert f(8, [8, 3, 0, 1, 0, 2, 2, 9, 4, 7]) == 1
assert f(1, [1, 5, -1, -4, -1, 1, -2, 8, 0, -4]) == 3
assert f(15, [10, -7, -13, 19, 0, 22, 8, 9, -6, 21, -14, 12, -5, -12, 5, -3, 5, -15, 0, 2, 11, -11, 12, 5, 16, 14, 27, -5, 13, 0, -7, -2, 11, -8, 27, 15, -10, -10, 4, 21, 29, 21, 2, 5, -7, 15, -7, -14, 13, 27]) == 7

0

Clojure, 64 বাইট

#(count(re-seq #"10"(apply str(for[i %2](condp > i 1 0 %""1)))))

মানচিত্রগুলি শূন্যের 0চেয়ে কম-বা-সমান, দৈর্ঘ্যের বৃহত-বা-সমান 1এবং অন্যকে খালি স্ট্রিংয়ের মান দেয় ""। এরপরে এটি একটি স্ট্রিংকে সংযুক্ত করা হয় এবং এর সংঘটনগুলি "10"গণনা করা হয়।


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