Berapa banyak gol yang dicetak Steven Gerrard?

8

Steven Gerrard lahir pada 30 Mei 1980. Dia sekarang berusia 37 tahun. Selamat ulang tahun, Steven!

Untuk merayakan ulang tahunnya, tujuan Anda adalah untuk mengingatkannya jumlah gol yang telah ia cetak setiap tahun di liga premier untuk Liverpool.

Dia tidak ingin mengingat gol yang dicetak sebelum atau sesudah bermain untuk Liverpool. Ini seperti mencetak 0gol.

Memasukkan

Tahun awal musim sepakbola.

Keluaran

Jumlah gol yang dicetak Steven selama musim ini untuk Liverpool.

Daftar musim dan gol

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

Contoh

Input    Output
2002     5
2017     0
1990     0
2014     9

Ini adalah sehingga pengajuan terpendek dalam byte di setiap bahasa menang. Penjelasan didorong.

Weedoze
sumber
Apakah kita harus mengembalikan 0 jika tanggal di luar kisaran atau bisakah kita melempar pengecualian?
TheLethalCoder
8
@TheLethalCoder Steven Gerrard lebih suka mengatakan bahwa dia telah mencetak 0gol. Tidak terkecuali
Weedoze

Jawaban:

3

05AB1E , 25 24 byte

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

Cobalah online! atau sebagai Test suite

Penjelasan

•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
sumber
21

JavaScript (ES6), 47 43 42 39 byte

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

Bagaimana?

Kami menghitung perkiraan x jumlah sasaran untuk tahun tertentu y dengan rumus:

x = y % 20 % 9

Ini sebenarnya perkiraan yang sangat buruk, tetapi selalu kurang dari atau sama dengan nilai yang diharapkan v dan tidak pernah kurang dari v - 9 , yang memungkinkan untuk menyandikan perbedaan dengan satu angka desimal tunggal.

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
sumber
Dilakukan dengan sangat baik.
Shaggy
Tunggu. Anda menghitung jumlah sasaran dari tahun input, alih-alih mengindeks dalam database yang dikodekan?
SIGSTACKFAULT
@ Blacksilver Saya perlu perkiraan pertama untuk menurunkan kisaran nilai yang disimpan dari 1-16 ke 0-9 . Tapi masih ada tabel pencarian hard-coded untuk menyimpan perbedaan dengan nilai-nilai yang dihitung ini.
Arnauld
3

JavaScript, 44 Bytes

y=>parseInt("173547a7bg9459d9"[y-1999],17)|0
tristan
sumber
1
Selamat datang di PPCG. Jawaban pertama yang bagus :)
Shaggy
2

PHP, 44 Bytes

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

Cobalah online!

Jörg Hülsermann
sumber
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]

menggunakan format ternary / array untuk mengembalikan 0 jika tahun tidak dalam array.

Ini sangat lama karena PowerShell tidak memiliki else return 0format apa pun , dan array lengkap diperlukan, jika dia mencetak 9 gol atau kurang di setiap tahun kita bisa mencukur banyak hal ini dengan mengindeks ke dalam string saja.

colsw
sumber
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
sumber
0

C #, 79 72 byte

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
sumber
0

Braingolf v0.6, 48 byte

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

Ini aneh.

Karakter ߎmemiliki ordinal 1998, membuat Braingolf literal untuk 1998, yang kemudian dikurangi dari input.

Penjelasan:

#ߎ-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
sumber
0

JavaScript (ES6), 50 41 byte

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

Cobalah

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
sumber