[Question]
  [
A lexicographically increasing number is an integer whose digits are in strictly increasing order. Print all lexicographically increasing numbers under 10000. 
Here are lines of the expected output:
```
0
1
2
3
4
5
6
7
8
9
12
13
14
15
16
17
18
19
23
24
25
26
27
28
29
34
35
36
37
38
39
45
46
47
48
49
56
57
58
59
67
68
69
78
79
89
123
124
125
126
127
128
129
134
135
136
137
138
139
145
146
147
148
149
156
157
158
159
167
168
169
178
179
189
234
235
236
237
238
239
245
246
247
248
249
256
257
258
259
267
268
269
278
279
289
345
346
347
348
349
356
357
358
359
367
368
369
378
379
389
456
457
458
459
467
468
469
478
479
489
567
568
569
578
579
589
678
679
689
789
1234
1235
1236
1237
1238
1239
1245
1246
1247
1248
1249
1256
1257
1258
1259
1267
1268
1269
1278
1279
1289
1345
1346
1347
1348
1349
1356
1357
1358
1359
1367
1368
1369
1378
1379
1389
1456
1457
1458
1459
1467
1468
1469
1478
1479
1489
1567
1568
1569
1578
1579
1589
1678
1679
1689
1789
2345
2346
2347
2348
2349
2356
2357
2358
2359
2367
2368
2369
2378
2379
2389
2456
2457
2458
2459
2467
2468
2469
2478
2479
2489
2567
2568
2569
2578
2579
2589
2678
2679
2689
2789
3456
3457
3458
3459
3467
3468
3469
3478
3479
3489
3567
3568
3569
3578
3579
3589
3678
3679
3689
3789
4567
4568
4569
4578
4579
4589
4678
4679
4689
4789
5678
5679
5689
5789
6789
```
This is a code golf challenge! Shortest answer wins!
(P.S. looking for a python solution)
  
[Answer]
# [Python 2](https://docs.python.org/2/), 56 bytes
```
for n in range(9999):
 if eval('<'.join(`n`))**n:print n
```
[Try it online!](https://tio.run/##K6gsycjPM/r/Py2/SCFPITNPoSgxLz1VwxIINK24FDLTFFLLEnM01G3U9bLyM/M0EvISNDW1tPKsCooy80oU8v7/BwA "Python 2 – Try It Online")
Converts each number like `124` to an expression `1<2<4` and evaluates it to check if the digits are sorted,
A hiccup happens for one-digit numbers giving an expression that just is the number itself. This causes `0` to evaluate to a Falsey value even though it should be printed. This is fixed by a trick suggested by Erik the Outgolfer of doing `**n`, which gives truthy value `0**0` for `n=0` and doesn't affect the truth value otherwise.
[Answer]
# [Python 2](https://docs.python.org/2/), 55 bytes
```
i=0
exec"print i\ni+=1\nif eval('<'.join(`i`)):1;"*7000
```
[Try it online!](https://tio.run/##K6gsycjPM/r/P9PWgCu1IjVZqaAoM69EITMmL1Pb1hBIpimkliXmaKjbqOtl5WfmaSRkJmhqWhlaK2mZGxgY/P8PAA "Python 2 – Try It Online")
[Answer]
# [Haskell](https://www.haskell.org/), 50 bytes
```
unlines[s|s<-show<$>[0..6^5],s==scanl1(max.succ)s]
```
[Try it online!](https://tio.run/##y0gszk7NyfmfZhvzvzQvJzMvtTi6uKbYRrc4I7/cRsUu2kBPzyzONFan2Na2ODkxL8dQIzexQq@4NDlZszj2f25iZp6CrUJBaUlwSZFC2v9/yWk5ienF/3WTCwoA "Haskell – Try It Online")
Outputs a multiline string. We check that the number `s` increasing using `s==scanl1(max.succ)s`, a variant of the usual sortedness check `s==scanl1 max s` that ensures strict sortedness by incrementing each digit character before taking the maximum of it and the next digit.
Ourous saved a byte by using `6^5` as the upper bound in place of a 4-digit number.
[Answer]
# [Jelly](https://github.com/DennisMitchell/jelly), 7 bytes
```
9ŒPḌḣ⁹Y
```
[Try it online!](https://tio.run/##y0rNyan8/9/y6KSAhzt6Hu5Y/KhxZ@T//wA "Jelly – Try It Online")
### How it works
```
9ŒPḌḣ⁹Y  Main link. No arguments.
9        Set the return value to 9.
 ŒP      Powerset; promote 9 to [1, ..., 9] and generate all subsets.
   Ḍ     Undecimal; map the subsets of digits to the integers they represent.
     ⁹   Yield 256.
    ḣ    Dyadic head; take the first 256 elements of the integer list.
      Y  Separate the result by linefeeds.
```
[Answer]
# Japt `-R`, ~~12~~ ~~11~~ 8 bytes
```
L²Ç¶ìüÃð
```
[Test it](https://ethproductions.github.io/japt/?v=1.4.6&code=TLLHtuz8w/A=&input=LVI=)
```
L            :100
 ²           :Squared
  Ç          :Map the range [0,L²)
    ì        :  Split to a digit array
     ü       :  For the sake of simplicity*, let's say: Sort & deduplicate
             :  Implicitly rejoin to an integer
   ¶         :  Test for equality with original number
      Ã      :End map
       ð     :Get 0-based indices of truthy elements
             :Implicitly join with newlines and output
```
\*Or, to offer a better explanation: the `ü` method sorts an array and splits it into equal elements (e.g., `[8,4,8,4].ü() -> [[4,4],[8,8]]`) and then, in what seems to be a strange quirk and hopefully not a bug, the `ì` method, when converting the array back to a number, takes the first element of each nested array, rather than first flattening the array, which is what I expected when I tried this trick (e.g., `[[4,4],[8,8]].ì() -> 48`).
[Answer]
# [R](https://www.r-project.org/), ~~62~~ 49 bytes
```
`[`=write;0[1];for(i in 1:4)combn(1:9,i)[1,i,,""]
```
[Try it online!](https://tio.run/##K/r/PyE6wba8KLMk1dog2jDWOi2/SCNTITNPwdDKRDM5PzcpT8PQylInUzPaUCdTR0dJKfb/fwA "R – Try It Online")
Because `combn` iterates through its input in the order given, it's easy to create all the lexicographically increasing integers, printing them out in order. `write` prints them each `i`-digit number in lines of width `i`, neatly fulfilling the newline requirement as well.
[Answer]
# [Perl 6](http://perl6.org/), 25 bytes
```
[<](.comb)&&.say for ^1e4
```
*-1 byte thanks to nwellnhof*
[Try it online!](https://tio.run/##K0gtyjH7/z/aJlZDLzk/N0lTTU2vOLFSIS2/SCHOMNXk/38A "Perl 6 – Try It Online")
`.comb` produces a list of the digits of each number, and `[<]` does a less-than reduction on that list, equivalent to: *digit1* < *digit2* < ... < *digitN*.
[Answer]
## Haskell, ~~56~~ 55 bytes
Edit: -1 byte thanks to @Ourous
```
mapM print$filter(and.(zipWith(<)<*>tail).show)[0..6^5]
```
[Try it online!](https://tio.run/##y0gszk7NyfmfZhvzPzexwFehoCgzr0QlLTOnJLVIIzEvRU@jKrMgPLMkQ8NG00bLriQxM0dTrzgjv1wz2kBPzyzONBaoLzNPwVYh7f@/5LScxPTi/7rJBQUA "Haskell – Try It Online")
[Answer]
# [PowerShell](https://github.com/TryItOnline/TioSetup/wiki/Powershell), ~~42~~ 40 bytes
```
0..1e4|?{-join("$_"|% t*y|sort -u)-eq$_}
```
[Try it online!](https://tio.run/##K8gvTy0qzkjNyfn/30BPzzDVpMa@WjcrPzNPQ0klXqlGVaFEq7KmOL@oREG3VFM3tVAlvvb/fwA "PowerShell – Try It Online")
Loop from `0` to `1e4` (i.e., `10000`). Pull out those objects where `|?{...}` the number as a string `$_` is `-eq`ual to the number cast `t`oCharArra`y` and then `sort`ed with the `-u`nique flag. In other words, only numbers that are the same as their sorted and deduplicated strings. Each of those are left on the pipeline and output is implicit.
[Answer]
# [Pyth](https://github.com/isaacg1/pyth), 10 bytes
```
jiRThc2yS9
```
[Try it online!](https://tio.run/##K6gsyfj/PyszKCQj2agy2PL/fwA "Pyth – Try It Online")
### How it works
```
jiRThc2yS9
        S9  Yield [1, 2, 3, 4, 5, 6, 7, 8, 9].
       y    Take all 512 subsets.
     c2     Split the array of subsets into 2 pieces (256 subsets each).
    h       Head; take the first piece.
 iRT        Convert each subset from base 10 to integer.
j           Separate by newlines.
```
[Answer]
# J, 26 bytes
```
,.(#~(-:/:~@~.)@":"0)i.1e4
```
[Try it online!](https://tio.run/##y/qfpmBrpWCgAMK6egrOQT5u/3X0NJTrNHSt9K3qHOr0NB2UrJQMNDP1DFNN/mtypSZn5Cso6Smk/QcA "J – Try It Online")
## explanation
```
,. (#~ (-: /:~@~.)@":"0) i.1e4
                         i.1e4  NB. list 0 to 9999
                     "0         NB. for each number in the input list
                  @":"0         NB. convert it to a string and
   (#~ (         )              NB. remove any not passing this test:
        -:                      NB. the string of digits matches
              @~.               NB. the nub of the digits (dups removed)
           /:~                  NB. sorted
,.                              NB. ravel items: take the result of all that
                                NB. and turn it into a big column
```
[Answer]
# [Common Lisp](http://www.lispworks.com/documentation/HyperSpec/Front/index.htm), ~~74~~ 72 bytes
```
(dotimes(i 7e3)(format(apply'char<(coerce(format()"~d"i)'list))"~d~%"i))
```
[Try it online!](https://tio.run/##S87JLC74/18jJb8kMze1WCNTwTzVWFMjLb8oN7FEI7GgIKdSPTkjschGIzk/tSg5FSajqVSXopSpqQ7UXqIJ4tSpArma//8DAA)
-2 bytes thank to @Shaggy!
[Answer]
# [05AB1E (legacy)](https://github.com/Adriandmen/05AB1E/tree/fb4a2ce2bce6660e1a680a74dd61b72c945e6c3b), 8 bytes
```
4°ÝD€êÃ»
```
[Try it online!](https://tio.run/##ARkA5v8wNWFiMWX//zTCsMOdROKCrMOqw4PCu/// "05AB1E (legacy) – Try It Online")
Works in the new version of 05AB1E as well but is painfully slow for some reason.
### How?
```
4°ÝD€êÃ» – Full program.
4°Ý      – Push [0 ... 10000].
   D€ê   – Push each integer in [0 ... 10000] sorted and deduplicated at the same time.
      Ã» – And join the interection of the two lists by newlines.
```
[Answer]
# [Perl 5](https://www.perl.org/), 47 bytes
```
map{$_&&s/.(?=(.))/$1-$&/gre=~/0|-/||say}0..1E4
```
[Try it online!](https://tio.run/##K0gtyjH9/z83saBaJV5NrVhfT8PeVkNPU1NfxVBXRU0/vSjVtk7foEZXv6amOLGy1kBPz9DV5P//f/kFJZn5ecX/dX1N9QwMDQA "Perl 5 – Try It Online")
Older:
[52 bytes](https://tio.run/##K0gtyjH9/z83saBaIys/M09dXac4v6ikWiVRVyWpVl9PP11TVyW@pkZfQ08zxlC/pqY4sbLWQE/P0NXk//9/@QUlmfl5xf91fU31DAwNAA "Perl 5 – Try It Online")
[Answer]
# [Regenerate](https://github.com/dloscutoff/Esolangs/tree/master/Regenerate) `-a`, ~~36~~ 34 bytes
```
0|(([2-9])$4{$1/$2}|$3![1-9]()){4}
```
[Attempt This Online!](https://ato.pxeger.com/run?1=m72qKDU9NS-1KLEkdVm0km6iUuyCpaUlaboWN5UMajQ0oo10LWM1VUyqVQz1VYxqa1SMFaMNgUIamprVJrUQlVANC6A0AA)
This was directly inspired by the [language's creator's answer](https://codegolf.stackexchange.com/a/249434/17216), but I figured this big optimization building on that idea was worth its own post.
```
    0              # Zero must be matched as a special case, because no other
                   # numbers have a leading '0' digit.
|
    (
        ([2-9])    # \2 = a digit intended to be greater than the previous
                   #      one ($1), but until being validated below, it can
                   #      be any digit in [2-9].
                   # We could actually do ([0-9]) here and it'd generate the
                   # same output, but would run slightly less efficiently.
        $4{$1/$2}  # Repeat a nonexistent group $1/$2 number of times. $1 and $2
                   # are the literal contents of those captures interpreted as
                   # numeric values upon which arithmetic can be done in a
                   # quantifier, which we do here. $1/$2 will evaluate to
                   # zero iff $2 is greater than $1, which is the only thing
                   # that will allow it to match, because if it repeats more
                   # than zero times, it tries to match the nonexistent group
                   # $4 which can't match.
    |
        $3         # If the above fails to match, due to $1 containing the
                   # digit '9', the regex engine will try other matches, even
                   # if they use short-circuiting alternation. So we put a
                   # dummy match here, which can only match on iterations
                   # other than the first one. Once this matches, it will be
                   # the only thing that can match in all subsequent
                   # iterations, because the attempted math "$2-$1-1" will
                   # fail still - now due to $1 no longer being a number (it
                   # will be blank).
    # Short-circuiting alternation - never try the following unless the all of
    # the above failed to match.
    !
        [1-9]      # Match the first digit. This can only happen on the first
                   # iteration, thanks to the short-circuiting alternation.
        ()         # $3 = empty capture - lets subsequent iterations know that
                   #      they are no longer the first iteration
    )              # $1 = whatever digit was matched above, for use by the next
                   #      iteration
    {4}            # Repeat the above loop for exactly 4 iterations. This
                   # allows a variable number of digits, due to the "$3" dummy
                   # alternative.
```
Alternative 34 bytes:
```
0|(([2-9])$3{$1/$2}|{#1}![1-9]){4}
```
[Attempt This Online!](https://ato.pxeger.com/run?1=m72qKDU9NS-1KLEkdVm0km6iUuyCpaUlaboWN5UMajQ0oo10LWM1VYyrVQz1VYxqa6qVDWsVow1BgtUmtRCVUA0LoDQA)
It might not be intended that this is possible, but Regenerate allows a quantifier to be preceded by nothing. This is what's happening with `{#1}` - it's impossible for it to match on the first iteration because `$1` hasn't been captured yet and doesn't have a length. On subsequent iterations, a match of nothing gets repeated one time (the length of `$1`).
[Answer]
# [Python 2](https://docs.python.org/2/), 61 bytes
```
for i in range(9999):
 if list(`i`)==sorted(set(`i`)):print i
```
[Try it online!](https://tio.run/##K6gsycjPM/r/Py2/SCFTITNPoSgxLz1VwxIINK24FDLTFHIyi0s0EjITNG1ti/OLSlJTNIpTIQKaVgVFmXklCpn//wMA "Python 2 – Try It Online")
[Answer]
# [Python 2](https://docs.python.org/2/), ~~64~~ 61 bytes
```
lambda:[x for x in range(9999)if sorted(set(`x`))==list(`x`)]
```
[Try it online!](https://tio.run/##K6gsycjPM/qfZhvzPycxNykl0Sq6QiEtv0ihQiEzT6EoMS89VcMSCDQz0xSK84tKUlM0ilNLNBIqEjQ1bW1zMosh7Nj/cD1pGppWXJwFRZl5JQoV/wE "Python 2 – Try It Online")
Gets the unique characters of the integer's string representation, sorts them, and compares the result to the original number.
[Answer]
# [V](https://github.com/DJMcMayhem/V), 41 bytes
```
7000ïÎaÛ
Îy$úúP
Ç^¨ä*©±$/d
ÎãlD
çˆ±/d
HO0
```
[Try it online!](https://tio.run/##K/v/39zAwODw@sN9iYdncx3uq1Q5vOvwrgCuw@1xh1YcXqJ1aOWhjSr6KUCZw4tzXLgOLz/UcWgjkO/hb/D/PwA "V – Try It Online")
Hexdump:
```
00000000: 3730 3030 efce 61db 0ace 7924 fafa 500a  7000..a...y$..P.
00000010: c75e a8e4 2aa9 b124 2f64 0ace e36c 440a  .^..*..$/d...lD.
00000020: e788 b12f 640a 484f 30                   .../d.HO0
```
[Answer]
# [Charcoal](https://github.com/somebody1234/Charcoal), 19 bytes
```
ΦＥＸχ⁴Ｉι¬Φι∧μ¬‹§ι⊖μλ
```
[Try it online!](https://tio.run/##S85ILErOT8z5/z@gKDOvRMMtM6cktUjDN7FAIyC/HMgyNNBRMNHUUXBOLC7RyNQEsvzy4coydRQc81I0ciGCPqnFxRqOJZ55KakVICmX1OSi1NzUvJJUoBKQzhxNCLD@//@/blkOAA "Charcoal – Try It Online") Link is to verbose version of code. Explanation:
```
   χ                Predefined variable 10
  Ｘ                 To the power
    ⁴               Literal 4
 Ｅ                  Map over implicit range
      ι             Current value
     Ｉ              Cast to string
Φ                   Filter over strings where
         ι          Current string
        Φ           Filtered over characters
           μ        Character index (is nonzero)
          ∧         And
                 μ  Character index
                ⊖   Decremented
              §     Indexed into
               ι    Current string
            ¬       Is not
             ‹      Less than
                  λ Current character
       ¬            Results in an empty string
                    Implicitly print matches on separate lines
```
[Answer]
# [Jelly](https://github.com/DennisMitchell/jelly), ~~13~~ ~~9~~ 8 bytes
*Saved 5 bytes thanks to @Dennis*
```
9œcⱮ4ẎŻY
```
[Try it online!](https://tio.run/##y0rNyan8/9/y6OTkRxvXmTzc1Xd0d@T//wA "Jelly – Try It Online")
### Explanation
Generates all lexicographically increasing numbers below 10000 by taking the digits [1...9] and finding all combinations of length ≤ 4.
```
9œcⱮ4ẎŻY    Main link. Arguments: none
9           Yield 9.
   Ɱ4       For each n in [1...4]:
 œc           Yield the combinations of the range [1...9] of length n.
     Ẏ      Tighten; dump each of the 4 lists generated into the main list.
      Ż     Prepend a 0 to the list.
       Y    Join on newlines.
```
---
# [Jelly](https://github.com/DennisMitchell/jelly), ~~11~~ ~~10~~ 9 bytes
*Saved a byte thanks to @EriktheOutgolfer*
```
ȷ4Ḷ<ƝẠ$ƇY
```
[Try it online!](https://tio.run/##ARkA5v9qZWxsef//yLc04bi2PMad4bqgJMaHWf// "Jelly – Try It Online")
### Explanation
Filters through the range, keeping the numbers that are lexicographically increasing.
```
ȷ4Ḷ<ƝẠ$ƇY    Main link. Arguments: none
ȷ4           Yield 10^4 (10000).
  Ḷ          Generate the range [0...10000).
       Ƈ     Filter; yield only the numbers where this link return a truthy value.
      $        Run these two links and yield the result.
    Ɲ            For each pair of items (digits) in the number:
   <               Check whether the left digit is less than the right digit.
     Ạ           All; check that every comparison yielded true.
               This yields whether the digits are strictly increasing.
        Y    Join the filtered list on newlines.
```
[Answer]
# [Wolfram Language (Mathematica)](https://www.wolfram.com/wolframscript/), 36 bytes
After I wrote this, it was clarified that each number must be on a new line, so +7 bytes for the `Print/@`.
This method takes advantage of the fact that the `Subsets` function 1) doesn't replicate any digits and 2) sorts the output by set size and set contents. `FromDigits` assembles each list of digits.
-1 byte thanks to @Mr.Xcoder
```
Print/@FromDigits/@Range@9~Subsets~4
```
[Try it online!](https://tio.run/##y00syUjNTSzJTE78/z@gKDOvRN/BrSg/1yUzPbOkWN8hKDEvPdXBsi64NKk4taS4zuT/fwA "Wolfram Language (Mathematica) – Try It Online")
[Answer]
# [K (ngn/k)](https://gitlab.com/n9n/k) / [K (oK)](https://github.com/JohnEarnest/ok), ~~32~~ ~~30~~ 26 bytes
**Solution:**
```
`0:$&&/'1_'>':'" ",'$!9999
```
[Try it online!](https://tio.run/##y9bNz/7/P8HASkVNTV/dMF7dTt1KXUlBSUddRdESCP7/BwA "K (oK) – Try It Online")
**Explanation:**
```
`0:$&&/'1_'>':'" ",'$!9999 / the solution
                     !9999 / range 0..9998 (could use !6890)
                    $      / string
               " ",'       / prepend " " to each (lower than "0" in ascii)
            >:'            / greater-than each-previous?
         1_'               / drop first result from each
      &/'                  / max (&) over (/)
    &                      / indices where true
   $                       / convert to string
`0:                        / print to stdout
```
[Answer]
# JavaScript REPL, 64 bytes
A bit of pub golf so probably far from optimal.
```
(f=n=>n&&f(n-1)+([...n+``].every(x=>y<(y=x),y=0)?`
`+n:``))(7e3)
```
[Try it online](https://tio.run/##BcFRCoMwDADQ/x1EEroGZR8DWfQgIkRcOhwlHTqkPX1977ucy7Hu2@/vLb21rsmOFJVi@kCFwMaDNU0A8x06mIjInMhMeupeIPNQXlA4471wi6PcxFkvgghPfWDFegE)
Yes, doing it without an IIFE would be a few bytes shorter but that throws an overflow error when called, which would normally be fine as we can assume infinite memory for the purposes of code golf but, to me, doesn't seem to be in the spirit of KC challenges.
[Answer]
# [C (gcc)](https://gcc.gnu.org/), ~~97~~ ~~89~~ 81 bytes
Thanks to [ceilingcat](https://codegolf.stackexchange.com/users/52904/ceilingcat) for -8 bytes.
Another -8 thanks to [Dennis](https://codegolf.stackexchange.com/users/12012/dennis)
```
g(n){n=!n||n/10%10<n%10&&g(n/10);}f(i){for(i=-1;++i<7e3;g(i)&&printf("%u\n",i));}
```
[Try it online!](https://tio.run/##DYpBDkAwEEXXegokmpkgNBYW5SY20mgzC0OEVTl7zeYl//3n2uBcSgEYI88Fvy93pq9MP7FAazlko/08EEZ/XEBza2xd0zRugw1itT4v4ttDWT0Llw2h5ElMvq/EgCqqzANa9aUf "C (gcc) – Try It Online")
[Answer]
# [C# (Visual C# Interactive Compiler)](http://www.mono-project.com/docs/about-mono/releases/5.0.0/#csc), ~~102~~ ~~101~~ ~~73~~ ... 72 bytes
-12 **and** -4 thanks @Dennis!
```
for(var i=0;i<7e3;i++)if((i+"").Aggregate((a,b)=>a<b?b:':')<58)Print(i);
```
[Try it online!](https://tio.run/##BcFBCoAgEADAr4QXd7EiiCjUin7QF1RU9lKg0ve3mVCHUIk5vQU@VzraJ0N2jbMhpZASACkhcLxyLjG7FgFc73E/nPWn11JLtMuGd6GnAaFh/gE "C# (Visual C# Interactive Compiler) – Try It Online")
Each integer from 0 to 7k tested by first converting it into a string. Leveraging the fact that C# treats strings as character enumerables and LINQ, an aggregate is calculated for each character enumerable as follows:
* compare the accumulated value with the current character
* if the current character is greater than the accumulation, return the current character
* otherwise return `:` which is greater than `9`
If the result of this is less than `:` (ASCII 58), then the number has lexicographically increasing digits.
[Answer]
# [Regenerate](https://github.com/dloscutoff/Esolangs/tree/master/Regenerate) `-a`, 72 bytes
```
0|([1-9])(([2-9])(){$3-$1-1}(([3-9])(){$6-$3-1}(([4-9])(){$9-$6-1})?)?)?
```
Appropriately, outputs the numbers in lexicographic order. [Attempt This Online!](https://ato.pxeger.com/run?1=m72qKDU9NS-1KLEkdVm0km6iUuyCpaUlaboWNz0MajSiDXUtYzU1NKKNwLRmtYqxroqhrmEtUMgYJmSmCxQFC5nAhCx1gaKGtZr2IAgxD2rsAigNAA)
### Explanation
```
0|
```
Match 0, or:
```
([1-9])
```
Match a digit 1 through 9 (capture group 1).
```
(...)?
```
Either stop there, or continue:
```
([2-9])
```
Match a digit 2 through 9 (capture group 3), and:
```
(){$3-$1-1}
```
Match an empty group X times, where X equals the second digit minus the first digit minus 1. If the second digit is not larger than the first digit, this quantity is negative, and using a negative number as a repetition count causes the match to fail. Thus, only matches where the second digit is larger than the first digit are included.
```
(...)?
```
Either stop there, or continue:
```
([3-9])
```
Match a digit 3 through 9 (capture group 6), and:
```
(){$6-$3-1}
```
Match an empty group Y times, where Y equals the third digit minus the second digit minus 1 (ensuring that the third digit is larger than the second digit).
```
(...)?
```
Either stop there, or continue:
```
([4-9])
```
Match a digit 4 through 9 (capture group 9), and:
```
(){$9-$6-1}
```
Match an empty group Z times, where Z equals the fourth digit minus the third digit minus 1 (ensuring that the fourth digit is larger than the third digit).
[Answer]
# [Python 2](https://docs.python.org/2/), 63 bytes
```
for i in range(6790):
 if`i`=="".join(sorted(set(`i`))):print i
```
[Try it online!](https://tio.run/##K6gsycjPM/r/Py2/SCFTITNPoSgxLz1Vw8zc0kDTikshMy0hM8HWVklJLys/M0@jOL@oJDVFozi1RAMorqmpaVVQlJlXopD5/z8A "Python 2 – Try It Online")
[Answer]
# [Stax](https://github.com/tomtheisen/stax), 8 [bytes](https://github.com/tomtheisen/stax/blob/master/docs/packed.md#packed-stax)
```
¬ ▬A♥¶N∙
```
[Run and debug it](https://staxlang.xyz/#p=aa20164103144ef9&i=&a=1)
[Answer]
# [Clean](https://github.com/Ourous/curated-clean-linux), 90 bytes
```
import StdEnv
Start=(0,[('
',n)\\n<-[1..6^5]|(\l=removeDup l==sort l)[c\\c<-:toString n]])
```
[Try it online!](https://tio.run/##FcsxCsMgFADQPadwi0IS2qEdStySodDNUS1YY4Og32B@AoWevbYd3/BscAZKTNMWHInGQ/FxSRmJwGmEvRJoMnJ6aCStq7oBphT0rTx23fl@0m@qAs8upt0N20IC5@v/BiatUrZvL5gEZg8zAa1ZKR/7DGZeS3u9leEFJnr7w@ML "Clean – Try It Online")
[Answer]
# [Red](http://www.red-lang.org), 59 bytes
```
repeat n 9999[if(d: n - 1)= do sort unique form d[print d]]
```
[Try it online!](https://tio.run/##K0pN@R@UmhId@78otSA1sUQhT8ESCKIz0zRSrIAcXQVDTVuFlHyF4vyiEoXSvMzC0lSFtPyiXIWU6IKizLwShZTY2P//AQ "Red – Try It Online")
]