È l'ora spagnola!


24

Ho un compito semplice che dovrebbe essere relativamente facile da implementare tramite il codice. Il tuo obiettivo è quello di scrivere un programma che fornirà il tempo scritto in spagnolo, dato il tempo in formato HH: MM. Molte persone probabilmente non sanno come farlo, quindi elaborerò.

Il tempo in spagnolo è abbastanza logico. Di solito segue il modello di "Es la / Son las (ora) y (minuti)". Le ore sono in formato 12 ore e "Es la" viene utilizzato solo se l'ora è 1 (ovvero l'una). I minuti sono una storia diversa. Se il minuto è inferiore a 30, viene rappresentato come mostrato sopra. Se il minuto è superiore a 30, tuttavia, l'ora viene arrotondata per eccesso e il minuto viene sottratto. Ad esempio, 7:35 è tradotto nell'equivalente di "8 ore meno 25 minuti". Di seguito alcuni esempi. L'elenco dei numeri spagnoli necessari è disponibile qui . Ci sono degli accenti su alcuni numeri, ma questi non sono necessari.

Nota: la fonte dice "uno", ma per essere grammaticalmente corretto dovrebbe essere "una". Ciò non dovrebbe influire sulle risposte finora.

Nota 2: Inoltre, "cero" non è necessario. Se il tuo programma genera "Es la una" o "Son las tres", va bene per me. Ci scusiamo per queste modifiche alla regola.

Regole

  • L'input verrà fornito tramite STDIN o l'equivalente nella tua lingua.
  • Nessuna lettura da biblioteche esterne.
  • Il tuo codice può fare qualsiasi cosa con input non validi.

bonus

  • -10 se il tuo codice aggiunge queste frasi extra - "y cuarto" per: 15, "y media" per: 30 e "menos cuarto" per: 45 (arrotondato per eccesso).
  • -15 se il tuo codice è in grado di gestire AM e PM, rispondendo con "de la mañana" e "de la tarde", di conseguenza.
  • -15 se il codice può tradurre l'ora corrente se non viene fornito alcun input.

punteggio

  • Questa è una sfida di code-golf e sarà segnata da byte, non da personaggi.

Esempi

Ingresso: 8:10 Uscita:Son las ocho y diez.

Ingresso: 6:45 Uscita:Son las siete menos quince (or cuarto).

Ingresso: 1:29 Uscita:Es la una y veintinueve.

Ingresso: 12:55 Uscita:Es la una menos cinco.

Fammi sapere se c'è qualcosa da specificare qui. Questa è la mia prima domanda, quindi sicuramente non è perfetta.


Per tua informazione, puoi ottenere un feedback prima di pubblicare nella sandbox .
Stretch Maniac

1
@Sparr ne dubito. Probabilmente ci sono abbastanza numeri che devono essere codificati per far sì che ciò accada - almeno 45 caratteri, anche tenendo conto degli schemi.
mdc32,

1
@Dennis Hmm ... Suppongo che andrebbe bene. Es la una y ceroè piuttosto ripetitivo, quindi vedo il tuo punto. Non l'ho specificato, quindi credo che uno andrebbe bene. Grazie per il feedback.
mdc32,

1
Dovresti aggiungere 01:21un caso di prova, perché almeno un risponditore è stato confuso da quello che hai detto su una vs uno .
Peter Taylor,

3
Il secondo bonus non è (quasi?) Mai valsa la pena perché le frasi "de la", "manana" e "tarde" contano già da sole fino a 16 byte.
britishtea,

Risposte:


9

JavaScript (ES6) 308 316

Edit2 bug fix Modifica dimenticato di richiedere il bonus
Come programma con I / O tramite popup

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):''))

Come funzione testabile

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):'')
)

Test nella console FireFox / FireBug

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

Produzione

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

Sì, la lingua meno attesa per apparire in una gara di golf, codificata dal peggior golfista del mondo, è tornata!

Java - 676 ​​byte (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);
    }
}

Si occupa di quartoe media, con AM / PM e non ha input. Quindi posso richiedere tutti i bonus, anche se, se non implementassi quelle funzionalità, avrei un punteggio ancora più basso, lol. facepalms


6

Python 3: 294 caratteri - 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]+".")

Questo ottiene il bonus di dieci punti per l'utilizzo di "cuarto" e "media"

Leggiamo le ore e i minuti come int s. Se i minuti sono superiori a 30, passiamo all'ora successiva, misuriamo i minuti da 60 e cambiamo la congiunzione in "menu".

La lista dha traduzioni di numeri spagnoli fino a 15. Facciamo d[0]sia ''per evitare cose come "diecicero". Questo viene fatto chiamando goffamentesplit(' ') con uno spazio iniziale; il normale splitlo ignorerebbe e basta. Il caso zero-minuto viene gestito in seguito.

Per ottenere numeri superiori a 15, combiniamo la stringa di dieci cifre con la stringa di una cifra appropriata. 15e 30sono scritti come "media" e "cuarto" a costo zero.

Python 3 salva un carattere netto su Python 2: -4 per inputinvece di raw_input, +2 per le parentesi in stampa, +1 per //.


Sono triste a dire che è più complicato di così. 01:21 dovrebbe essere la una y veintiuno perché le ore sono femminili ma i minuti sono maschili.
Peter Taylor,

@PeterTaylor Capisco. Uno / una è l'unico numero interessato?
xnor

Sì, anche se se arrivasse ai numeri delle centinaia ce ne sarebbero altri.
Peter Taylor,

@PeterTaylor Risolto, per 5 caratteri.
xnor

@ edc65 Ops, ho dimenticato di incollare la variazione effettiva di unaal uno, dovrebbe funzionare ora.
xnor

5

PHP, 351 349 360-15 = 345 byte

<?$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(~·Å–));

Questo programma non è una riga di comando: accetta input tramite $ _GET [0]. Potrebbe essere necessario disabilitare le notifiche in php.ini. Ora arriva il tempo automatico senza input, grazie a Niet the Dark Absol.

Trucchi usati:

~(...) salva un byte capovolgendo bit per bit una stringa, in quanto non sono necessarie le virgolette poiché in genere PHP assume che tutta ASCII da 0x80 a 0xFF sia una stringa.

<?=preg_filter(...,...): <?=È una scorciatoia per la scrittura <? echo. preg_filter()di solito applica sostituzioni su una stringa usando un regex, ma possiamo usare il modificatore depreciato / e per valutare la stringa risultante come codice PHP. Quindi, invece di dover dividere la stringa di input in due variabili separate, possiamo usare i riferimenti indietro ($ 1 e $ 2) sulla stringa di input abbinata, risparmiando grandi quantità di byte.


2
Puoi richiedere il bonus di -15 se usi $_GET[0]?:date(~·Å–)per sottrarre 3 dal tuo punteggio.
Niet the Dark Absol,

Grazie. L'ho fatto e un altro piccolo miglioramento.
Tryth

5

C ++: 474 ... 422 411 byte

Questa versione sta riscattando il bonus cuarto / media (-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]);}

Il mio primo tentativo di golf a codice! Proverò a migliorarlo questo fine settimana.

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
Non potrestim%=10
Timtech,

Buon punto! Purtroppo nella mia nuova revisione devo assegnare quel valore a una variabile diversa, quindi non posso.
BMac

Ok, mi chiedo solo :)
Timtech,

4

Lua, 450-10 (cuarto / media) - 15 (manana / tarde) = 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)
  • Eliminati 12 byte riscrivendo il generatore per 21-29.
  • Ne sono caduti altri 1 sostituendoli H>=12conH<12 e commutazione l'espressione dipendente intorno.
  • Ne sono usciti altri 4 inquinando lo spazio dei nomi globale da una funzione (male, ma nell'interesse del golf :).
  • Risolto il problema con la regex, ho dimenticato i due punti. Non cambia il conteggio dei byte, tuttavia.
  • Risolto il problema con zero minuti, scambiato table.concat operazioni di stringa e aggiunto il suggerimento di @ edc65, aggiungendo infine 22 byte.
  • Sono vergognoso. L'estrazione del functioncorpo nel blocco principale ha ridotto la lunghezza di ben 15 byte .

Dovrebbe usare "una" per ore, "uno" per minuti. Quindi '01: 01 'dovrebbe dareEs la una y uno
edc65

3

D - 484 byte

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]);}

Dovrebbe usare "una" per ore, "uno" per minuti. Quindi '01: 01 'dovrebbe dareEs la una y uno
edc65

3

Python 3, 409 byte

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)])

Un lungo elenco di stringhe può essere abbreviato come'string1 string2 string3'.split()
xnor

@xnor Va bene, grazie!
Hosch250,

@ hosch250 Inoltre, assicurati di seguire di nuovo i commenti nel post originale. Probabilmente farò molte piccole modifiche alle regole, e queste probabilmente ti aiuteranno a giocare a golf.
mdc32,

@ mdc32 Regolazione in questo momento. Ho comunque avuto degli errori.
Hosch250,

2
È possibile ridurre d[j]if i<31 else d[(j+1)%12]a d[(j+(i>30))%12]. In generale, se le tue due alternative hanno una struttura simile, spesso puoi creare un'espressione semplice che equivale a ciascuna rispettiva in base al valore booleano.
xnor

3

Ruby, 313 (338-15-10)

Questa soluzione traduce l'ora corrente in cui non è stato fornito alcun input e aggiunge le tre frasi "y cuarto", "y media" e "menos cuarto".

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]

Funziona? Provato in ideone, input '01: 01 ', ora attuale 20:09, output:Son las ocho y diecioch
edc65

Tutti i casi di test sono passati per me localmente. Vedo che qualcosa è andato storto nel copiare i numeri, quindi lo aggiusterò.
britishtea,

1
"seite" dovrebbe essere "siete" e "neuve" dovrebbe essere "nueve"
jmm

2

Bash 423

(433 - 10 = 423, rimuovendo i segni diacritici e il cuarto potremmo scendere a 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}

Usa già "una" per ore e "uno" per minuti. Guarda più attentamente :)
Ángel

Siamo spiacenti, non è chiaro a colpo d'occhio e bash è difficile da testare in Windows. +1 allora.
edc65,

@ edc66, gli ordinali sono in femenino, quindi $ {o [$ m] /% a / o} sostituisce il trailing a con o per i minuti.
Ángel,

2

Perl - 297 - 10 + 1 = 288 (contando il p bandiera)

Modifica: grazie a @guifa, ora posso richiedere un bonus :)

#!/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).'.'

Ecco lo stesso codice in più righe per leggibilità:

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) . '.'

Dovrebbe usare "una" per ore, "uno" per minuti. Quindi '01: 01 '- dovrebbe dareEs la una y uno
edc65

Se cambi solo "mela cotogna" in "cuarto" e "treinta" in "media", otterrai un bonus di -10.
user0721090601

@ edc65 Spero sia OK ora ...
core1024

0

Scala 652 byte - 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

Pyth : 277 un po 'di più 234 - 10 (bonus cuarto / media) = 224 byte

Ora ridotto di oltre 50 byte dall'originale!

=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"

Lungamente follemente per Pyth, ma è perché ci sono alcuni dati non elaborati. Probabilmente può essere ulteriormente giocato a golf. Utilizza la tecnica ovvia di suddividere l'attività in ore, y / menu, decine di minuti e una cifra di minuti e quindi traduce i numeri usando l'array di traduzione e tutto il resto usando una tonnellata di ternari.

=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"

Storia del golf

  • 10 byte: bonus, mele cotogne e trienta possono essere semplicemente sostituiti nell'array di traduzione, quindi non sono necessarie modifiche tranne il saggio di traduzione e le sue stesse dimensioni.
  • 6 byte - ternari riorganizzati - purtroppo questo ha rimosso i 4 operatori ternari consecutivi :(
  • 6 byte - altri golf diversi
  • 6 byte - assegnazione ora / min iniziale golfizzata
  • +3 byte - fisso uno / una
  • 3 byte: costruito da Veinte, non codificato
  • 18 byte - dieci estratti da adolescenti <16
  • 2 byte - rimossi alcuni spazi lì dentro senza motivo
  • 2 byte - usato \ per le stringhe di un carattere

Per 1 stringhe di caratteri, come ":"e "i", utilizzare \:e \iinvece.
Isaacg,

@isaacg oh cool Non sapevo che potresti farlo, aggiornando
Maltysen il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.