পাই ডে, পাই মিনিট, না পাই সেকেন্ড?


16

এই চ্যালেঞ্জে আপনাকে নির্ধারণ করতে হবে এটি পাই দিবস, পাই মিনিট বা পাই দ্বিতীয়।

পাইটি অযৌক্তিক, তাই এটি আপনার কোডটি যতটা সম্ভব সংক্ষিপ্ত হোক।

উদাহরণ

কোনও ইনপুট সরবরাহ করা হয়নি , আপনার প্রোগ্রামটি সিস্টেমের সময় ব্যবহার করা উচিত। আমি এটি স্পষ্টতার জন্য যুক্ত করেছি

March 14, 2016 0:00:00
Pi Day
December 25, 2015 3:14:45
Pi Minute
December 29, 2015 0:03:14
Pi Second
January 1, 2016 0:00:00
<No Output>

পাই ডে / মিনিট / সেকেন্ড কি?

  • Pi Day মাস যখন মার্চ হয়, এবং তারিখটি 14 তম হয়
  • Pi Minute ঘন্টা যখন 3 হয়, এবং মিনিট 14 হয়
  • Pi Second যখন মিনিট 3 হয়, এবং দ্বিতীয়টি 14 হয়
  • Pi DayPi Minuteবা এর পরিবর্তে পছন্দ করা উচিত Pi Secondএবং এর Pi Minuteপরিবর্তে পছন্দ করা উচিত Pi Second
  • এই চ্যালেঞ্জের জন্য আপনার 12 ঘন্টা সময় ব্যবহার করা উচিত (15:14 == 3:14)। নির্ধারণ করতে ব্যবহৃত তারিখ / সময়টি সিস্টেম সময়েরPi Day/Minute/Second ভিত্তিতে হওয়া উচিত ।

স্কোরিং এবং বোনাস

-15 বাইট বোনাস: আপনি যদি মুদ্রণ করেন "No Pi Time"যখন পাই সময় হয় না।


সর্বদা হিসাবে, স্ট্যান্ডার্ড লুফোলগুলি অনুমোদিত নয়। এটি সংক্ষিপ্ততম কোড যা বাইট জেতে!


6
আমি মনে করি না কোস্টকো আপনাকে বছরের যে কোনও সময় গাণিতিক ধ্রুবক পাই কিনতে দেয়।
অ্যালেক্স এ।

2
আপনি এটি নিয়মিত পাইতে পরিবর্তন করেছেন। এটিও মিথ্যা কারণ আপনি সারা বছর কস্টকো থেকে পাই পেতে পারেন।
অ্যালেক্স এ।

1
@AlexA। হুম, অদ্ভুত আমি গ্রীষ্মে এটি কখনই খুঁজে পাই না ...
ডাউনগোট

1
কারণ পাই অসীম দীর্ঘ এবং আপনি প্যাসিভ-আগ্রাসী হতে চান?
আর্কটরাস

8
আমি আজ কস্টকো গিয়েছিলাম - সেগুলি বন্ধ ছিল।
ডিজিটাল ট্রমা

উত্তর:


4

সিজেম, 41 বাইট

et[3E]#"
Pi Day

Pi Minute
Pi Second
"N/=

এটি এখানে পরীক্ষা করুন। সহজেই পরীক্ষার ফলাফলের জন্য এই লিঙ্কটি বিকল্পভাবে ব্যবহার করুনet

ব্যাখ্যা

et   e# Get the current datetime as an array with the following elements:
     e#   - Year
     e#   - Month
     e#   - Day
     e#   - Hour
     e#   - Minute
     e#   - Second
     e#   - Millisecond
     e#   - Weekday
     e#   - Tickrate or something.
[3E] e# Push the array [3 14].
#    e# Find the position of this subarray in the current datetime array. Let's see
     e# what results we can get:
     e#   - Year 3 is in the past and there is no 14th month, so we can't get 0.
     e#   - Pi day will give result 1.
     e#   - Day 3, hour 14 would give 2.
     e#   - Pi minute will give result 3.
     e#   - Pi second will give result 4.
     e#   - Second 3, millisecond 14 would give 5.
     e#   - Weekday and tickrate won't be 14, so we'll never get 6 or 7.
     e#   - If [3 14] isn't found at all we get -1.
"\Pi Day\\Pi Minute\Pi Second\"
     e# Push this string (with linefeeds instead of backslashes.
N/   e# Split into lines.
=    e# Select the corresponding element. The non-existent "pi hour" and "pi millisecond"
     e# would map to empty strings as well as the -1.

8

জাভাস্ক্রিপ্ট (ES6), 114 112 - 15 = 97 বাইট

x=>['Pi Day','Pi Minute','Pi Second'].find((x,i)=>[/ar 14/,/(03|15):14:/,/03:14/][i].test(Date()))||'No Pi Time'

Ungolfed:

x=>
['Pi Day', 'Pi Minute', 'Pi Second']  // array of outputs
.find(                                // find first element in the array
    (x, i)=>                          // which returns truthy for this function
    [/ar 14/, /(03|15):14:/, /03:14/] // array of regex patterns
    [i]                               // get corresponding regex based on index
    .test(Date())                     // test it against current date, date is automatically cast to string
) || 'No Pi Time'                     // if no result, then return "No Pi Time"

-২ বাইট @ এডসি 65 এর জন্য ধন্যবাদ


এর Date()পরিবর্তে হতে পারেnew Date
edc65

'Pi '+['Day','Minute','Second'].find((x,i)=>................
wizzwizz4

@ wizzwizz4 এটি কাজ করবে না। এটি পাই সময় না হলে এটি ফিরে আসে"Pi undefined"
nderscore

অপরিজ্ঞাত জন্য একটি চেক 6 টি অক্ষরের চেয়ে কম হবে?
wizzwizz4

1
@nderscore এটা কম বাইট একথা কে বলতে পারেন nderscoreতুলনায় underscore
wizzwizz4

5

রুবি, 125 124 অক্ষর

i=[*[(t=Time.new).month,t.day,t.hour,t.min,t.sec].each_cons(2)].index [3,14];i&&$><<['Pi Day','','Pi Minute','Pi Second'][i]

হায়রে, ক্লিভারটি আরও %i[month day hour min sec].map{|x|Time.new.send x}দীর্ঘ।

each_consপুনরাবৃত্তি এড়ানোর জন্য এখানে কীটির ব্যবহারটি রয়েছে (নীচের ব্যাখ্যাটির শেষ কয়েকটি লাইন দেখুন)।

i=                          # send i (index) to...
[*                          # convert to array (splat)...
 [
  (t=Time.new).month,       # the current month...
  t.day,t.hour,t.min,t.sec  # etc... (duh)
 ]
 .each_cons(2)              # each consecutive two elements
]                           # [[month, day], [day, hour], [hour, min], etc]
.index [3,14];              # first occurrence of [3, 14]
i&&                         # shorthand for "if i"...
$><<                        # output...
[
 'Pi Day',                  # [month=3, day=14] is Pi Day
 '',                        # [day=3, hour=14] isn't anything
 'Pi Minute',               # [hour=3, min=14] is Pi Minute
 'Pi Second'                # [min=3, sec=14] is Pi Second
][i]                        # index by index (obviously)

আপনি যেমন করেছেন তেমন করে কয়েকটা অক্ষর সাশ্রয় 'Pi'করতে পারবেন t, না?
কোল জনসন

@ কোল এবং আপনি দ্বিতীয় উপাদানটির সাথে কী করবেন?
নিকেল 14

পাই আওয়ার কিছু না। আগামীকাল বিকেলে দুপুরে কী হয়েছে?
মিস্টার লিস্টার

@ কোল জনসন না, আরও [(p='Pi ')+Day','',p+'Minute',p+'Second']দীর্ঘ
Doorknob

4

পাইথন 2, 219 186 183 বাইট (198-15)

আমি চেষ্টা করেছিলাম

Ungolfed:

from datetime import datetime

now = datetime.now()
output = ['Pi Day', 'Pi Minute', 'Pi Second', 'No Pi Time']

if now.month == 3 and now.day == 14:
    print output[0]
elif now.hour == 2 and now.minute == 13:
    print output[1]
elif now.minute = 2 and now.second == 13:
    print output[2]
else:
    print output[3]

Golfed:

from datetime import *
n=datetime.now()
a=n.minute
if n.month==3and n.day==14:print'Pi Day'
elif n.hour==2and a==13:print'Pi Minute'
elif a==2and n.second==13:print'Pi Second'
else:print'No Pi Time'

4
from datetime import*;n=datetime.now()খাটো হয়। এছাড়াও, আপনি যখন ধ্রুবক স্ট্রিংগুলি মুদ্রণ করেন তখন কোনও অ্যারেতে ইনডেক্স করার কোনও অর্থ নেই।
Doorknob

@ ডুরকনব 冰 এটি সত্য :)
জিজোজ ২২

সংক্ষিপ্ত এমনকি: পেস্ট.আই
p

[অন্যথায়, যদি] [বিবৃতি] দিয়ে / এলেসগুলি অদলবদল করে তৈরি।
আর

1
পরবর্তী সংখ্যাগুলি ভুল (3:14 এর পরিবর্তে 2:13), এবং 12-ঘন্টা ঘড়ির প্রয়োজনীয়তা পূরণ করা হয়নি। (অন্য কয়েকটি উত্তরের জন্যও প্রয়োগ করা হয়েছে বলে মনে হয়) আপনি ফলাফলটি সূচী দ্বারা এটি আরও খাটো করতে পারেন time.localtime(); এটি 148-15 বাইটে নেমে আসে (12-ঘন্টা স্থির না করে)। 12 ঘন্টা জিনিস যদিও দুর্ভাগ্যজনক; এটি ছাড়াই আপনি সহজেই এটিকে 129-15 বাইটে নামাতে পারবেন: import time;x=3,14;T=time.localtime();print{1:'Pi Day',3:'Pi Minute',4:'Pi Second'}.get((zip(T,T[1:])+[x]).index(x),'No Pi Time')(এবং পাইথন 3 এ 118-15 বাইট, বাইটে রূপান্তর করে এবং ব্যবহার করে যা জিনিসগুলিকে সহজ করে তোলে)
আলেক্সি তোড়হমো

4

জাপট, 78 - 15 = 63 বাইট

D=Ð)g ¥3©Df ¥E?"Pi Day":Dd %C¥3©Dc ¥E?`Pi M©e`:Dc ¥3©Db ¥E?`Pi SeÖ:No Pi Te

বেশ সোজা - প্রতিটি ক্ষেত্রে কেবল তারিখটি পরীক্ষা করে।

ব্যাখ্যা:

  • D=Ð)gবর্তমান তারিখ পান ( Ð), এটি ভেরিয়েবলে সঞ্চয় করুন Dএবং মাস ( g) পান। এটি ইতিমধ্যে এক-অক্ষর হলে কেন এটি ভেরিয়েবলে সঞ্চয় করবেন? কারণ তখন থেকে আপনি তারিখের যে কোনও অংশের সাথে সাজতে পারেন, ফাংশনটি Daকোথায় a, রিটার্নিং বছর, মাস, তারিখ ইত্যাদি But তবে অন্যথায় আপনাকে করতে হবে Ð a, জায়গাটি দেখুন।

  • ¥3হয় ==3, মাস মার্চ কিনা তা পরীক্ষা করা হচ্ছে।

  • ©হয় &&, অর্থাত্ "এবং"।
  • Df মাসের দিন।
  • E 14
  • ?...:... - টার্নারি অপারেটরগুলির সাধারণ সেট
  • Dd %Cঘন্টা ( Dd) 12 ( C) দ্বারা ভাগ করার অনুস্মারক
  • Dc মিনিট হয়
  • Db সেকেন্ড হয়

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


পাই দিবস অনুকরণ করতে:

D=Ð"3/14/11 11:11:11";
Dg ¥2©Df ¥E?"Pi Day":Dd %C¥3©Dc ¥E?`Pi M©e`:Dc ¥3©Db ¥E?`Pi SeÖ:No Pi Te

পাই মিনিট অনুকরণ করতে :

D=Ð"11/11/11 3:14:11";
Dg ¥2©Df ¥E?"Pi Day":Dd %C¥3©Dc ¥E?`Pi M©e`:Dc ¥3©Db ¥E?`Pi SeÖ:No Pi Te

পাই দ্বিতীয় অনুকরণ করতে :

D=Ð"11/11/11 00:3:14";
Dg ¥2©Df ¥E?"Pi Day":Dd %C¥3©Dc ¥E?`Pi M©e`:Dc ¥3©Db ¥E?`Pi SeÖ:No Pi Te

3

টিআই-বেসিক, 124 বাইট

কয়েক বাইট শেভ করার জন্য ফ্ল্যাগএএসস্পামকে ধন্যবাদ।

"→Str1
getTime
If min({3,14}={Ans(2),Ans(3
"Pi Second→Str1
getTime
If Ans(2)=14 and max(Ans(1)={3,14
"Pi Minute→Str1
getDate
If min({3,14}={Ans(2),Ans(3)
"Pi Day→Str1
Str1

আপনি কি i(কাল্পনিক ইউনিট) এবং e(ইউলারের ধ্রুবক) শর্টকাট হিসাবে ব্যবহার করছেন? যদি তা না হয় তবে এটি আপনাকে কিছু বাইটও বাঁচাতে পারে।
অ্যাডিসন ক্র্যাম্প

@ ফ্ল্যাগএএসপ্যাম আমি সেগুলি ব্যবহারের বিষয়ে ভেবেছিলাম, তবে আমি নিশ্চিত ছিলাম না যে এটি গণনা করে।
কনর ও'ব্রায়ান

@ ফ্ল্যাগএএসস্প্যাম এগুলি বৈধ কিনা বা না তা eআসলে দুটি বাইট!
lirtosiast

@ থমাসকওয়া ওহ, ঠিক আছে।
কনর ও'ব্রায়ান

@ ফ্ল্যাগএএসস্পাম এটি আর অবৈধ নয়। ^ _ ^
কনর ও'ব্রায়ান

3

পার্ল, 80 - 15 = 65 বাইট

print'No 'x localtime!~/(ar | 15:|03:)14/,'Pi ',(Time,Day,Minute,Second)["@-"/4]

এর স্ট্রিং প্রতিনিধিত্বকে বিশ্লেষণ করে 2 নিন localtime। বর্তমানে, এটি এমন কিছু দেখাচ্ছে:

Sun Jan  3 15:14:15 2016

ম্যাচযুক্ত স্ট্রিংয়ের অবস্থানটি সঠিক পাই সময় নির্ধারণ করতে ব্যবহৃত হয়।


পার্ল, 100 বাইট

@t=localtime;$t[2]%=12;3-/3/^{@t[$_,$_+1]}->{14}||exit!print'Pi ',(Second,Minute,_,Day)[$_]for 3,1,0

localtimeমাসগুলিকে শূন্য সূচকযুক্ত করে দেয়, সুতরাং এর জন্য প্রয়োজন 3-/3/


2

পাইথন 3, 137 - 15 = 122 বাইট

import time
T=list(time.localtime())
T[3]%=12
print({1:'Pi Day',3:'Pi Minute',4:'Pi Second'}.get(bytes(T[1:6]).find(b'\x03\x0e'),'No Pi Time'))

12-ঘন্টা প্রয়োজনীয়তা দুর্ভাগ্যজনক ছিল, কারণ এটি এটি ছাড়া 118-15 = 103 বাইট হত:

import time
print({1:'Pi Day',3:'Pi Minute',4:'Pi Second'}.get(bytes(time.localtime()[1:6]).find(b'\x03\x0e'),'No Pi Time'))

2

অ্যাপলস্ক্রিপ্ট, 202 190 187 183 181 বাইট

আরে, এতটা খারাপ না।

set n to current date
set b to n's time string
if n's date string contains"March 14"
log"Pi Day"
else if b contains"3:14:"
log"Pi Minute"
else if b contains"3:14"
log"Pi Second"
end

আমি আসলে অ্যাপলস্ক্রিপ্টের পদ্ধতি কল করার জন্য একটি ব্যবহার পেয়েছি। চিত্রে যান. নাঃ। শুধু যে সক্রিয়I'm an idiot । একটি ভেরিয়েবল সেট করা সংক্ষিপ্ত।

(যারা ভাবছেন তাদের জন্য, বর্তমান তারিখ কমান্ড সামগ্রী "Saturday, January 2, 2016 at 2:46:01 PM"বা এর মতো একটি তারিখ-টাইপ দেয়)


1

পিএইচপি, 85 - 15 = 70 বাইট

<?=['No Pi Time','Pi Day','Pi Minute','Pi Second'][strpos(@date(Ymdhi_is),'0314')/4];

এখানে মূল কৌশলটি ব্যবহারের Ymdhi_is তারিখের ফর্ম্যাট , লেখার সময়, date('Ymdhi_is')রিটার্ন 201501030258_5828

  • md, hiএবং isমানগুলি 0314হ'ল এটি পাই-কিছু হলে প্রতিস্থাপন করা হবে। নোট করুন যে সমস্ত স্ট্রিং সর্বদা 4-বর্ণের দীর্ঘ স্ট্রিং দ্বারা প্রতিস্থাপিত হবে।
  • তারা সেই নির্দিষ্ট ক্রমে রেখে দেওয়া হয়েছে যেহেতু strposসূচির প্রথম ঘটনায় অনুসন্ধান করা বন্ধ হবে, তাই আমরা এগুলিকে অগ্রাধিকারের ক্রমে রেখেছি।
  • এর মধ্যে একটি বিভাজক hiএবং isকারণ আমরা চাই না প্রয়োজনীয় strposএকটি মান উভয় (ধন্যবাদ ওভারল্যাপ হবে মেলে primo এখানে বাইট সংরক্ষণ করার জন্য)।
  • সুই হয় 0314কারণ 314ভুলভাবে 10:31:42 পী-দ্বিতীয় হিসাবে মেলে যাবে।

Y অংশটি সবচেয়ে জটিল। পাই-কোনও কিছুর প্রথম উপস্থিতিটি অফসেট করার জন্য আমাদের একটি উপসর্গের প্রয়োজন, যা আমাদের খুঁজে পাওয়া strposমানগুলি false(খুঁজে পাওয়া যায়নি, পাই-কিছুই নেই) এবং এর মধ্যে পার্থক্য করতে দেয়0 (সূচক 0, পাই-ডে-তে পাওয়া যায় ।

এবং আমরা এই উপসর্গটি 4 বা 5-অক্ষরের দীর্ঘ হতে চাই, যেহেতু আমরা strpos4 এর ফেরতের মান 4 দিয়ে ভাগ করার পরিকল্পনা করছি ।

ওয়াই 4-বর্ণের দীর্ঘ, তবে:

  • এটি কোনও দিন 5-অক্ষর দীর্ঘ হবে, এবং এটি প্রোগ্রামটি ভেঙে ফেলবে (10314 বছর সম্পর্কে চিন্তা করুন): পিএইচপি ডকুমেন্টেশন বলে যে এটিY 4 সংখ্যার দ্বারা প্রতিস্থাপিত হবে, তবে এটি সত্য নয়
  • আপনি সময়মতো ফিরে এলে, বছর 314 এ, এটি প্রোগ্রামটি ভেঙে দেবে।

যেহেতু পিএইচপি 314 সালে বিদ্যমান ছিল না এবং সম্ভবত 10314 সালে আর অস্তিত্ব থাকবে না, আমার ধারণা এই বাগগুলি নিরাপদে উপেক্ষা করা যেতে পারে।

নোট যা 0314ওভারল্যাপ করতে পারে Ymd:

  • Ymmd কনফিগারেশন: 31 তম মাস নেই।
  • YYmm কনফিগারেশন: 14 তম মাস নেই।
  • YYYm কনফিগারেশন: কম 40 মাস আছে।

এছাড়াও, বছরের সাথে সম্পর্কিত বাগগুলি ছাড়াই একটি সংস্করণ রয়েছে, যা 86 - 15 = 71 বাইট :

<?=['No Pi Time','Pi Day','Pi Minute','Pi Second'][strpos(@date(D_mdhi_is),'0314')/4];

দুর্দান্ত উত্তর। আপনি যদি বিন্দুগুলির চেয়ে আন্ডারস্কোরগুলি ব্যবহার করেন তবে আপনি প্রায়শই উদ্ধৃতিগুলি ফেলে দিতে পারেন Ymd_hi_is। এছাড়াও, আমি মনে করি না mdএবং এর মধ্যে একটি বিভাজক আবশ্যক এবং hi12-ঘন্টা hকখনই 14 হতে পারে না এবং 3 বা 4 দিয়ে কখনই শুরু করা যায় না
প্রিমো

0

পাইথন 3, 179 বাইট

import functools as F,datetime as D
T,G=D.datetime.now(),getattr
F.reduce(lambda i,j:print("Pi "+i.title())if G(T,i)/G(T,j)==3/14else j,"month day hour minute second".split(" "))
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.