Skip to content

Instantly share code, notes, and snippets.

View jonathan-ostrander's full-sized avatar

Jonathan Ostrander jonathan-ostrander

View GitHub Profile
@jonathan-ostrander
jonathan-ostrander / main.py
Created June 17, 2022 16:13
Artisan over FastAPI websocket
"""
pip install fastapi
pip install "uvicorn[standard]"
uvicorn main:app --host 0.0.0.0 --port 8000
"""
import glob
import json
import time
package aoc
object Problem04 extends App {
println(
Some(scala.io.Source.fromResource("inputs/4.txt").getLines.next.split("-").map(_.toInt))
.map(a =>
(a(0) to a(1))
.map(_.toString.sliding(2).toList)
.filter(s => s.exists(p => p(0) == p(1)) && s.forall(p => p(0) <= p(1)))
.foldLeft(List(0, 0))((l, s) =>
package aoc
object Problem03 extends App {
println(
Some(
scala.io.Source.fromFile("inputs/3.txt")
.getLines
.take(2)
.map(l => l.split(",").map(w => w(0) -> w.substring(1).toInt).toList)
.map(
package aoc
object ProblemTwo extends App {
println(
(Vector(Vector(12, 2)) ++ ((0 to 100) ++ (0 to 100)).combinations(2)).map(v =>
(
v,
Stream.from(0, 4).scanLeft(
(
scala.io.Source.fromFile("inputs/2.txt")
@jonathan-ostrander
jonathan-ostrander / day5.scala
Created December 5, 2018 16:33
Advent of Code 2018 Day 5
// https://adventofcode.com/2018/day/5
object Problem5 extends Base("input5.txt") {
def reactPolymer(string: String): String = string.foldLeft[List[Char]](Nil) {
case (h :: t, char) if h != char && h.toUpper == char.toUpper => t
case (acc, char) => char :: acc
}.mkString
val input = lines.head
def find_next(urinals):
occupied = [i for (i, x) in enumerate(urinals) if x]
if not occupied:
return 0
cur = 0
cur_max = (None, None)
for i, u in enumerate(urinals):
p, n = occupied[cur], occupied[cur + 1] if cur + 1 != len(occupied) else None
if i == n:
import scala.io.Source
def findGroup(v: String, groups: Map[String, Set[String]]): Set[String] = {
def loop(toVisit: Set[String], visited: Set[String]): Set[String] = (toVisit -- visited) match {
case v if v.isEmpty => visited
case v => loop(v.flatMap(n => groups.get(n).getOrElse(Set.empty[String])), visited ++ v)
}
loop(Set(v), Set.empty[String])
}
@jonathan-ostrander
jonathan-ostrander / Makefile
Created March 24, 2017 15:17
Local scoping
test:
npm install -g jasmine
jasmine test1.js test2.js
FORCE:
@jonathan-ostrander
jonathan-ostrander / main.go
Last active December 21, 2016 18:26
DFS Go solution to Eschaton
package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"os"
)
// RouteState represents the current state of a given route
@jonathan-ostrander
jonathan-ostrander / .gitignore
Last active December 7, 2016 21:57
Stats V1 vs V2
.DS_Store