Quantos gols Steven Gerrard marcou?

8

Steven Gerrard nasceu em 30 de maio de 1980. Ele agora tem 37 anos. Feliz aniversário, Steven!

Para comemorar seu aniversário, seu objetivo é lembrá-lo do número de gols que ele marcou todos os anos na Premier League pelo Liverpool.

Ele não quer se lembrar dos gols marcados antes ou depois de jogar pelo Liverpool. É como marcar 0gols.

Entrada

O ano de início da temporada de futebol.

Resultado

O número de gols marcados por Steven nesta temporada para o Liverpool.

Lista de estações e objetivos

1998–99     0
1999–2000   1   
2000–01     7   
2001–02     3   
2002–03     5   
2003–04     4   
2004–05     7   
2005–06     10  
2006–07     7   
2007–08     11  
2008–09     16  
2009–10     9   
2010–11     4   
2011–12     5   
2012–13     9   
2013–14     13  
2014–15     9

Exemplo

Input    Output
2002     5
2017     0
1990     0
2014     9

Este é o pelo que vence o envio mais curto em bytes em cada idioma. As explicações são incentivadas.

Weedoze
fonte
Temos que retornar 0 se a data estiver fora do intervalo ou podemos lançar uma exceção?
TheLethalCoder
8
@TheLethalCoder Steven Gerrard prefere dizer que marcou 0gols. Nenhuma exceção
Weedoze

Respostas:

3

05AB1E , 25 24 bytes

•3ßÎó‚4Ëǝï•17в15ÝƵÊØ+Ikè

Experimente online! ou como um conjunto de testes

Explicação

•3ßÎó‚4Ëǝï•                 # push the number 69255401071877657848
           17в              # convert to list of base-17 digits
                            # produces the list [1,7,3,5,4,7,10,7,11,16,9,4,5,9,13,9,0]

              15Ý           # push the range [0 ... 15]
                 ƵÊØ+       # add the 303rd prime (1999) to each
                     Ik     # get the index of the input in this list
                            # or -1 if outside the range
                       è    # get the element at that index in first list
Emigna
fonte
21

JavaScript (ES6), 47 43 42 39 bytes

y=>+'0723135148933694'[y-1999]+y%20%9|0

Quão?

Calculamos uma aproximação x do número de metas para um determinado ano y com a fórmula:

x = y % 20 % 9

Essa é realmente uma aproximação muito ruim, mas é sempre menor ou igual ao valor esperado ve nunca menos que v-9 , o que permite codificar a diferença com um único dígito decimal.

y    | y % 20 | x = y % 20 % 9 | v  | v - x
-----+--------+----------------+----+------
1999 |     19 |              1 |  1 |     0
2000 |      0 |              0 |  7 |     7
2001 |      1 |              1 |  3 |     2
2002 |      2 |              2 |  5 |     3
2003 |      3 |              3 |  4 |     1
2004 |      4 |              4 |  7 |     3
2005 |      5 |              5 | 10 |     5
2006 |      6 |              6 |  7 |     1
2007 |      7 |              7 | 11 |     4
2008 |      8 |              8 | 16 |     8
2009 |      9 |              0 |  9 |     9
2010 |     10 |              1 |  4 |     3
2011 |     11 |              2 |  5 |     3
2012 |     12 |              3 |  9 |     6
2013 |     13 |              4 | 13 |     9
2014 |     14 |              5 |  9 |     4

Demo

Arnauld
fonte
Muito bem feito.
Shaggy
Esperar. Você está computando o número de metas do ano de entrada, em vez de indexar em um banco de dados codificado?
SIGSTACKFAULT
@Blacksilver Preciso de uma primeira aproximação para diminuir o intervalo de valores armazenados de 1-16 a 0-9 . Mas ainda há uma tabela de pesquisa codificada para armazenar as diferenças com esses valores calculados.
Arnauld
3

JavaScript, 44 bytes

y=>parseInt("173547a7bg9459d9"[y-1999],17)|0
Tristan
fonte
1
Bem-vindo ao PPCG. Boa primeira resposta :)
Shaggy
2

PHP, 44 bytes

<?=intval(_173547a7bg9459d9[$argn-1998],17);

Experimente online!

Jörg Hülsermann
fonte
1

PowerShell, 65 bytes

(($g=(1,7,3,5,4,7,10,7,11,16,9,4,5,9,13,9)["$args"-1999]),0)[!$g]

usa um formato ternário / matriz para retornar 0 se o ano não estiver na matriz.

Isso é muito longo, porque o powershell não tem nenhum else return 0formato, e a matriz completa é necessária; se ele marcou 9 ou menos gols em cada ano, poderíamos economizar muito, indexando em uma string.

colsw
fonte
1

Bash, 97 93 bytes

a=(1 7 3 5 4 7 10 7 11 16 9 4 5 9 13 9)
((2014<$1||$1<1999))&&(echo 0)||(echo $[a[$1-1999]])
DrnglVrgs
fonte
0

C #, 79 72 bytes

y=>new[]{0,1,7,3,5,4,7,10,7,11,16,9,4,5,9,13,9}[y>2014|y<1999?0:y-1998];
TheLethalCoder
fonte
0

Braingolf v0.6, 48 bytes

#ߎ-V173547#
792+82*945994+9&,0R!?1-[v>R]v_:0_|;

Esta é uma estranha.

O personagem ߎtem o ordinal 1998, tornando o Braingolf literal para 1998, que é subtraído da entrada.

Explicação:

#ߎ-V173547#
792+82*945994+9&,0R!?1-[v>R]v_:0_|;  Implicit input of n
#ߎ-                                  Subtract 1998 from n
   V                                 Create a new stack and switch to it
    173547                           Digit literals 1, 7, 3, 5, 4 and 7
          #<newline>                 Integer literal 10
792                                  Digit literals 7, 9 and 2
   +                                 Sum the last 2 items (9 and 2) to make 11
    82*                              Digit literals 8 and 2 multiplied to make 16
       9459                          Digit literals 9, 4, 5 and 9
           94+                       Digit literals 9 and 4 summed to make 13
              9                      Digit literal 9
               &,                    Reverse stack
                 0                   Digit literal 0
                  R                  Return to main stack
                   !?                If n != 0
                     1-              Decrement n
                       [...]         Loop, repeat n+1 times
                        v>           Move to next stack and rotate to the right
                          R          Return to main stack
                            v_       Move to next stack and output last item
                              :      Else
                               0_    Push zero and output
                                 |   Endif
                                  ;  Suppress implicit output
Skidsdev
fonte
0

JavaScript (ES6), 50 41 bytes

y=>+`0x${"06243696af8348c8"[y-1999]}`+1|0

Tente

f=
y=>+`0x${"06243696af8348c8"[y-1999]}`+1|0
oninput=_=>o.innerText=f(+i.value)
o.innerText=f(i.value=1998)
<input id=i type=number><p id=o>

Shaggy
fonte