Tidy advent-of-code directory
TL;DR: - Add README.md - Delete *.nix sketches - Delete *.pyc and *.ex python artifacts
This commit is contained in:
parent
444da4aa05
commit
b266378850
5 changed files with 4 additions and 76 deletions
4
advent-of-code/README.md
Normal file
4
advent-of-code/README.md
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
# 2019 Advent of Code
|
||||||
|
|
||||||
|
Here are my attempts at the 2019 Advent of Code challenge before my dedication
|
||||||
|
to the effort plummeted.
|
|
@ -1,8 +0,0 @@
|
||||||
with import <nixpkgs> {};
|
|
||||||
with python35Packages;
|
|
||||||
|
|
||||||
buildPythonPackage {
|
|
||||||
name = "wpcarro";
|
|
||||||
src = ./day_5.py;
|
|
||||||
propagatedBuildInputs = [ pytest numpy ];
|
|
||||||
}
|
|
|
@ -1,50 +0,0 @@
|
||||||
defmodule Interpretter do
|
|
||||||
def interpret_param({mode, x}, xs) do
|
|
||||||
case mode do
|
|
||||||
:positional -> Enum.at(xs, x)
|
|
||||||
:immediate -> x
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
# Perhaps I can model the intepretter after Forth and make it a stack-based
|
|
||||||
# interpretter with an emphasis on debugability, introspection.
|
|
||||||
def interpret(i, xs) do
|
|
||||||
stack = []
|
|
||||||
op = Enum.at(xs, i)
|
|
||||||
|
|
||||||
# map instructions into an intermediate representation (i.e. IR) where the
|
|
||||||
# opcodes are mapped into atoms and the arguments are mapped into references
|
|
||||||
# or literals.
|
|
||||||
|
|
||||||
instructions =
|
|
||||||
%{'01' => :add,
|
|
||||||
'02' => :multiply,
|
|
||||||
'03' => :input,
|
|
||||||
'04' => :output,
|
|
||||||
'05' => :jump_if_true,
|
|
||||||
'06' => :jump_if_false,
|
|
||||||
'07' => :less_than,
|
|
||||||
'08' => :equal_to,
|
|
||||||
'99' => :return}
|
|
||||||
|
|
||||||
case xs do
|
|
||||||
[:add, a, b, {:positional, out} | rest] ->
|
|
||||||
a = interpret_param(a, xs)
|
|
||||||
b = interpret_param(b, xs)
|
|
||||||
Interpretter.interpret(i + 3, List.insert_at(xs, out, a + b))
|
|
||||||
|
|
||||||
[:multiply, a, b, {:positional, out} | rest] ->
|
|
||||||
a = interpret_param(a, xs)
|
|
||||||
b = interpret_param(b, xs)
|
|
||||||
Interpretter.interpret(i + 3, List.insert_at(xs, out, a * b))
|
|
||||||
|
|
||||||
[:input, a | rest] -> nil
|
|
||||||
[:output, a | rest] -> nil
|
|
||||||
[:jump_if_true, a, b | rest] -> nil
|
|
||||||
[:jump_if_false, a, b | rest] -> nil
|
|
||||||
[:less_than, a, b, out | rest] -> nil
|
|
||||||
[:equal_to, a, b, out | rest] -> nil
|
|
||||||
[:return | _rest] -> nil
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
Binary file not shown.
|
@ -1,18 +0,0 @@
|
||||||
{ pkgs ? import <nixpkgs> {}, ... }:
|
|
||||||
|
|
||||||
{ name, deps, src }:
|
|
||||||
|
|
||||||
let
|
|
||||||
inherit (pkgs) pythonPackages writeTextFile;
|
|
||||||
inherit (builtins) toFile;
|
|
||||||
|
|
||||||
in writeTextFile {
|
|
||||||
inherit name;
|
|
||||||
executable = true;
|
|
||||||
destination = "/bin/${name}";
|
|
||||||
|
|
||||||
text = ''
|
|
||||||
#!/bin/sh
|
|
||||||
${pkgs.python3}/bin/python3 ${src}
|
|
||||||
'';
|
|
||||||
}
|
|
Loading…
Reference in a new issue