[Question]
  [
Display numbers from one to one-hundred (in increasing order), but number 2 shouldn‚Äôt appear anywhere in the sequence. So, for example, the numbers two (`2`) or twenty-three (`23`) shouldn't be in the sequence.
Here is an example output, with newlines separating the numbers:
```
1
3
4
5
6
7
8
9
10
11
13
14
15
16
17
18
19
30
31
33
34
35
36
37
38
39
40
41
43
44
45
46
47
48
49
50
51
53
54
55
56
57
58
59
60
61
63
64
65
66
67
68
69
70
71
73
74
75
76
77
78
79
80
81
83
84
85
86
87
88
89
90
91
93
94
95
96
97
98
99
100
```
  
[Answer]
# [Taxi](https://bigzaphod.github.io/Taxi/), ~~2399~~ ~~2391~~ ~~2370~~ ~~1783~~ ~~1773~~ 1706 bytes
*-8 bytes for realizing that, instead of leaving a certain passenger at Sunny Side Park forever, it's more worth it to throw them off of Riverview Bridge. Ah, what a lovely town this is.*
*-21 bytes for taking out a comment I stupidly left in.*
*-587 bytes by simply changing the entire way I went about this (apparently a shorter way is by arithmetic; integer-dividing [17, 27, 37, 47,...] by 9 yields the sequence, but you gotta skip over the 20's yourself.)*
*-17 bytes for the realization that any quotes-encased string without a space doesn't need quotes after all (thanks Jo King!).*
*-67 bytes for the realization that linebreaks are optional.*
```
17 is waiting at Starchild Numerology.Go to Starchild Numerology:w 1 l 2 r 1 l 1 l 2 l.Pickup a passenger going to Cyclone.Go to Cyclone:e 1 l 2 r.[B]Pickup a passenger going to Cyclone.Pickup a passenger going to Divide and Conquer.9 is waiting at Starchild Numerology.Go to Starchild Numerology:s 2 l 2 r.Pickup a passenger going to Divide and Conquer.Go to Divide and Conquer:e 1 l 2 r 3 r 2 r 1 r.Pickup a passenger going to Trunkers.Go to Trunkers:e 1 r 3 r 1 l.Pickup a passenger going to The Babelfishery.Go to The Babelfishery:e 1 r 1 r.Pickup a passenger going to Post Office.\n is waiting at Writer's Depot.Go to Writer's Depot:n 5 l 2 l.Pickup a passenger going to Post Office.Go to Post Office:n 1 r 2 r 1 l.Go to Cyclone:s 1 r 1 l 2 r.Pickup a passenger going to Addition Alley.Pickup a passenger going to Equal's Corner.177 is waiting at Starchild Numerology.Go to Starchild Numerology:s 2 l 2 r.Pickup a passenger going to Equal's Corner.Go to Equal's Corner:w 1 l.Switch to plan C if no one is waiting.Pickup a passenger going to Sunny Skies Park.100 is waiting at Starchild Numerology.Switch to plan D.[C]10 is waiting at Starchild Numerology.[D]Go to Starchild Numerology:n 1 r.Pickup a passenger going to Addition Alley.Go to Sunny Skies Park:w 1 r.Go to Addition Alley:n 1 r 1 r 1 r.Pickup a passenger going to Cyclone.Go to Cyclone:n 1 l 1 l.Pickup a passenger going to Cyclone.Pickup a passenger going to Equal's Corner.917 is waiting at Starchild Numerology.Go to Starchild Numerology:s 2 l 2 r.Pickup a passenger going to Equal's Corner.Go to Equal's Corner:w 1 l.Switch to plan E if no one is waiting.Switch to plan F.[E]Go to Go More:n 1 l.Go to Cyclone:w 1 r.Switch to plan B.[F]
```
[Try it online!](https://tio.run/##zVRdT4MwFP0r9823ZmjMsr1tbPNJXcISH5CHCgUaasva4uTXI4OiW10AY2J84Ou299x7zj1U43daVc4UqIIDppryBLAGT2MZppRF8FC8EimYSEp0J0CLi0vzAzjA4Bpk82zfGdrSMCtywJBjpQhPiIREHCvUMG4ZMsGJATVfc9LhIH8ZjEnv27OibzQigHkEruD7gkg0@yVPdeTV9PfDwi3m94UvxnBTX62C/eg7WfCMSGUwu88GqUVxBrTfpQSW@IWwmKqUyI6xHTaIQ/1shdLwGMc0JOiZWwI/SaqJvFKwIrnQptB5cM7hdoRhTsu0MCeRGsP5lI9ZplKGxvDgFlFUdy44LBgjZe/W9b7ArKbgCsnr@TrT6Z9Yyyrb4p0H258ReQeqw/S4nDPMwQUaAxdQC3LSaG8tr@C8BC@jRMEWyww5k8kYklblFfLdwBmV6a@CHoX4oBWt@Rksi0ajTyfdeYax0RjXXz6/eHf@od8eXtagZ84/99f6sr@sXRvkr82I6/u9kEYyS8Z2QlbuEvmboKo@AA "Taxi ‚Äì Try It Online")
This one isn't winning me any code golf competitions anytime soon, but I decided to try out the esolang Taxi.
Taxi is an esolang in which all programming is done by picking up and dropping off passengers at various stops in the fictional town of Townsburg. Of course, your taxicab will sometimes run out of gas, so you also need to visit gas stations every so often, and pay using the credits you receive as fare (in this case, I only need to stop for gas - at Go More - once per loop iteration!).
I used some tricks that reduce the filesize a bit, such as rephrasing directions like `east 1st left, 2nd right` as `e 1 l 2 r`, removing the word `the` where it is optional, and using the least complicated route towards all of my destinations (not necessarily the shortest path).
I hate this shorter solution more than the one I originally came up with. This solution down here is a more general way of accomplishing the task, which could start and end anywhere you want. Here it is, in its entirety.
# 2245 bytes (way more general)
```
1 is waiting at Starchild Numerology.Go to Starchild Numerology:w 1 l 2 r 1 l 1 l 2 l.Pickup a passenger going to Cyclone.Go to Cyclone:e 1 l 2 r.[B]Pickup a passenger going to Addition Alley.Pickup a passenger going to The Babelfishery.Go to The Babelfishery:n 2 r 2 r.Pickup a passenger going to Cyclone.Go to Cyclone:n 5 l 2 l.Pickup a passenger going to Chop Suey.Go to Zoom Zoom:n.0 is waiting at Writer's Depot.Go to Writer's Depot:w.Pickup a passenger going to Narrow Path Park.Go to Narrow Path Park:n 3 r 1 l 1 r.Go to Chop Suey:e 1 r 1 l 1 r.[C]Switch to plan E if no one is waiting.Pickup a passenger going to Crime Lab.2 is waiting at Writer's Depot.Go to Writer's Depot:n 1 l 3 l.Pickup a passenger going to Crime Lab.Go to Crime Lab:n 3 r 2 r.Switch to plan D if no one is waiting.Pickup a passenger going to KonKat's.Go to Narrow Path Park:n 5 l.Pickup a passenger going to KonKat's.Go to KonKat's:e 1 r.Pickup a passenger going to Narrow Path Park.Go to Narrow Path Park:n 2 l.Go to Chop Suey:e 1 r 1 l 1 r.Switch to plan C.[D]Go to Chop Suey:n 5 r 1 l.Switch to plan C.[E]Go to Narrow Path Park:n 1 l 1 r 1 l.Pickup a passenger going to Crime Lab.0 is waiting at Writer's Depot.Go to Writer's Depot:w 1 l 1 r 2 l.1 is waiting at Starchild Numerology.Pickup a passenger going to Crime Lab.Go to Crime Lab:n 3 r 2 r.Switch to plan F if no one is waiting.Pickup a passenger going to Riverview Bridge.Go to Cyclone:n 4 l 2 l.Pickup a passenger going to Post Office.Go to Riverview Bridge:n 2 r.\n is waiting at Writer's Depot.Go to Writer's Depot:w 2 l.Pickup a passenger going to Post Office.Go to Post Office:n 1 r 2 r 1 l.Go to Starchild Numerology:s 1 r 1 l 1 l 2 l.Switch to plan G.[F]Go to Cyclone:s 1 r 1 l 2 r.Pickup a passenger going to Riverview Bridge.Go to Riverview Bridge:n 2 r.Go to Starchild Numerology:w 2 l 3 l 2 r.[G]Pickup a passenger going to Addition Alley.Go to Addition Alley:e 1 l 2 r 3 r 1 r.Pickup a passenger going to Magic Eight.101 is waiting at Starchild Numerology.Go to Starchild Numerology:n 1 l 1 l 3 l 2 r.Pickup a passenger going to Magic Eight.Go to Magic Eight:w 1 r 2 r 1 r.Switch to plan H if no one is waiting.Pickup a passenger going to Cyclone.Go to Cyclone:n 1 l 2 r.Switch to plan B.[H]
```
[Try it online!](https://tio.run/##rVVNb6MwEP0rc@vNapLthVvz0VTqbjfaVKq0LAeXODCqYyPjlObXp2BwQtxCINsL4DEzb94be0bTd9zvB4ApZBQ1igiohqWmKoyRr@Bxu2FKchntyFyCll9ueRkMgMMQlHmX35wsMHzdJkAhoWnKRMQURLJAyMNMdiGXglVBq5XHbBzij4M299vVKk9WCrjlnO1akZ5iBmP6wvga05gpy8M1e8LkX2D3z1vATRfOsUxguWU2hb9SbszDE@TaqcCzQs3UVQpTlkhdOZwavawV7ZEqJTNYUB3nD/VaxXDNee6jQ92U5WUzNRU57vqTYJmhDuPip4RTATPANQgJuQo1Bu0yKNww@ElfyPAC0sIkMzon9QGjImTXFd2izA6TaX8mD1I8UH2VNkt7cyZPJ4JdlrJ/U3mLY9leVkeJCfGngetRcDEeX/w9CxrBKwjj2K1gF92EA05BtlM3@@bTc9f/9PzBN6bekGUwVriKPveUHx16ykKmGn6v1xhafzds2djIP3GRrv3xaxZTf2XnQtsASWvnsSTt6Dsn/l1wKtDR51zTblC6QanWOTcsm085o@Z9ZlQZ9tR4HHhVE27n8YtGGMIMo1iTwfX/Dm1x0HvUQcM6dhm0ZjEX0Bb60924v2BGNIxZW20HYUz8@2C//wA "Taxi ‚Äì Try It Online")
And if mega-cheating is allowed, this one is way shorter than either of the last two.
# 456 bytes (totally cheating)
```
1\n3\n4\n5\n6\n7\n8\n9\n10\n11\n13\n14\n15\n16\n17\n18\n19\n30\n31\n33\n34\n35\n36\n37\n38\n39\n40\n41\n43\n44\n45\n46\n47\n48\n49\n50\n51\n53\n54\n55\n56\n57\n58\n59\n60\n61\n63\n64\n65\n66\n67\n68\n69\n70\n71\n73\n74\n75\n76\n77\n78\n79\n80\n81\n83\n84\n85\n86\n87\n88\n89\n90\n91\n93\n94\n95\n96\n97\n98\n99\n100 is waiting at Writer's Depot.Go to Writer's Depot:w 1 l 2 r 1 l 2 l.Pickup a passenger going to Post Office.Go to Post Office:n 1 r 2 r 1 l.
```
[Try it online!](https://tio.run/##XdA/a8MwEIfhr3JbNxNV/zMXOjZbFy0mOEY0nIOtkn5791VJoXQQgrtHP@nUxq@676aoLeqK@qKhaCyaiuai5sCiaega2oa@ARiEgRiMxdgegLEYi7EYi7EYi3EYh3H9FozDOIzDOIzDeIzHeIzvT8F4jMd4jMcETMAETMCE/l5MwARMwERMxERMxERM7ENhIiZiEiZhEiZhEiZhUp8ckzAZkzEZkzEZkzEZk/v3/PzPQeom97G2qrOMTd7X2qb1aZOX6ba04XWRtvwrHu9i5CrPsj7263Cq54/Pm4xyG7dt0nlaZV56IodPy9bk7XKp5@kR96dyVDLW36xh378B "Taxi ‚Äì Try It Online")
[Answer]
# [Python 2](https://docs.python.org/2/), 39 bytes
```
k=7
exec"k+=10;print(k>177)*10+k/9;"*81
```
[Try it online!](https://tio.run/##K6gsycjPM/r/P9vWnCu1IjVZKVvb1tDAuqAoM69EI9vO0NxcU8vQQDtb39JaScvC8P9/AA "Python 2 ‚Äì Try It Online")
Uses arithmetic operations only to generate numbers without 2's. 
The value `k` follows the arithmetic progression `17, 27, 37, 47, ...`, which when floor-divided by 9 gives `1,3,4,5,6,7,8,9,10,11,13,14,...` which counts up numbers not ending in 2. To skip 20 through 29, outputs are increased by 10 past a certain threshold.
[Answer]
# JavaScript (ES6), 43 bytes
Returns the sequence as a comma-separated string.
```
f=(n=98)=>n?f(n-=n-27?n%10?1:2:11)+[,n+3]:1
```
[Try it online!](https://tio.run/##BcFBCoAgEADA1wSKGa0dKsF8SHQQ0yhkNzL6/jZzhS/U@Jz3q5H2xJydQDdP0i3os0DtUJvRYwO9B2ssgFRri2rYLHAkrFRSV@gQWUjJPw "JavaScript (Node.js) ‚Äì Try It Online")
### Why doing it this way?
We could iterate from \$1\$ to \$100\$ and test each number with `/2/.test(n)`, which is a rather concise statement. But in this scenario, we'd have to handle empty entries with something like `(/2/.test(n)?'':...)`, which adds a couple more bytes.
For example, this would work for [45 bytes](https://tio.run/##BcFBCoAgEADA57iLpthNQX1IdBDTKGSNlL5vM3f8Yk/v9YyF2pHnLA7IaXSevDGBLKhVyZH7AMLAmN1IiB15AeIaZ2rUW82ythMKIM4f):
```
f=(n=1)=>n>99?n:(/2/.test(n)?'':[n,,])+f(n+1)
```
Or this would work for [44 bytes](https://tio.run/##BcFbCoAgEADA4@wu5atPwTxI9CGmUcgaKV3fZu7whRbf6@mC65HGyA7ZGa3JrewzsjA0oVqU7Kl1ZPIAdpt5JwswYuVWS5KlnpiRaPw), if a leading comma is acceptable:
```
f=(n=100)=>n?f(n-1)+(/2/.test(n)?'':[,n]):''
```
All in all (and until proven otherwise), it turns out to be shorter to *skip right away* all values of \$n\$ that contain a \$2\$.
### Commented
```
f =                 // f is a recursive function taking:
(n = 98) =>         // n = counter, initialized to 98
  n ?               // if n is not equal to 0:
    f(              //   prepend the result of a recursive call:
      n -=          //     update n:
        n - 27 ?    //       if n is not equal to 27:
          n % 10 ?  //         if n is not a multiple of 10:
            1       //           subtract 1 from n
          :         //         else:
            2       //           subtract 2 from n
        :           //       else (n = 27):
          11        //         subtract 11 from n (--> 16)
    ) +             //   end of recursive call
    [, n + 3]       //   append a comma, followed by n + 3; notice that this is the value
                    //   of n *after* it was updated for the recursive call; at the first
                    //   iteration, we have: n = 98 -> updated to 97 -> n + 3 = 100
  :                 // else (n = 0):
    1               //   output the first term '1' and stop recursion
```
[Answer]
# [05AB1E](https://github.com/Adriandmen/05AB1E), 6 bytes
```
—ÇL í2√•_
```
[Try it online!](https://tio.run/##yy9OTMpM/f//YpPPqUlGh5fG//8PAA "05AB1E ‚Äì Try It Online")
**Explanation**
```
—ÇL       # push [1 ... 100]
   í      # filter, keep only elements that
   2√•_   # does not contain 2
```
[Answer]
# [R](https://www.r-project.org/), 19 bytes
```
grep(2,1:100,inv=T)
```
[Try it online!](https://tio.run/##K/r/P70otUDDSMfQytDAQCczr8w2RPP/fwA "R ‚Äì Try It Online")
[Answer]
# [Python 2](https://docs.python.org/2/), 44 bytes
```
print[n for n in range(1,101)if'2'not in`n`]
```
[Try it online!](https://tio.run/##K6gsycjPM/r/v6AoM68kOk8hLb9IIU8hM0@hKDEvPVXDUMfQwFAzM03dSD0vvwQonpCXEPv/PwA "Python 2 ‚Äì Try It Online")
[Answer]
# [Perl 6](https://github.com/nxadm/rakudo-pkg), 22 bytes
```
put grep {!/2/},1..100
```
[Try it online!](https://tio.run/##K0gtyjH7/7@gtEQhvSi1QKFaUd9Iv1bHUE/P0MDg/38A "Perl 6 ‚Äì Try It Online")
There's probably a better way to do the code block, but I couldn't find a regex adverb to invert the match
[Answer]
# [PowerShell](https://github.com/TryItOnline/TioSetup/wiki/Powershell), ~~22~~ 16 bytes
```
1..100-notmatch2
```
[Try it online!](https://tio.run/##K8gvTy0qzkjNyfn/31BPz9DAQDcvvyQ3sSQ5w@j/fwA "PowerShell ‚Äì Try It Online")
*-6 bytes thanks to mazzy*
Generates the range `1` to `100`, then pulls out those objects where they do `-notmatch` the number `2`. Running the `-notmatch` against an array like this acts like a filter on the array. Each item is left on the pipeline, and output is implicit.
[Answer]
# [Haskell](https://www.haskell.org/), ~~48~~ ~~33~~ 31 bytes
Thanks @JonathanFrech for fifteen bytes saved, and @xnor for another two! I missed a big golf and didn't realize `main=print$` can be omitted.
```
filter(all(/='2').show)[1..100]
```
[Try it online!](https://tio.run/##y0gszk7Nyfmfm5iZp2CrUFCUmVeiUMGloFCekVqUqlBdoWD7Py0zpyS1SCMxJ0dD31bdSF1Trzgjv1wz2lBPz9DAIPa/gkLtfwA)
Easily extended by changing the `100`. Stringifies all the numbers and keeps only those without a `'2'`.
[Answer]
# [Bash](https://www.gnu.org/software/bash/) + GNU utilities, 16
* 1 byte saved thanks to @Dennis.
```
seq 100|sed /2/d
```
[Try it online!](https://tio.run/##S0oszvj/vzi1UMHQwKCmODVFQd9IP@X/fwA "Bash ‚Äì Try It Online")
[Answer]
# [Japt](https://github.com/ETHproductions/japt), 7 bytes
```
L√µs k√∏2
```
---
```
L√µs k√∏2     Full Program
L√µs         Range ["1"..."100"] (numbers are casted to string)
    k       Remove
     √∏2     anything that contains "2"
```
[Try it online!](https://tio.run/##y0osKPn/3@fw1mKF7MM7jP7/BwA "Japt ‚Äì Try It Online")
[Answer]
# Java 10, 67 bytes
```
v->{for(int i=0;++i<101;)if(i%10!=2&i/10!=2)System.out.println(i);}
```
[Try it online.](https://tio.run/##LY7BDoIwEETvfMV60LQhIHgt@AdyIfFiPNQCZrEUQksTQ/j2WpDLTnazM/NabnnUVh8nJNcabhzVHACgMvXYcFFDsa4AtscKBLmvYinztyXwQxtuUEABCnJwNrrOTT8S7wbMExaGmKVJyig2BI9pcsgvJzxvSsuvNnUX95OJh9EbpCJI2eLYGjtML@lj9/Stu/NkpDT@9f14Aqd/LBULoiYpd6LF/QA)
**Explanation:**
```
v->{                           // Method with empty unused parameter and no return-type
  for(int i=0;++i<101;)        //  Loop `i` in the range (0, 101)
    if(i%10!=2                 //   If `i` modulo-10 is not 2
       &i/10!=2)               //   And `i` integer-divided by 10 is not 2 either
      System.out.println(i);}  //    Print `i` with a trailing newline
```
[Answer]
# Powershell, 19 bytes
```
1..100-split'.*2.*'
```
This script show null-value instead 'numbers with 2 inside' and completely solves the task 'number 2 shouldn‚Äôt appear anywhere in the sequence'.
Output:
```
1
3
4
5
6
7
8
9
10
11
13
14
15
16
17
18
19
30
31
33
34
35
36
37
38
39
40
41
43
44
45
46
47
48
49
50
51
53
54
55
56
57
58
59
60
61
63
64
65
66
67
68
69
70
71
73
74
75
76
77
78
79
80
81
83
84
85
86
87
88
89
90
91
93
94
95
96
97
98
99
100
```
## Powerhsell (output does not contain null-values), 24 bytes
```
1..100-split'.*2.*'-ne''
```
[Answer]
# [Retina](https://github.com/m-ender/retina/wiki/The-Language), ~~19~~ 17 bytes
```
100*
.
$.>`¬∂
A`2
```
[Try it online!](https://tio.run/##K0otycxLNPz/n8vQwECLS49LRc8u4dA2LscEo///AQ "Retina ‚Äì Try It Online") Edit: Saved 2 bytes thanks to @ovs, although the last line now includes a newline. Explanation:
```
100*
```
Insert 100 characters.
```
.
$.>`¬∂
```
Replace each character with the number of characters up to and including that character, plus a newline.
```
A`2
```
Remove all entries that contain a `2`.
[Answer]
# [Stax](https://github.com/tomtheisen/stax), 6 [bytes](https://github.com/tomtheisen/stax/blob/master/docs/packed.md#packed-stax)
```
√á‚ñëœÑ‚ïí‚ïúh
```
[Run and debug it](https://staxlang.xyz/#p=80b0e7d5bd68&i=&a=1)
Unpacked, ungolfed, and commented, it looks like this.
```
AJ  10 squared
f   output each value in [1 .. n] satisfying the following filter
 E  get array of decimal digits in number
 2#     count the number of 2s
 !  logical not
```
[Run this one](https://staxlang.xyz/#c=AJ%0910+squared%0Af%09output+each+value+in+[1+..+n]+satisfying+the+following+filter%0A+E%09get+array+of+decimal+digits+in+number%0A+2%23+%09count+the+number+of+2s%0A+%21+%09logical+not&i=&a=1)
[Answer]
# [Wolfram Language (Mathematica)](https://www.wolfram.com/wolframscript/), 42 bytes
```
Print@‚åàRange[1,100,10/9]~Drop~{18,26}‚åâ
```
[Try it online!](https://tio.run/##y00syUjNTSzJTE78/z@gKDOvxOFRT0dQYl56arShjqGBARDrW8bWuRTlF9RVG1roGJnVPurp/P8fAA "Wolfram Language (Mathematica) ‚Äì Try It Online")
The arithmetic sequence 1, 19/9, 29/9, 39/9, ... grows at just the right rate that taking the ceiling skips all the numbers ending in 2. Then we get rid of 20 through 29 by `Drop`ping the values at indices 18 through 26.
[Answer]
## [C (GCC)](https://www.gnu.org/software/gcc/), 62 55 Bytes
*‚Ä¢ 7 Bytes thanks to Jonathan Frech*
`f(n){for(n=0;++n-101;n/10-2&&n%10-2&&printf("%d,",n));}`
Loops from 1 to 100 and prints the number only if 2 is not in the ones or tens place.
[Try it online!](https://tio.run/##S9ZNT07@/z9NI0@zOi2/SCPP1sBaWztP19DA0DpP39BA10hNLU8VQhcUZeaVpGkoqaboKOnkaWpa1/7PTczM0wDq1ABxAA)
[Answer]
# sh + coreutils, 16 chars
```
seq 100|sed /2/d
```
Generates sequence from 1 to 100 (inclusive) and deletes any lines that have '2' in them.
[Answer]
# [Z80Golf](https://github.com/lynn/z80golf), ~~49~~ 48 bytes
```
00000000: 1630 2e0a 5faf f57b fe02 2818 82ff f182  .0.._..{..(.....
00000010: ff92 3cf5 7dff f1bd 280a fe02 2803 f518  ..<.}...(...(...
00000020: e63c 18fa 7b3c bd20 db3e 31ff 3dff ff76  .<..{<. .>1.=..v
```
[Try it online!](https://tio.run/##Rc6xDsIwDATQna@4sdPJcdQ2oMKvoKaJWZDYGEB8ezBtJW6yrPOTX0luj7u1JntOCEMUaJUZvc0G68cMq6LQFBKSmu9CUoBCXsk32fGXwyYEN8yOirhYj7Gs/Vz83MkdkuiuayAnfrgJ3d9QN@oQF4RkM8bsUy4qKDlWxOBkXF0bBzcmf2IieAk8k8/Wvg "Z80Golf ‚Äì Try It Online")
Assembly:
```
ld d, 30h			; ascii '0' character
ld l, 0Ah			; number 10 and ascii newline
tens:
	ld e,a			; store tens digit
	xor a			; reset ones digit to 0
	push af			; store initial ones digit 0
	ones:
		ld a,e		; get stored tens digit
		cp 2
		jr z,cont	; if tens digit==2(e.g.20-29),skip loop
		add d
		rst 38h 	; print tens digit
		pop af		; get stored ones digit
		add d
		rst 38h 	; print ones digit
		sub d
		inc a		; increment ones digit
		push af		; store ones digit
		ld a, l
		rst 38h 	; print newline
		pop af		; get stored ones digit again
		cp l
		jr z,cont	; if ones digit==10, break loop
		cp 2
		jr z,inc_again	; if ones digit==2, incr again
		repeat_loop:
		push af		; store ones digit again
		jr ones		; repeat print loop
		inc_again:
			inc a
			jr repeat_loop
		
	cont:
	ld a,e			; get stored tens digit
	inc a			; increment tens digit
	cp l
	jr nz, tens		; if tens place!=10, continue loop
ld a,31h
rst 38h				; print '1'
dec a
rst 38h				; print '0'
rst 38h				; print '0'
halt
```
Saved one byte with the `repeat_loop` jump
[Answer]
# [Python 3](https://docs.python.org/3/), ~~53 51 50 49~~ 46 bytes
```
['2'in str(n)or print(n)for n in range(1,101)]
```
[Try it online!](https://tio.run/##K6gsycjPM/7/P1rdSD0zT6G4pEgjTzO/SKGgKDOvBMhMA7LzFIAyRYl56akahjqGBoaasf//AwA "Python 3 ‚Äì Try It Online")
Not the strongest language for this task, but I'm new to golfing.
Thanks to the commenters for their tips!
[Answer]
# [Tcl](http://tcl.tk/), 44 bytes
```
time {if ![regexp 2 [incr i]] {puts $i}} 100
```
[Try it online!](https://tio.run/##K0nO@f@/JDM3VaE6M01BMbooNT21okDBSCE6My@5SCEzNlahuqC0pFhBJbO2VsHQwOD/fwA "Tcl ‚Äì Try It Online")
---
# [Tcl](http://tcl.tk/), 47 bytes
```
time {if [incr i]%10!=2&$i/10!=2 {puts $i}} 100
```
[Try it online!](https://tio.run/##K0nO@f@/JDM3VaE6M00hOjMvuUghM1bV0EDR1khNJVMfzFCoLigtKVZQyaytVTA0MPj/HwA "Tcl ‚Äì Try It Online")
## 
# [Tcl](http://tcl.tk/), 50 bytes
```
time {if {2 ni [split [incr i] ""]} {puts $i}} 100
```
[Try it online!](https://tio.run/##K0nO@f@/JDM3VaE6M02h2kghL1MhurggJ7NEITozL7lIITNWQUkptlahuqC0pFhBJbO2VsHQwOD/fwA "Tcl ‚Äì Try It Online")
[Answer]
# [Kotlin](https://kotlinlang.org), 32 bytes
```
{(1..100).filter{'2' !in ""+it}}
```
[Try it online!](https://tio.run/##FcxBCsIwEEbhfU/x200niKF1WWrApeDOE2RhymAcSzoKEnL2WN/@e4@XRpYa3oKnZyGf5nXEOSX/nW6aWGZnkBtsfXxEGEEGB4crrzpdRB1ONdNg7dD3xgaOek@5O3bYsaBt96yl1L9etpdSIGOaUn8 "Kotlin ‚Äì Try It Online")
[Answer]
# [Bash](https://www.gnu.org/software/bash/), 31 bytes
```
printf %d\\n {1..100}|grep -v 2
```
[Try it online!](https://tio.run/##S0oszvj/v6AoM68kTUE1JSYmT6HaUE/P0MCgtia9KLVAQbdMwej/fwA "Bash ‚Äì Try It Online")
Thanks to Digital Trauma for short loop. 
[Answer]
# [ORK](https://github.com/TryItOnline/ork), 1092 bytes
```
There is such a thing as a t
A t can w a number
A t can d a number
A t has a t which is a number
When a t is to w a number:
I have a mathematician called M
M's first operand is the number
M's second operand is 1
M is to add
The number is M's result
My t is 0
I have a number called n
n is the number
I am to d n
M's first operand is my t
M's second operand is 1
M is to compare
I have a scribe called W
If M says it's less then W is to write the number
If M says it's less then W is to write " "
M's first operand is the number
M's second operand is 100
M is to compare
If M says it's less then I am to loop
When a t is to d a number:
I have a mathematician called M
M's first operand is the number
M's second operand is 10
M is to modulo
I have a mathematician called N
N's first operand is M's result
N's second operand is 2
N is to compare
If N says it's equal then my t is 1
M is to divide
The number is M's result
M's first operand is the number
M's second operand is 0
M is to compare
If M says it's greater then I am to loop
When this program starts:
I have a t called T
T is to w 0
```
[Try it online!](https://tio.run/##tVM9b8IwEN39K04sXdOO3ToyJFMkZmMf2Ko/Up8D4tenF0hIKFAqpC5Rcs/33su7c0yfXVcbTAiWgFplQEI2NmxBUv8qPiCDkgH2/BVav8Z0LunLkjl1wN5YprE0oWJlMBwxruY443oXS@7bIRe8zAb5YZVlbiWdQw2lKF8INjZRhthgkkEfOQyO3D1OqCIDswOvohy0pNaiPh/vi31HQmpdFuXh5KmYbAznBv0gwg@9JUjf8/bYTW@eOR@6UtE3MuEkSyrZNY6yK7HcQAkkDwQ2M5dDOroIsBozTDbjhbG/dSxg8WymRXHt/57oGJOLsbmav/7/@U9WfdStiw90KlHd0pmtSnVT501U14lUs0Twq5XuFIkflm3aAm13VuMv6/nUvz@c0jahzCx2b1B8/wmaFLeJIcoyZZrNKY@Z1aI@3@ei674B "ORK ‚Äì Try It Online")
**O**bjects **R** **K**ool. Output is a space-delimited list of numbers.
This translates (approximately) to the following pseudocode:
```
class t {
	int t;
	
	void w(number) {
		label T_W;
		mathematician M;
		M.first_operand = number;
		M.second_operand = 1;
		M.add();
		number = M.result;
		t = 0;
		int n = number;
		d(n);
		M.first_operand = t;
		M.second_operand = 1;
		M.compare();
		scribe W;
		if M.its_less { W.write(number); }
		if M.its_less { W.write(" "); }
		M.first_operand = number;
		M.second_operand = 100;
		M.compare();
		if M.its_less { goto T_W; }
	}
	
	void d(number) {
		label T_D;
		mathematician M;
		M.first_operand = number;
		M.second_operand = 10;
		M.modulo();
		mathematician N;
		N.first_operand = M.result;
		N.second_operand = 2;
		N.compare();
		if N.its_equal { t = 1; }
		M.divide();
		number = M.result;
		M.first_operand = number;
		M.second_operand = 0;
		M.compare();
		if M.its_greater { goto T_D; }
	}
}
void main() {
	t T;
	T.w(0);
}
```
As you can see, *everything* is done using objects, including basic math and IO functions (through the built-in mathematician and scribe classes). Only whole functions can loop, which explains the need for an object with two functions to do the work.
[Answer]
# [MathGolf](https://github.com/maxbergmark/mathgolf), ~~7~~ 6 bytes
```
‚ôÄ‚ïí√á{2‚ïß
```
[Try it online!](https://tio.run/##y00syUjPz0n7///RzIZHUycdbq82ejR1@f//AA "MathGolf ‚Äì Try It Online")
## Explanation
```
‚ôÄ‚ïí       Push 100 and convert to 1-based range ([1,2,...,100])
  ƒå{     Inverse filter by block
    2‚ïß   Does the number contain 2?
```
[Answer]
# [C (clang)](http://clang.llvm.org/), 56 bytes
```
f(i){for(i=0;i++<100;i%10^2&&i/10^2&&printf("%d\n",i));}
```
[Try it online!](https://tio.run/##S9ZNzknMS///P00jU7M6Lb9II9PWwDpTW9vG0ABIqxoaxBmpqWXqQ@iCosy8kjQNJdWUmDwlnUxNTeva/0ARhdzEzDwNoHYNTeui1JLSojwFA6AMAA "C (clang) ‚Äì Try It Online")
[Answer]
# PHP 7.1, 40 bytes
```
while($i++<100)strstr($i,50)||print$i._;
```
prints numbers separated by underscores. Run with `-nr` or [try it online](http://sandbox.onlinephpfunctions.com/code/21335cb48b903f157762c893119666dc11c43d15).
[Answer]
# [Red](http://www.red-lang.org), 44 bytes
```
repeat n 100[unless find form n"2"[print n]]
```
[Try it online!](https://tio.run/##K0pN@R@UmhId@78otSA1sUQhT8HQwCC6NC8ntbhYIS0zL0UhLb8oVyFPyUgpuqAoMw@oIjb2/38A "Red ‚Äì Try It Online")
Uses `unless` instead of `if not`, because why not? :)
[Answer]
# [brainfuck](https://github.com/TryItOnline/brainfuck), 176 bytes
```
---------[[-<]-[>]>[>]-[-<]<++]-[>-<+++++++++]>--[>[->]<[<<<]>>[->]>-]<<,<-[-<]>[>]<[.[->+<]++++++++++.,<]>>[>]>>->-<<<<[>>>[<<[<]<.>>[>]>.[-<+>]++++++++++.,>]<<[<]<,<]>>>>.<..
```
[Try it online!](https://tio.run/##VY1bCsRQCEMXZHUFIRsRP9qBgTIwH4Wu/zbXeUAD4itHt2Pd38/z8RrDf8p0lCeLCp8NzObAlb8qysd0FhJAsWt6AQuamTAyNDbUn7NY2iwvXQelpHolvYnPRhCMN0i32tE0GYgY4wI "brainfuck ‚Äì Try It Online")
Shorter is definitely possible. This generates the numbers `1,3,4,5,6,7,8,9` and `0,1,3,4,5,6,7,8,9`. First it outputs each number in the first list, then it outputs every combination of the first and second list, then finally prints just `100`.
### Explanation:
```
---------   Push minus 9
[           Repeat 9 times
  [-<]-[>]    Add the negative of the number to the first list
  >[>]-[-<]<  Add the negative of the number to the second list
  ++          Increment the counter
]
Tape: 255 254 253 252 251 250 249 248 247 0' 0 246 247 248 249 250 251 252 253 254
-[>-<+++++++++]>--  Push 197
Tape: 255 254 253 252 251 250 249 248 247 0 197' 246 247 248 249 250 251 252 253 254
[
  >[->]<    Subtract 197 from every element in both lists to convert to digits
  [<<<]>>
  [->]>-
]
Tape: 58 57 56 55 54 53 52 51 49 0' 49 50 51 52 53 54 55 56 57
<<,<-[-<]>[>]<  Remove the 0 and the 2 from the first list
Tape: 58 57 56 55 54 53 52 51 0 0 0' 49 50 51 52 53 54 55 56 57
[  Loop over the first list
  .[->+<]        Print digit
  ++++++++++.,<  Print a newline
]
>>[>]>>->-   Remove the 2 from the second list
<<<<      
[  Loop over first list
  >>>
  [  Loop over second list
    <<[<]<.        Print first digit
    >>[>]>.        Print second digit
    [-<+>]         Move second digit over one
    ++++++++++.,>  Print a newline
  ]
  <<[<]<,<  Remove the digit from the first list and move to the next
]
>>>>.<..  Print 100 using the second list
```
[Answer]
# [SimpleTemplate](https://github.com/ismael-miguel/SimpleTemplate), 51 bytes
This was a fun challenge!
And it is a challenge where my language can do well.
```
{@forfrom 1to100}{@if_ is notmatches"<2>"}{@echol_}
```
Cycles through all values from 1 to 100, outputting the ones that don't have 2, separated by a newline.
You can try it on <http://sandbox.onlinephpfunctions.com/code/2c97a2b6954c29844f1079938da771d51e2e0d99>
**Ungolfed:**
```
{@for i from 1 to 100}
    {@if i is not matches "<2>"}
        {@echo i, "\n"}
    {@/}
{@/}
```
The `{@/}` is used to close the `{@for ...}` and `{@if ...}`, but is optional.  
When compiling to PHP, it adds the needed closing.
---
If you're curious, the golfed code results in this PHP code:
```
// {@forfrom 1to100}
// ~ optimization enabled ~ inlining the results
foreach(array(...) as $DATA['_']){
    // {@if_ is notmatches"<2>"}
    if(!(preg_match("<2>", (isset($DATA['_'])?$DATA['_']:null)))) {
        // {@echol_}
        echo implode('', $FN['array_flat']((isset($DATA['_'])?$DATA['_']:null)));echo PHP_EOL;
// AUTO-CLOSE
};};
```
Where `$FN['array_flat']` is defined outside of this code.
]