Steven Gerrardは何ゴールを獲得しましたか?


8

スティーブンジェラードは1980年5月30日に生まれました。現在37歳です。お誕生日おめでとう、スティーブン!

彼の記念日を祝うためのあなたの目標は、リバプールのプレミアリーグで彼が毎年獲得した目標の数を思い出させることです。

彼はリバプールでプレーする前または後に得点したゴールを覚えたくありません。それは得点0目標のようなものです。

入力

サッカーシーズンの開始年。

出力

リバプールの今シーズン中にスティーブンが記録したゴール数。

季節と目標のリスト

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

例

Input    Output
2002     5
2017     0
1990     0
2014     9

これはので、各言語でのバイト単位での最短の送信が優先されます。説明が奨励されます。


日付が範囲外の場合は0を返す必要がありますか、それとも例外をスローできますか?
— TheLethalCoder

8
@TheLethalCoderのSteven Gerrardは、0ゴールを決めたことを好む。例外なし
— Weedoze

回答:


3

05AB1E、25 24バイト

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

オンラインでお試しください! またはテストスイートとして

説明

•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

21

JavaScript(ES6)、47 43 42 39バイト

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

どうやって?

次の式を使用して、特定の年yの目標数の概算xを計算します。

x = y % 20 % 9

これは実際には非常に悪い近似ですが、常に期待値v以下であり、v-9を下回ることはありません。これにより、1桁の10進数で差異をエンコードできます。

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

デモ


とてもよくできました。
— シャギー

待つ。あなたはしているコンピューティング入力年から目標の数を、代わりにハードコーディングされたデータベースにインデックスを付けますか?
— SIGSTACKFAULT 2017年

@Blacksilver保存されている値の範囲を1-16から0-9に下げるには、最初の近似値が必要です。しかし、これらの計算された値との差を格納するためにハードコーディングされたルックアップテーブルがまだあります。
— Arnauld、2017年



1

PowerShell、65バイト

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

年が配列にない場合は、3進/配列形式を使用して0を返します。

powershellにはelse return 0フォーマットがなく、完全な配列が必要なため、これは非常に長くなります。もし彼が毎年9点以下のゴールを決めた場合、代わりに文字列にインデックスを付けることでこれを大幅に削減できます。


1

バッシュ、97 93バイト

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

0

C#、79 72バイト

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

0

Braingolf v0.6、48バイト

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

これは変なものです。

キャラクターߎは1998年の序数を持ち、1998年#ߎのブリンゴルフリテラルになり、入力から差し引かれます。

説明:

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


0

JavaScript(ES6)、50 41バイト

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

それを試してみてください

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>

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.