É hora espanhola!

24

Eu tenho uma tarefa simples que deve ser relativamente fácil de implementar por meio de código. Seu objetivo é escrever um programa que produza a hora escrita em espanhol, com a hora no formato HH: MM. Muitas pessoas provavelmente não sabem como fazer isso, então vou elaborar.

O tempo em espanhol é bastante lógico. Geralmente segue o padrão de "Es la / Son las (hora) y (minutos)". As horas estão no formato de 12 horas e "Es la" é usado apenas se a hora for 1 (ou seja, uma hora). Os minutos são uma história diferente. Se o minuto for menor que 30, ele será representado como mostrado acima. Se o minuto for superior a 30, no entanto, a hora é arredondada e o minuto é subtraído. Por exemplo, 7:35 é traduzido para o equivalente a "8 horas menos 25 minutos". Mais alguns exemplos serão dados abaixo. A lista de números em espanhol necessários pode ser encontrada aqui . Existem acentos em alguns números, mas estes não são necessários.

Nota: A fonte diz "uno", mas, para estar gramaticalmente correta, deve ser "una". Até o momento, isso não deve afetar nenhuma resposta.

Nota 2: Além disso, "cero" não é necessário. Se o seu programa exibir "Es la una" ou "Son las tres", tudo bem comigo. Desculpe por essas alterações de regra.

Regras

  • A entrada será fornecida através do STDIN ou equivalente no seu idioma.
  • Nenhuma leitura de bibliotecas externas.
  • Seu código pode fazer qualquer coisa com entrada inválida.

Bônus

  • -10 se o seu código adicionar essas frases extras - "y cuarto" para: 15, "y media" para: 30 e "menos cuarto" para: 45 (arredondado para cima).
  • -15 se o seu código puder manipular AM e PM, respondendo com "da mañana" e "da tarde", de acordo.
  • -15 se o seu código puder traduzir a hora atual se nenhuma entrada for fornecida.

Pontuação

  • Este é um desafio de código-golfe e será pontuado por bytes, não por caracteres.

Exemplos

Entrada: 8:10 Saída:Son las ocho y diez.

Entrada: 6:45 Saída:Son las siete menos quince (or cuarto).

Entrada: 1:29 Saída:Es la una y veintinueve.

Entrada: 12:55 Saída:Es la una menos cinco.

Deixe-me saber se há algo para especificar aqui. Esta é a minha primeira pergunta, por isso definitivamente não é perfeita.

mdc32
fonte
Para sua informação, você pode obter feedback antes de postar na sandbox .
Stretch Maniac
11
@ Sparr duvido. Provavelmente, há números suficientes que precisam ser codificados para que isso ocorra - pelo menos 45 caracteres no valor, mesmo representando padrões.
Mdc32
11
@ Dennis Hmm ... Eu acho que qualquer um seria bom. Es la una y ceroé bastante repetitivo, então eu entendo o seu ponto. Eu não especifiquei isso, então acho que qualquer um deles ficaria bem. Obrigado pelo feedback.
mdc32
11
Você deve adicionar 01:21como caso de teste, porque pelo menos um respondente ficou confuso com o que você disse sobre una vs uno .
Peter Taylor
3
O segundo bônus é (quase?) Nunca vale a pena, porque apenas as frases "de la", "manana" e "tarde" já contam até 16 bytes.
britishtea

Respostas:

9

JavaScript (ES6) 308 316

Correção de bug Edit2 Edit esqueceu de reivindicar o bônus
Como um programa com E / S via pop-up

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

Como uma função testável

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

Teste no console do 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)))
}

Saída

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
edc65
fonte
8

Sim, o idioma menos esperado para aparecer em uma competição de golfe, codificado pelo pior jogador de golfe do mundo, está de volta!

Java - 676 ​​bytes (716-10-15-15)

Golfe:

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

Lida com o quartoe media, com o AM / PM e não tem entrada. Então, posso reivindicar todos os bônus, mesmo que, se eu não implementasse esses recursos, eu teria uma pontuação ainda mais baixa, lol. facepalms

Rodolfo Dias
fonte
6

Caracteres do Python 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]+".")

Isso recebe o bônus de dez pontos pelo uso de "cuarto" e "mídia"

Lemos as horas e minutos como int s. Se os minutos estiverem acima de 30, passamos para a próxima hora, medimos os minutos a partir de 60 e alteramos a conjunção para "menos".

A lista dtem traduções de números espanhóis até 15. Nós fazemos d[0]seja ''para evitar coisas como "diecicero". Isso é feito chamando desajeitadamente split(' ')com um espaço inicial; o regularsplit simplesmente ignoraria. O caso de zero minuto é tratado posteriormente.

Para obter números acima de 15, combinamos a sequência de dezenas e a sequência de um dígito apropriada. 15e30 são escritos como "mídia" e "cuarto", sem nenhum custo.

O Python 3 salva uma rede de caracteres sobre o Python 2: -4 para em inputvez de raw_input, +2 para parens na impressão, +1 para //.

xnor
fonte
Fico triste em dizer que é mais complicado que isso. 01:21 deve ser o primeiro ano porque o horário é feminino, mas os minutos são masculinos.
Peter Taylor
@ PeterTaylor eu vejo. Uno / una é o único número afetado?
Xnor
Sim, embora se aumentasse para centenas, houvesse outros.
Peter Taylor
@PeterTaylor Fixed, por 5 caracteres.
Xnor
@ edc65 Opa, eu esqueci de colar na mudança real de unapara uno, deve funcionar agora.
Xnor
5

PHP, 351 349 360 - 15 = 345 bytes

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

Este programa não é de linha de comando: recebe entrada via $ _GET [0]. Você pode ter que desativar avisos no seu php.ini. Agora vem com tempo automático sem entrada, graças a Niet the Dark Absol.

Truques usados:

~(...) salva um byte invertendo bit a bit uma string, pois você não precisa de aspas, pois o PHP normalmente assume que todo ASCII de 0x80 a 0xFF é uma string.

<?=preg_filter(...,...): O <?=é um atalho para escrever <? echo. preg_filter()geralmente aplica substituições em uma string usando um regex, mas podemos usar o modificador / e depreciado para avaliar a string resultante como código PHP. Portanto, em vez de precisar dividir a string de entrada em duas variáveis ​​separadas, podemos usar referências anteriores ($ 1 e $ 2) na string de entrada correspondente, economizando grandes quantidades de bytes.

Tryth
fonte
2
Você pode reivindicar o bônus de -15 se $_GET[0]?:date(~·Å–)subtrair 3 da sua pontuação.
Niet the Dark Absol #
Obrigado. Fiz isso e mais uma pequena melhoria.
Tryth
5

C ++: 474 ... 422 411 bytes

Esta versão está resgatando o bônus cuarto / mídia (-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]);}

Minha primeira tentativa de golfe com código! Vai tentar melhorá-lo neste fim de semana.

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]);
}
BMac
fonte
11
Você não poderiam%=10
Timtech 7/14
Bom ponto! Infelizmente, na minha nova revisão, tenho que atribuir esse valor a uma variável diferente, portanto não posso.
BMac 7/11
Ok, me perguntando :)
Timtech
4

Lua, 450 - 10 (cuarto / mídia) - 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)
  • Eliminou 12 bytes reescrevendo o gerador para 21-29.
  • Caiu mais 1 substituindo H>=12porH<12 e de ligar a expressão dependente torno.
  • Caíram mais 4 poluindo o espaço de nomes global de uma função (má, mas no interesse do golfe :).
  • Corrigido o regex, esqueci o cólon. No entanto, não altera a contagem de bytes.
  • Corrigido o caso de zero minutos, trocado table.concat por operações de string e adicionado a sugestão de @ edc65, adicionando 22 bytes.
  • Eu estou envergonhado. Puxar o functioncorpo para dentro do pedaço principal reduziu o comprimento em 15 bytes .
criptych fica com Monica
fonte
Deve usar 'una' por horas, 'uno' por minutos. Então '01: 01 'deve darEs la una y uno
edc65 8/08/14
3

D - 484 bytes

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]);}
Hackerpilot
fonte
Deve usar 'una' por horas, 'uno' por minutos. Então '01: 01 'deve darEs la una y uno
edc65 8/08/14
3

Python 3, 409 bytes

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)])
Hosch250
fonte
Uma longa lista de cordas pode ser encurtado como'string1 string2 string3'.split()
xnor
@xnor Tudo bem, obrigado!
precisa saber é o seguinte
@ hosch250 Além disso, verifique se você está seguindo os comentários na postagem original novamente. Provavelmente estarei fazendo muitas alterações menores nas regras, e essas provavelmente ajudarão você a jogar golfe.
Mdc32
@ mdc32 Ajustando agora. Eu tive alguns erros de qualquer maneira.
precisa saber é o seguinte
2
Você pode reduzir d[j]if i<31 else d[(j+1)%12]para d[(j+(i>30))%12]. Em geral, se suas duas alternativas tiverem uma estrutura semelhante, você poderá criar uma expressão simples que seja igual a cada uma delas, dependendo do booleano.
Xnor
3

Ruby, 313 (338 - 15-10)

Esta solução traduz o horário atual em que nenhuma entrada foi fornecida e adiciona as três frases "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]
britishtea
fonte
Funciona? Tentei em ideone, entrada '01: 01 ', hora atual 20:09, saída:Son las ocho y diecioch
edc65
Todos os casos de teste passaram por mim localmente. Eu vejo que algo deu errado ao copiar os números, então eu vou consertar isso.
britishtea
11
"seite" deve ser "siete" e "neuve" deve ser "nueve"
jmm
2

Bash 423

(433 - 10 = 423, removendo diacríticos e cuarto, poderíamos descer para 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}
Anjo
fonte
Ele já usa 'una' por horas e 'uno' por minutos. Olhar com mais cuidado :)
Ángel
Desculpe, não está claro à primeira vista e o bash é difícil de testar no Windows. +1 então.
Edc65
@ edc66, os ordinais estão no feminino e, em seguida, $ {o [$ m] /% a / o} substitui o a à direita por o durante os minutos.
Ángel
2

Perl - 297 - 10 + 1 = 288 (contando o p bandeira)

Edit: graças a @guifa, agora posso reivindicar um bônus :)

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

Aqui está o mesmo código em várias linhas para facilitar a leitura:

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) . '.'
core1024
fonte
Deve usar 'una' por horas, 'uno' por minutos. Então '01: 01 '- should giveEs la una y uno
edc65 8/08/14
Se você alterar "marmelo" para "cuarto" e "treinta" para "mídia", receberá um bônus de -10.
user0721090601
@ edc65 Espero É OK agora ...
core1024
0

Scala 652 bytes - 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"}.""")}
bb94
fonte
0

Pitão : 277 um monte mais 234 - 10 (bônus de desenho / mídia) = 224 bytes

Agora reduzido em mais de 50 bytes do original!

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

Insanamente longo para Pyth, mas é porque há alguns dados brutos. Provavelmente pode ser jogado ainda mais. Utiliza a técnica óbvia de dividir tarefas em horas, menos / dez, dezenas de minutos e um dígito de minutos e depois converte números usando a matriz de tradução e todo o resto usando uma porcaria de ternários.

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

História do Golfe

  • 10 bytes - bônus, marmelo e trienta podem ser substituídos apenas na matriz de tradução, para que não sejam necessárias alterações, exceto ensaio de tradução e seu mesmo tamanho.
  • 6 bytes - ternários reorganizados - infelizmente isso removeu os 4 operadores ternários consecutivos :(
  • 6 bytes - outros vários jogos de golfe
  • 6 bytes - atribuição inicial de horas / min de golfe
  • +3 bytes - corrigido uno / una
  • 3 bytes - veinti construído a partir de veinte, não codificado
  • 18 bytes - dieci extraído de adolescentes <16
  • 2 bytes - removeu alguns espaços lá sem motivo
  • 2 bytes - usado \ para uma sequência de caracteres
Maltysen
fonte
Para cadeias de caracteres de 1, como ":"e "i", use \:e em \ivez disso.
Isaacg
@isaacg oh legal Eu não sabia que você poderia fazer isso, atualizando
Maltysen