[Question]
  [
[The 2020-05-29 xkcd comic](https://xkcd.com/2313/) showed us the numbers that Randall Munroe feels would be most likely to result from multiplication, other than the correct answers. The table does seem to have some sort of twisted logic to it.
For your convenience, the Wrong Times Table is reproduced here in selectable format:
```
+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
|     | 1   | 2   | 3   | 4   | 5   | 6   | 7   | 8   | 9   | 10  |
+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
| 1   | 0   | ½   | 4   | 5   | 6   | 7   | 8   | 9   | 10  | 9   |
| 2   | ½   | 8   | 5   | 6   | 12  | 14  | 12  | 18  | 19  | 22  |
| 3   | 4   | 5   | 10  | 16  | 13  | 12  | 24  | 32  | 21  | 33  |
| 4   | 5   | 6   | 16  | 32  | 25  | 25  | 29  | 36  | 28  | 48  |
| 5   | 6   | 12  | 13  | 25  | 50  | 24  | 40  | 45  | 40  | 60  |
| 6   | 7   | 14  | 12  | 25  | 24  | 32  | 48  | 50  | 72  | 72  |
| 7   | 8   | 12  | 24  | 29  | 40  | 48  | 42  | 54  | 60  | 84  |
| 8   | 9   | 18  | 32  | 36  | 45  | 50  | 54  | 48  | 74  | 56  |
| 9   | 10  | 19  | 21  | 28  | 40  | 72  | 60  | 74  | 72  | 81  |
| 10  | 9   | 22  | 33  | 48  | 60  | 72  | 84  | 56  | 81  | 110 |
+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
```
Flattened text version without headers:
```
0 ½ 4 5 6 7 8 9 10 9 ½ 8 5 6 12 14 12 18 19 22 4 5 10 16 13 12 24 32 21 33 5 6 16 32 25 25 29 36 28 48 6 12 13 25 50 24 40 45 40 60 7 14 12 25 24 32 48 50 72 72 8 12 24 29 40 48 42 54 60 84 9 18 32 36 45 50 54 48 74 56 10 19 21 28 40 72 60 74 72 81 9 22 33 48 60 72 84 56 81 110
```
# Challenge
Your goal is to write a program or function that accepts two numbers as input and returns the corresponding value of the Wrong Times Table as output.
* The inputs and output can be in any format and data type, as long as it is self-evidently clear which number a given value represents. So representing ½ as the floating point number `0.5` or the string `"1/2"` is fine, but representing it as `-1` is not.
* The inputs can be assumed to be integers in the range 1 to 10 inclusive.
* Standard [code-golf](/questions/tagged/code-golf "show questions tagged 'code-golf'") rules and loophole restrictions apply. The shortest code in bytes wins.
# Example Input and Output
Input:
> 
> 5  
> 
>  3
> 
> 
> 
Output:
> 
> 13
> 
> 
> 
# Some possible avenues for golfing
* The table is symmetric across the diagonal.
* There are some patterns in the numbers, e.g. *f*(1, *n*) = *n* + 1 for 3 ≤ *n* ≤ 9.
* The values in the table are usually numerically close to the actual multiplication table, so you could store the differences instead.
* The [explain xkcd wiki page for this comic](https://www.explainxkcd.com/wiki/index.php/2313) has a table showing how each number might have been derived. It may take fewer bits to store these offsets than to store the output numbers directly.
  
[Answer]
# [Python 3](https://docs.python.org/3/), ~~119 ... 110~~ 105 bytes
*-14 bytes thanks to @xnor*
Takes as input an array \$ a\$ consisting of the two integers. Outputs the product of the two numbers based on the *Wrong Times Table*. For the case `[1, 2]` or `[2, 1]`, it outputs `.5`.
```
lambda a:b' \0\n 
\r2
 

(0*	 $-260\n
(H<JH	!0<HT8Qn'[max(a)*~-max(a)//2+min(a)]%126.5
```
[Try it online!](https://tio.run/##bZFBT8IwFIAvgkCIMRoNJJo8o4YNO2i7bnQE7sSbibdthyEOR6QQxEQv@tOxby3h4qF7L69fv/detv7evq2Uv7uFl9WsUPMhfG5zTzbycbJ7z5bTWQbZcNqBhP7WjiqJqlRPodpMNm1@fNJst6DWbF07tFs/gzuPhzRR5xdXzmT0OKlf3tDR5Fk@qU68zL6czO3@eCbp9/nDslA6S@8ZD3vBLlMfMIY4pgR6AQFBQH9DAgMCkkBEgOmbKCUQ47XcXzOuj7BRV5kmOUfMGPAVQ843DNdlHyPT0UfOekJbD@zRHl/XuHYKidy@mW@AgBqZ0FEEJoYUwcFhotJkOwppHg04HgTlYSRsV5qwna4FAm16T4FgZHZDC84kbHuE8MEAVw0RLLeNzHbl5LYfqpDCXDKr5KjzjSK0oCxVCGkRo2naaOSrDRRQKNhkav7qlBfusAFYX/xTh/WmUFunILAgkDsxJqkL4zHoXxwX4AFL40UZ3N0f "Python 3 – Try It Online")
## Explanation
We use a compressed string which stores the answers as ASCII values. And since multiplication is commutative, it doesn't matter in which order the two numbers appear, effectively reducing the compression size by a half.
For the `.5` edge case, we assign the character with the ASCII value `127` to it. Then we apply modulo `126.5` to it. This results in `127 % 126.5` returning `.5`, but all the other values stay the same.
[Answer]
# [Charcoal](https://github.com/somebody1234/Charcoal), 86 bytes
```
§⪪§⪪”#｜D⟦ⅈＱ\Ｓ4,▷-³◨⟦v≔[Q!ξ№﹪⪪wQＣ.≡r¿I↗⎇B⁸⟧“¿*⪫Y<h\/Ｅ¿M‴$ε¬{a⸿Ｒ⁷⊙ZＮU{Ｕⅈ⪪mδp^｜⎇υＯ”¶⌈θ ⌊θ
```
[Try it online!](https://tio.run/##XY7BSgNBEER/pZjTLqwy3dMz6cWTxxwEwWMmhyUKLmxaDTHk78feiBdvXa@Lqjq8T6fDx7S09nya7dw9nrf2@nbtXj6X@b8KRBEjmJESRFEiNgwV5AKlarGaIt7nau5zWi0xMgqoVMtxPRiUwL@fDUhWwhks1cSjblLAI8QT1KF6ISncngokw2Oym73XO8jHEFhXt5N1j4QBoVroBzxN1/n4fey@ehcBNzTbH@ofWtvtxgG637e7y/ID "Charcoal – Try It Online") Takes input as a tuple. Explanation:
```
    ”...”       Compressed string of rotated lower left half of table
   ⪪     ¶      Split on newlines
  §       ⌈θ    Cyclically indexed by maximum of both inputs
 ⪪              Split on spaces
§            ⌊θ Cyclically indexed by minimum of both inputs
                Implicitly print
```
Because Charcoal is 0-indexed and the input is 1-indexed I've rotated the diagonal of the lower left half of the table to the left of the first column and then rotated the last row to above the first row so that the cyclic indexing picks up the desired result.
[Answer]
# [Jelly](https://github.com/DennisMitchell/jelly), ~~75~~ 71 [bytes](https://github.com/DennisMitchell/jelly/wiki/Code-page)
```
“µẎḂƬḌƑ®ṢṄḶ+/ḤƇ’BT3+.;Żṃ@“¦¦SȤSḢ⁺ḥȧ⁹ .rOƘ,ṃȯJƓṄƭ3ƝṁṫY-ŻḂƇS|~Ƭø’
ṀḶS+Ṃị¢
```
A monadic Link accepting a pair of integers in \$[1..10]\$ which yields a number.
**[Try it online!](https://tio.run/##AZoAZf9qZWxsef//4oCcwrXhuo7huILGrOG4jMaRwq7huaLhuYThuLYrL@G4pMaH4oCZQlQzKy47xbvhuYNA4oCcwqbCplPIpFPhuKLigbrhuKXIp@KBuSAuck/GmCzhuYPIr0rGk@G5hMatM8ad4bmB4bmrWS3Fu@G4gsaHU3x@xqzDuOKAmQrhuYDhuLZTK@G5guG7i8Ki////NCw4 "Jelly – Try It Online")**
### How?
```
“...’BT3+.;Żṃ@“...’ - Link 1, get lower left of table as a flat list: no arguments
“...’               - a large number in base 250
     B              - convert to binary
      T             - truthy indices
       3+           - add three to them all -> all distinct values except 0 and 0.5)
         .;         - prepend a 0.5
           Ż        - prepend a zero -> all 37 distinct values
              “...’ - a large number in base 250
            ṃ@      - convert the large number to base 37 using the values as the digits
                      -> [0, 0.5, 8, 4, 5, 10, 5, 6, 16, 32, 6, 12, 13, 25, 50, 7, 14, 12, 25, 24, 32, 8, 12, 24, 29, 40, 48, 42, 9, 18, 32, 36, 45, 50, 54, 48, 10, 19, 21, 28, 40, 72, 60, 74, 72, 9, 22, 33, 48, 60, 72, 84, 56, 81, 110]
ṀḶS+Ṃị¢ - Link, get answer: list of two integers in [1..10], [a,b]
Ṁ       - maximum ([a,b])
 Ḷ      - lowered range -> [0,1,...,max(a,b)-1]
  S     - sum these up
    Ṃ   - minimum ([a,b])
   +    - add
      ¢ - call last Link (2) as a nilad -> lower left of table as a flat list
     ị  - index into
```
[Answer]
# [05AB1E](https://github.com/Adriandmen/05AB1E), 100 bytes
-2 thanks to Kevin Cruijssen.
```
•k?-…ÚêQïBJÿ}Å0ß7E'ûcŒa’н
[α¡¥jεĆ3fΣòZεgǝ/ζân[Qx¯#g)zòš¤¥Ägq)†c³±!Ãæwª“‹í«“ε®™â©₂ÿQ`•ƵAв1;š¬9ǝ0šs<Jè
```
[Try it online!](https://tio.run/##AbYASf9vc2FiaWX//@KAoms/LeKApsOaw6pRw69CSsO/fcOFMMOfN0Unw7tjxZJh4oCZ0L0KW86xwqHCpWrOtcSGM2bOo8OyWs61Z8edL862w6JuW1F4wq8jZyl6w7LFocKkwqXDhGdxKeKAoGPCs8KxIcODw6Z3wqrigJzigLnDrcKr4oCczrXCruKEosOiwqnigoLDv1Fg4oCixrVB0LIxO8Whwqw5x50wxaFzPErDqP//WzEwLDEwXQ "05AB1E – Try It Online")
# [05AB1E](https://github.com/Adriandmen/05AB1E), 102 bytes
The number `2` never appears in the multiplication table, so I used it to compress the list of the numbers.
```
•AjĆмÁмyÌÁÅÿ‰™ªŸ∞mÇ,—.¿b!:ý₆¥p¶ço₃w`2å,3‚ĆžáààÄd±íŠH¢Xζ±-ε₁ÎZ₆ºλΓm.Óc9˜}‘UÔœ`Ÿā£ƒn¨£T•111в2¸1;¸‡0šs<Jè
```
[Try it online!](https://tio.run/##AcIAPf9vc2FiaWX//@KAokFqxIbQvMOB0Lx5w4zDgcOFw7/igLDihKLCqsW44oiebcOHLOKAlC7Cv2IhOsO94oKGwqVwwrbDp2/igoN3YDLDpSwz4oCaxIbFvsOhw6DDoMOEZMKxw63FoEjColjOtsKxLc614oKBw45a4oKGwrrOu86TbS7Dk2M5y5x94oCYVcOUxZNgxbjEgcKjxpJuwqjCo1TigKIxMTHQsjLCuDE7wrjigKEwxaFzPErDqP//WzEwLDEwXQ "05AB1E – Try It Online")
## Explanation
```
•AjĆмÁмyÌÁÅÿ‰™ªŸ∞mÇ,—.¿b!:ý₆¥p¶ço₃w`2å,3‚ĆžáààÄd±íŠH¢Xζ±-ε₁ÎZ₆ºλΓm.Óc9˜}‘UÔœ`Ÿā£ƒn¨£T•111в
The huge compressed table
2¸1;¸‡ Translate all 2's into 0.5's
0š     Prepend a 0 (which is removed during base conversion)
s      Swap up the list of indices.
<      Decrement both indices.
J      Join these indices into a single number.
è      Index into the table.
```
```
[Answer]
# JavaScript, ~~114~~ 113 bytes
Input as `f(1)(2)`. Port of [@dingledooper's Python 3 answer](https://codegolf.stackexchange.com/a/205427/47097).
```
a=>b=>` \0
 
\r2
 

(0*	 $-260\n
(H<JH	!0<HT8Qn`.charCodeAt((M=a>b?a:b)*~-M/2+(a<b?a:b))%126.5
```
[Try it online!](https://tio.run/##RY/NattAEIAvzY@ECaGhIYEEptCilbNWpdVKXqeWQykBU8ih0FtsyNqxmwZjBdn5OSUv0WMeILe8U17Emdld48NqVjPffjNzre/0bFj9u5k37tRiXCx00RkUnQvoxU@bH9b8tfVtWK/1qn2xsVXb34PN2t4hi@veR/jSEHncm@58OmDd9q@ut/s5bnf/qN/Ti2h4pauf5eXox5yxs0J3Bif6eBDWHxtn38QR0237H35NRB5li@/nvncec4gyDpIDfnMOTQ6KQ4tDgpVWnyNCdbWsJwKPdBGzCaJCGM466F1CYGohgemUYoIxNaAz5a6QuYOmFHMCrVIZcNkvtUQWW53EKDMb89iQzdVUxuWaSmVfNQUdQ6rVWNTRuKgj5jJJPlxWGrJlNyQPzSXdBETRiybtmxvS7NyyO5rxXUuSEUZ3lSylgoSpleSOVEZGFJqSuO/3o3FZnerhFWNVec9hEELR8T28rwoPHLRNe8NyOisno2hS/mUajgA1QT3AZ@5e4L0azW4ncyhgbJGQmWq4qhTwACcQvD3/D@AY48trEPpe6IeLdw "JavaScript – Try It Online")
]