ফরাসী ভাষায় সময় বলা


21

বনজ’র, পিপিসিজি! কয়েল হিউরে ইস্ট-ইল? এর অর্থ ফরাসী ভাষায় এটি কী সময়, কারণ এই চ্যালেঞ্জটি ঠিক সেইটাই is

ফ্রেঞ্চ ভাষায় সময় বলা (কমপক্ষে আনুষ্ঠানিকভাবে) ইংরেজিতে সময় বলা থেকে কিছুটা আলাদা। সময় বলা ইল এসট (এটি হয়) দিয়ে শুরু হয় । তারপরে, আপনি ঘন্টাটি পরে heures (বেলা) রাখেন । (আপনি যদি ফরাসী নম্বরগুলি জানেন না, তবে এখানে একটি তালিকা রয়েছে: http://blogs.transparent.com/funch/funch-numbers-learn-how-to-count-from-1-to-1000/ )। যদি রাত 1 টা হয় তবে এটির জন্য আন হিউর করুন । দুপুরের জন্য, মিডি ব্যবহার করুন (কোনও নিরাময় ছাড়াই) এবং মধ্যরাতের জন্য মিনিট ব্যবহার করুন ।

মিনিটগুলি 00 না হলে আপনি তারপরে মিনিটের সংখ্যা সহ এটি অনুসরণ করুন। তবে এর ব্যতিক্রম কিছু আছে। 15 মিনিটের জন্য আপনি এট কোয়ার্ট বলতে চান এবং 30 মিনিটের জন্য আপনি এট ডেমি বলতে চান । 30 মিনিটের পরে কোনও কিছুর জন্য আপনি ঘন্টা সংখ্যাকে এক করে বাড়িয়ে নিন, তারপরে শব্দটি moins এবং 60 যোগ করুন - মিনিট। সুতরাং 6:40 অপরাহ্ন ইল ইস্ট সেপ্ট হিউরেস ময়িংস ভিংট (উইংট = 20)। 45 মিনিট moins লে কোয়ার্ট হবে

অবশেষে, আপনি এটি দিনের সাথে শেষ করে দিন। সকালের জন্য (সকাল 1 টা থেকে 12 টা অবধি ), আপনি দুজন বলে । বিকেলের জন্য (বিষয়গত, তবে আমি এটিকে 1 টা থেকে 5 টা প্রধানমন্ত্রী হিসাবে সংজ্ঞায়িত করব), আপনি বলেছেন ডি এল 'প্র্রেস-মিডি (প্রযুক্তিগতভাবে ই এর উপরে একটি উচ্চারণ হওয়া উচিত, তবে এহ)। এবং রাতের জন্য (সকাল 5 টা থেকে 12 টা পর্যন্ত) আপনি দু সোয়ার বলছেন । নোট করুন যে মধ্যরাত এবং দুপুরের জন্য ( মিনিট এবং মিডি ) আপনি এর পরে কোনওটি রাখেন না - দিনের সময়টি আপনি কোনটি ব্যবহার করেন তার উপর নির্ভর করে lied

আপনি সম্ভবত ইতিমধ্যে নির্ধারিত হিসাবে, এখানে চ্যালেঞ্জ হ'ল ফরাসী ভাষায় এই নিয়মগুলি ব্যবহার করে বর্তমান স্থানীয় সময়টি মুদ্রণ করা। বিভিন্ন সময়ে বিভিন্ন সময়ে নমুনা আউটপুট কেমন হওয়া উচিত তা এখানে। (প্রথম বন্ধনের সময় স্পষ্টতই মুদ্রণ করতে হবে না, এটি ঠিক সেখানে রয়েছে তাই আপনি কীভাবে সময় জানেন):

Il est sept heures du matin. (7:00 A.M)
Il est deux heures de l'apres-midi. (2:00 P.M)
Il est une heure du matin. (1:00 A.M)
Il est huit heures du soir. (8:00 P.M)
Il est midi. (12:00 P.M, Noon)
Il est minuit. (12:00 A.M, Midnight)
Il est cinq heures vingt du soir. (5:20 P.M)
Il est six heures et quart du matin. (6:15 A.M)
Il est neuf heures et demi du matin. (9:30 A.M)
Il est quatre heures moins dix de l'apres-midi. (3:50 P.M, not 4:50!)
Il est midi moins le quart. (11:45 A.M)

এটি কোড-গল্ফ, তাই সংক্ষিপ্ততম কোড জিততে পারে। শুভকামনা!

সম্পাদনা: সময় প্রয়োজন।



উদাহরণস্বরূপ, 08:41 AM এর জন্য আউটপুটটি কী হওয়া উচিত? Il est huit heures quarante et une du matin(সঠিক) বা Il est neuf heures moins dix-neuf du matin(অবাক লাগছে)?
ব্ল্যাকহোল

আমাদের কী অগত্যা ফলাফল আউটপুট করা উচিত, বা আমরা কেবল এটি ফিরিয়ে দিতে পারি? সংখ্যাকে অঙ্কগুলিতে রূপান্তর করার জন্য কি অভ্যন্তরীণ ফাংশন অনুমোদিত?
ব্ল্যাকহোল

আমরা কি একটি উচ্চারণ করা উচিত après-midi? আমরা কি পারি?
ব্ল্যাকহোল

তুমি যদি চাও. এটি প্রয়োজন হয় না.
একটি স্প্যাগেটো

উত্তর:


4

পিএইচপি - 521 473 বাইট

আমি পঠনযোগ্যতার জন্য কিছু নতুন লাইন যুক্ত করেছি:

$w=split(A,'AuneAdeuxAtroisAquatreAcinqAsixAseptAhuitAneufAdixAonzeAdouzeAtreizeA
quatorzeAAseizeAdix-septAdix-huitAdix-neufAvingtAvingt et une');$h=idate('H');if(
$r=($m=idate('i'))>30){$h=++$h%24;$m=60-$m;}echo'Il est '.($h?$h==12?midi:$w[$h%12]
.' heure'.($h%12<2?'':s):minuit).($r?' moins':'').($m==15?($r?' le ':' et ').quart
:($m==30?' et demi':($m?' '.($m<22?$w[$m]:"$w[20]-".$w[$m%10]):''))).($h%12?($h-=$r
)<12?' du matin':($h<17?" de l'après-midi":' du soir'):'').'.';

ফরাসী ভাষায় কোনও সংখ্যাকে তার সংখ্যায় রূপান্তর করতে ব্যবহৃত পদ্ধতিটি এডিসি 65 দ্বারা অন্য চ্যালেঞ্জের উত্তর থেকে অনুপ্রাণিত হয় ।

নিখরচায় সংস্করণটি এখানে:

/** Define numerals **/
$numerals = [
    '', 'une', 'deux', 'trois', 'quatre',
    'cinq', 'six', 'sept', 'huit', 'neuf',
    'dix', 'onze', 'douze', 'treize', 'quatorze',
    '', 'seize', 'dix-sept', 'dix-huit', 'dix-neuf',
    'vingt', 'vingt et une'
];

/** Get current time **/
$hours = idate('H');
$minutes = idate('i');

/** Check if we need to count in reverse **/
$reverse = $minutes > 30;
if ($reverse) {
    $hours = ($hours + 1) % 24;
    $minutes = 60 - $minutes;
}

echo 'Il est ';

/** Print hours **/
if ($hours === 12) {
    echo 'midi';
}
else if ($hours === 0) {
    echo 'minuit';
}
else
{
    echo $numerals[$hours % 12] .' heure';
    if ($hours % 12 !== 1) {
        echo 's';
    }
}

/** Print minutes **/
if ($reverse) {
    echo ' moins';
}

if ($minutes === 15)
{
    if ($reverse) {
        echo ' le ';
    }
    else {
        echo ' et ';
    }

    echo 'quart';
}
else if ($minutes === 30) {
    echo ' et demi';
}
else if ($minutes !== 0)
{
    echo ' ';

    if ($minutes < 22) {
        echo $numerals[$minutes];
    }
    else {
        echo $numerals[20] .'-'. $numerals[$minutes % 10];
    }
}

/** Print daytime **/
if ($hours % 12 !== 0)
{
    if ($reverse) {
        --$hours;
    }

    if ($hours < 12) {
        echo ' du matin';
    }
    else if ($hours < 17) {
        echo " de l'après-midi";
    }
    else {
        echo ' du soir';
    }
}

echo '.';

4

পাইথন 3, 586 547 556 506 505 502 498 497 493 বাইট

কিছুতেই গল্ফ করার আমার প্রথম চেষ্টা। আমি যেভাবে বেছে নিচ্ছি, বিশেষত nতালিকাটি সম্পর্কে আমি সত্যই নিশ্চিত নই । তবে আমি চেষ্টা করে দেখতে চেয়েছিলাম।

from datetime import*;t=datetime.now()
n='/une/deux/trois/quatre/cinq/six/sept/huit/neuf/dix/onze/douze/treize/quatorze/et quart/seize/dix-sept/dix-huit/dix-neuf/vingt//et demi'.split('/')
n[21:22]=['vingt-'+i for i in['et-une']+n[2:10]]
h,m=t.hour,t.minute;s=h//12;h%=12
e=' d'+('u matin',("e l'après-midi","u soir")[h>4])[s]
try:m=' '[:m]+n[m]
except:m=' moins '+(n[60-m],'le quart')[m==45];h+=1
e,h=('',e,('minuit','midi')[h//12^s],n[h]+' heures'[:h+5])[h%12>0::2]
print('Il est',h+m+e+'.')

Ungolfed:

from datetime import datetime

time = datetime.now()
numbers = [
    '', 'une', 'deux', 'trois', 'quatre',
    'cinq', 'six', 'sept', 'huit', 'neuf',
    'dix', 'onze', 'douze', 'treize', 'quatorze',
    'et quart', 'seize', 'dix-sept', 'dix-huit', 'dix-neuf',
    'vingt', 'vingt-et-une', 'vingt-deux', 'vingt-trois', 'vingt-quatre',
    'vingt-cinq', 'vingt-six', 'vingt-sept', 'vingt-huit', 'vingt-neuf',
    'et demi']

status, hour = divmod(time.hour, 12)
if status:
    ending = " du soir" if h>4 else " de l’après-midi"
else:
    ending = " du matin"

try:
    if not time.minute:
        minutes = ""
    else:
        minutes = " " + numbers[time.minute]
except IndexError:
    hour += 1
    if time.minute == 45:
        minutes = " moins le quart"
    else:
        minutes = " moins " + numbers[60 - time.minute]

if hour%12:    # 'whole' hours
    hours = numbers[hour] + " heures"
    if hour == 1:
        # removing extra 's'
        hours = hours[:-1]
else:          # midnight or noon
    ending = ""
    if (hour == 12 and status) or (hour == 0 and status == 0):
        hours = "minuit"
    else:
        hours = "midi"

print('Il est', hours + minutes + ending + '.')

2
আপনি প্রায় 50 বাইট সংরক্ষণ করতে পারেন 'minuit#une#deux#...#vingt-neuf#et demi'.split('#')। এমনকি স্ট্রিংটি কোনওভাবে সংকুচিত করতে আরও ছোট হতে পারে।
মার্টিন এন্ডার

@ মার্টিন হ্যাঁ, এটি কেবল ব্ল্যাকহোলের উত্তরেও দেখেছি। তবে আমি "ভিংট-এক্সএক্সএক্সএক্সএক্স" এর সাথে জড়িত পুনরাবৃত্তিগুলি ব্যবহার করে এটি ছোট করার চেষ্টা করতে চেয়েছিলাম। তবে কিছুটা ঘুমানোর পরে যেহেতু ইল এস্ট ডিউক্স হিউরেস মইস ট্রয়স ডু ম্যাটিন।
409_ কনফ্লিক্ট

@ ম্যাথিয়াসএটিঙ্গার একটি সংশোধন করেছেন, আপনার কাছে ভিংটের পরিবর্তে 'ভোংট' আছে এবং 21 'ভিংট এট আন', 'ভিংট-এট-আন' নয়
ব্রায়ান টাক

1
Vingt জন্য ধন্যবাদ । 21-এর জন্য এটি উইং-এট-আন হওয়া উচিত যেহেতু মিনিটটি স্ত্রীলিঙ্গ হয়, একইভাবে 1:01 এএম ইল ইস্ট এনা হিউরে আন ডু মতিন।
409_ কনফ্লিক্ট

@BrianTuck এছাড়াও 21 vingt-ET-উন বা vingt-ET-une 1990 পরিবর্তে যেহেতু vingt এবং উন বা vingt এবং une : fr.wiktionary.org/wiki/vingt_et_une
409_Conflict

3

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

সম্পাদনা করুন: aকয়েকটি বাইট সংরক্ষণ করতে সংকুচিত ।

a=`
un
j
k
yre
h
six
w
v
p}
onldoultreilyorl
seize}-w}-v}-p~~ et un{j{k{yre{h{six{w{v{p
et demi`,[...`hjklpvwy{}~`].map((x,w)=>a=a.split(x).join(`cinq|deux|trois|ze
|neuf|huit|sept|quat|~-|
dix|
vingt`.split`|`[w])),a=a.split`
`,alert(`Il est ${(e=(d=((b=(z=new Date).getHours())+(y=(c=z.getMinutes())>30))%24)%12)?a[e]+` heure${e-1?"s":""}`:d?'midi':'minuit'} ${y?"moins ":""}${y?c-45?a[60-c]:'le quart':c-15?a[c]:'et quart'}${e?[' du matin'," de l'apres-midi",' du soir'][(b>12)+(b>16)]:""}.`)

ব্যাখ্যা:

a = 'compressed string of french numbers with 'et demi' for 30 and 15 removed';
a = // code that decompresses a

// a,b,c,d,e,y,z are all inlined into the first expression that uses them
z = new Date();
b = z.getHours();
c = z.getMinutes();
y = c > 30; // true if 60 - minutes, false otherwise
d = (b + y) % 24; // the next hour if y
e = d % 12; // is it not noon and not midnight?

alert(
    "Il est " +
    // add the hour
    // if d is not 0 or 12, add d + 'heure(s)'
    (e ? a[e] + ` heure${e-1?"s":""}` : d ? 'midi' : 'minuit') +
    " " +
    (y ? "moins " : "") + // add 'moins' if necessary

    ( // add the minute
      y? // necessary to subtract from 60?
        c-45?
          a[60-c] // add normal number word
          :'le quart' // handle special case for 45
        :c-15?
          a[c] // add normal word
          :'et quart' // handle special case for 15
    ) +
    ( // select appropriate ending
      e? // is it not noon and not midnight?
        // create array of endings
        [" du matin"," de l'apres-midi"," du soir"]
          // selects item 0 if b in [0, 12], item 1 if b in [13, 16] and item 2 if b > 16
          [(b > 12) + (b > 16)]
        :"" // if it's noon or midnight, no ending is necessary
    ) +
    "." // add period
)

2

সি, 860 835 794 বাইট

একেবারে ভয়াবহ, তবে সম্ভবত এটি আরও খাটো করা যেতে পারে। এই সাইটে ফর্ম্যাট করার উদ্দেশ্যে অনেকগুলি নতুন লাইন যুক্ত হয়েছিল। আসল উত্স কোডটিতে # অন্তর্ভুক্ত এবং # নির্ধারণের পরে নতুন লাইন রয়েছে, তবে চর * থেকে শেষ ডাব্লু ("। \ N"); to পর্যন্ত সমস্ত কিছুই এক লাইনে রয়েছে} আমি স্ট্রিং অ্যারেতে 22, ..., 29 থেকে মানগুলি সরিয়ে এটি সংক্ষিপ্ত করে দিয়েছিলাম, পরিবর্তে 2, ..., 9 এর জন্য স্ট্রিংগুলি পুনরায় ব্যবহার করে এবং যখন উপযুক্ত হবে তখন একটি "উইংটি-" সরবরাহ করে। (আমি সত্যিই আশা করি আমি কোনও বাগ প্রবর্তন করিনি!)

#include <sys/time.h>
#define w printf
#define q tm_min
#define r tm_hour
char*a[]={"minuit","une","deux","trois","quatre","cinq","six","sept","huit","neuf","dix",
"onze","douze","treize","quatorze","quart","seize","dix-sept","dix-huit","dix-
neuf","vingt","vingt-et-une",0,0,0,0,0,0,0,0,"demi"};
h=1,s=1,m,e,l,t,p,o,v;struct tm j;
main(){struct timeval i;gettimeofday(&i,0);localtime_r(&i.tv_sec,&j);
j.q>30?m=1,++j.r,j.q=60-j.q:j.q==15||j.q==30?e=1:0;j.q>21&&j.q<30?v=1:0;
j.r%12?j.r<12?t=1:j.r-m<17?p=1:(o=1):0;
j.q==15&&m?l=1:0;j.r%12?j.r%12==1?s=0:0:(h=0,s=0);
w("Il est ");j.r==12?w("midi"):w("%s",a[j.r%12]);h?w(" heure"):0;s?w("s"):0;
m?w(" moins"):0;e?w(" et"):0;l?w(" le"):0;
j.q?v?w(" vingt-"):w(" "),w("%s",a[j.q-20*v]):0;
t?w(" du matin"):p?w(" de l'apres-midi"):o?w(" du soir"):0;w(".\n");}

এটার মত:

#include <sys/time.h>
#define w printf
#define q tm_min
#define r tm_hour
char*a[]={"minuit","une","deux","trois","quatre","cinq","six","sept","huit","neuf","dix","onze","douze","treize","quatorze","quart","seize","dix-sept","dix-huit","dix-neuf","vingt","vingt-et-une",0,0,0,0,0,0,0,0,"demi"};h=1,s=1,m,e,l,t,p,o,v;struct tm j;main(){struct timeval i;gettimeofday(&i,0);localtime_r(&i.tv_sec,&j);j.q>30?m=1,++j.r,j.q=60-j.q:j.q==15||j.q==30?e=1:0;j.q>21&&j.q<30?v=1:0;j.r%12?j.r<12?t=1:j.r-m<17?p=1:(o=1):0;j.q==15&&m?l=1:0;j.r%12?j.r%12==1?s=0:0:(h=0,s=0);w("Il est ");j.r==12?w("midi"):w("%s",a[j.r%12]);h?w(" heure"):0;s?w("s"):0;m?w(" moins"):0;e?w(" et"):0;l?w(" le"):0;j.q?v?w(" vingt-"):w(" "),w("%s",a[j.q-20*v]):0;t?w(" du matin"):p?w(" de l'apres-midi"):o?w(" du soir"):0;w(".\n");}

কোনও "স্পেস অপ্টিমাইজেশন" ছাড়াই অগল্ফড সংস্করণ (বেশ সুন্দর)

#include <stdio.h>
#include <string.h>
#include <time.h>

#include <sys/time.h>

int main(int argc, char *argv[])
{
        struct timeval tv;
        struct tm local_time;
        char *nums[] = {"minuit", "une", "deux", "trois", "quatre", "cinq", "six", "sept", "huit", "neuf", "dix", "onze", "douze", "treize", "quatorze", "quart", "seize", "dix-sept", "dix-huit", "dix-neuf", "vingt", "vingt-et-une", "vingt-deux", "vingt-trois", "vingt-quatre", "vingt-cinq", "vingt-six", "vingt-sept", "vingt-huit", "vingt-neuf", "demi"};
        int heure = 1;
        int s = 1;
        int moins = 0;
        int et = 0;
        int le = 0;
        int matin = 0, aprem = 0, soir = 0;

        memset(&local_time, 0, sizeof local_time);
        gettimeofday(&tv, NULL);
        localtime_r(&tv.tv_sec, &local_time);

#if 0
        local_time.tm_min = atoi(argv[1]);
        local_time.tm_hour = atoi(argv[2]);
#endif
        if (local_time.tm_min > 30) {
                moins = 1;
                local_time.tm_hour += 1;
                local_time.tm_min = 60 - local_time.tm_min;
        } else if (local_time.tm_min == 15 || local_time.tm_min == 30) {
                et = 1;
        }

        if (local_time.tm_hour % 12) {
                if (local_time.tm_hour < 12)
                        matin = 1;
                else if (local_time.tm_hour < 17)
                        aprem = 1;
                else if (local_time.tm_hour == 17 && moins)
                        aprem = 1;
                else
                        soir = 1;
        }

        if (local_time.tm_min == 15 && moins)
                le = 1;

        if (local_time.tm_hour % 12 == 0) {
                heure = 0;
                s = 0;
        } else if (local_time.tm_hour % 12 == 1) {
                s = 0;
        }

        printf("Il est ");

        if (local_time.tm_hour == 12)
                printf("midi");
        else
                printf("%s", nums[local_time.tm_hour % 12]);

        if (heure)
                printf(" heure");

        if (s)
                printf("s");

        if (moins)
                printf(" moins");

        if (et)
                printf(" et");

        if (le)
                printf(" le");

        if (local_time.tm_min)
                printf(" %s", nums[local_time.tm_min]);

        if (matin)
                printf(" du matin");
        else if (aprem)
                printf(" de l'apres-midi");
        else if (soir)
                printf(" du soir");

        printf(".\n");
        return 0;
}

(# আইফ 0 টি স্টাফ কেবল কমান্ড-লাইনের মাধ্যমে বিভিন্ন সময়ের মান পরীক্ষার জন্য ছিল)।


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