চূড়ান্ত ফ্যান্টাসি এক্সভি অকেভারড!


9

যেহেতু আমি চূড়ান্ত ফ্যান্টাসি এক্সভি আনকভারড ইভেন্টের জন্য অবিচ্ছিন্নভাবে হাইপড আছি , আমি চাই আপনি কখন আমাকে একটি প্রোগ্রাম লিখতে বলবেন এটি কখন হয় !!!

ইনপুট

আকারে আপনার নিতে ইনপুট HH:MM XDT, যেখানে HHসীমার মধ্যে একটি সংখ্যা 1-12, MMএর মধ্যে একটি সংখ্যা হয় 0-60, এবং XDT, একটি সময় জোন সঙ্গে Xএক হচ্ছে E(ইস্টার্ন, ইউটিসি -4), C(কেন্দ্রীয়, ইউটিসি -5), P(প্রশান্ত মহাসাগরীয় ইউটিসি -7), বা M(পর্বত, ইউটিসি -6)। এটি প্রধানমন্ত্রী হিসাবে অনুমান করা সময়। বৈধ ইনপুট অন্তর্ভুক্ত:

1:00 EDT (1 PM Eastern Daylight Time)
4:05 MDT (4:05 PM Mountain Daylight Time)
12:23 PDT (12:23 PM Pacific Daylight Time)
1:10 CDT (1:10 PM Central Daylight Time)

ইনপুটটি বৈধ বলে ধরে নেওয়া যেতে পারে।

আউটপুট

আপনার প্রোগ্রামটি নিম্নলিখিতগুলি করতে হবে:

  1. প্রদত্ত সময়টিকে পিডিটি এবং আউটপুটে রূপান্তর করুন It is XX:XX PM PDT., যেখানে XX:XXরূপান্তর সময়। মনে রাখবেন আপনি না না কোনো ক্ষেত্রে যেখানে সময় পূর্বাহ্ণ / অপরাহ্ণ সীমানা অতিক্রম করছে যাবে রূপান্তর হ্যান্ডেল করতে হবে।

  2. নিম্নলিখিতগুলির মধ্যে একটি মুদ্রণ করুন:

    1. যদি রূপান্তরিত সময়টি 6:00 অপরাহ্ন পিডিটি এর আগে হয় , মুদ্রণ করুন X minutes until the pre-show!, Xমিনিট সংখ্যার সাথে প্রতিস্থাপন 6:00 অপরাহ্ন পিডিটি পর্যন্ত।

    2. যদি রূপান্তরিত সময়টি 6:00 অপরাহ্ন পিডিটি এর পরে বা তার সমান হয় এবং 7:00 অপরাহ্ন পিডিটি এর আগে , মুদ্রণ করুন Pre-show started X minutes ago; UNCOVERED is starting in Y minutes!, X6:00 পিএমডি পিডিটি থেকে যে মিনিটগুলি কেটে গেছে তার সংখ্যা কোথায় এবং Y7:00 অবধি মিনিটের সংখ্যা হয় প্রধানমন্ত্রী পিডিটি

    3. যদি রূপান্তরিত সময়টি 7:00 অপরাহ্ন পিডিটি-র পরে বা তার সমান হয় , মুদ্রণ করুন UNCOVERED started X minutes ago!, X7:00 অপরাহ্ন পিডিটি থেকে যে মিনিটগুলি কেটে গেছে তার সংখ্যা কোথায় ।

মুদ্রিত প্রতিটি স্ট্রিং একটি নতুন লাইন অনুসরণ করা আবশ্যক

স্কোরিং

এটি কোড গল্ফ, তাই সংক্ষিপ্ততম প্রোগ্রামটি জয়ী।


সমস্ত ইনপুটগুলি কি বৈধ বলে ধরে নেওয়া হচ্ছে?
লিকি নুন

1
HH:MM XDTটাইপো কি ? এটা হতে পারে CST
লিকি নুন

1
চান 2:45 EDTপ্রদর্শিত তাই আমরা কিনা তা সনাক্ত করতে রূপান্তরিত সময় প্রধানমন্ত্রী বা পূর্বাহ্ণ প্রয়োজন?
লিকি নুন

যদি আপনি চারটি সময় অঞ্চলের ইউটিসি অফসেটগুলি অন্তর্ভুক্ত করেন তবে আমি সেগুলি নিজেই সন্ধান করতে না পারলে ভাল হত।
নীল

@ কেনিলাউ দ্য CSTটাইপো ছিল এবং এএম / পিএম সীমানা অতিক্রম করতে পারে এমন কোনও সময় উপস্থিত হবে না। পোস্টটি সম্পাদনা করেছেন।
kirbyfan64sos

উত্তর:


1

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

s=>(t=` minutes`,a=s.match(/(\d+):(\d+) (.)/),h=+a[1]+"PMCE".search(a[3]),m=420-h*60-a[2],`It is ${h}:${a[2]} PM PDT
${h<6?m-60+t+` until the pre-show`:h<7?`Pre-show started ${60-m+t} ago; UNCOVERED is starting in ${m+t}`:`UNCOVERED started ${-m+t} ago`}!`)

সঞ্চয়পত্রগুলি জানেন না তবে কয়েকটি স্ট্রিং রয়েছে যা পুনরাবৃত্তি হয়েছে আপনি আরও বেশি গল্ফ দিয়ে যেতে পারেন। "পুনরায় প্রদর্শন" এবং "উদাহরণস্বরূপ" উদাহরণস্বরূপ।
ম্যাট

@ ম্যাট একটি স্ট্রিংয়ের জন্য যা কেবলমাত্র ওভারহেড 13 বাইটের পরে পুনরাবৃত্তি হয় তাই এটির মূল্য হতে 14 বাইট দীর্ঘ হওয়া প্রয়োজন। সময়ের সাথে থাকার এবং চারবার প্রয়োজন হওয়ার জন্য "মিনিট" একটি বোনাস পেয়েছিল।
নীল

4

পাইথন (৩৩৫ বাইট)

t=raw_input().replace(*': ').split();x='PMCE'.index(t[2][0]);t[0]=int(t[0])+x;print '%s:%s PM PDT' % tuple(t[:1]);x=t[0]*60+int(t[1]);print ['%s minutes until the pre-show!'%(360-x),'Pre-show started %s minutes ago; UNCOVERED is starting in %s minutes!'%((x-360),(420-x)), 'UNCOVERED started %s minutes ago!'%(x-420)][(x>360)+(x>420)]

আউটপুট:

1:00 MDT
2:00 PM PDT
240 minutes until the pre-show!

6:00 CDT  
8:00 PM PDT
UNCOVERED started 60 minutes ago!

6:50 PDT
6:50 PM PDT
Pre-show started 50 minutes ago; UNCOVERED is starting in 10 minutes!

পিপিসিজিতে আপনাকে স্বাগতম ! আশা করি আপনার এখানে দুর্দান্ত সময় কাটবে।
ফাঁস নুন

এখানে একটি অনির্ধারিত গল্ফযুক্ত সংস্করণ যা 340 বাইট:t=raw_input().replace(' ',':').split(':');x='PMCE'.index(t[2][0]);t[0]=int(t[0])+x;t[2]='PDT';print'%s:%s PM %s'%tuple(t);x=t[0]*60+int(t[1]);print['%s minutes until the pre-show!'%(360-x),'Pre-show started %s minutes ago; UNCOVERED is starting in %s minutes!'%((x-360),(420-x)),'UNCOVERED started %s minutes ago!'%(x-420)][(x>360)+(x>420)]
লিক নুন

পিপিসিজিতে স্বাগতম, আমরা আশা করি আপনি এখানে যা চান তা পাবেন এবং আমাদের সাথে আপনার সময় উপভোগ করবেন! যদি আপনার কাছে সময় এবং ইচ্ছা থাকে তবে আপনার কোডটির একটি বর্ণহীন সংস্করণ (ভুলবেন না বলে মন্তব্যগুলির সাহায্যে) রাখতে ভুলবেন না, যা আপনার কোড বোঝার জন্য লোকেদের সহায়তা করবে এবং এটিকে আরও গল্ফ করার টিপস সরবরাহ করতে সহায়তা করবে;)।
কাটেনকিও

আপনি প্রতিস্থাপন করতে পারেন .replace(' ', ':').split(':')সঙ্গে .replace(*': ').split()সংরক্ষণ 6 বাইট
নীল


2

লুয়া, 357 335 332 বাইট

22 বাইট কেটে দেওয়ার জন্য @ কেটেনকিওকে ধন্যবাদ ।

Golfed:

h,m,t=(...):match("(%d+):(%d+) (.)")f=tonumber h=(f(h)-("PMCE"):find(t))%12+1m=f(m)print("It is "..h..":"..m.." PM PDT.")a=" minutes"b="UNCOVERED"n=(6-h)*60-m r=h<6 and n..a.." until the pre-show!"or h<7 and"Pre-show started "..m..a.." ago; "..b.." is starting in "..(n+60)..a.."!"or b.." started "..(m+(h-7)*60)..a.." ago!"print(r)

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

Ungolfed:

n = "7:10 CST"

h,m,t = n:match("(%d+):(%d+) (.)")
h = (tonumber(h) - ("PMCE"):find(t))%12 + 1
m = tonumber(m)
print("It is "..h..":"..m.." PM PDT.")

n = (6-h)*60-m

if h<6 then
  r=n.." minutes until the pre-show!"
elseif h<7 then
  r="Pre-show started "..m.." minutes ago; UNCOVERED is starting in "..(n+60).." minutes!"
else
  r="UNCOVERED started "..(m+(h-7)*60).." minutes ago!"
end

print(r)

আপনার সংখ্যা 10 এর চেয়ে অন্য বেসে না থাকলে আপনাকে কখনই টুনবার ব্যবহার করতে হবে না, পরিবর্তে, আপনি লিখতে পারেন h=h+0, 0 এর সংযোজন ফলাফলকে স্বয়ংক্রিয়ভাবে একটি সংখ্যায় রূপান্তরিত করে। এছাড়াও, n=(...)বাধ্যতামূলক? ...নিম্নলিখিতটির ব্যবহারটি ইনলাইন করা ভাল না -> h,m,t=(...):match("(%d+):(%d+) (.)")আপনি যেভাবেই এর nব্যবহারের মান পরিবর্তন করেন তাই আপনি এটিকে পুনরায় ব্যবহার করতে পারবেন না hএবং m:)
কেটেনকিও

এছাড়াও, যদি আপনি অন্য কোনও ফর্মের একক ত্রৈমাসিক বিবৃতিটির জন্য / অন্যথায় / অন্যরকম পরিবর্তন করতে সক্ষম হন r=(h<6 and n.." minutes until the pre-show!" )or h<7 and "Pre-show started "..m.." minutes ago; UNCOVERED is starting in "..(n+60).." minutes!" or "UNCOVERED started "..(m+(h-7)*60).." minutes ago!"। এটি সামান্য আবার কাজ করা হতে পারে, কিন্তু এটি ব্যবহার করে বাইটের অনেক সাশ্রয় হবে। তথ্যের জন্য, <condition> and <case true, have to be evaluated to true> or <case false, can be anything>
লুয়ায়

(আমি যা বলতে চাইছিলাম তা শেষ করার জন্য এখনও জায়গা ছিল না) লুয়ার টিপসগুলি পরীক্ষা করতে ভুলবেন না , তারা এখনও সম্পূর্ণ নয়, তবে কিছুটা দরকারী জিনিস রয়েছে :)
কেটেনকিও

এখানে যদি আপনি কোনও বেস চান যা h,m,t=(...):match("(%d+):(%d+) (.)")h=(h-("PMCE"):find(t))%12+1m=m+0print("It is "..h..":"..m.." PM PDT.")a=" minutes"b="UNCOVERED"n=(6-h)*60-m r=(h<6 and n.." minutes until the pre-show!" )or h<7 and"Pre-show started "..m..a.." ago; "..b.." is starting in "..(n+60)..a.."!"or b.." started "..(m+(h-7)*60)..a.." ago!"end print(r)আসলে এটি 329 বাইট;) অন্তর্ভুক্ত করতে চান তবে এখানে একটি পরীক্ষিত গল্ফযুক্ত সমাধান নেই ।
কাটেনকিও

আমি এটি আপডেট করেছি। 0 + এম এখানে কাজ করে না।
লিকি নুন

1

সি, 333 বাইট

#define p printf
char s[9];main(t){gets(s);s[5]=0;s[1]-=2+s[6]%2-s[6]%3;s[1]<48&&(s[1]+=10,--*s);
t=*s*600+s[1]*60+s[3]*10+s[4]-32568;p("It is %s PM PDT.",s);
t<0?p("%d minutes until the pre-show!",-t):t<60?p(
"Pre-show started %d minutes ago; UNCOVERED is starting in %d minutes!",t,60-t):
p("UNCOVERED started %d minutes ago!",t-60);}

অপ্রয়োজনীয় নিউলাইনগুলি অপসারণের পরে 333 বাইট (# ডিফাইনের পরে সমস্তগুলি বাদে)


সঞ্চয়ের বিষয়ে নিশ্চিত নন তবে আপনার কাছে কিছু স্ট্রিং লিটারেল রয়েছে যা আপনি "মিনিট" এবং "অনাবৃত"
ম্যাট

1

পিএইচপি, 347 328 327 322 বাইট

<?=$u="UNCOVERED";$m=" minutes";$s=" started ";$p="re-show";$z=['P'=>0,'M'=>1,'C'=>2,'E'=>3];$i=explode(":",$argv[1]);$h=$i[0]%12-$z[$argv[2][0]];$o=$i[1];$t=60-$o;$a="$s$o$m ago";echo"It is ".(($h+11)%12+1).":$o".($h<0?" A":" P")."M PDT.\n".($h<6?$t."$m until the p$p!":($h<7?"P$p$a; $u is starting in $t$m!":"$u$a!"));?>

বিস্তারিত দেখুন

<?=
  $u = "UNCOVERED";
  $m = " minutes";
  $s = " started ";
  $p = "re-show";
  $z = [ 'P' => 0,
         'M' => 1,
         'C' => 2,
         'E' => 3 ];

  $i = explode(":", $argv[1]);
  $h = $i[0]%12 - $z[$argv[2][0]];
  $o = $i[1];
  $t = 60 - $o;
  $a = "$s$o$m ago";

  echo "It is " . (($h+11)%12+1) . ":$o" . ($h < 0 ? " A" : " P") . "M PDT.\n" .
       ($h < 6 ? $t . "$m until the p$p!"
               : ($h < 7 ? "P$p$a; $u is starting in $t$m!"
                         : "$u$a!"));
?>

হিসাবে চালায় php script.php HH:MM XDT। সময় এবং সময় জোন লাগে $argvএন্ট্রি, regexes $argv[1]আউট মধ্যে $i = [HH, MM], প্রথম অক্ষরের থেকে সময় অঞ্চল নির্ধারণ করে $argv[2]আউট গণিতশাস্ত্র কয় মিনিট অতীত সন্ধ্যা 6 টা পিডিটি যে, তারপর ternaries echo

ব্যবহার করে 2 বাইট ড্রপ $u=UNCOVEREDকরতে পারে, তবে এটি এখানে কেবল ত্রুটি হবে এবং আমি পছন্দ করি যে এটি পরিষ্কারভাবে কাজ করে।


0

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

$r,$i,$s,$u="re-show"," minutes"," start","UNCOVERED";$h,$m,$z=$args[0]-split":| ";$h=+$h-"PMCE".IndexOf($z[0]);"It is $h`:$m PM PDT.";if(($t=$h*60+$m-360)-lt0){"$($t*-1)$i until the p$r!"}else{if($t-gt59){"$u$s`ed $($t-60)$i ago!"}else{"P$r$s`ed $t$i ago; $u is$s`ing in $(($t-60)*-1)$i!"}}

কম গল্ফযুক্ত ব্যাখ্যা

# Some string literals.
$r,$i,$s,$u,$g="re-show"," minutes"," start","UNCOVERED"," ago"
# Get the hours, minutes and zone into variables.
$h,$m,$z=$args[0]-split":| "
# Offset the time based on the passed timezone. 
$h=+$h - "PMCE".IndexOf($z[0])
# Display current PDT time.
"It is $h`:$m PM PDT."

# Based on adjusted time value for PDT determine what string to show. 
# Several string literals were used to save space.
if(($t=$h*60+$m-360)-lt0){
    # Show has not started yet
    "$($t*-1)$i until the p$r!"
}else{
    if($t-gt59){
        # Between 6 and 7
        "$u$s`ed $($t-60)$i$g!"
    }else{
        # It's after 7. Should have check more often. 
        "P$r$s`ed $t$i$g; $u is$s`ing in $(($t-60)*-1)$i!"
    }
}

"পূর্বে" এর আক্ষরিক কোডগুলিতে সরানো হয়েছিল তবে অন্যান্য পরিবর্তনের ক্ষেত্রে ব্যাখ্যাটির জন্য এখনই রেখে দেওয়া হয়েছে।


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