তাপ তরঙ্গ সনাক্ত করুন


48

পটভূমি

রয়্যাল নেদারল্যান্ডস মেটিরিওলজিকাল ইনস্টিটিউট তাপ-তরঙ্গকে * 25 5 C আবহাওয়ার ("সংক্ষিপ্ত আবহাওয়া") এর কমপক্ষে একটানা 5 দিনের ধারাবাহিক হিসাবে সংজ্ঞায়িত করে , যেমন days দিনের মধ্যে কমপক্ষে 3 ≥30 ° C ("গ্রীষ্মমন্ডলীয় আবহাওয়া") থাকে )।

গ্রীষ্মমন্ডলীয় আবহাওয়াটি একটানা মাপতে হবে না: উদাহরণস্বরূপ: 30, 25, 30, 26, 27, 28, 32, 30গ্রীষ্মমন্ডলীয় আবহাওয়ার 4 দিনের দীর্ঘ 8 দিনের দীর্ঘ তাপ তরঙ্গ।

* (ওয়েল, ডাচ স্ট্যান্ডার্ড অনুযায়ী))

চ্যালেঞ্জ

ক্রমাগত দিনগুলি থেকে সেলসিয়াস তাপমাত্রার পরিমাপ উপস্থাপন করে এমন ইতিবাচক পূর্ণসংখ্যার একটি খালি খালি তালিকা দেওয়া, সেই তালিকাটিতে তাপ তরঙ্গ রয়েছে কিনা তা সিদ্ধান্ত নিন (উপরের সংজ্ঞা অনুসারে)।

বাইটস মধ্যে সংক্ষিপ্ত উত্তর।

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

Falsey:

[30]
[29, 29, 29, 47, 30]
[31, 29, 29, 28, 24, 23, 29, 29, 26, 27, 33, 20, 26, 26, 20, 30]
[23, 31, 29, 26, 30, 24, 29, 29, 25, 27, 24, 28, 22, 20, 34, 22, 32, 24, 33]
[23, 24, 25, 20, 24, 34, 28, 32, 22, 20, 24]
[24, 28, 21, 34, 34, 25, 24, 33, 23, 20, 32, 26, 29, 29, 25, 20, 30, 24, 23, 21, 27]
[26, 34, 21, 32, 32, 30, 32, 21, 34, 21, 34, 31, 23, 27, 26, 32]
[29, 24, 22, 27, 22, 25, 29, 26, 24, 24, 20, 25, 20, 20, 24, 20]
[23, 33, 22, 32, 30]
[28, 21, 22, 33, 22, 26, 30, 28, 26, 23, 31, 22, 31, 25, 27, 27, 25, 28]
[27, 23, 42, 23, 22, 28]
[25, 20, 30, 29, 32, 25, 22, 21, 31, 22, 23, 25, 22, 31, 23, 25, 33, 23]

Truthy:

[30, 29, 30, 29, 41]
[1, 1, 25, 30, 25, 30, 25, 25, 25, 25, 25, 25, 25, 25, 40, 1, 1]
[31, 34, 34, 20, 34, 28, 28, 23, 27, 31, 33, 34, 29, 24, 33, 32, 21, 34, 30, 21, 29, 22, 31, 23, 26, 32, 29, 32, 24, 27]
[26, 29, 22, 22, 31, 31, 27, 28, 32, 23, 33, 25, 31, 33, 34, 30, 23, 26, 21, 28, 32, 22, 30, 34, 26, 33, 20, 27, 33]
[20, 31, 20, 29, 29, 33, 34, 33, 20]
[25, 26, 34, 34, 41, 28, 32, 30, 34, 23, 26, 33, 30, 22, 30, 33, 24, 20, 27, 23, 30, 23, 34, 20, 23, 20, 33, 20, 28]
[34, 23, 31, 34, 34, 30, 29, 31, 29, 21, 25, 31, 30, 29, 29, 28, 21, 29, 33, 25, 24, 30]
[22, 31, 23, 23, 26, 21, 22, 20, 20, 28, 24, 28, 25, 31, 31, 26, 33, 31, 27, 29, 30, 30]
[26, 29, 25, 30, 32, 28, 26, 26, 33, 20, 21, 32, 28, 28, 20, 34, 34]
[34, 33, 29, 26, 34, 32, 27, 26, 22]
[30, 31, 23, 21, 30, 27, 32, 30, 34, 29, 21, 31, 31, 31, 32, 27, 30, 26, 21, 34, 29, 33, 24, 24, 32, 27, 32]
[25, 33, 33, 25, 24, 27, 34, 31, 29, 31, 27, 23]

2
তাপমাত্রা 100 সেলসিয়াসের নিচে থাকার নিশ্চয়তা কি?
FryAmTheEggman

3
@ ফ্রাইআম দ্য এজিগম্যান ভাল, নেদারল্যান্ডসে, হ্যাঁ :) তবে আমি আপনার উত্তরটি এই সত্যটির অপব্যবহারের জন্য চাই না, তাই না।
লিন

1
@ হাট উইজার্ড হ্যাঁ, এটি ঠিক আছে। উদাহরণস্বরূপ, "ক্র্যাশ / ক্র্যাশ করবেন না" এটিও ঠিক।
লিন

2
আরে @ লিন এটি দুর্দান্ত চ্যালেঞ্জ ছিল এবং এখনও রয়েছে :-)
রোল্যান্ড শ্মিটজ

1
@ রোল্যান্ডশ্মিটজ আপনাকে ধন্যবাদ! চ্যালেঞ্জের জীবদ্দশায় এত দেরি থেকে এলো যে সৃজনশীল উত্তরগুলি থেকে আমি খুশিতে অবাক হয়েছি। 🎉
লিন

উত্তর:



19

জেলি , 15 বাইট

:5_5Ṡ‘ẆP«LƊ€>4Ṁ

সংখ্যার একটি তালিকা গ্রহণ করে একটি মোনাডিক লিঙ্ক যা 1হিটওয়েভ অন্যটি সনাক্ত করা থাকলে ফিরে আসে 0

এটি অনলাইন চেষ্টা করুন! অথবা পরীক্ষা-স্যুটটি দেখুন

কিভাবে?

মানদণ্ডটি 25 টির বেশি বা তার চেয়ে বেশি সংখ্যক চারটির বেশি সংখ্যক রানের অস্তিত্ব, যার মধ্যে দুটিরও বেশি অবশ্যই 30 এর চেয়ে বড় বা সমান হতে হবে।

আমরা পাঁচটি দিয়ে বিভক্ত হলে মানদণ্ডটি পাঁচটির চেয়ে বড় বা সমান চারটির বেশি মানের একটি রানের অস্তিত্ব হয়ে যায়, যার মধ্যে দুটিরও বেশি অবশ্যই ছয়টির চেয়ে বড় বা সমান হতে হবে।

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

যদি আমরা এই মানগুলির লক্ষণটি নিই (-1, 0, বা 1 পেয়ে) মাপদণ্ডটি -1 এর সমান নয় চারটির বেশি মানের একটি রানের অস্তিত্ব হয়ে যায়, যার মধ্যে দুটিরও বেশি একটির সমান হতে হবে।

যদি আমরা এই মানগুলিতে একটি যোগ করি (0, 1, বা 2 পেয়ে) মানদণ্ডটি শূন্যের সমান নয় এমন চারটি বেশি মানের একটি রানের অস্তিত্ব হয়ে যায়, যার মধ্যে দুটিরও বেশি দুটি অবশ্যই সমান হবে।

যে কোনও শূন্য সমন্বিত তালিকার পণ্যটি শূন্য এবং দু'বারেরও বেশি সংখ্যক (এবং বাকীটি থাকা) একটি তালিকার পণ্য চারটিরও বেশি the এর অর্থ এই সমন্বিত তালিকার মানদণ্ডে পরিণত হয় যে পণ্যের সর্বনিম্ন এবং দৈর্ঘ্য 4 এর চেয়ে বেশি।

:5_5Ṡ‘ẆP«LƊ€>4Ṁ - Link: list of numbers
:5              - integer divide by five (vectorises)
  _5            - subtract five (vectorises)
    Ṡ           - sign {negatives:-1, zero:0, positives:1} (vectorises)
     ‘          - increment (vectorises)
      Ẇ         - all sublists
          Ɗ€    - last three links as a monad for €ach:
       P        -   product
         L      -   length
        «       -   minimum
            >4  - greater than four? (vectorises) -- 1 if so, else 0
              Ṁ - maximum -- 1 if any are 1, else 0

9

হাস্কেল , 73 72 71 69 67 66 বাইট

any(\a->sum[1|x<-a,x>29,take 4a<a]>2).scanl(\a t->[0|t>24]>>t:a)[]

@ ফ্লোয়ার এবং @ লাইকনিকে ধন্যবাদ প্রতিটি দুটি বাইটের জন্য এবং @ এক্সনরকে একটি বাইটের জন্য!

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

সমান দৈর্ঘ্য:

any(\a->take 4a<a&&sum a>2).scanl(\a t->[0|t>24]>>sum[1|t>29]:a)[]

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


9

সি (ঝনঝন) , 64 বাইট

h;o(*t){for(h=1;*t;++t)h=h&&*t<25?1:h*(*t<30?2:6)%864;return!h;}

O () ফাংশন হিটওয়েভ বা অন্য 0 এর জন্য 1 প্রদান করে।

866 নম্বর যাদু এবং উডো বোরকোভস্কি এবং ম্যাথিসকে তাদের ধারণার জন্য ধন্যবাদ।

কীভাবে কাজ করবে? সংখ্যার প্রতিটি ক্রম হ্রাস অপারেশন দিয়ে হ্রাস মান 1 থেকে শুরু করে পুনরাবৃত্তি করা হয় যদি একটি সংখ্যা> = 25 দেখা যায় তবে হ্রাস 2 টি দ্বারা গুণিত হয় 2 যদি একটি সংখ্যা> = 30 দেখা যায় তবে হ্রাসটি 2 এবং 3 = দ্বারা গুণিত হয় A. যদি একটি সংখ্যার <25 দেখতে পাওয়া যায় তবে হ্রাসটি আবার শুরু হয় 1 এ। যদি হ্রাসটি 864 = 2 * 2 * 2 * 2 * 2 * 3 * 3 * 3 দ্বারা বিভাজ্য হয় তবে একটি হিটওয়েভ পাওয়া যায় এবং ফলাফলটির ফলাফল মডুলো অপারেশন 0 হয় যার ফলস্বরূপ 0 হ্রাস হয় এবং সত্যটির প্রত্যাবর্তনের মান হয়।

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


পিপিসিজিতে আপনাকে স্বাগতম।
মুহাম্মদ সালমান

পিপিসিজিতে আপনাকে স্বাগতম! খুব সুন্দর প্রথম উত্তর টেস্ট কেস স্যুট সহ সম্পূর্ণ! আপনি কী ব্যাখ্যা ব্যাখ্যা করতে পারেন যাতে আমরা যাদুটি বুঝতে পারি?
জয়সি

এটি একটি সত্যিই মার্জিত সমাধান, ভাল কাজ করেছেন :)
লিন


7

এপিএল (ডায়ালগ ক্লাসিক) , 21 20 বাইট

184↓⍉×\25 30⍸↑,⍨\⎕

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

ব্যবহারসমূহ ⎕io←1

25 30⍸x x <25, 1 যদি 25≤x <30 হয়, অথবা অন্যথায় 2 হয়

আমরা এর সম্ভাব্য অবস্থানগুলি (বা সমতুল্য: সমাপ্তি) সমস্ত সম্ভাব্য অবস্থান থেকে শুরু করে প্রথম 4 পণ্যগুলি বাতিল করে এবং পণ্যের উপস্থিতি সনাক্ত করি 8 (যা 2 3 )


6

জাপট , 19 18 বাইট

ô<25 d_ʨ5©3§Zè¨30
ô                  // Partition the input at every item
 <25               // where the value is less than 25.
     d_            // Then, return whether any resulting subarray
       ʨ5         // is at least five items long
          ©        // and
           3§      // has at least three items
             Zè¨30 // with a value of at least 30.

আমি আশা করি মন্তব্যগুলিতে সমস্ত আলোচনা সঠিকভাবে পেয়েছি।
বন্ধ করার জন্য এক বাইট ধন্যবাদ চাঁচা রোমশ

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


আমি যখন এটি পড়ছিলাম তখন এই কাজটি আরও ছোট করে দেখবে তবে কেবল 18 বাইট পরিচালনা করতে পারব ।
শেগি

@ শেগি আমিও ভেবেছিলাম, তবে এর চেয়ে ছোট সংস্করণও আমি খুঁজে পাইনি। পয়েন্টারের জন্য অনেক ধন্যবাদ!
নিত

1
দেখে মনে হচ্ছে আমরা এই মুহূর্তে এটি জিতেছি :)
শেগি

অ-এসসিআইআই অক্ষরগুলি কী একাধিক বাইট হিসাবে গণনা করে না?
sudo

1
@ সুডো Those চিহ্নগুলি সমস্তই একক বাইট। উদাহরণস্বরূপ, 3 বাইট হবে, তবে ¨এটি একটি বাইট। উপরের ব্যবহৃত চিহ্নগুলি গল্ফিং ভাষার জন্য ঠিক এই কারণে বেছে নেওয়া হয়েছে যে তারা সবাই একক বাইট।
নিট

5

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

param($a)$b="";($a|%{if($_-ge25){$b+="$_ "}else{$b;$b=""}})+$b|?{(-split$_).count-ge5-and(-split$_|?{$_-ge30}).count-ge3}

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

PowerShell একটি সমতুল্য নেই .someবা .everyতাই এই হাত দ্বারা ঘূর্ণিত হয়, অথবা মত।

আমরা $aসংখ্যার অ্যারে হিসাবে ইনপুট নিই। $bখালি স্ট্রিংয়ে সহায়ক ভেরিয়েবল সেট করুন । তারপরে, প্রতিটি পূর্ণসংখ্যার মধ্য দিয়ে লুপ করুন $a। লুপের অভ্যন্তরে, যদি পূর্ণসংখ্যার -gপুনর্নবীকরণের যোগ্য eহয় 25তবে এটি আমাদের সম্ভাব্য স্ট্রিংয়ে যুক্ত করুন $b, অন্যথায় $bপাইপলাইনে রাখুন এবং খালি স্ট্রিংয়ে সেট করুন।

লুপের বাইরে গেলে, অ্যারে-পাইপলাইন ফলাফলগুলির সাথে একত্রিত করুন $bএবং সেগুলি একটি Where-Objectধারাতে রেখে দিন |?{...}। এটি সেই স্ট্রিংগুলিকে টেনে আনে যাগুলির উপাদানগুলির দৈর্ঘ্য -ge5(হোয়াইটস্পেসে বিভাজনের উপর ভিত্তি করে) এবং 30সত্তার চেয়ে বড় টেম্পসের একটি গণনা রয়েছে -ge3। এই স্ট্রিংগুলি পাইপলাইনে রেখে গেছে, সুতরাং সত্যবাদী মানটি খালি নয় (সত্য / মিথ্যা পার্থক্যের জন্য "সমস্ত পরীক্ষার কেস যাচাই করুন" লিঙ্কটি দেখুন)।


$args পরিবর্তে param($a)এবং ব্যবহার করার চেষ্টা করুন$a
mazzy

-2 বাইট...{$a=-split$_;$a.count-ge5-and($a|?{$_-ge30}).count-ge3}
মজজি

অ্যারে সহ 109 বাইট। সংরক্ষণ $args|%{if($_-ge25){$b+=$_}else{,$b;$b=@()}}-E{,$b}-B{,($b=@())}|?{$_.count-ge5-and($_|?{$_-ge30}).count-ge3}যেমন get-heatWave.ps1। পরীক্ষার স্ক্রিপ্ট regex101.com/r/lXdvIs/2
mazzy

103 বাইট$b=@();$args|%{if($_-ge25){$b+=$_}else{,$b;$b=@()}}-E{,$b}|?{$_.count-ge5-and($_|?{$_-ge30}).count-ge3}
মজজি

কি করে -E? আমি এর সাথে পরিচিত নই।
অ্যাডমবর্কবার্ক

5

জেলি , 17 16 বাইট

:5_5Ṡṣ-ḤS«LƊ€Ṁ>4

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

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

:5_5Ṡṣ-ḤS«LƊ€Ṁ>4  Main link. Argument: T (array of temperatures)

:5                Divide each item of T by 5 (integer division).
  _5              Subtract 5 from each quotient.
    Ṡ             Take the signs.
                  This maps (-oo,25) to -1, [25,30) to 0, and [30,+oo) to 1.
     ṣ-           Split at occurrences of -1.
       Ḥ          Double, replacing 1's with 2's.
           Ɗ€     Map the three links to the left over each chunk.
        S             Take the sum.
          L           Take the length.
         «            Take the minimum of the results.
             Ṁ    Take the maximum.
              >4  Test if it's larger than 4.
                  Note that the sum is larger than 4 if and only if there are more
                 than two 2's, which correspond to temperatures in [30,+oo).



4

05 এ বি 1 ই , 20 বাইট

Œʒ24›DPsO4›*}29›O2›Z

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

ব্যাখ্যা

Π                    # push sublists of input
 ʒ          }         # filter, keep the lists where:
           *          # the product of:
     DP               # the product and
       sO4›           # the sum compared using greater-than to 4
  24›                 # for the elements greater than 24
                      # is true
                      # the result is:
                   Z  # the maximum from the remaining lists where
                O     # the sum of 
             29›      # the elements greater than 29
                 2›   # is greater than 2

4

ব্যাচ, 119 বাইট

@set h=0
@for %%t in (0 %*)do @if %%t lss 25 (set/as=5,t=3)else set/a"t+=!!t*(29-%%t)>>9,s-=!!s,h+=!(s+t+h)
@echo %h%

কমান্ড-লাইন আর্গুমেন্ট হিসাবে ইনপুট নেয় এবং হিটওয়েভ অন্যথায় 0 এর জন্য আউটপুট 1 দেয়।


4

পাইথন , 67 বাইট

f=lambda l:l>l[:4]and(min(l)>24<sorted(l)[~2]-5)|f(l[1:])|f(l[:-1])

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

তাত্পর্যপূর্ণ বৃদ্ধির কারণে দীর্ঘতর পরীক্ষার কেসগুলি টাইম আউট করে। প্রথম বা শেষ উপাদানটি বারবার কাটা দ্বারা সংক্ষিপ্ত সাবলিস্টগুলি সন্ধান করে। যে 3 দিন largest30 3 C তৃতীয় বৃহত্তম মান দেখে পরীক্ষা করা হয় sorted(l)[~2]। সত্য ঘটনা / মিথ্যা সুবিধা গ্রহণ করে বা ত্রুটি দিয়ে সমাপ্ত করে বেস কেসগুলি সম্ভবত আরও সংক্ষিপ্ত হতে পারে।




4

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

∨/(5≤≢¨a)∧3≤+/30≤↑ae⊆⍨25e←⎕

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

∨/এমন কোনও উপাদান আছে কি?

(5≤≢¨a)5 < প্রতিটি সিরিজে দিনের তালিকাগুলি (দিনের aসমস্ত সম্ভাব্য সিরিজ রয়েছে)

এবং

3≤+/30≤3 +/elements উপাদানগুলির মোট সংখ্যা in 30

↑a← দ্বারা তৈরি ম্যাট্রিক্স

e⊆⍨25≤e←⎕ একটানা উপাদানগুলির সিরিজ যা 25 ডলার


আপনার প্রথম পরীক্ষাটি অযথা মন্তব্য করা হয়েছে - এটি কাজ করে।
এনজিএন 14

@ জিএন, এটি স্থির করার জন্য ধন্যবাদ
ক্রিটসি লিথোস

4

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

{var r=1;it.any{r*=2;if(it>29)r*=3;if(it<25)r=1;r%864<1}}

(-1 স্পষ্ট প্যারামিটার প্রতিস্থাপন বাইট ভী> অন্তর্নিহিত পরামিতি সঙ্গে এটা )

{var r=1;it.any{v->r*=2;if(v>29)r*=3;if(v<25)r=1;r%864<1}}

(-১ GB গিগাবাইটের মাধ্যমে রুবি সলিউশনটিতে যে কোনও}} অপারেশন ব্যবহার করে বাইটস )

{it.stream().reduce(1){r,v->if(r*25>r*v)1 else(r*if(v<30)2 else 6)%864}<1}

(-1 বাইট ধন্যবাদ লিন: পরিবর্তিত r> 0 && v <25 এর সাথে r * 25> r * ভি)

{it.stream().reduce(1){r,v->if(r>0&&v<25)1 else(r*if(v<30)2 else 6)%864}<1}

এই ল্যাম্বডা এক্সপ্রেশনটি একটি তালিকা নেয় এবং হিটওয়েভ বা অন্য কোনও মিথ্যা হিসাবে সত্য দেয়।

866 নম্বর যাদু এবং উডো বোরকোভস্কি এবং ম্যাথিসকে তাদের ধারণার জন্য ধন্যবাদ।

কীভাবে কাজ করবে? সংখ্যার প্রতিটি ক্রমকে হ্রাস মান 1 থেকে শুরু করে যে কোনও {} ক্রিয়াকলাপের সাথে পুনরাবৃত্তি করা হয়। হ্রাসটি 2 দ্বারা গুণিত হয় এবং সংখ্যাটি বৃহত্তর 30 বা 2 সমান হলে 3 (2 * 3 = 6) দিয়ে গুণিত হয় If যদি একটি সংখ্যা <25 হ্রাসটি আবার শুরু হয় 1 এ দেখা যায় যদি হ্রাসটি 864 = 2 * 2 * 2 * 2 * 2 * 2 * 3 * 3 * 3 দ্বারা বিভাজ্য হয় তবে একটি হিটওয়েভ পাওয়া যায়, এবং মডিউল অপারেশনের ফলাফল 0 হয় যার ফলস্বরূপ অভ্যন্তরীণ ল্যাম্বডায় একটি সত্য রিটার্ন মান যেকোন}} অপারেশন থেকে ডাকা হয় যা পুনরাবৃত্তি বন্ধ করে দেয় এবং সত্যটির মান দেয়।

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


সুন্দর ব্যাখ্যা :)
জয়সি

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

@ জোনাথন-ফ্র্যাচ, আমি ফাংশনটির বডিটি কিছুটা লম্বা ল্যাম্বডা এক্সপ্রেশনে পরিবর্তিত করেছি যা বন্ধনীগুলি জাভাতে যেমন optionচ্ছিক নয়। এটা কি ফর্সা?
রোল্যান্ড স্মিটজ

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

3

আশ্চর্য , 34 বাইট

(/>@(& <2!> '<29#0)*> '<24#0).cns5

ব্যবহারের উদাহরণ:

((/>@(& <2!> '<29#0)*> '<24#0).cns5) [25 33 33 25 24 27 34 31 29 31 27 23]

ব্যাখ্যা

ভার্বোজ সংস্করণ:

(some x\\(and <2 (fltr <29) x) (every <24) x) . (cns 5)

পরপর ৫ টি আইটেমের ওভারল্যাপিং সিকোয়েন্সগুলি নিন, তারপরে যে কোনও অনুক্রমের সমস্ত আইটেম> 25 এবং 2 টিরও বেশি আইটেম> 30 রয়েছে কিনা তা পরীক্ষা করুন।


আরে, এটি সম্পর্কিত নয় তবে আপনার ওয়েবসাইটে ফেসবুকের লিঙ্কটি মারা গেছে।
mbomb007


3

স্ট্যাক্স , 23 বাইট

Æ7)║▄░Ä╟═╙hⁿ╧\ßY8÷K▌µ½x

এটি চালান এবং এটি স্ট্যাক্সএল.এক্সজে ডিবাগ করুন! এটি চালাতে দীর্ঘ সময় নেয়, তাই আমি অটো চালানো অক্ষম করেছি।

প্যাকযুক্ত (28 বাইট) এবং ব্যাখ্যা

:efc%4>nc{24>f=a{29>f%2>|&|&
:e                              Set of all contiguous subarrays
  f                             Filter, using the rest of the program as a predicate:
   c                              Copy subarray on the stack
    %4>                           Five or more elements?
                        |&        AND
       nc                         Copy subarray twice to top
         {   f                    Filter:
          24>                       Greater than 24?
              =                   Equals the original subarray?
                          |&      AND
               a                  Move subarray to top
                {   f             Filter:
                 29>                Greater than 30?
                     %2>          Length greater than two?
                                  Implicit print if all three conditions are met

এটি এমন সমস্ত সাবহারাকে মুদ্রণ করবে যা তাপ তরঙ্গ হিসাবে গণনা করা যেতে পারে, যা যদি কিছু না থাকে তবেই মিথ্যা হবে।


3

রুবি , 89 বাইট

->a{(0..a.size).map{|i|(b=a[i..-1].take_while{|t|t>24}).size>4&&b.count{|t|t>29}>2}.any?}

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


আমি বিশ্বাস করি এটি ব্যর্থ হয় কারণ দ্বিতীয় সত্যবাদী ক্ষেত্রে, +30 দিন সমস্ত পাঁচ দিনের মধ্যেই হয় না।
স্টিভি গ্রিফিন

খুব সুন্দর. আপনি একটি each_consপদ্ধতির সাথে কয়েকটি বাইট শেভ করতে পারেন - এটি অনলাইনে চেষ্টা করুন!
বেনজ 2240

3

হুশ , 19 বাইট

Vo≥3#≥30fo≥5Lġ(±≥25

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

যৌক্তিক এবং ( ) দিয়ে পরীক্ষা করারf চেয়ে ফিল্টার ( ) ব্যবহার করা একটি বাইট কম খাটো , এছাড়াও ব্যয়যুক্ত 2 বাইট থেকে মুক্তি পেতে সত্যিই খুব সুন্দর লাগবে :(&±

ব্যাখ্যা

V(≥3#≥30)f(≥5L)ġ(±≥25)  -- example input: [12,25,26,27,28,29,18,24,32]
               ġ(    )  -- group by
                ( ≥25)  -- | greater or equal to 25: [0,1,2,3,4,5,6,0,0,8]
                (±   )  -- | sign: [0,1,1,1,1,1,1,0,0,1]
                        -- : [[12],[25,26,27,28,29,30],[18,24],[32]]
         f(   )         -- filter by
          (  L)         -- | length: [1,6,2,1]
          (≥5 )         -- | greater or equal to 5: [0,2,0,0]
                        -- : [[25,26,27,28,29,30]]
V(      )               -- does any element satisfy
 (  #   )               -- | count occurences where
 (   ≥30)               -- | | elements greater or equal to 30
 (      )               -- | : [1]
 (≥3    )               -- | greater or equal to 3: [0]
                        -- : 0


3

আর , 111 93 71 67 66 বাইট

!Reduce(function(i,j)"if"(j<25,!!i,(i*(2+4*!j<30))%%864),scan(),1)

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

রোল্যান্ড স্মিটসের উত্তরগুলির লজ্জাজনক বন্দর । -4 বাইট রোল্যান্ডকে এবং -1 জিউসেপিকে ধন্যবাদ জানায়।

টিআইও কার্যকরী সংস্করণে লিঙ্ক করে।

পূর্ববর্তী সংস্করণ টানা দিন> 25 ব্যবহার করে rleজিউসেপিকে ধন্যবাদ 18 বাইট ব্যবহার করে এবং সংরক্ষণ করা হয়েছে!


আপনি যদি এর Fপরিবর্তে ব্যবহার করেন তবে আপনি Tকরতে পারেন F=F|"if"(cond,(expr),0)এবং তারপরে F6-ইশ বাইট সংরক্ষণ করতে পারেন । আপনার চারপাশে একটি অপ্রয়োজনীয় জুটি বন্ধনীও রয়েছে (1-z[i]):0তবে আমি মনে করি যে এটি 1-z[i]:1অন্য কোনও দম্পতি বাইট সংরক্ষণ করা যেভাবেই হতে পারে ...
জিউস্পে

Another যখন আমার উপর অন্য ধারণা আসে তখন আমি উপরের মন্তব্যটি জমা দিতে চলেছিলাম এবং আমি একটি সাব -100 বাইট সমাধান সন্ধান করতে পেরেছি! এটি function(x,z=rle(x>24)$l){for(i in 1:sum(z|1))F=F|z[i]>4&sum(x[sum(z[1:i])+1-z[i]:1]>29)>2;F}তবে পিপিসিজি থেকে টিআইওতে আটকানোর বিষয়ে সাবধানতা অবলম্বন করুন কারণ মাঝেমাঝে অরক্ষিত ছিটকে পড়ে ...
জিউসেপ

এটি চমৎকার! জোনাথন অ্যালানের গণিতের পক্ষে সম্ভবত আরও ছোট একটি উপায় রয়েছে ...
জেসি

ভাল, আপনি যদি অভ্যন্তরীণ অংশটি (i * 2 * (1+ (2 * (j> 29))) থেকে (i * (2 + 4 * (j> 29)) সরল করেন তবে আপনি আরও কিছু বাইট সংরক্ষণ করতে পারেন ))
রোল্যান্ড স্মিটজ

@ রোল্যান্ডশ্মিট্জ খুব সত্য!
জয়সি

3

সুইফট 4 , 50 বাইট

{$0.reduce(1){$0>0&&$1<25 ?1:$0*($1<30 ?2:6)%864}}

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

ক্লোজার এক্সপ্রেশন 0 টি হিটওয়েভ বা> অন্য 0 এর জন্য 0 প্রদান করে।

রোল্যান্ড শ্মিটজ এবং ম্যাথিসের সহযোগিতায় তৈরি ।

কীভাবে কাজ করবে? সংখ্যার প্রতিটি ক্রম হ্রাস অপারেশন দিয়ে হ্রাস মান 1 থেকে শুরু করে পুনরাবৃত্তি করা হয় যদি একটি সংখ্যা> = 25 দেখা যায় তবে হ্রাস 2 টি দ্বারা গুণিত হয় 2 যদি একটি সংখ্যা> = 30 দেখা যায় তবে হ্রাসটি 2 এবং 3 = দ্বারা গুণিত হয় A. যদি একটি সংখ্যার <25 দেখতে পাওয়া যায় তবে হ্রাসটি আবার শুরু হয় 1 থেকে শুরু হয় যদি হ্রাসটি 864 = 2 * 2 * 2 * 2 * 2 * 3 * 3 * 3 দ্বারা বিভাজ্য হয় তবে একটি হিটওয়েভ পাওয়া যায় এবং ফলাফলটির ফলাফল মডুলো অপারেশন 0 হয় যার ফলাফল হ্রাসের মান 0 হয় কেবল তখনই যখন একটি তাপ তরঙ্গ পাওয়া যায় তা হ্রাস করতে পারে 0. একবার হ্রাস করার মান 0 হলে এটি ভবিষ্যতের সমস্ত হ্রাসের জন্য 0 হবে, অর্থাত্ শেষ ফলাফলের জন্যও।


3

পাইথন 2 , 66 63 বাইট

lambda a:reduce(lambda b,c:(b*(6,2)[c<30]%864,1)[b*25>b*c],a,1)

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

-3 বাইট ধন্যবাদ লিনকে

কীভাবে কাজ করবে? সংখ্যার প্রতিটি ক্রম হ্রাস অপারেশন দিয়ে হ্রাস মান 1 থেকে শুরু করে পুনরাবৃত্তি করা হয় যদি একটি সংখ্যা> = 25 দেখা যায় তবে হ্রাস 2 টি দ্বারা গুণিত হয় 2 যদি একটি সংখ্যা> = 30 দেখা যায় তবে হ্রাসটি 2 এবং 3 = দ্বারা গুণিত হয় A. যদি একটি সংখ্যার <25 দেখতে পাওয়া যায় তবে হ্রাসটি আবার শুরু হয় 1 থেকে শুরু হয় যদি হ্রাসটি 864 = 2 * 2 * 2 * 2 * 2 * 3 * 3 * 3 দ্বারা বিভাজ্য হয় তবে একটি হিটওয়েভ পাওয়া যায় এবং ফলাফলটির ফলাফল মডুলো অপারেশন 0 হয় যার ফলাফল হ্রাসের মান 0 হয় কেবল তখনই যখন একটি তাপ তরঙ্গ পাওয়া যায় তা হ্রাস করতে পারে 0. একবার হ্রাস করার মান 0 হলে এটি ভবিষ্যতের সমস্ত হ্রাসের জন্য 0 হবে, অর্থাত্ শেষ ফলাফলের জন্যও।

আরও পঠনযোগ্য, তবে দীর্ঘ সংস্করণটি দেখতে এরকম দেখাচ্ছে:

lambda a:reduce((lambda b,c: 1 if b>0 and c<25 else b*(2 if c<30 else 6)%864), a, 1)

অতিরিক্ত স্পেস / প্রথম বন্ধনী সরানো হলে প্রতিস্থাপন x if cond else yদ্বারা (y,x)[cond]দেয়

lambda a:reduce(lambda b,c:(b*(6,2)[c<30]%864,1)[b>0and c<25],a,1)

লিন শর্তটি ছোট করার পরামর্শ দিয়েছিল b>0and c<25:

b>0and c<25-> b*25>0 and b*c<b*25-> b*25>0 and b*25>b*c->b*25>b*c

ফলস্বরূপ

lambda a:reduce(lambda b,c:(b*(6,2)[c<30]%864,1)[b*25>b*c],a,1)


1
আপনাকে আসলে আমদানি হ্রাস করার দরকার নেই functools, এটি পাইথন 2-এ অন্তর্নির্মিত !
লিন

1
আপনি পরীক্ষা করতে পারেন b*25>b*cএবং 3 বাইট সংরক্ষণ করতে পারেন ; এটি বিভিন্ন ভাষায় এই পদ্ধতির গ্রহণ করা অনেকগুলি সমাধানের ক্ষেত্রে প্রয়োগ হতে পারে :)
লিন

@ লিন অনেক ধন্যবাদ। আমি সেই অনুযায়ী সমাধান আপডেট করেছি।
উদো বোরকোভস্কি



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