Add tasks for all the new languages
This commit is contained in:
parent
9dc3c2bb62
commit
bba7bfd280
13208 changed files with 134745 additions and 0 deletions
61
Task/Bitmap/Nim/bitmap.nim
Normal file
61
Task/Bitmap/Nim/bitmap.nim
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
{.experimental.}
|
||||
|
||||
import unsigned
|
||||
|
||||
type
|
||||
Luminance = uint8
|
||||
Index = int
|
||||
|
||||
Pixel = tuple
|
||||
r, g, b: Luminance
|
||||
|
||||
Image = object
|
||||
w, h: Index
|
||||
pixels: seq[Pixel]
|
||||
|
||||
Point = tuple
|
||||
x, y: Index
|
||||
|
||||
proc px(r, g, b): Pixel =
|
||||
result.r = r.uint8
|
||||
result.g = g.uint8
|
||||
result.b = b.uint8
|
||||
|
||||
proc img(w, h: int): Image =
|
||||
result.w = w
|
||||
result.h = h
|
||||
result.pixels.newSeq(w * h)
|
||||
|
||||
const
|
||||
Black = px( 0, 0, 0)
|
||||
White = px(255, 255, 255)
|
||||
|
||||
iterator indices(img: Image): tuple[x, y: int] =
|
||||
for x in 0 .. < img.w:
|
||||
for y in 0 .. < img.h:
|
||||
yield (x,y)
|
||||
|
||||
proc `[]`(img: Image, x, y: int): Pixel =
|
||||
img.pixels[y * img.w + x]
|
||||
|
||||
proc `[]=`(img: var Image, x, y: int, c: Pixel) =
|
||||
img.pixels[y * img.w + x] = c
|
||||
|
||||
proc fill(img: var Image, color: Pixel) =
|
||||
for x,y in img.indices:
|
||||
img[x,y] = color
|
||||
|
||||
proc print(img: Image) =
|
||||
using stdout
|
||||
for x,y in img.indices:
|
||||
if img[x,y] == White:
|
||||
write ' '
|
||||
else:
|
||||
write 'H'
|
||||
write "\n"
|
||||
|
||||
when isMainModule:
|
||||
var x = img(64, 64)
|
||||
x.fill px(255,255,255)
|
||||
x[1,2] = px(255, 0, 0)
|
||||
x[3,4] = x[1,2]
|
||||
Loading…
Add table
Add a link
Reference in a new issue