Skip to content

Instantly share code, notes, and snippets.

View treeform's full-sized avatar

Andre von Houck treeform

View GitHub Profile
import math
func genCache(): array[10, int32] =
for i in 1 .. 9:
result[i] = int32(i ^ i)
const
MAX = 440_000_000.int32
cache = genCache()
import fidget, flippy, chroma
var f = newImage(400, 400, 4)
for x in 0 ..< 400:
for y in 0 ..< 400:
f.putRgba(x, y, hsl(x.float/400*360, y.float/400*100, 75).color.rgba)
f.save("data/generated.png")
setTitle("Image viewer")
proc drawMain() =
var str = newString(1001*3 + 1001*801*3 + 1001*801*501*3)
var i = 0
for foo in 0..100:
str[i] = 'f'
inc i
str[i] = 'o'
inc i
str[i] = 'o'
import chroma
template fill(s: string) =
echo "parsed", s
let color = parseHtmlColor(s)
echo color
template fill(s: static string) =
const color = parseHtmlColor(s)
echo color
@treeform
treeform / radix.nim
Created February 21, 2020 01:00
Radix sort in Nim.
## Radix sort in O(n) unlike other sorting methods that can be way worse.
## But radix sort needs the bits to operate on, which makes it different then
## other sorting algorithms.
proc getMax(arr: seq[SomeInteger]): SomeInteger =
for i, e in arr:
if i == 0:
result = e
elif e > result:
result = e
import sdl2
import math
# ------ SDL2 CONF ------
discard sdl2.init(INIT_EVERYTHING)
var
window : WindowPtr
render : RendererPtr
type
OpType = enum Inc, Move, Loop, Print
Ops = seq[Op]
Op = object
case op: OpType
of Inc, Move: val: int
of Loop: loop: Ops
else: discard
StringIterator = iterator(): char
type FooThread = ref object
thread: Thread[void]
var fooThreads: seq[FooThread]
for i in 0 ..< 5:
var t = FooThread()
createThread(t.thread, threadFunc)
fooThreads.add t
for t in fooThreads:
joinThread(t.thread)
# createThread then .add -> crash
# .add then createThread -> some threads dont run
# pre .add all threads -> works 100%
import locks
var
thr: seq[Thread[void]]
L: Lock
spawn:
var socket = newSocket()
print "1"
socket.connectFi("localhost", Port(12321))
print "2"
socket.sendFi("spawn #1\c\L")
print "4"
echo socket.recvFi()
socket.close()
print "5"