# Seven Lines of Julia (examples sought)

**URL:** <https://discourse.julialang.org/t/seven-lines-of-julia-examples-sought/50416>\
**Category:** General Usage\
**Created:** [November 19, 2020, 7:37am UTC](https://discourse.julialang.org/t/seven-lines-of-julia-examples-sought/50416 "2020-11-19T07:37:29Z")\
**Posts on this page:** 20\
**Page:** 9

<div class="post-metadata">

**Author:** ![rocco\_sprmnt21](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rocco_sprmnt21/32/20127_2.png) [@rocco\_sprmnt21](https://discourse.julialang.org/u/rocco_sprmnt21)\
**Post date:** [June 7, 2022, 4:36pm UTC](https://discourse.julialang.org/t/seven-lines-of-julia-examples-sought/50416/176 "2022-06-07T16:36:15Z")

</div>

> [@skleinbo](#):
>
> Try `]add MathTeXEngine@0.4`

```julia
(@v1.7) pkg> add MathTeXEngine@0.4
 ├─restricted by compatibility requirements with MathTeXEngine [0a4f8689] to versions: 0.4.1-0.4.2       
 │ └─MathTeXEngine [0a4f8689] log:
 │ ├─possible versions are: 0.1.0-0.4.1 or uninstalled
 │ └─restricted to versions 0.4 by an explicit requirement, leaving only versions 0.4.0-0.4.1
 └─restricted by compatibility requirements with StructArrays [09ab397b] to versions: 0.1.0-0.3.10 or uninstalled — no versions left
   └─StructArrays [09ab397b] log:
     ├─possible versions are: 0.0.1-0.6.8 or uninstalled
     ├─restricted to versions * by an explicit requirement, leaving only versions 0.0.1-0.6.8
     ├─restricted by compatibility requirements with PooledArrays [2dfb63ee] to versions: [0.0.1-0.2.2, 0.4.2-0.6.8] or uninstalled, leaving only versions: [0.0.1-0.2.2, 0.4.2-0.6.8] │ └─PooledArrays [2dfb63ee] log:
     │ ├─possible versions are: 0.3.0-1.4.2 or uninstalled
     │ ├─restricted to versions 1.2.1-1 by InMemoryDatasets [5c01b14b], leaving only versions 1.2.1-1.4.2
     │ │ └─InMemoryDatasets [5c01b14b] log: │ │ ├─possible versions are: 0.7.3 or uninstalled
     │ │ └─InMemoryDatasets [5c01b14b] is fixed to version 0.7.3
     │ └─restricted to versions 1.3.0-1 by DataFrames [a93c6f00], leaving only versions 1.3.0-1.4.2    
     │ └─DataFrames [a93c6f00] log: │ ├─possible versions are: 1.4.0 or uninstalled
     │ └─DataFrames [a93c6f00] is fixed to version 1.4.0
     └─restricted by compatibility requirements with IndexedTables [6deec6e2] to versions: 0.4.1-0.4.4, leaving only versions: 0.4.2-0.4.4
       └─IndexedTables [6deec6e2] log:
         ├─possible versions are: 0.7.4-1.0.0 or uninstalled
         ├─restricted to versions * by an explicit requirement, leaving only versions 0.7.4-1.0.0        
         ├─restricted by compatibility requirements with Compat [34da2185] to versions: 0.8.0-1.0.0 or uninstalled, leaving only versions: 0.8.0-1.0.0 │ └─Compat [34da2185] log:
         │ ├─possible versions are: 1.0.0-4.1.0 or uninstalled
         │ └─restricted to versions 3.17.0-3 by InMemoryDatasets [5c01b14b], leaving only versions 3.17.0-3.45.0
         │ └─InMemoryDatasets [5c01b14b] log: see above └─restricted by compatibility requirements with PooledArrays [2dfb63ee] to versions: 1.0.0 or uninstalled, leaving only versions: 1.0.0
           └─PooledArrays [2dfb63ee] log: see above

```

seems there is a lot of “people” who disagree.

---

<div class="post-metadata">

**Author:** ![skleinbo](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/skleinbo/32/36080_2.png) [@skleinbo](https://discourse.julialang.org/u/skleinbo)\
**Post date:** [June 7, 2022, 4:50pm UTC](https://discourse.julialang.org/t/seven-lines-of-julia-examples-sought/50416/177 "2022-06-07T16:50:55Z")

</div>

I think that’s `IndexedTables` holding back `StructArrays`. Either get rid of the former, or use a fresh environment.

---

<div class="post-metadata">

**Author:** ![jules](https://avatars.discourse-cdn.com/v4/letter/j/41988e/32.png) [@jules](https://discourse.julialang.org/u/jules)\
**Post date:** [June 8, 2022, 10:02am UTC](https://discourse.julialang.org/t/seven-lines-of-julia-examples-sought/50416/178 "2022-06-08T10:02:55Z")

</div>

This is cool, but the straight line segments seem not to be animated in steps right? I immediately jumped to the source to see what you’re doing because animating beziers with linear speed along the curve was a wish of mine once. Like a train along a track.

---

<div class="post-metadata">

**Author:** ![cormullion](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/cormullion/32/49131_2.png) [@cormullion](https://discourse.julialang.org/u/cormullion)\
**Post date:** [June 8, 2022, 10:11am UTC](https://discourse.julialang.org/t/seven-lines-of-julia-examples-sought/50416/179 "2022-06-08T10:11:14Z")

</div>

Yes, it’s cheating with straight-line and samples. 🙂 I’m not good at maths, but if I was, I’d certainly use [pomax’s web page](https://pomax.github.io/bezierinfo/#arclength) to do this sort of thing, because I like cool things like that.

---

<div class="post-metadata">

**Author:** ![jules](https://avatars.discourse-cdn.com/v4/letter/j/41988e/32.png) [@jules](https://discourse.julialang.org/u/jules)\
**Post date:** [June 9, 2022, 7:14am UTC](https://discourse.julialang.org/t/seven-lines-of-julia-examples-sought/50416/180 "2022-06-09T07:14:46Z")

</div>

Maybe if I have time I could try and transfer some of that into a PR

---

<div class="post-metadata">

**Author:** ![alemelis](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/alemelis/32/208433_2.png) [@alemelis](https://discourse.julialang.org/u/alemelis)\
**Post date:** [June 23, 2022, 5:01pm UTC](https://discourse.julialang.org/t/seven-lines-of-julia-examples-sought/50416/181 "2022-06-23T17:01:51Z")

</div>

GOTO10-like oneliner

```julia
println.(1:10 .|>_->prod(j->rand(["╱╲"...]),1:10));

```

prints this random pattern

```julia
╲╱╲╱╲╲╲╲╱╱
╱╱╲╲╱╲╱╲╲╲
╲╱╱╱╱╲╱╲╲╱
╱╲╲╲╲╲╲╲╱╲
╱╱╲╲╱╱╱╱╱╲
╲╲╱╲╲╱╲╲╲╱
╲╱╱╲╲╱╱╲╱╲
╱╲╱╱╱╱╲╲╲╲
╱╱╲╱╲╱╱╱╲╲
╱╲╱╱╱╱╲╲╱╱

```

change the “palette” for more generative fun. For example, `╒╓╔╕╖╗╘╙╚╛╜╝╞╟` yields

```julia
╗╟╒╘╟╝╗╒╛╔
╞╘╝╝╓╘╗╖╙╒
╓╟╘╘╒╙╚╒╛╘
╒╖╒╙╗╝╒╔╛╘
╓╘╘╛╜╝╙╔╞╞
╜╛╞╖╔╓╟╛╛╚
╞╞╗╖╒╘╕╕╒╗
╔╞╖╞╚╗╝╔╗╗
╔╚╛╝╔╚╞╙╘╟
╙╚╝╚╒╓╔╕╞╛

```

---

<div class="post-metadata">

**Author:** ![mschauer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mschauer/32/13946_2.png) [@mschauer](https://discourse.julialang.org/u/mschauer)\
**Post date:** [July 27, 2022, 8:33am UTC](https://discourse.julialang.org/t/seven-lines-of-julia-examples-sought/50416/183 "2022-07-27T08:33:17Z")

</div>

> [@alemelis](#):
>
> GOTO10-like oneliner
> 
> ```julia
> println.(1:10 .|>_->prod(j->rand(["╱╲"...]),1:10));
> 
> ```
> 
> prints this random pattern

_A propos_: [code golf - Maze generating one liner - Code Golf Stack Exchange](https://codegolf.stackexchange.com/questions/58653/maze-generating-one-liner)

---

<div class="post-metadata">

**Author:** ![Syx\_Pek](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/syx_pek/32/6364_2.png) [@Syx\_Pek](https://discourse.julialang.org/u/Syx_Pek)\
**Post date:** [July 31, 2022, 5:01pm UTC](https://discourse.julialang.org/t/seven-lines-of-julia-examples-sought/50416/184 "2022-07-31T17:01:50Z")

</div>

I know this is more than seven lines, but like above in the spirit of the thread.  
(It’s seven lines if you ignore the setup and cleanup 😛)

```julia
using Term, REPL, UnicodePlots

begin
    t, N, Fn = REPL.TerminalMenus.terminal, 0, "15sinc(√(x^2 + y^2) / π)"
    REPL.Terminals.raw!(t, true), print(stdout, "\x1b[?25l")
    io = IOContext(PipeBuffer(), :color=>true)
    while true
        println(io, Panel(string(surfaceplot(-8:8., -8:8., eval(Meta.parse("(x, y) ->"*Fn));
            azimuth = mod(N, 360) - 180, zoom = 1.25, colormap = :jet, lines=true);
            color = true); fit = false, padding= (0, 0, 2, 2), title = Fn, width = 90, 
            justify = :center, subtitle = "[j]/[l] to rotate, [q] to quit", subtitle_justify=:right))
        REPL.Terminals.clear(t); println(read(io, String))
        c = read(stdin, Char);
        c == 'q' && break; c == 'j' && (N += 10); c == 'l' && (N -= 10)
    end
    REPL.Terminals.raw!(t, false), print(stdout, "\x1b[?25h")
end

```

This yields (the picture loses a little, it is interactive!)

 ![2022-08-01-00:59:41-screenshot](https://global.discourse-cdn.com/julialang/original/3X/3/0/301f9c9a63e7ce0561886719e860535563a10b64.png)

Code partially taken from: [[ANN] UnicodePlots.jl v2.8.0 - 3D plots](https://discourse.julialang.org/t/ann-unicodeplots-jl-v2-8-0-3d-plots/75963)

---

<div class="post-metadata">

**Author:** ![rocco\_sprmnt21](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rocco_sprmnt21/32/20127_2.png) [@rocco\_sprmnt21](https://discourse.julialang.org/u/rocco_sprmnt21)\
**Post date:** [August 1, 2022, 10:40am UTC](https://discourse.julialang.org/t/seven-lines-of-julia-examples-sought/50416/185 "2022-08-01T10:40:14Z")

</div>

![immagine](https://global.discourse-cdn.com/julialang/original/3X/5/0/508da1a1623e24dd7199c470d7d22829d3018236.png)

Perhaps these two variants better capture the spirit of the “until convergence” request.  
Obviously there are many types of “convergences”.  
Here are just two examples with somewhat naive norms.

```julia
v=[1,1,2,3,5]
F(x)=[mean(x),prod(x)^(1/length(x)), median(x)]

f(x)=partition(iterated(F,x),2)
collect(takewhile(x->!isapprox(x...), f(F(v))))[end][1]

f(x)=partition(iterated(F,x),2)
collect(last.(takewhile(Base.splat(!isapprox), f(F(v)))))

f(x)=iterated(F,x)
collect(takewhile(x->var(x)>eps(), f(v)))

```

---

<div class="post-metadata">

**Author:** ![Henri\_Laurie](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/henri_laurie/32/5079_2.png) [@Henri\_Laurie](https://discourse.julialang.org/u/Henri_Laurie)\
**Post date:** [September 2, 2022, 7:39am UTC](https://discourse.julialang.org/t/seven-lines-of-julia-examples-sought/50416/186 "2022-09-02T07:39:27Z")

</div>

Beautiful: instructive, concise, has xkcd’s “Geothmetic Meandian”.

Minor point: this calls functions not in Base. I added

`using Statistics: mean, median, var`

`using IterTools: iterated, partition, takewhile`

to the version I ran.

---

<div class="post-metadata">

**Author:** ![rocco\_sprmnt21](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rocco_sprmnt21/32/20127_2.png) [@rocco\_sprmnt21](https://discourse.julialang.org/u/rocco_sprmnt21)\
**Post date:** [December 8, 2022, 1:39pm UTC](https://discourse.julialang.org/t/seven-lines-of-julia-examples-sought/50416/187 "2022-12-08T13:39:53Z")

</div>

```julia

using Plots; gr()
sier = scatter(1,xlim = (0, 1),ylim = (0, sqrt(3)/2), legend = false, marker = 1)
m=0.5 .* ((0,0).+ (1,0))
@gif for i=1:5000
        global m=0.5 .*(m .+ rand([(0,0),(1,0),0.5.*(1,sqrt(3))]))
        push!(sier, m)
     end every 10

```

![sierpinski10fr25kpts](https://global.discourse-cdn.com/julialang/original/3X/0/8/0840e34f26ffd404ec724b6c7b71df927d774a51.gif)

The algorithm comes from a [math letters](https://www.youtube.com/watch?v=Fgu5-3ihVVI) post.  
The explanation, in my opinion, (not a real formal demonstration, but very substantially) lies in the fact that the operation of taking the midpoint between a generic point and one of the vertices ensures that there will never be any points in the “median triangle” (i.e. the triangle that has vertices at the midpoints of the sides) and this happens at every “level”

---

<div class="post-metadata">

**Author:** ![Kaguro](https://avatars.discourse-cdn.com/v4/letter/k/858c86/32.png) [@Kaguro](https://discourse.julialang.org/u/Kaguro)\
**Post date:** [December 14, 2022, 12:34pm UTC](https://discourse.julialang.org/t/seven-lines-of-julia-examples-sought/50416/188 "2022-12-14T12:34:48Z")

</div>

Hello! I don’t understand the syntax of wrap(x,y) operator. Can you please show me some documentation/ simple examples?

---

<div class="post-metadata">

**Author:** ![lmiq](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lmiq/32/18314_2.png) [@lmiq](https://discourse.julialang.org/u/lmiq)\
**Post date:** [December 14, 2022, 1:29pm UTC](https://discourse.julialang.org/t/seven-lines-of-julia-examples-sought/50416/189 "2022-12-14T13:29:10Z")

</div>

From: [Control Flow · The Julia Language](https://docs.julialang.org/en/v1/manual/control-flow/#man-conditional-evaluation)

The so-called “ternary operator”, `?:`, is closely related to the `if`-`elseif`-`else` syntax, but is used where a conditional choice between single expression values is required, as opposed to conditional execution of longer blocks of code. It gets its name from being the only operator in most languages taking three operands:

```julia
a ? b : c

```

The expression `a`, before the `?`, is a condition expression, and the ternary operation evaluates the expression `b`, before the `:`, if the condition `a` is `true` or the expression `c`, after the `:`, if it is `false`. Note that the spaces around `?` and `:` are mandatory: an expression like `a?b:c` is not a valid ternary expression (but a newline is acceptable after both the `?` and the `:`).

---

<div class="post-metadata">

**Author:** ![rocco\_sprmnt21](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rocco_sprmnt21/32/20127_2.png) [@rocco\_sprmnt21](https://discourse.julialang.org/u/rocco_sprmnt21)\
**Post date:** [December 26, 2022, 11:34pm UTC](https://discourse.julialang.org/t/seven-lines-of-julia-examples-sought/50416/190 "2022-12-26T23:34:34Z")

</div>

**An animated version of Gonway’s “Game of Life”, squeezed tightly into 7 lines.**

```julia

using IterTools, Colors, FileIO

function gen(m)
    M=copy(m)
    foreach(c -> let
        snb=count(w->w==RGB(1.0,1.0,1.0),m[intersect(c .+ CartesianIndices((-1:1,-1:1)),CartesianIndices(m))]) - (m[c]==RGB(1.0,1.0,1.0))
        (m[c]==RGB(1.0,1.0,1.0) && (snb<2 || snb>3)) ? M[c]=zero(RGB) : (m[c]==zero(RGB) && snb==3) ? M[c]=RGB(1.0,1.0,1.0) : nothing 
    end , CartesianIndices(m))
    M
end

save("init61_4x4_fps2.gif", reduce((x,y)-> [x;;;y],takestrict(iterated(gen, begin I0=zeros(RGB,9,9); I0[3:7, 5].=RGB(1.0,1.0,1.0);repeat(I0,4,4) end),30)); fps=2)

```

![init61_4x4_fps2](https://global.discourse-cdn.com/julialang/original/3X/5/1/5199833d6d91f9f97e46fd5b7f3545893b5d3c85.gif)  
 ![game of live nX2](https://global.discourse-cdn.com/julialang/original/3X/b/0/b05d76f8a5922fe35db64d58c421aab4a86d2f02.gif)

---

<div class="post-metadata">

**Author:** ![Syx\_Pek](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/syx_pek/32/6364_2.png) [@Syx\_Pek](https://discourse.julialang.org/u/Syx_Pek)\
**Post date:** [September 1, 2023, 7:44am UTC](https://discourse.julialang.org/t/seven-lines-of-julia-examples-sought/50416/191 "2023-09-01T07:44:59Z")

</div>

```julia
using Pkg
List = [b.name for (a, b) in reduce(vcat, [x.pkgs for x in Pkg.Registry.reachable_registries()])]
filter!(x -> !occursin("jll", x), List)
Pkg.add(rand(List))

```

Adds a random package.

---

<div class="post-metadata">

**Author:** ![giordano](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/giordano/32/2166_2.png) [@giordano](https://discourse.julialang.org/u/giordano)\
**Post date:** [September 1, 2023, 9:40am UTC](https://discourse.julialang.org/t/seven-lines-of-julia-examples-sought/50416/192 "2023-09-01T09:40:54Z")

</div>

> [@Syx\_Pek](#):
>
> ```julia
> List = [b.name for (a, b) in reduce(vcat, [x.pkgs for x in Pkg.Registry.reachable_registries()])]
> filter!(x -> !occursin("jll", x), List)
> 
> ```

You can do the filtering within the comprehension:

```julia
List = [b.name for (a, b) in reduce(vcat, [x.pkgs for x in Pkg.Registry.reachable_registries()]) if !occursin("jll", b.name)];

```

---

<div class="post-metadata">

**Author:** ![gustaphe](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gustaphe/32/18174_2.png) [@gustaphe](https://discourse.julialang.org/u/gustaphe)\
**Post date:** [September 1, 2023, 2:16pm UTC](https://discourse.julialang.org/t/seven-lines-of-julia-examples-sought/50416/193 "2023-09-01T14:16:28Z")

</div>

And the innermost square brackets can be replaced by parentheses, possibly reducing the allocations (haven’t benchmarked it, so I could be wrong).

---

<div class="post-metadata">

**Author:** ![RoyiAvital](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/royiavital/32/571_2.png) [@RoyiAvital](https://discourse.julialang.org/u/RoyiAvital)\
**Post date:** [April 19, 2025, 3:22pm UTC](https://discourse.julialang.org/t/seven-lines-of-julia-examples-sought/50416/194 "2025-04-19T15:22:55Z")

</div>

Great thread and the examples are so creative.

I am always full of appreciation for the optimization packages in Julia.  
I mostly use `JuMP.jl`, `Convex.jl` and `Optim.jl` but there are many and the quality is probably the highest of all similar languages (MATLAB, Python, R).

Simple example, calculating the minimum volume sphere which encloses a set of points:

```julia
using Convex;
using ECOS;

numSamples = 100;
dataDim = 2; #<! May changed to higher dimension
mX = randn(dataDim, numSamples); #<! Matrix of samples, each column as a sample

vC = Variable(dataDim); #<! Center
circRadius = Variable(1); #<! Radius
sConvProb = minimize( circRadius, [Convex.norm(vX - vC) <= circRadius for vX in eachcol(mX)] );

solve!(sConvProb, ECOS.Optimizer; silent = true);

```

Plotting of the scattered data (For the 2D case):

 ![Figure0001](https://global.discourse-cdn.com/julialang/original/3X/d/c/dc5b6568e42a827f10b57f6a79a4979a97b88acf.png)

---

<div class="post-metadata">

**Author:** ![Jollywatt](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jollywatt/32/202198_2.png) [@Jollywatt](https://discourse.julialang.org/u/Jollywatt)\
**Post date:** [June 3, 2025, 6:01pm UTC](https://discourse.julialang.org/t/seven-lines-of-julia-examples-sought/50416/195 "2025-06-03T18:01:48Z")

</div>

Here’s a slightly unusual example: it assumes you are running a [Pluto notebook](https://plutojl.org) and have [Typst](https://typst.app) installed.

With the following seven lines of Julia,

```julia
struct TypstSource
	src::String
end
function Base.show(io::IO, ::MIME"text/html", typ::TypstSource)
	cmd = pipeline(`typst compile --format svg - -`, stdin=IOBuffer(typ.src))
	write(io, read(cmd))
end

```

you can write Typst in your Pluto notebooks, just like markdown:

 ![Screenshot 2025-06-03 at 18.58.35](https://global.discourse-cdn.com/julialang/original/3X/d/e/de86e6284bef13796c2b80a3d413f3292df52654.png)

The finishing touch might be a string macro

```julia
macro typ_str(body)
	TypstSource("""
	#set page(width: 18cm, height: auto, margin: 5pt, fill: none)
	#set text(size: 13pt)
	$body
	""")
end

```

which puts Typst on equal footing with Markdown:

```julia
md"""
A markdown cell.
"""

typ"""
A Typst cell.
"""

```

_Edit._ You don’t even need to have `typst` is installed on your system; we can also use the binary wrapper. This preserves the total reproducibility of your Pluto notebook!

```julia
using Typst_jll
function Base.show(io::IO, ::MIME"image/svg+xml", typ::TypstSource)
	cmd = pipeline(`$(Typst_jll.typst()) compile --format svg - -`, stdin=IOBuffer(typ.src))
	write(io, read(cmd))
end

```

* * *

(Ok, this isn’t really showing off Julia itself, but it _is_ a demonstration of how easy it is to extend the display methods and integrate with Pluto. Would this require seven lines to achieve for Jupyter notebooks?)

---

<div class="post-metadata">

**Author:** ![giordano](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/giordano/32/2166_2.png) [@giordano](https://discourse.julialang.org/u/giordano)\
**Post date:** [June 3, 2025, 11:34pm UTC](https://discourse.julialang.org/t/seven-lines-of-julia-examples-sought/50416/196 "2025-06-03T23:34:31Z")

</div>

> [@Jollywatt](#):
>
> ```julia
> Typst_jll.typst() do exe
> cmd = pipeline(`$exe compile --format svg - -`, stdin=IOBuffer(typ.src))
> write(io, read(cmd))
> end
> 
> ```

Change that to

```julia
	cmd = pipeline(`$(Typst_jll.typst()) compile --format svg - -`, stdin=IOBuffer(typ.src))
	write(io, read(cmd))

```

which is (a) shorter and (b) safer: [JLL packages · BinaryBuilder.jl](https://docs.binarybuilder.org/stable/jll/#ExecutableProduct)

[Previous page](https://discourse.julialang.org/t/seven-lines-of-julia-examples-sought/50416.md?page=8)

[Next page](https://discourse.julialang.org/t/seven-lines-of-julia-examples-sought/50416.md?page=10)
