[Question]
  [
The [Xerox Alto](https://history-computer.com/ModernComputer/Personal/Alto.html), originally released in 1973, was the [first](https://arstechnica.com/features/2005/05/gui/3/) computer to feature the now-familiar angled mouse pointer. The Alto's bitmapped pointer looked like this (redrawn from Fig. 2 [here](http://bitsavers.trailing-edge.com/pdf/xerox/parc/techReports/VLSI-81-1_The_Optical_Mouse.pdf)):
[![enter image description here](https://i.stack.imgur.com/sEyuYm.png)](https://i.stack.imgur.com/sEyuYm.png)
Your task in this [code-golf](/questions/tagged/code-golf "show questions tagged 'code-golf'") challenge is to write a program/function that generates an ASCII art representation of the mouse pointer pictured above. Rules:
1. Input is a positive integer \$n\$, which is a scaling factor for the output.
2. Represent each black pixel as an \$n\times{}n\$ block of any single printable character. (The test cases use `@`, which vaguely resembles a mouse viewed from above.)
3. Similarly, represent each empty pixel to the bottom/left of the pointer as an \$n\times{}n\$ block of a second printable character. (Spaces are used in the test cases.)
4. Optionally, your output may also include the empty pixels to the top/right of the pointer, represented by the same character chosen under Rule 3.
5. Any sensible output format (e.g. multi-line string, array of strings, matrix of characters) is acceptable.
6. A single trailing newline at the end of the output is permitted.
### Test cases
\$n = 1\$
```
@
@@
@@@
@@@@
@@@@@
@@@@@@
@@@@@@@
@@@@
@@ @@
@  @@
    @@
    @@
     @@
     @@
      @@
      @@
```
\$n = 2\$
```
@@
@@
@@@@
@@@@
@@@@@@
@@@@@@
@@@@@@@@
@@@@@@@@
@@@@@@@@@@
@@@@@@@@@@
@@@@@@@@@@@@
@@@@@@@@@@@@
@@@@@@@@@@@@@@
@@@@@@@@@@@@@@
@@@@@@@@
@@@@@@@@
@@@@  @@@@
@@@@  @@@@
@@    @@@@
@@    @@@@
        @@@@
        @@@@
        @@@@
        @@@@
          @@@@
          @@@@
          @@@@
          @@@@
            @@@@
            @@@@
            @@@@
            @@@@
```
\$n = 3\$
```
@@@
@@@
@@@
@@@@@@
@@@@@@
@@@@@@
@@@@@@@@@
@@@@@@@@@
@@@@@@@@@
@@@@@@@@@@@@
@@@@@@@@@@@@
@@@@@@@@@@@@
@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@
@@@@@@@@@@@@
@@@@@@@@@@@@
@@@@@@   @@@@@@
@@@@@@   @@@@@@
@@@@@@   @@@@@@
@@@      @@@@@@
@@@      @@@@@@
@@@      @@@@@@
            @@@@@@
            @@@@@@
            @@@@@@
            @@@@@@
            @@@@@@
            @@@@@@
               @@@@@@
               @@@@@@
               @@@@@@
               @@@@@@
               @@@@@@
               @@@@@@
                  @@@@@@
                  @@@@@@
                  @@@@@@
                  @@@@@@
                  @@@@@@
                  @@@@@@
```
  
[Answer]
# JavaScript (ES6), ~~92 91~~ 90 bytes
*Saved 1 byte thanks to @Neil*
Returns a string with \$0\$'s for transparent pixels and \$1\$'s for black pixels.
```
n=>(g=k=>--k?(x=k/n%8,y=k/n/n/8,(~1<<(y>9?y-9:13-y)|3<<y/2)>>x&1)+[`
`[x]]+g(k):1)(n*n<<7)
```
[Try it online!](https://tio.run/##FcVLDoIwEADQPaeYjTJjqaSyELUtB0ESiAJRyNSIMTR@ro6Yt3jX6lkNp/vl9pDszvXUmImNxdZ0xkrZZTiaLuZFGvn/szTCr9Iavd1lXu72KpGe3onWPt6QteNSkcjLoMzHohAtdrRXhLxirbc0Ne6ODAbUARi0gWReCIJXAHByPLi@XveuxQaZQEB45JAOwWf6AQ "JavaScript (Node.js) – Try It Online")
or [Try it with the characters used in the challenge](https://tio.run/##FcrLDoIwEEDRPV8xG2XGUkhl4aut/geSSBCIQqYGjaHx8euIuYuzudfiWdzL/nJ7SHbnaqzNyMZiY1pjpWz3OJg24dk68n@n1hF@ldbo7Wbv5WarUunpnWrtkyVZO8wViewUnLIhz0WDLW0VIS9Y6xWNteuRwYDaAYM2kE4KQfAKAErHd9dVcecarJEp7qtbV5QVJnHSRNNvLIRwCDPOCQSERw5pF3zGHw) for easier comparison
### How?
Given the scaling factor \$n\$ as input, we output the bit \$\lfloor x\rfloor\bmod 8\$ of the bitmask corresponding to the row \$\lfloor y\rfloor\$ for each \$k\$, \$0\le k <128\times n^2\$, with \$x=k/n\$ and \$y=k/(8\times n^2)\$.
To generate the bitmask of a given row, we use two small expressions whose results are OR'd together. Only the 8 least significant bits are shown below. The other ones are ignored anyway.
```
floor(y) -> A(y)  OR  B(y)   =  result
   15     10000000  10000000   10000000    with:
   14     11000000  10000000   11000000
   13     11100000  11000000   11100000    A(y) = ~1 << (y > 9 ? y - 9 : 13 - y)
   12     11110000  11000000   11110000    B(y) = 3 << y / 2
   11     11111000  01100000   11111000
   10     11111100  01100000   11111100
    9     11111110  00110000   11111110
    8     11100000  00110000   11110000
    7     11000000  00011000   11011000
    6     10000000  00011000   10011000
    5     00000000  00001100   00001100
    4     00000000  00001100   00001100
    3     00000000  00000110   00000110
    2     00000000  00000110   00000110
    1     00000000  00000011   00000011
    0     00000000  00000011   00000011
```
A linefeed is appended to the output whenever \$k/n\$ is a multiple of \$8\$.
[Answer]
# [05AB1E](https://github.com/Adriandmen/05AB1E/wiki/Commands), ~~33~~ 31 [bytes](https://github.com/Adriandmen/05AB1E/wiki/Codepage)
```
•4CîιZ›ÚAôçè~]ß4ÿ•Ƶāвε2в¦I×JIF=
```
Outputs with `1` for `@` and `0` for spaces.
-1 byte by not outputting trailing `0`/spaces.
[Try it online](https://tio.run/##AUkAtv9vc2FiaWX//@KAojRDw67OuVrigLrDmkHDtMOnw6h@XcOfNMO/4oCixrXEgdCyzrUy0LLCpknDl0pJRj3//zP/LS1uby1sYXp5) or [verify all test cases](https://tio.run/##yy9OTMpM/W/iquSZV1BaYqWgZO93aKUOl5J/aQmEr/P/UcMiE@fD687tjHrUsOvwLMfDWw4vP7yiLvbwfJPD@4GSx7Yeabyw6dxWowubDi07tO7wdK9D69xs/9fWHtpm//@/rm5evm5OYlUlAA).
**Explanation:**
```
•4CîιZ›ÚAôçè~]ß4ÿ• # Push compressed integer 5077310163681960509504474007720499199
 Ƶā                # Push compressed integer 260
   в               # Convert the larger integer to base-260 as list:
                   #  [3,7,15,31,63,127,255,31,59,51,67,67,131,131,259,259]
    ε              # Foreach over the integers in this list:
     2в            #  Convert it to a binary-list
       ¦           #  Remove the leading 1
        I×         #  Repeat each character the input amount of times
          J        #  Join it together to a single string
           IF      #  Inner loop the input amount of times:
             =     #   Print the line with trailing newline (without popping the string)
```
[See this 05AB1E tip of mine (sections *How to compress large integers?* and *How to compress integer lists?*)](https://codegolf.stackexchange.com/a/166851/52210) to understand why `•4CîιZ›ÚAôçè~]ß4ÿ•` is `5077310163681960509504474007720499199`; `Ƶā` is `260`; and `•4CîιZ›ÚAôçè~]ß4ÿ•Ƶāв` is `[3,7,15,31,63,127,255,31,59,51,67,67,131,131,259,259]`.
[Answer]
# [APL (Dyalog Extended)](https://github.com/abrudz/dyalog-apl-extended), 31 bytes
```
{⍵/⍵⌿⌽⍉⊤⎕AV⍳'⍞§):┼|¨:┴│⍫⍫⍀⍀¢¢'}
```
[Try it online!](https://tio.run/##SyzI0U2pTMzJT9dNrShJzUtJTfn/qG@qp/@jtgkG/6sf9W7VB@JHPfsf9ex91Nv5qGsJUNYx7FHvZvVHvfMOLde0ejRlT82hFUBqy6MpTY96V4NRAxAdWnRokXrt/zSgSY96@x51NR9ab/yobSJQf3CQM5AM8fAM/p@mYMQFAA "APL (Dyalog Extended) – Try It Online")
I guess this is the best APLers can do for now. Outputs a numeric matrix of zeros and ones, as per the [clarification](https://codegolf.stackexchange.com/questions/211641/cat-a-mouse-ascii-art-pointers#comment498312_211641).
Basically the same approach as [Razetime's answer](https://codegolf.stackexchange.com/a/211644/78410), using `⎕IO←0` to avoid unprintables.
~~Hey, it tied with Jelly AND 05AB1E!~~ Almost...
[Answer]
# [APL (Dyalog Extended)](https://github.com/abrudz/dyalog-apl-extended), 41 bytes
```
{⎕A[1+⍵/⍵⌿⍉⊤(⎕AV⍳'⌷⊤└¶⍝ ⎕¶"í'),2/12 6 3]}
```
[Try it online!](https://tio.run/##SyzI0U2pTMzJT9dNrShJzUtJTfn/v/pR31THaEPtR71b9YH4Uc/@R72dj7qWaIDEwx71blZ/1LMdyH80ZcqhbY965x5aAJQ4tE3p8Fp1TR0jfUMjBTMF49ja/2mP2iY86u171NX8qHfNo94th9YbP2qbCFQbHOQMJEM8PIP/pykYcQEA "APL (Dyalog Extended) – Try It Online")
Letter `B` for colored pixels, `A` for transparent pixels.
Uses an [APL tip from Andriy Makukha](https://codegolf.stackexchange.com/a/206779/80214) to compress integers.
## Explanation
```
{⎕A[1+⍵/⍵⌿⍉⊤(⎕AV⍳'⌷⊤└¶⍝ ⎕¶"í'),2/12 6 3]} ⍵ → n
                               2/12 6 3   12, 6 and 3 repeated in place
                 '⌷⊤└¶⍝ ⎕¶"í'             String of compressed values
            (⎕AV⍳            )            The SBCS codepoints of the string
                              ,           Join them
          ⍉⊤                              convert to binary & transpose
      ⍵/⍵⌿                                replicate each element n times along both axes
    1+                                    Add 1 to each for getting 1-based indices
 ⎕A[                                   ]  Index the grid into the alphabet
```
[Answer]
# [05AB1E](https://github.com/Adriandmen/05AB1E), 29 bytes
White pixels are represented by `0`, black pixels by `1`.
```
•ˆ‰₃%ʒ„úVð“£Xfóó”•b8ôεSI×JIF=
```
[Try it online!](https://tio.run/##AUoAtf9vc2FiaWX//@KAosuG4oCw4oKDJcqS4oCew7pWw7DigJzCo1hmw7PDs@KAneKAomI4w7TOtVNJw5dKSUY9//8z/y0tbm8tbGF6eQ "05AB1E – Try It Online")
**Commented**:
The `IF=` part is taken from [Kevin's answer](https://codegolf.stackexchange.com/a/211642/64121).
```
•ˆ‰₃%ʒ„úVð“£Xfóó”•              # long compressed integer, encodes the 16x8 cursor
                  b             # convert to binary
                   8ô           # split into chunks of 8 digits (rows)
                     ε          # map over the rows ...
                      S         #   split into characters
                       I×       #   multiply each with the input
                         J      #   join into a single string
                          I     #   push the input
                           F    #   for loop in the range [0, input)
                            =   #   print row without popping
```
---
# [05AB1E](https://github.com/Adriandmen/05AB1E), 27 bytes
This generates the first seven lines more manually but has some inconsistent spacing. If `X7L×` is replace by `₁7LRo-b`, the spacing is consistent again at 30 bytes.
```
X7L×•ùΛh‡Wgÿ™Œ•b8ô«εSI×JIF=
```
[Try it online!](https://tio.run/##AUMAvP9vc2FiaWX//1g3TMOX4oCiw7nOm2jigKFXZ8O/4oSixZLigKJiOMO0wqvOtVNJw5dKSUY9/8K7/zL/LS1uby1sYXp5 "05AB1E – Try It Online")
---
# [05AB1E](https://github.com/Adriandmen/05AB1E), 31 bytes
Same output format, uses run length encoding.
```
TÞ•€¶àĆαL0šDž¬тq•8вÅΓ8ôεSI×JIF=
```
[Try it online!](https://tio.run/##AUkAtv9vc2FiaWX//1TDnuKAouKCrMK2w6DEhs6xTDDFoUTFvsKs0YJx4oCiONCyw4XOkzjDtM61U0nDl0pJRj3//zL/LS1uby1sYXp5 "05AB1E – Try It Online")
**Commented**:
```
T                        # push 10
 Þ                       # cycle indefinitely
                         # produces 10101..., the characters used for RLE
  •€...q•8в              # compressed list of lengths [1,7,2,6,3,5,4,4,5,3,6,2,7,1,4,4,2,1,2,3,1,2,2,7,2,6,2,7,2,6,2,7,2,6,2]
           ÅΓ            # run length decode
             8ô          # split into chunks of 8
               εSI×JIF=  # the same as above
```
[Answer]
# [Perl 5](https://www.perl.org/) + `-a -M5.10.0`, 66 bytes
Outputs `1` for black and `0` for empty pixels.
**Note**: This script utilises unprintables, which are represented using escapes below. [Verification for 66 bytes.](https://tio.run/##jc7BTsMwDAbg@57iV4QQoDVznczJ2IQQB248RJclMDHWqt1gPH1JoRcEh/lg2Y79Keuqe@n702mDooXe7pvjQR@2Ne7wVh@7WDT1dn@IrW52y8lHQBH@mTex3aGoUDzNdUma/qxgtVqhPHeRl31PY9zCGU7gOCTLAueZYckKmPNMnMzBISd0Mz27uDyp@0c1e47TOPkRysEQKSEhXzqTK7cw63zufE6WYCU/iEgC3qud6qrPpfpmUj0aPBjMBDeXCEeDZmQw2MOyydCCq6ENQIvjvqnCq7p68Nc3ajoaJht5nRAoEhIljxRSzNXGY@EpgAIJSMgASv@O0bDZIJN/e05o9QU)
```
s/./$&x"@F"/ge,eval"say;"x"@F"for unpack"(B8)*","................"
```
[Try it online!](https://tio.run/##K0gtyjH9/79YX09fRa1CycFNST89VSe1LDFHqTix0loJLJSWX6RQmleQmJytpOFkoamlpKMUU2FhEFORDMSpQJwGwhZAnAzEqRB@CpBvCcQGyVBsBsXGIKz0/78hlxGX8b/8gpLM/Lzi/7qJ/3V9TfUMDfQMAA "Perl 5 – Try It Online")
## Explanation
Using `-a` the input number is stored (as the only index) in `@F`, which can be interpolated into a string (`"@F"`) saving one byte over using `$F[0]` notation, to control the repetition of characters and lines, as using `-n` would only store the number in `$_`, which is overwritten in the body of the `for`. The string at the end represents the binary data for black or empty pixels which is `unpack`ed in lengths of `8`. In the body of the postfix `for` loop, each block of 8 bits, represented as a string of `0`s and `1`s, is stored in `$_`. First each char in the string is replicated `"@F"` times (`s/./$&x"@F"/ge`) then `eval` is called on a string that contains `"@F"` repetitions of `"say;"` outputting `$_` the number of desired times.
[Answer]
# [J](http://jsoftware.com/), ~~55~~ ~~50~~ 49 bytes
-1 byte thanks to xash!
```
##"1&(16 8$#:96x#._32+3 u:'#dppv6SI=Hz`rW~|%1rc')
```
[Try it online!](https://tio.run/##y/qvpKeepmBrpaCuoKNgoGAFxLp6Cs5BPm7/lZWVDNU0DM0ULFSUrSzNKpT14o2NtI0VSq3UlVMKCsrMgj1tPaoSisLralQNi5LVNf9rcilwpSZn5CukKRhCGOrqMAEjdAHj/wA "J – Try It Online")
Ouptus a matrix of 1's and 0s.
[Answer]
# [Jelly](https://github.com/DennisMitchell/jelly), 25 [bytes](https://github.com/DennisMitchell/jelly/wiki/Code-page)
```
7Żx2r‘$Ṭ
3Ėr7,1FRoÇṠz0xɗ⁺
```
A monadic Link accepting the scaling factor which yields a list of lists of pixel bits (1s are the arrow, 0s are the background)
**[Try it online!](https://tio.run/##ATMAzP9qZWxsef//N8W7eDJy4oCYJOG5rAozxJZyNywxRlJvw4fhuaB6MHjJl@KBuv/Dh1n//zM "Jelly – Try It Online")** (footer calls the link, joins with newlines and prints a smashed version of the resulting list)
### How?
```
3Ėr7,1FRoÇṠz0xɗ⁺ - Link: positive integer, n
3                - three
 Ė               - enumerate -> [1,3]
   7,1           - [7,1]
  r              - inclusive range (vectorises) -> [[1,2,3,4,5,6,7],[3,2,1]]
      F          - flatten -> [1,2,3,4,5,6,7,3,2,1]
       R         - range -> [[1],[1,2],...,[1,2,3,4,5,6,7],[3,2,1],[2,1],[1]]
         Ç       - call Link 1 as a monad - f(n)
        o        - logical OR (vectorises)
          Ṡ      - sign (i.e. convert all the positive integers to 1s)
               ⁺ - do this twice:
              ɗ  -   last three links as a dyad - f(matrix, n)
            0    -     zero
           z     -     transpose (matirix) with filler (0)
             x   -     repeat elements (n) times
7Żx2r‘$Ṭ - Link 1: positive integer, n
7        - seven
 Ż       - zero-range -> [0,1,2,3,4,5,6,7]
   2     - two
  x      - repeat elements -> [0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
      $  - last two links as a monad - f(that):
     ‘   -   increment     -> [1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8]
    r    - inclusive range -> [[0,1],[0,1],[1,2],[1,2],[2,3],[2,3]...,[7,8]]
       Ṭ - un-truth        -> [[1],[1],[1,1],[1,1],[0,1,1],[0,1,1],...,[0,0,0,0,0,0,1,1]
```
---
Also 25 bytes:
```
“ṚẒỴġị!=gEḃĖT⁴ċṪ ’Bs8Zx¥⁺ - Link: positive integer, n
“ṚẒỴġị!=gEḃĖT⁴ċṪ ’        - base 250 number = 171142666808876275700130073576311489283
                  B       - to binary
                   s8     - split into slices of length (8)
                        ⁺ - do this twice:
                       ¥  -   last two links as a dyad - f(matrix, n)
                     Z    -     transpose
                      x   -     repeat element (n) times
```
[Try it online!](https://tio.run/##AT8AwP9qZWxsef//4oCc4bma4bqS4bu0xKHhu4shPWdF4biDxJZU4oG0xIvhuaog4oCZQnM4WnjCpeKBuv/Dh1n//zM "Jelly – Try It Online")
[Answer]
# [Charcoal](https://github.com/somebody1234/Charcoal), 35 bytes
```
ＮθＦ⪪“∨:[¿θ≡↥χ№pTξ⟧M~▶§×¬‴↥”¶Ｅθ⭆ι×θμ
```
[Try it online!](https://tio.run/##S85ILErOT8z5/98zr6C0xK80Nym1SKNQ05orLb9IQSO4ICezRENJLyZPD4whBJSEUXAaSVYBTCmAKQUFTBoLA4WlpKOgFJOnpKmpEFCUmVei4ZtYoFGooxBcAuSlgziZOgohmbmpxSDRXE0gsP7/3@i/blkOAA "Charcoal – Try It Online") Link is to verbose version of code. Outputs using `.`s and spaces (newlines, spaces and `.`s are the golfiest characters for Charcoal compression). Explanation:
```
Ｎθ
```
Input `n`.
```
Ｆ⪪“∨:[¿θ≡↥χ№pTξ⟧M~▶§×¬‴↥”¶
```
Split a compressed representation of the arrow into lines and loop over each line.
```
Ｅθ⭆ι×θμ
```
Expand each line `n` times vertically and horizontally.
Alternative approach, also 35 bytes:
```
ＮθＦχＥθ×.×⎇‹ι⁷⊕ι⁻χιθＪ⁰⊗θＦ⁷«ＵＯ⊗θ.Ｍθ⊗θ
```
[Try it online!](https://tio.run/##VU47DsIwDJ3pKaxOjhQQsHToylJEgaEXSIuBSPm0SVMJIc4e0qFCeHrPfh93T@E6K1SMlenDeA66JYcDK7O7dYC7LYOrk2bEWvQ4cGikJo/5Jl9gQ84I98ITeY@SQ8E4VKZzpMmMdEOZeC1N8CmLw8wGlqbMjkH3jcW0PNjQqiQd2FJbMHhnq0urrHng78whFSfNqrYTzd/8OT8x7uN6Ul8 "Charcoal – Try It Online") Link is to verbose version of code. Outputs using `.` and spaces although any non-space printable ASCII could be used. Explanation:
```
Ｎθ
```
Input `n`.
```
Ｆχ
```
Start by printing the first 10 rows of the arrow.
```
Ｅθ×.×⎇‹ι⁷⊕ι⁻χιθ
```
Print a staircase from `1` to `7`, then down from `3` to `1`, all expanded `n` times.
```
Ｊ⁰⊗θ
```
Jump to the beginning of the second row.
```
Ｆ⁷«
```
Loop 7 times.
```
ＵＯ⊗θ.
```
Draw a square of size `2n`.
```
Ｍθ⊗θ
```
Move `n` across and `2n` down.
[Answer]
# [Octave](https://www.gnu.org/software/octave/), 69 bytes
```
@(n)kron([1:8<=(1:7)';dec2bin(['pX'+128 156 ',,&&##'-32])-48],e(n))>0
```
Anonymous function that inputs a positive integer and outputs a zero-one matrix.
[**Try it online!**](https://tio.run/##y08uSSxL/Z9mq6en999BI08zuyg/TyPa0MrCxlbD0MpcU906JTXZKCkTKKheEKGubWhkoWBoaqagrqOjpqasrK5rbBSrqWtiEauTCtStaWfwPyWzuEAjTcNQU5MLzFRXUIey0jSMNDX/AwA "Octave – Try It Online")
[Answer]
# [C# (Visual C# Interactive Compiler)](http://www.mono-project.com/docs/about-mono/releases/5.0.0/#csc), 97 chars, 107 bytes
```
n=>{for(int i=0,j;i<n*16;Write("\n"),i++)for(j=n*8;j>0;)Write("€ÀàðøüþðØ˜
"[i/n]>>--j/n&1);}
```
[Try it online!](https://tio.run/##Sy7WTS7O/O@YXJKZn2eTmVdil2b7P8/Wrjotv0gDyFXItDXQybLOtMnTMjSzDi/KLEnVUIrJU9LUydTW1gQpyrLN07KwzrIzsNaESh9qONxweMHhDYd3HN5zeB@QnnFoBg8PGxszs1J0pn5erJ2drm6Wfp6aoaZ17X9rLrhNCrYKhtZAykbB0ABIA82v5uJM08jUtObiBBvtk5mXqoHBq/0PAA "C# (Visual C# Interactive Compiler) – Try It Online")
[Answer]
# [Python 2](https://docs.python.org/2/), ~~167~~ 145 bytes
```
i=input()
m='@'*i*2
s=' '*i
for z in[c*i*'@'for c in range(1,8)]+[m*2,m+s+m,m[:i]+s*2+m]+sum([[s*d+m]*2for d in(4,5,6)],[]):print'\n'.join([z]*i)
```
[Try it online!](https://tio.run/##FYvNCsMgEITvPoU3dZVCpS0lEOh7bD2UpD9bWCMxOTQvbzenmW8@pvyWz5Rja9RTLutineLe3AwQRFV7o6Wp1zTrTVPGQWaROw/Cen7k99Mew9UljwwxsK@eA2NHyVeIniVWtogVRgGI@3WUqz2Fc7i4FDC5rsyUF3PP5vCdROGWgFxr8Q8 "Python 2 – Try It Online")
Down to 145 with some great help from @ovs. Many thanks!
[Answer]
# [brainfuck](https://github.com/TryItOnline/brainfuck), 1892 bytes
```
>++++[>+++++<-]>[<<+>++>--]>++++++++[>++++++++<-]>[<<++>+>--]>+[[-]>[-],[+[-----------[>[-]++++++[<------>-]<--<<[->>++++++++++<<]>>[-<<+>>]<+>]]]<]<[>+>+<<-]>>[<<+>>-]<[<[>>>+>+<<<<-]>>>>[<<<<+>>>>-]<[<<<<<.>>>>>-]<<<<<<<.>>>>>-]<[>+>+<<-]>>[<<+>>-]<[<[>>>+>+<<<<-]>>>>[<<<<+>>>>-]<[<<<<<..>>>>>-]<<<<<<<.>>>>>-]<[>+>+<<-]>>[<<+>>-]<[<[>>>+>+<<<<-]>>>>[<<<<+>>>>-]<[<<<<<...>>>>>-]<<<<<<<.>>>>>-]<[>+>+<<-]>>[<<+>>-]<[<[>>>+>+<<<<-]>>>>[<<<<+>>>>-]<[<<<<<....>>>>>-]<<<<<<<.>>>>>-]<[>+>+<<-]>>[<<+>>-]<[<[>>>+>+<<<<-]>>>>[<<<<+>>>>-]<[<<<<<.....>>>>>-]<<<<<<<.>>>>>-]<[>+>+<<-]>>[<<+>>-]<[<[>>>+>+<<<<-]>>>>[<<<<+>>>>-]<[<<<<<......>>>>>-]<<<<<<<.>>>>>-]<[>+>+<<-]>>[<<+>>-]<[<[>>>+>+<<<<-]>>>>[<<<<+>>>>-]<[<<<<<.......>>>>>-]<<<<<<<.>>>>>-]<[>+>+<<-]>>[<<+>>-]<[<[>>>+>+<<<<-]>>>>[<<<<+>>>>-]<[<<<<<....>>>>>-]<<<<<<<.>>>>>-]<[>+>+<<-]>>[<<+>>-]<[<[>>>+>+<<<<-]>>>>[<<<<+>>>>-]<[<<<<<..>>>>>-]<<<[>>+>+<<<-]>>[<<+>>-]>[<<<<.>>>>-]<<<[>>+>+<<<-]>>[<<+>>-]>[<<<<<..>>>>>-]<<<<<<<.>>>>>-]<[>+>+<<-]>>[<<+>>-]<[<[>>>+>+<<<<-]>>>>[<<<<+>>>>-]<[<<<<<.>>>>>-]<<<[>>+>+<<<-]>>[<<+>>-]>[<<<<..>>>>-]<<<[>>+>+<<<-]>>[<<+>>-]>[<<<<<..>>>>>-]<<<<<<<.>>>>>-]<[>+>+<<-]>>[<<+>>-]<[<[>>>+>+<<<<-]>>>>[<<<<+>>>>-]<[<<<<....>>>>-]<<<[>>+>+<<<-]>>[<<+>>-]>[<<<<<..>>>>>-]<<<<<<<.>>>>>-]<[>+>+<<-]>>[<<+>>-]<[<[>>>+>+<<<<-]>>>>[<<<<+>>>>-]<[<<<<....>>>>-]<<<[>>+>+<<<-]>>[<<+>>-]>[<<<<<..>>>>>-]<<<<<<<.>>>>>-]<[>+>+<<-]>>[<<+>>-]<[<[>>>+>+<<<<-]>>>>[<<<<+>>>>-]<[<<<<.....>>>>-]<<<[>>+>+<<<-]>>[<<+>>-]>[<<<<<..>>>>>-]<<<<<<<.>>>>>-]<[>+>+<<-]>>[<<+>>-]<[<[>>>+>+<<<<-]>>>>[<<<<+>>>>-]<[<<<<.....>>>>-]<<<[>>+>+<<<-]>>[<<+>>-]>[<<<<<..>>>>>-]<<<<<<<.>>>>>-]<[>+>+<<-]>>[<<+>>-]<[<[>>>+>+<<<<-]>>>>[<<<<+>>>>-]<[<<<<......>>>>-]<<<[>>+>+<<<-]>>[<<+>>-]>[<<<<<..>>>>>-]<<<<<<<.>>>>>-]<[>+>+<<-]>>[<<+>>-]<[<[>>>+>+<<<<-]>>>>[<<<<+>>>>-]<[<<<<......>>>>-]<<<[>>+>+<<<-]>>[<<+>>-]>[<<<<<..>>>>>-]<<<<<<<.>>>>>-]
```
[Try it online!](https://tio.run/##5VLLCsJADPygNT14DvmRIQcVBBE8CH7/Ovtq9VaQIKU5LMnMZGbZ9vw83R7X1@WesyUW6plU3KCaOJmwT70wd0NBSVMABRE/IEGWQsH6sjbIxNmpQmy2o6G6UVtCzXm4u7oy0EhJ4SrFXRC1hjemcpXtfKnJ@qjf4w@OEZYhnjGmQa5Rtpt52cUSQ/7p05amNaKQX3Td9f51v/FN9he92@wNh@d8fAM "brainfuck – Try It Online")
Not a short answer by any means - it could probably be shortened by a good bit.
[Answer]
# [Python 3](https://docs.python.org/3/), ~~124~~ ~~145~~ 136 bytes
*+21 bytes because I didn't realise we had to scale it vertically as well*
*-9 bytes by using `.` for padding*
```
lambda n,s='@\n.X'*27,J=''.join:J(n*(l+'\n')for l in J(n*s[m>>4]+n*s[m>>2]+n*s[m]for m in b'DDA@D@D@A@@D@P`R`ZhFjAjhFj`Zj`Zj`').split())
```
[Try it online!](https://tio.run/##LY7BCoMwEER/JbfdqORgC4WCoiA9eCo9FasQpYiRuAZjD/36NCnuLMPbZQ5jvvu00smZTdGOiE73y/DuGSU2g6Il8YQovSR1BiDmVdG1RopQx9AS8HHdmGaKWHja15Ln5y4@KD2oC6ElhAaoqrKovMrC210@ZDPd5nL2Jpv/AhfWaLUj545jaKTIfMLpx6U/ "Python 3 – Try It Online")
### Explanation of the `b'DDA@D@D@A@@D@P`R`ZhFjAjhFj`Zj`Zj`'` string
(the code does this in reverse)
take the string, and:
* replace "on" pixel with 0
* replace new-line with 1
* replace space ("off" pixel) with 2
```
010010001000010000010000001000000010000100200102200122220012222001222220012222200122222200122222200
```
convert to binary, two bits per decimal digit:
```
000100000100000001000000000100000000000100000000000001000000000000000100000000010000100000010010100000011010101000000110101010000001101010101000000110101010100000011010101010100000011010101010100000
```
split into groups of 6:
```
000100 000100 000001 000000 000100 000000 000100 000000 000001 000000 000000 000100 000000 010000 100000 010010 100000 011010 101000 000110 101010 000001 101010 101000 000110 101010 100000 011010 101010 100000 011010 101010 100000
```
logical-OR each group with 01000000 (so it's all printable ASCII, to avoid escape characters):
```
01000100 01000100 01000001 01000000 01000100 01000000 01000100 01000000 01000001 01000000 01000000 01000100 01000000 01010000 01100000 01010010 01100000 01011010 01101000 01000110 01101010 01000001 01101010 01101000 01000110 01101010 01100000 01011010 01101010 01100000 01011010 01101010 01100000
```
convert to ASCII for a Python bytestring:
```
b'DDA@D@D@A@@D@P`R`ZhFjAjhFj`Zj`Zj`'
```
[Answer]
# [Python 2](https://docs.python.org/2/), 102 bytes
```
n=input()
for k in range(16*n):print''.join(n*' @'[j<=k/n<max(7,10-j)or-1<k/n/2-j<2]for j in range(8))
```
[Try it online!](https://tio.run/##K6gsycjPM/r/P882M6@gtERDkystv0ghWyEzT6EoMS89VcPQTCtP06qgKDOvRF1dLys/M08jT0tdwUE9OsvGNls/zyY3sULDXMfQQDdLM79I19AGKKZvpJtlYxQLMikLYZKFpub//0YA "Python 2 – Try It Online")
Computes whether the given coordinate is on of off by a formula that bounds the arrow shape via linear inequalities. To check if the cell is in the tail, which is made of 2\*2 blocks (unscaled), we floor-divide the row index by 2 and check whether it either equals the column index or is one greater than it.
As a function outputting a list of lines:
**97 bytes**
```
lambda n:[''.join(n*' @'[j<=k/n<max(7,10-j)or-1<k/n/2-j<2]for j in range(8))for k in range(16*n)]
```
[Try it online!](https://tio.run/##RckxDsIgFADQWU/BBr8RKwzWNDTxHrUDxqLQ9kMITerpUVxc3wvv9PIos@luedbL/aEJtj2lR@ctMqwoudLeqW6qUS16Y81BnLgDH7lQX6sld0oOxkfiiEUSNT5HdgEoMv1FnCuEIRedLY4lDLMY1sQA2v0uRIvpV1l@AA "Python 2 – Try It Online")
[Answer]
# [C (gcc)](https://gcc.gnu.org/), ~~106 105 103~~ 102 bytes
*Saved 1 byte thanks to @Neil*
Prints the pointer with spaces and exclamation points. Essentially the same method as in [my JS answer](https://codegolf.stackexchange.com/a/211643/58563).
```
x,y;f(n){for(y=n*16;y--;)for(x=n*8;~x;)putchar(x--?32^(~1<<(y/n>8?y/n-9:12-y/n)|3<<y/n/2)>>x/n&1:13);}
```
[Try it online!](https://tio.run/##LYpBCsIwFET3PUVWki9@QlKQ2h/TmwghkFrQKFoxobZHN0ZxM2/eMA5753KOm0SeB5j85cbTPqzllhIiwddj8YaWSHB9jO5oy4LY1erAF6k1TyKYpiuJu1YqLAVetdaFQoExUYSVbGUNNOchjOxsh8CBTRVjnkugH9Wf5VXN@e38yfb3jM8P "C (gcc) – Try It Online")
[Answer]
# [Jelly](https://github.com/DennisMitchell/jelly), ~~31~~ 30 bytes
```
5r8ṬƝż`Ẏ
1ẋⱮ7;“ÐñŒ‘B;¢xẎ¥€z0ɗ⁺
```
[Try it online!](https://tio.run/##AUYAuf9qZWxsef//NXI44bmsxp3FvGDhuo4KMeG6i@Kxrjc74oCcw5DDscWS4oCYQjvConjhuo7CpeKCrHowyZfigbr/w4dZ//8y "Jelly – Try It Online")
*-1 from Jonathan Allan's answer reminding me of `⁺`. Now to figure out why his `z0xɗ` won't work for me...*
Outputs a 2D array of 1 for for on and 0 for off. Integers, rather than characters, though, so +2 for a full program (`µY`) if that's a problem.
```
          Dyadic helper link:
   €      Map
x         repeat left right times
 Ẏ¥       and dump internal lists.
    z0    Zip with filler 0.
                             Main link:
1ẋ                           Repeat 1
  Ɱ7                         1, 2, 3, 4, 5, 6, and 7 times.
    ;                        Concatenate with
     “ÐñŒ‘                   [15, 27, 19].
          B                  Vectorized convert to binary
                             (applies to first bit too, but leaves it unharmed).
           ;                 Concatenate with
                Ṭ    ¤       a list with 1s at the given indices
                 Ɲ           for each pair of adjacent numbers in
            5r8¤             the range from 5 to 8 inclusive,
                  ż`         zipped with itself
                    Ẏ        and with each zipped pair dumped.
                      ç      Apply the helper link with input as right argument.
                       ç     Apply the helper link with input as right argument.
```
[Answer]
# [C (gcc)](https://gcc.gnu.org/), ~~162~~ \$\cdots\$ ~~126~~ 104 bytes
Saved a whopping 26 bytes thanks to [ceilingcat](https://codegolf.stackexchange.com/users/52904/ceilingcat)!!!  
Saved another whopping 22 bytes thanks to [AZTECCO](https://codegolf.stackexchange.com/users/84844/aztecco)!!!
Note: code contains unprintables.
```
j;i;f(n){for(i=16*n;i--;puts(""))
for(j=8*n;j--;)putchar(32|L"
˜ØðþüøðàÀ€"[i/n]>>j/n&1);}
```
[Try it online!](https://tio.run/##S9ZNT07@/z/LOtM6TSNPszotv0gj09bQTCvPOlNX17qgtKRYQ0lJU5MLJJFlawEUzwKKawIlkjMSizSMjWp8lJiZ2dh4eA7NODzj8IbD@w7vObwDSC843HCoQSk6Uz8v1s4uSz9PzVDTuvZ/Zl6JQm5iZp6GJlc1lwIQAM1V0ACJ5inYKhhaAykbWwVjawVt7TxNBYgSsDKg46zhvIIioI40DSVdQiAmTwmqrZar9j8A "C (gcc) – Try It Online")
Uses `!` for black pixels (since it's the ascii for space plus \$1\$) and spaces for empty pixels (only if preceded by a black pixel, otherwise nothing).
[Answer]
# [Wolfram Language (Mathematica)](https://www.wolfram.com/wolframscript/), 90 bytes
```
Normal@SparseArray[a_:>36^^4iam2h6stciyoj9kt5169kwfgn4~BitGet~Tr[{8,1}⌈a/#⌉],{16,8}#]&
```
[Try it online!](https://tio.run/##y00syUjNTSzJTE78n6Zg@98vvyg3McchuCCxqDjVsagosTI6Md7KztgsLs4kMzHXKMOsuCQ5szI/yzK7xNTQzDK7PC09z6TOKbPEPbWkLqQoutpCx7D2UU9Hor7yo57OWJ1qQzMdi1rlWLX/AUWZeSXRadFGsToKSjF5SrHWXBCh4BIglR6UmZaWkwqWj421/g8A "Wolfram Language (Mathematica) – Try It Online") Pure function. Takes an integer as input and returns a matrix with 0 and 1 entries.
[Answer]
# [Canvas](https://github.com/dzaima/Canvas), 32 [bytes](https://github.com/dzaima/Canvas/blob/master/files/chartable.md)
```
“┌Wｗｚ‼GZE⁸↘４ＢUＨ＜Ｕ„２┬８ｎ｛｛⁴＋ｃ］］╶╶＊
```
[Try it here!](https://dzaima.github.io/Canvas/?u=JXUyMDFDJXUyNTBDVyV1RkY1NyV1RkY1QSV1MjAzQ0daRSV1MjA3OCV1MjE5OCV1RkYxNCV1RkYyMlUldUZGMjgldUZGMUMldUZGMzUldTIwMUUldUZGMTIldTI1MkMldUZGMTgldUZGNEUldUZGNUIldUZGNUIldTIwNzQldUZGMEIldUZGNDMldUZGM0QldUZGM0QldTI1NzYldTI1NzYldUZGMEE_,i=Mw__,v=8)
A better compression method would reduce this by a lot.
]