ইউনিকোডে এটি কত সময়?


12

নিম্নলিখিত যে কোনও একটি বিন্যাসে স্ট্রিং হিসাবে একটি ইনপুট সময় দেওয়া হয়েছে, চ্যালেঞ্জটি সরল istic

hh, hh:mmবা hh:mm:ssসাথে 0 ≤ hh ≤ 23, 0 ≤ mm ≤ 59এবং 0 ≤ ss ≤ 59

বর্তমানে নিম্নলিখিত চিহ্নগুলি ব্যবহার করে এটি কোন সময় আউটপুট দেয়:

AA  LABEL FOR CHARACTER     CODE POINT   HEXADECIMAL
==  ====================    ==========   ===========
🕐  Clock Face 01 Oclock    128336       0x1F550  
🕑  Clock Face 02 Oclock    128337       0x1F551  
🕒  Clock Face 03 Oclock    128338       0x1F552  
🕓  Clock Face 04 Oclock    128339       0x1F553  
🕔  Clock Face 05 Oclock    128340       0x1F554  
🕕  Clock Face 06 Oclock    128341       0x1F555  
🕖  Clock Face 07 Oclock    128342       0x1F556  
🕗  Clock Face 08 Oclock    128343       0x1F557  
🕘  Clock Face 09 Oclock    128344       0x1F558  
🕙  Clock Face 10 Oclock    128345       0x1F559  
🕚  Clock Face 11 Oclock    128346       0x1F55A  
🕛  Clock Face 12 Oclock    128347       0x1F55B  

নিম্নলিখিত বিন্যাসে:

It is currently {Clock Face 1} with {mm} minutes and {ss} seconds until {Clock Face 2}.

উদাহরণ (সমস্ত ফ্রিঞ্জ কেস সহ):

কেবল কয়েক ঘন্টা সহ কেস ...

f("12") = "It is currently 🕛."

ঘন্টা এবং মিনিট সঙ্গে কেস ...

f("12:30") = "It is currently 🕛 with 30 minutes until 🕐."

কেবলমাত্র ঘন্টা সহ কেস, তবে কয়েক মিনিটের মধ্যে এটি অন্তর্ভুক্ত রয়েছে ...

f("12:00") = "It is currently 🕛."

ঘন্টা, মিনিট এবং সেকেন্ডের সাথে কেস ...

f("12:30:30") = "It is currently 🕛 with 29 minutes and 30 seconds until 🕐."

ঘন্টা এবং মিনিট সহ কেস, তবে এটি সেকেন্ডে 00 হিসাবে অন্তর্ভুক্ত রয়েছে ...

f("12:30:00") = "It is currently 🕛 with 30 minutes until 🕐."

ঘন্টা এবং মিনিটের সাথে কেস, পরের ঘন্টা পর্যন্ত এক মিনিটেরও কম সময় সহ ...

f("12:59:59") = "It is currently 🕛 with 1 seconds until 🕐."

আপনি বহুবচন থেকে একবচন পরিবর্তন করতে হবে না।


ঘন্টা এবং মিনিটের সাথে কেস, এক মিনিট পরের ঘন্টা পর্যন্ত ...

f("12:59") = "It is currently 🕛 with 1 minutes until 🕐."

আপনি বহুবচন থেকে একবচন পরিবর্তন করতে হবে না।


সামরিক সময় ব্যবহার করে কেস (হ্যাঁ আপনাকে অবশ্যই এটি পরিচালনা করতে হবে) ...

f("23:30:30") = "It is currently 🕚 with 29 minutes and 30 seconds until 🕛."

অবৈধ মামলা ...

f("PPCG") = This cannot occur, you are guaranteed a valid format by the definition of the problem.
f(66:66:66) = This cannot occur, you are guaranteed valid numbers by the definition of the problem.
f(24:60:60) = This cannot occur, you are guaranteed valid numbers by the definition of the problem.

অবৈধ মামলার জন্য আপনাকে কোনও স্টাইল আউটপুট মেনে চলতে হবে না, ত্রুটিগুলি ঠিক আছে।


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



এটি কি পুরো প্রোগ্রাম হওয়া উচিত বা কোনও ফাংশন / ল্যাম্বডা যথেষ্ট?
devRicher

2
আমি যে পরিবর্তে মনে 0 < hh < 24, 0 < mm < 60এবং 0 < ss < 60, আপনি বোঝানো 0 ≤ hh ≤ 23, 0 ≤ mm ≤ 59এবং 0 ≤ ss ≤ 59
এরিক আউটগল্ফার

2
কোনও ভাষা নির্দিষ্ট তারিখ / তারিখটাইম কাঠামো কি ইনপুট হিসাবে অনুমোদিত?
devRicher

2
@ কর্কাসোকম্পিউটিং আপনি উল্লেখ করেছেন যে কোডটি 24 ঘন্টা সময় হ্যান্ডেল করতে হবে, কোডটি হ্যান্ডেল করতে AMবা PMট্যাগ করতে হবে?
টেলর স্কট

উত্তর:


3

বেফুঞ্জ, 256 250 বাইট

>&~85+`v
8~-&"<"_00v`+5
0v%\-&"<<"_
v>:00p!!-"<"%10p65++:66+%0" yltnerruc si tI">:#,_$"Hu 5x"2*,3*,+,2*+,10g00g+
_".",@,".",+*2,+,*3,*2"x5 uH"%+66+1$_,#!>#:<v0
" litnu  htiw ",,,,,,10g:>#v_$"sdnoces"00g.^>
_>,,,,,,,>" dna ">,,,,,00^ >."setunim"00g!#^

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

ফলাফলগুলি utf-8 হিসাবে এনকোড করা হয়েছে, যেহেতু এটি টিআইওর সাথে সবচেয়ে ভাল কাজ করে তবে আপনি যদি স্থানীয়ভাবে পরীক্ষা করে দেখেন তবে ঘড়ির মুখগুলি সঠিকভাবে দেখতে আপনার সিস্টেমের ডিফল্ট কোড পৃষ্ঠাটি সামঞ্জস্য করতে হতে পারে। অন্যথায় কেবল আউটপুটটিকে কোনও ফাইলে পুনর্নির্দেশ করুন এবং এটি একটি utf-8 সামঞ্জস্যপূর্ণ সম্পাদক থেকে খুলুন।

ব্যাখ্যা

প্রথম তিনটি লাইন স্টিডিন থেকে ঘন্টা কয়েক মিনিট এবং সেকেন্ড পড়ে, ইওএফ বা প্রতিটি মানের পরে একটি লাইনফিডের জন্য পরীক্ষা করে এবং ইনপুট থেকে অনুপস্থিত সংযোগকারীদের জন্য জিরোগুলি স্থাপন করে। চতুর্থ লাইনে, আমরা যদি সেকেন্ডগুলি শূন্য নন তবে মিনিটের মানটি সামঞ্জস্য করি, ঘন্টা মানকে 0 থেকে 11 পরিসরে রূপান্তরিত করি (প্রতিটি ঘন্টার জন্য উপযুক্ত ইউনিকোড চরিত্রের সাথে মেলে) এবং আউটপুটটির প্রাথমিক অংশটি লিখি প্রথম ঘড়ির মুখ

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


3

জাভাস্ক্রিপ্ট (ES6), 201

t=>(T=h=>String.fromCodePoint(128336+h%12),[h,m,s]=t.match(/\d+/g),'It is currently '+T(h-=~10)+((m-=-!!-s)?` with ${60-m?60-m+' minutes'+(-s?' and ':''):''}${-s?60-s+' seconds':''} until `+T(-~h):''))

কম গল্ফড

t=>(
  T=h=>String.fromCodePoint(128336+h%12),
  [h,m,s]=t.match(/\d+/g),
  'It is currently '+T(h-=~10)
   +( 
      // if seconds is not 0, increment m else just convert to number
      // have to use '- -' to force conversion to number 
     (m -= - !!-s) 
-s?++m:m)
      ? ` with ${60-m ? 60-m+' minutes'+(-s?' and ':''):''}${-s?60-s+' seconds':''} until `+T(-~h)
      : ''
    )
)

পরীক্ষা

F=
t=>(T=h=>String.fromCodePoint(128336+h%12),[h,m,s]=t.match(/\d+/g),'It is currently '+T(h-=~10)+((m-=-!!-s)?` with ${60-m?60-m+' minutes'+(-s?' and ':''):''}${-s?60-s+' seconds':''} until `+T(-~h):'')
)


var tid=0

function getTime(t)
{
  var a=t.match(/\d+/g)
  if (a) {
    var [h,m,s]=a
    h|=0, s|=0, m|=0
    if(h>=0 & h<24 & m>=0 & m<60 & s>=0 & s<60) 
      return [h,m,s]
  }
  return null
}      

function update()
{
  clearTimeout(tid)
  var t=I.value, a=getTime(t)
  if (a) {
    O.textContent = F(t)
    tid = setTimeout(again,5000)
  }
  else {
    O.textContent = 'invalid ' + t
  }
}
function again()
{      
  var t=I.value, a=getTime(t)
  if (a) {
    var [h,m,s]=a
    ++s>59?(s=0,++m>59?(m=0,++h):0):0
    h%=24
    s<10?s='0'+s:0
    m<10?m='0'+m:0
    t = h+(-m-s?':'+m+(-s?':'+s:''):'')
    I.value = t
    O.textContent=F(t)
    tid = setTimeout(again, 1000)
  }
}

update()
#O { font-size:16px }
Time <input id=I value='12' oninput='update()' onkeydown='update()'>
(modify current time as you wish - but use valid values)
<pre id=O></pre>


আমি জানি না এর জন্য কীভাবে বিজয়ী নির্বাচন করতে হয়, আপনি দুজনেই একই ভাষায় 201 বাইট সহ একে অপরের 2 মিনিটের মধ্যে পোস্ট করেছিলেন।
যাদু অক্টোপাস উরান

@ কারাসোকম্পুটিং অবশ্যই আপনার আমাকে নির্বাচন করা উচিত। আমাকে. আমি আমি আমি! ...
edc65

@ কারসোকম্পিউটিং বা অন্যথায় আপনি কেবলমাত্র ভারসাম্য পুনরুদ্ধার করতে কম ভোটের (
অকারণে

অথবা আপনি Stringনিজের কোডে শব্দটি ""একটি খালি স্ট্রিং দিয়ে প্রতিস্থাপন করতে পারেন নিজেকে 4 বাইট :) সংরক্ষণ করতে। আহ, বকাঝকা, তিনি যদিও পারেন।
যাদু অক্টোপাস উরান

শো It is currently 🕛 with 60 minutes until 🕐। আমি মনে করি এটি করা উচিতIt is currently 🕛.
রোমান গ্রাফ

2

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

(i,[h,m,s]=i.split`:`,c=n=>String.fromCodePoint(128336+(n+11)%12))=>`It is currently ${c(+h)}${m|s?` with ${(m=59+!+s-m)?m+` minutes`:``}${+s&&m?` and `:``}${+s?60-s+` seconds`:``} until `+c(-~h):``}.`

226 বাইটস যদি আপনি বহুবচনগুলি অ্যাকাউন্টে নেন:

f=
(i,[h,m,s]=i.split`:`,c=n=>String.fromCodePoint(128336+(n+11)%12))=>`It is currently ${c(+h)}${m|s?` with ${(m=59+!+s-m)?m+` minute`+(m-1?`s`:``):``}${+s&&m?` and `:``}${+s?60-s+` second`+(59-s?`s`:``):``} until `+c(-~h):``}.`
<input oninput=o.textContent=f(this.value)><div id=o>



1

সি, 241 বাইট

স্টাটআউটে ইউটিএফ -8 লিখেছেন।

#define p printf(
c(v,h){p"%s \xf0\x9f\x95%c",v,144+h%12);}f(t){int h=0,m=0,s=0;sscanf(t,"%d:%d:%d",&h,&m,&s);m=(59-m+!s)%60;c("It is currently",h-1);m&&p" with %d minutes",m);s&&p" %s %d seconds",m?"and":"with",60-s);m|s&&c(" to",h);p".");}

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

সাদা স্থান সহ কোড:

#define p printf(

c(v, h) {
    p"%s \xf0\x9f\x95%c", v, 144 + h % 12);
}

f(t) {
    int h = 0, m = 0, s = 0;

    sscanf(t, "%d:%d:%d", &h, &m, &s);
    c("It is currently", h - 1);
    m = (59 - m + !s) % 60;
    m && p" with %d minutes", m);
    s && p" %s %d seconds", m ? "and" : "with", 60 - s);
    m | s && c(" to", h);
    p".");
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.