Skip to content

Instantly share code, notes, and snippets.

Avatar

Xavier Noria fxn

View GitHub Profile
View aoc_2022_06_part1.nim
import std/[os,setutils]
const
markerLen = 4
let datastream = readFile(paramStr(1))
for i in 0 .. (high(datastream) - markerLen):
let chunk = datastream[i ..< i + markerLen]
if chunk.toSet.card == markerLen:
View aoc_2022_04_part1.nim
import std/[os,sequtils,strutils]
type
Assingment = tuple[fromSection, toSection: uint]
func toAssingment(rangeStr: string): Assingment =
let pair = rangeStr.split('-')
result.fromSection = parseUInt(pair[0])
result.toSection = parseUInt(pair[1])
View aoc_2022_03_part1.nim
import std/[os,sequtils,sets,sugar]
type
Rucksack = object
compA: HashSet[char]
compB: HashSet[char]
func toRucksack(rucksackStr: string): Rucksack =
let items = distribute(rucksackStr.toSeq, 2)
result.compA = items[0].toHashSet
View aoc_2022_part1.nim
import std/os
type
Shape = enum Rock, Paper, Scissors
GameResult = range[-1..1]
func toShape(shapeChr: char): Shape =
case shapeChr:
of 'A', 'X': Rock
of 'B', 'Y': Paper
View aoc_2022_01_part1.nim
import std/os
import std/strutils
var max = 0
var partial = 0
for line in lines(paramStr(1)):
if len(line) != 0:
partial += parseInt(line)
else:
View time_wrapper.rb
module Simulation
# Clocks in a Linux system
# ========================
#
# A Linux system has two clocks: The hardware clock, and the system clock.
#
# The hardware clock, also known as RTC or real-time clock, is a physical
# clock. This clock runs always, even when the system is shut down or
# unplugged the clock keeps running because it has an independent source of
# power, normally a lithium battery. See
View aoc_2016_19_part2.rb
n = 3004953
start = n/2 + 1
play = [*start..n, *1...start]
while n > 1
play.shift
play << play.shift if n.odd?
n -= 1
end
View aoc_2016_19_part2.v
// We use a circular double-linked list, and two pointers: one to the current player,
// and another one to their target, the player across the circle.
//
// By using a cicular list, API is intuitive.
//
// By using a double-linked list, deletion is cheap.
//
// By maintaining both pointers in each turn, we avoid seeks.
const (
@fxn
fxn / 01 main.rs
Last active August 23, 2021 15:13
Mandelbrot set generator from "Programming Rust", with ports to Crystal and Ruby.
View 01 main.rs
// Mandelbrot set generator from "Programming Rust", with I/O removed (the
// original code writes a PNG file).
use std::env;
use std::str::FromStr;
use num::Complex;
fn main() {
let args: Vec<String> = env::args().collect();
@fxn
fxn / sidekiq.rb
Last active March 15, 2021 13:37
View sidekiq.rb
Sidekiq.configure_server do |config|
config.on(:startup) do
BatchWriter.start_timer
at_exit do
BatchWriter.stop_timer
BatchWriter.flush
end
end
end