এটা স্প্যানিশ সময়!


24

আমার একটি সহজ টাস্ক রয়েছে যা কোডের মাধ্যমে প্রয়োগ করা অপেক্ষাকৃত সহজ হওয়া উচিত। আপনার লক্ষ্য হ'ল এমএম ফর্ম্যাটে সময় দেওয়ার পরে একটি প্রোগ্রাম লিখুন যা স্প্যানিশ ভাষায় লিখিত সময়কে আউটপুট দেয়। অনেকে সম্ভবত এটি করবেন কীভাবে জানেন না , তাই আমি আরও বিশদভাবে জানাব ।

স্প্যানিশ সময় মোটামুটি যৌক্তিক। এটি সাধারণত "এস লা / সোন লাস (ঘন্টা) y (মিনিট) এর ধরণটি অনুসরণ করে।" ঘন্টাগুলি 12-ঘন্টা বিন্যাসে হয় এবং "এস লা" কেবল তখনই ব্যবহৃত হয় যদি ঘন্টা 1 হয় (অর্থাত এক বাজে)। মিনিট আলাদা গল্প। যদি মিনিট 30 এরও কম হয় তবে এটি উপরে প্রদর্শিত হিসাবে উপস্থাপিত হবে। যদি মিনিট 30 এর বেশি হয় তবে ঘন্টাটি গোল হয়ে যায় এবং মিনিটটি বিয়োগ করা হয়। উদাহরণস্বরূপ, 7:35 "8 ঘন্টা বিয়োগ 25 মিনিট" এর সমতুল্য অনুবাদ করা হয়। আরও কিছু উদাহরণ নীচে দেওয়া হবে। প্রয়োজনীয় স্প্যানিশ নম্বরগুলির তালিকা এখানে পাওয়া যাবে । কিছু সংখ্যায় উচ্চারণ রয়েছে, তবে এগুলি প্রয়োজনীয় নয়।

দ্রষ্টব্য: উত্সটি "আনো" বলেছে, তবে ব্যাকরণগতভাবে সঠিক হওয়ার জন্য এটি "উনা" হওয়া উচিত। এটি এখন পর্যন্ত কোনও উত্তরকে প্রভাবিত করবে না।

নোট 2: এছাড়াও, "সেরো" প্রয়োজনীয় নয়। যদি আপনার প্রোগ্রামটি "এস লা উনা" বা "সোন লাস ট্রেস," আউটপুট দেয় তবে তা আমার পক্ষে ঠিক আছে। এই নিয়ম পরিবর্তনের জন্য দুঃখিত।

বিধি

  • এসটিডিআইএন বা আপনার ভাষার সমতুল্য মাধ্যমে ইনপুট সরবরাহ করা হবে।
  • বাইরের লাইব্রেরি থেকে পড়া নেই।
  • আপনার কোডটি অবৈধ ইনপুট দিয়ে যে কোনও কিছু করতে পারে।

বোনাসেস

  • -10 যদি আপনার কোড এই অতিরিক্ত বাক্যাংশ যোগ করে - এর জন্য "y কুয়ার্তো": 15, "y মিডিয়া": 30 এর জন্য, এবং "মেনোস কুয়ার্তো": 45 (গোলাকার)।
  • -15 যদি আপনার কোডটি AM এবং PM কে পরিচালনা করতে পারে, সেই অনুযায়ী "দে লা মাআনা" এবং "দে লা টার্ডে" সাড়া দিয়ে।
  • -15 যদি কোনও ইনপুট সরবরাহ না করা থাকে তবে আপনার কোডটি বর্তমান সময়ের অনুবাদ করতে পারে।

স্কোরিং

  • এটি একটি কোড-গল্ফ চ্যালেঞ্জ, এবং এটি অক্ষর দ্বারা নয়, বাইট দ্বারা স্কোর করা হবে।

উদাহরণ

ইনপুট: 8:10 আউটপুট:Son las ocho y diez.

ইনপুট: 6:45 আউটপুট:Son las siete menos quince (or cuarto).

ইনপুট: 1:29 আউটপুট:Es la una y veintinueve.

ইনপুট: 12:55 আউটপুট:Es la una menos cinco.

এখানে নির্দিষ্ট করার মতো কিছু আছে কিনা আমাকে জানান। এটি আমার প্রথম প্রশ্ন, সুতরাং এটি অবশ্যই নিখুঁত নয়।


আপনার তথ্যের জন্য, আপনি স্যান্ডবক্সে পোস্ট করার আগে প্রতিক্রিয়া পেতে পারেন ।
প্রসারিত পাগল

1
@ স্পার আমি এতে সন্দেহ করি। সম্ভবত এটির জন্য যথেষ্ট সংখ্যা রয়েছে যা হার্ডকড করতে হবে - কমপক্ষে 45 টি অক্ষরের মূল্য এমনকি এমনকি নিদর্শনগুলির জন্য অ্যাকাউন্টিং।
mdc32

1
@ ডেনিস হুম ... আমার ধারণা হয় ভাল হয়ে যাবে। Es la una y ceroবেশ পুনরাবৃত্তি, তাই আমি আপনার পয়েন্ট দেখতে। আমি এটি নির্দিষ্ট করে নেই, সুতরাং আমার ধারণা হয় যে কোনও একটি ভাল হবে। সাহায্য করার জন্য ধন্যবাদ.
mdc32

1
আপনার 01:21পরীক্ষার কেস হিসাবে যুক্ত করা উচিত , কারণ উনা বনাম আনো সম্পর্কে আপনি যা বলেছিলেন তাতে কমপক্ষে একজন উত্তরদাতাকে বিভ্রান্ত করেছিল ।
পিটার টেলর

3
দ্বিতীয় বোনাসটি (প্রায়?) এর পক্ষে কখনই মূল্যহীন নয় কারণ "দে লা", "মানানা" এবং "টার্ড" শব্দবন্ধগুলি ইতিমধ্যে 16 বাইট অবধি গণনা করে।
ব্রিটিস্তে

উত্তর:


9

জাভাস্ক্রিপ্ট (ES6) 308 316

Edit2 বাগ ফিক্স সম্পাদনা বোনাস দাবি করতে ভুলে গেছি
পপআপ মাধ্যমে ইনপুট / আউটপুট সঙ্গে একটি প্রোগ্রাম হিসাবে

s='media0uno0dos0tres0cuatro0cinco0seis0siete0ocho0nueve0diez0once0doce0trece0catorce0cuarto0dieci0veint'.split(0),
N=n=>n<16?s[n]:n<20?s[16]+s[n-10]:n>29?s[0]:s[17]+(n>20?'i'+s[n-20]:'e'),
[h,m]=prompt().split(':'),
alert(((h=(10-~h+(m>30))%12)?'Son las '+N(1+h):'Es la una')+(m>30?' menos '+N(60-m):-m?' y '+N(~~m):''))

একটি পরীক্ষামূলক ফাংশন হিসাবে

F=t=>(
  s='media0uno0dos0tres0cuatro0cinco0seis0siete0ocho0nueve0diez0once0doce0trece0catorce0cuarto0dieci0veint'.split(0),
  N=n=>n<16?s[n]:n<20?s[16]+s[n-10]:n>29?s[0]:s[17]+(n>20?'i'+s[n-20]:'e'),
  [h,m]=t.split(':'),
  ((h=(10-~h+(m>30))%12)?'Son las '+N(1+h):'Es la una')+(m>30?' menos '+N(60-m):-m?' y '+N(~~m):'')
)

টেস্ট ফায়ারফক্স / ফায়ারবাগ কনসোলটি

for(i=0;i<13;i++)
{
   console.log(F(i+':'+i)+'. '+F(i+':'+(i+15))+'. '+F(i+':'+(i+30))+'. '+F(i+':'+(i+45)))
}

আউটপুট

Son las doce. Son las doce y cuarto. Son las doce y media. Es la una menos cuarto
Es la una y uno. Es la una y dieciseis. Son las dos menos veintinueve. Son las dos menos catorce
Son las dos y dos. Son las dos y diecisiete. Son las tres menos veintiocho. Son las tres menos trece
Son las tres y tres. Son las tres y dieciocho. Son las cuatro menos veintisiete. Son las cuatro menos doce
Son las cuatro y cuatro. Son las cuatro y diecinueve. Son las cinco menos veintiseis. Son las cinco menos once
Son las cinco y cinco. Son las cinco y veinte. Son las seis menos veinticinco. Son las seis menos diez
Son las seis y seis. Son las seis y veintiuno. Son las siete menos veinticuatro. Son las siete menos nueve
Son las siete y siete. Son las siete y veintidos. Son las ocho menos veintitres. Son las ocho menos ocho
Son las ocho y ocho. Son las ocho y veintitres. Son las nueve menos veintidos. Son las nueve menos siete
Son las nueve y nueve. Son las nueve y veinticuatro. Son las diez menos veintiuno. Son las diez menos seis
Son las diez y diez. Son las diez y veinticinco. Son las once menos veinte. Son las once menos cinco
Son las once y once. Son las once y veintiseis. Son las doce menos diecinueve. Son las doce menos cuatro
Son las doce y doce. Son las doce y veintisiete. Es la una menos dieciocho. Es la una menos tres

8

হ্যাঁ, গল্ফ প্রতিযোগিতায় উপস্থিত সবচেয়ে কম প্রত্যাশিত ভাষা, বিশ্বের সবচেয়ে খারাপ গল্ফার দ্বারা কোডেড, ফিরে এসেছে!

জাভা - 676 ​​বাইট (716-10-15-15)

Golfed:

class A{void main(String[]a){java.util.Calendar c=java.util.Calendar.getInstance();int h,m;String s="";h=c.get(c.HOUR);m=c.get(c.MINUTE);String[]e={"doce","una","dos","tres","quatro","cinco","ses","siete","ocho","nueve","diez","once","doce","trece","catorce","quarto","çseís","çsiete","çocho","çnueve","xe","xiuno","xidós","xitrés","xiquatro","xicinco","xiséis","xisiete","xiocho","xinueve","media"};for(int i=0;++i<30;e[i]=e[i].replace("ç","dieci"),e[i]=e[i].replace("x","vient"));s+=(h==1&m<30|h==12&m>30)?"Es la ":"Son las ";s+=(m<=30)?e[h]:(h==12&m>30)?e[1]:e[h+1];s+=(m==0)?" certas":(m<=30)?" y "+e[m]:" menos "+e[60-m];s+=(c.get(c.AM_PM)==0)?" de la mañana.":" de la tarde.";System.out.println(s);}}

Ungolfed:

public class A {

    public static void main(String[] a) {
        java.util.Calendar c = java.util.Calendar.getInstance();
        int h, m;
        String s = "";
        h = c.get(c.HOUR);
        m = c.get(c.MINUTE);
        String[] e = {"doce", "una", "dos", "tres", "quatro", "cinco", "ses", "siete", "ocho", "nueve", "diez", "once", "doce", "trece", "catorce", "quarto", "çseís", "çsiete", "çocho", "çnueve", "xe", "xiuno", "xidós", "xitrés", "xiquatro", "xicinco", "xiséis", "xisiete", "xiocho", "xinueve", "media"};
        for (int i = 0; ++i < 30; e[i] = e[i].replace("ç", "dieci"), e[i] = e[i].replace("x", "vient"));
        s += (h == 1 & m < 30 | h == 12 & m > 30) ? "Es la " : "Son las ";
        s += (m <= 30) ? e[h] : (h == 12 & m > 30) ? e[1] : e[h + 1];
        s += (m == 0) ? " certas" : (m <= 30) ? " y " + e[m] : " menos " + e[60 - m];
        s += (c.get(c.AM_PM) == 0) ? " de la mañana." : " de la tarde.";
        System.out.println(s);
    }
}

এএম / প্রধানমন্ত্রীর সাথে quartoএবং এর সাথে ডিল করে এবং mediaকোনও ইনপুট দেয় না। সুতরাং আমি সমস্ত বোনাস দাবি করতে পারি, যদিও তা, আমি যদি এই বৈশিষ্ট্যগুলি বাস্তবায়ন না করি তবে আমার আরও কম স্কোর থাকবে, হ'ল। facepalms


6

পাইথন 3: 294 অক্ষর - 10 = 284

h,m=map(int,input().split(':'))
t="y"
d="yunoydosytresycuatroycincoyseisysieteyochoynueveydiezyonceydoceytreceycatorceycuarto".split(t)*2
if m>30:h=h%12+1;m=60-m;t="menos"
print(["Es la una","Son las "+d[h]][h>1],t,[d[m]or"cero",["dieci","veint"+'ei'[m>20],"media"][m//10-1]+d[m%10]][m>15]+".")

"কুয়ার্তো" এবং "মিডিয়া" ব্যবহারের জন্য এটি দশ-পয়েন্ট বোনাস পায়

আমরা ঘন্টা হিসাবে এবং মিনিট পড়ুন int। যদি মিনিটগুলি 30 এর উপরে হয় তবে আমরা পরের ঘন্টায় চলে যাই, 60 থেকে কয়েক মিনিট দূরে পরিমাপ করি এবং সংমিশ্রণটিকে "মেনো" তে পরিবর্তন করি।

তালিকা d15. আমরা করতে আপ স্পেনীয় সংখ্যার অনুবাদের হয়েছে d[0]হতে ''"diecicero" ভালো জিনিস প্রতিরোধ। এটি split(' ')প্রাথমিক স্থানের সাথে বিশ্রীভাবে কল করার মাধ্যমে করা হয়; নিয়মিত splitকেবল এটিকে উপেক্ষা করবে। শূন্য-মিনিটের কেসটি পরে পরিচালনা করা হয়।

15 এর উপরে নম্বর পেতে, আমরা দশ-অঙ্কের স্ট্রিংটিকে উপযুক্ত এক-অঙ্কের স্ট্রিংয়ের সাথে একত্রিত করি। 15এবং 30বিনা ব্যয়ে "মিডিয়া" এবং "কুর্তো" হিসাবে লেখা হয়।

জন্য -4: পাইথন 3 পাইথন 2 উপর এক গৃহস্থালির কাজ নেট সংরক্ষণ inputপরিবর্তে raw_inputমুদ্রণ +2, ডান বন্ধনী জন্য +1 জন্য //


আমি এর চেয়ে বেশি জটিল যে দুঃখের সাথে বলতে পারি। 01:21 লা উনা ওয়াইনটিউনো হওয়া উচিত কারণ ঘন্টাগুলি স্ত্রীলিঙ্গ হয় তবে কয়েক মিনিট পুংলিঙ্গ হয়।
পিটার টেলর

পছন্দ করুন উনো / উনা কি একমাত্র সংখ্যাটি প্রভাবিত করছে?
xnor

হ্যাঁ, যদিও এটি কয়েকশ লোকের সংখ্যায় চলে যায় তবে অন্যরাও থাকতেন।
পিটার টেলর

@ পিটারটেলর স্থির, 5 টি চর জন্য।
xnor

@ edc65 ওহো, আমি প্রকৃত পরিবর্তন পেস্ট করা ভুলে গেছি unaকরতে uno, এখন কাজ করা উচিত।
xnor

5

পিএইচপি, 351 349 360 - 15 = 345 বাইট

<?$a=split(~ß,~œšßŠ‘ß›Œß‹šŒßœŠž‹ßœ–‘œßŒš–ŒßŒ–š‹šßœ—ß‘Šš‰šß›–š…ß‘œšß›œšß‹šœšßœž‹œšßŽŠ–‘œšß›–šœ–߉š–‘‹–ß‹š–‘‹ž)?><?=preg_filter(~Ð×ÑÔÖÅ×ÑÔÖК,'(($h=($1-($k=$2<31))%12+1)>1?~¬‘ß“žŒß:~ºŒß“žß).$a[$h].($k?~߆ß:~ß’š‘Œß).(($m=$k?$2+0:60-$2)<16?$a[$m]:($m<20?$a[16].$a[$m%10]:($m<21?viente:($m<30?$a[17].$a[$m%10]:$a[18])))).~Ñ',$_GET[0]?:date(~·Å–));

এই প্রোগ্রামটি কমান্ড লাইন নয়: এটি $ _GET [0] এর মাধ্যমে ইনপুট নেয়। আপনার php.ini এ আপনাকে বিজ্ঞপ্তিগুলি অক্ষম করতে হতে পারে। নিট দ্য ডার্ক অ্যাবসোলকে ধন্যবাদ দিয়ে এখন কোনও ইনপুট ছাড়াই অটো টাইম নিয়ে আসে।

কৌশলগুলি ব্যবহৃত:

~(...) একটি স্ট্রিং বিটওয়াইজ করে বিট বাঁচায়, আপনার কোট চিহ্নের প্রয়োজন নেই কারণ পিএইচপি সাধারণত 0x80 থেকে 0xFF পর্যন্ত সমস্ত ASCII ধরে নেয় একটি স্ট্রিং।

<?=preg_filter(...,...): <?=লেখার জন্য একটি শর্টকাট <? echopreg_filter()সাধারণত একটি রেজেক্স ব্যবহার করে স্ট্রিংয়ের প্রতিস্থাপন প্রয়োগ করে তবে আমরা ফলাফলটিকে স্ট্রিংটিকে পিএইচপি কোড হিসাবে মূল্যায়ন করতে অবহিত / ই মডিফায়ার ব্যবহার করতে পারি। সুতরাং, ইনপুট স্ট্রিংকে দুটি পৃথক ভেরিয়েবলে বিভক্ত করার পরিবর্তে আমরা ম্যাচযুক্ত ইনপুট স্ট্রিংয়ে ব্যাকরিফারেন্সগুলি ($ 1 এবং $ 2) ব্যবহার করতে পারি, বড় পরিমাণে বাইট সংরক্ষণ করে।


2
আপনি যদি $_GET[0]?:date(~·Å–)আপনার স্কোর থেকে 3 বিয়োগ করতে ব্যবহার করেন তবে আপনি -15 বোনাসটি দাবি করতে পারেন ।
নিট দ্য ডার্ক অ্যাবসোল

ধন্যবাদ। আমি এটি এবং অন্য একটি ছোটখাট উন্নতি করেছি।
Tryth

5

সি ++: 474 ... 422 411 বাইট

এই সংস্করণটি কুর্তো / মিডিয়া বোনাস (-10) খালাস করছে।

#include<cstdlib>
#include<cstdio>
int main(int u,char**v){char*b[]={"cero","una","dos","tres","cuatro","cinco","seis","siete","ocho","nueve","diez","once","doce","trece","catorce","cuarto","dieci","veinti","media",0,"veinte"};int h=atoi(v[1]),m=atoi(v[1]+2+(v[1][2]>57)),n=m>30,o;h=n?h%12+1:h;m=o=n?60-m:m;if(u=m>15&m!=20)o=m%10;printf("%s %s %s %s%s",h>1?"Son las":"Es la",b[h],n?"menos":"y",u?b[m/10+15]:"",b[o?o:m]);}

কোড গল্ফিং এ আমার প্রথম প্রচেষ্টা! এই সপ্তাহান্তে এটি উন্নত করার চেষ্টা করবে।

Ungolfed:

#include<cstdlib>
#include<cstdio>
int main(int u,char**v)
{
char*b[]={"cero","una","dos","tres","cuatro","cinco","seis","siete","ocho","nueve","diez","once","doce","trece","catorce","cuarto","dieci","veinti","media",0,"veinte"};
int h=atoi(v[1]),m=atoi(v[1]+2+(v[1][2]>57)),n=m>30,o;
h=n?h%12+1:h;
m=o=n?60-m:m;
if(u=m>15&m!=20)o=m%10;
printf("%s %s %s %s%s",h>1?"Son las":"Es la",b[h],n?"menos":"y",u?b[m/10+15]:"",b[o?o:m]);
}

1
আপনি m%=10
পারেননি

ভাল যুক্তি! দুর্ভাগ্যক্রমে আমার নতুন সংশোধনীতে আমাকে সেই মানটি একটি ভিন্ন ভেরিয়েবলের কাছে বরাদ্দ করতে হবে, তাই আমি পারছি না।
বিএমাক

ঠিক আছে, কেবল ভাবছি :)
টিমটেক

4

লুয়া, 450 - 10 (কুয়ার্তো / মিডিয়া) - 15 (মানানা / তার্দে) = 425

n={'uno','dos','tres','cuatro','cinco','seis','siete','ocho','nueve','diez','once','doce','trece','catorce','cuarto',[20]='veinte',[30]='media'}for i=1,9 do n[i+10]=n[i+10]or'dieci'..n[i]n[i+20]='veinti'..n[i]end H,M=io.read():match('(%d+):(%d+)')H,M=H+0,M+0 X,Y='tarde',' y 'if H<12 then X='manana'end if M>30 then H,M,Y=H+1,60-M,' menos 'end H=(H-1)%12+1 S=H==1 and'es la una'or'son las '..n[H]if M>0 then S=S..Y..n[M]end S=S..' de la '..X print(S)
  • 21-29 এর জন্য জেনারেটরটি পুনরায় লিখে 12 বাইট ফেলেছে।
  • প্রতিস্থাপন করে আরও 1 ছেড়ে যাওয়া H>=12সঙ্গে H<12এবং প্রায় নির্ভরশীল অভিব্যক্তি স্যুইচ করা হচ্ছে।
  • একটি ফাংশন থেকে বৈশ্বিক নেমস্পেসকে দূষিত করে আরও 4 টি নামিয়ে ফেলেছে (মন্দ, তবে গল্ফের স্বার্থে :)।
  • রেজেক্স ফিক্সড, আমি কোলন ভুলে গেছি। যাইহোক, বাইট গণনা পরিবর্তন করে না।
  • শূন্য মিনিটের ক্ষেত্রে স্থির করা হয়েছে, table.concatস্ট্রিং অপ্সের জন্য অদলবদল হয়েছে এবং শেষ পর্যন্ত 22 বাইট যুক্ত করে @ edc65 এর পরামর্শ যুক্ত করেছেন।
  • আমি লজ্জিত করছি. functionপ্রধান অংশে শরীরের বাইরে টান দিয়ে দৈর্ঘ্যকে পুরো 15 বাইট কমিয়ে দেয় ।

কয়েক ঘন্টা 'উনো' ব্যবহার করা উচিত, কয়েক মিনিটের জন্য 'আনো' ব্যবহার করা উচিত। সুতরাং '01: 01 'এর উচিতEs la una y uno
edc65

3

ডি - 484 বাইট

import std.stdio,std.conv,std.string;void main(){auto n="cero una dos tres cuatro cinco seis siete ocho nueve diez once doce trece catorce quince dieciséis diecisiete dieciocho diecinueve e iuno idos itres icuatro icinco iseis isiete iocho inueve treinta".split;auto p=stdin.readln()[0..$-1];int b=to!int(p[0..$-3]),a=to!int(p[$-2..$]);auto c=a;b=a>30?b+1:b;b%=12;a=a>30?60-a:a;writefln("%s %s %s %s", b==1||b==12?"Es la":"Son las",n[b],c>30?"menos":"y",(a/10==2?"vient":"")~n[a]);}

কয়েক ঘন্টা 'উনো' ব্যবহার করা উচিত, কয়েক মিনিটের জন্য 'আনো' ব্যবহার করা উচিত। সুতরাং '01: 01 'এর উচিতEs la una y uno
edc65

3

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

d='cero uno dos tres cuatro cinco seis siete ocho nueve diez once doce trece catorce quince dieciseis diecisiete dieciocho diecinueve veinte xuno xdos xtres xcuatro xcinco xseis xsiete xocho xnueve treinta';d=str(d.replace('x','veinti')).split();t=input().split(':');i=int(t[1]);j=int(t[0]);print(["Son las","Es la"][1<(2*j+i/30)%24<=3],[d[[j%12+1,j][i<31]],'una'][j==1],'y'if i<31 else'menos',d[min(i,60-i)])

স্ট্রিংগুলির একটি দীর্ঘ তালিকা সংক্ষিপ্ত 'string1 string2 string3'.split()
আকারে করা

@ এক্সনোর ঠিক আছে, ধন্যবাদ!
হোস্ট 250

@ होस्চ 250 এছাড়াও, নিশ্চিত হয়ে নিন যে আপনি মন্তব্যগুলি আবার মূল পোস্টে অনুসরণ করছেন। আমি সম্ভবত অনেকগুলি ছোটখাটো নিয়ম পরিবর্তন করব এবং এগুলি সম্ভবত আপনাকে গল্ফকে সহায়তা করবে।
mdc32

@ mdc32 এখনই সামঞ্জস্য। যাইহোক আমার কিছু ত্রুটি ছিল।
হোছ 250

2
আপনি সংক্ষিপ্ত d[j]if i<31 else d[(j+1)%12]করতে পারেন d[(j+(i>30))%12]। সাধারণভাবে, যদি আপনার দুটি বিকল্পের একটি একই কাঠামো থাকে তবে আপনি প্রায়শই একটি সাধারণ অভিব্যক্তি তৈরি করতে পারেন যা বুলিয়ানের উপর নির্ভর করে প্রতিটি স্বতন্ত্রের সমান।
xnor

3

রুবি, 313 (338 - 15 - 10)

এই সমাধানটি বর্তমান সময়টিকে অনুবাদ করে যখন কোনও ইনপুট দেওয়া হয়নি এবং "y কুয়ার্তো", "y মিডিয়া" এবং "মেনোস কুয়ার্তো" তিনটি শব্দ যুক্ত করে adds

require'time'
t,x,s=Time,$*[0],%w[cero una dos tres cuatro cinco seis siete ocho nueve diez once doce trece catorce cuarto]
1.upto(9){|i|i>5?s[10+i]="dieci"+s[i]:0;s[20+i]="veinti"+s[i]}
s[20]="veinte"
s<<"media"
c=x ?t.parse(x):t.new
h,m=c.hour%12,c.min
m<31?(a=" y "):(h,m,a=h+1,60-m," menos ")
$><<(h<2?"Es la ":"Son las ")+s[h]+a+s[m]

এটা কি কাজ করে? আইডোনে চেষ্টা করা হয়েছে, ইনপুট '01: 01 ', বর্তমান সময় 20:09, আউটপুট:Son las ocho y diecioch
edc65

সমস্ত পরীক্ষার কেস আমার জন্য স্থানীয়ভাবে পাস করেছে। আমি সংখ্যাগুলি অনুলিপি করে কিছু ভুল হয়েছে দেখেছি, তাই আমি এটি ঠিক করব।
ব্রিটিশটি

1
"seite" "siete" হওয়া উচিত এবং "neuve" "nueve" হওয়া উচিত
jmm

2

বাশ 423

(433 - 10 = 423, ডায়াক্রিটিক্স এবং কুয়ার্টোগুলি সরিয়ে আমরা 381 এ নামতে পারি)

IFS=: read h m
s=y
m=${m#0}
[ $m -gt 30 ]&&h=$(($h+1))&&s=menos
[ -z ${m%0} ]&&s=en&&m=punto
n[0]=0
o[0]=0
S=" séis siete ocho nueve"
n=(punto una dos trés cuatro cinco $S diez {on,do,tre,cator,quin}ce ${S// / dieci} veinte)
n=($(eval echo "${n[@]}" veinti\$\{n[{1..9}]\}))
n[3]=tres;n[6]=seis
n=(${n[@]} media\  $(tac -s' '<<<${n[@]}))
o=("${n[@]/q*/cuarto}")
a=Son\ las
[ $h = 1 ]&&a=Es\ la
echo $a ${n[$h]/p*/cero} $s ${o[$m]/%a/o}

এটি ইতিমধ্যে কয়েক ঘন্টা 'উনা' এবং কয়েক মিনিটের জন্য 'আনো' ব্যবহার করে। আরো সাবধানে দেখুন :)
এঞ্জেল

দুঃখিত, এটি এক নজরে পরিষ্কার নয় এবং বাশ উইন্ডোতে পরীক্ষা করা কঠিন। তারপর +1।
edc65

@ এডসি 6666, অর্ডিনালগুলি মেয়েলি হয়, তারপরে $ {o [[m] /% a / o minutes কয়েক মিনিটের জন্য ওের সাথে ট্রেলিং এ প্রতিস্থাপন করে।
অ্যাঞ্জেল

2

পার্ল - 297 - 10 + 1 = 288 ( pপতাকা গণনা )

সম্পাদনা করুন: @ গুইফাকে ধন্যবাদ, আমি এখন বোনাস দাবি করতে পারি :)

#!/usr/bin/perl -p
sub n{($_=shift)%10?(once,doce,trece,catorce,cuarto)[$_>9?$_-11:5]||('',dieci,veinti)[$_/10].(0,un.pop,dos,tres,cuatro,cinco,seis,siete,ocho,nueve)[$_%10]:(cero,diez,veinte,media)[$_/10]}/:/;$a=$`%12;$b=$';$c=$b>30?(++$a,$b=60-$b,menos):'y';$_=($a-1?'Son las ':'Es la ').n($a,a)." $c ".n($b,o).'.'

পাঠযোগ্যতার জন্য একাধিক লাইনে একই কোডটি এখানে রয়েছে:

sub n {
        ($_ = shift) % 10
            ? (once, doce, trece, catorce, cuarto)[$_ > 9 ? $_ -11 : 5]
                || ('', dieci, veinti)[$_ / 10]
                . (0, un.pop, dos, tres, cuatro, cinco, seis, siete, ocho, nueve)[$_ % 10]
            : (cero, diez, veinte, media)[$_ / 10]
}
/:/;
$a = $` % 12;
$b = $';
$c = $b > 30 ? (++$a, $b = 60 - $b, menos) : 'y';
$_ = ($a - 1 ? 'Son las ' : 'Es la ') . n($a, a) . " $c " . n($b, o) . '.'

কয়েক ঘন্টা 'উনো' ব্যবহার করা উচিত, কয়েক মিনিটের জন্য 'আনো' ব্যবহার করা উচিত। সুতরাং '01: 01 '- দেওয়া উচিতEs la una y uno
edc65

আপনি যদি "কুইন্ট" কে "কিয়ার্তো" এবং "ট্রেন্টা" "মিডিয়া" তে পরিবর্তন করেন তবে আপনি একটি -10 বোনাস নেবেন।
user0721090601

@ edc65 আমি আশা করি এটি এখন ঠিক আছে ...
কোর 1024

0

স্কাল 652 বাইট - 25

import java.util.Scanner
object S extends App{val s=new Scanner(System.in).useDelimiter("[:\n]")
var h=s.nextInt
var m=s.nextInt
if(m>30)m-=60 else h-=1
val n=m.abs
h%=24
val p=h%12
val l=List("una","dos","tres","cuatro","cinco","seis","siete","ocho","nueve","diez","once","doce","trece","catorce","cuarto")
val k=List("úno","dós","trés",l(3),l(4),"séis",l(6),"ócho",l(8))
println(s"""${if(p==0)"Es la"else"Son las"} ${l(p)} ${if(m>0)"y "else if(m<0)"menos "}${if(n==1)"uno"else if(n==0)""else if(n<=15)l(n-1) else if(n==30)"media"else if(n<20)"dieci"+k(n-11)else if(n==20)"veinte"else"veinti"+k(n-21)} de la ${if(h<12)"mañana"else"tarde"}.""")}

0

পাইথ : 277 একগুচ্ছ আরও 234 - 10 (কুয়ার্টো / মিডিয়া বোনাস) = 224 বাইট

আসল থেকে এখন 50 বাইটের বেশি হ্রাস!

=H" y "ANkmsdcz\:Kc"cero uno dos tres cuatro cinco seis siete ocho nueve diez once doce trece catorce cuarto veinte"dI>k30=k-60k=H" menos "=N?1qN12+N1)++?+"Son las "@KN>N1"Es la una"H??eKqk20?@Kk<k16+?"dieci"<k21+PeK\i@K%kT<k30"media"

পাইথের জন্য অত্যন্ত উন্মুখ, তবে কিছু কাঁচা ডেটা রয়েছে বলে এটি। সম্ভবত আরও আরও গল্ফ করা যেতে পারে। ঘন্টা, y / মেনো, দশ মিনিটের দশক এবং কয়েক মিনিটের অঙ্কে বিভক্ত করার স্পষ্ট কৌশলটি ব্যবহার করে এবং তারপরে ট্রেনারিগুলির ক্র্যাপ-টোন ব্যবহার করে অনুবাদ অ্যারে এবং অন্য সব কিছু ব্যবহার করে সংখ্যাগুলি অনুবাদ করে।

=H" y "                 Set H to " y "
A                       Double Assignment
 Nk                     The variables N and k (hours and mins)
 m  cz\:                Map input split by ":"
  sd                    Make both int
Kc"..."d                Set K to string split by spaces
I>k30                   If k>30
     =k-60k             Set k to 60-k
     =H" menos "        Set k to menos instead of y
     =N                 Set N
      ?   qN12          If N=12
       1                Go back to one
       +N1              Increment N
)                       Close entire if block 
+                       Concat of hours and minutes
 +                      Concat hours and y/menos
  ?           >N1       If hour greater than one
   +                    Concat of son las and hour
    "Son las "          "Son las "
    @KN                 Index translation array for hour
   "Es la una"          Else es la una
  H                     " y " or " menos "
 ?               <k30   If minutes less than 30
  ?  qk20               If minutes is 20
   ek                   Last element of array (veinte)
   ?   <k16             Else check if minutes<16
    @Kk                 Get minutes directly from array
    +                   Else tens and ones sum
     ?       <k21       If minutes<21
      "dieci"           "dieci"
      +PeK\i            Else get veinti from veinte
     @K%kT              Ones digit of minutes
  "media"               Else get "media"

গল্ফিংয়ের ইতিহাস

  • 10 বাইট - বোনাস, কুইনস এবং ট্রায়েন্টা কেবল অনুবাদ অ্যারেতে প্রতিস্থাপন করা যেতে পারে তাই অনুবাদ রচনা এবং তার একই আকার ব্যতীত কোনও পরিবর্তনের প্রয়োজন নেই।
  • 6 বাইট - পুনর্গঠিত টেরিনারি - দুর্ভাগ্যক্রমে এটি 4 টি টানা টেনারি অপারেটর অপসারণ করেছে :(
  • 6 বাইট - অন্যান্য বিভিন্ন গল্ফিং
  • 6 বাইট - গল্ফ করা প্রাথমিক ঘন্টা / মিনিট কার্য
  • +3 বাইট - স্থিত আনো / উনা
  • 3 বাইট - শিরা থেকে তৈরি ভেন্টি, হার্ডকড নয়
  • 18 বাইট - কিশোর << থেকে ডায়াকি বের করা
  • 2 বাইট - কোনও কারণ ছাড়াই সেখানে কিছু স্থান সরিয়ে নিয়েছে
  • 2 বাইট - একটি চর স্ট্রিংয়ের জন্য used ব্যবহৃত

যেমন 1 টি অক্ষর স্ট্রিং জন্য ":"এবং "i", ব্যবহার \:এবং \iপরিবর্তে।
isaacg

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