From cf61ecf2ab893d36280d23ce3abc8bc071de23e6 Mon Sep 17 00:00:00 2001 From: George Wensor Date: Tue, 30 Nov 2021 18:47:19 +0000 Subject: [PATCH] init --- .gitignore | 2 ++ README | 2 ++ boilerplate/cc/boilerplate.cc | 46 +++++++++++++++++++++++++++++++++++ boilerplate/cc/boilerplate.hh | 15 ++++++++++++ boilerplate/go/boilerplate.go | 30 +++++++++++++++++++++++ boilerplate/js/boilerplate.js | 8 ++++++ 6 files changed, 103 insertions(+) create mode 100644 .gitignore create mode 100644 README create mode 100644 boilerplate/cc/boilerplate.cc create mode 100644 boilerplate/cc/boilerplate.hh create mode 100644 boilerplate/go/boilerplate.go create mode 100644 boilerplate/js/boilerplate.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1e79089 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.vscode +*.txt diff --git a/README b/README new file mode 100644 index 0000000..b5aa937 --- /dev/null +++ b/README @@ -0,0 +1,2 @@ +Attempts at the Advent of Code daily challenges in C++/Go/JS. +Boilerplate code for reading in input files in boilerplate/ for each language. diff --git a/boilerplate/cc/boilerplate.cc b/boilerplate/cc/boilerplate.cc new file mode 100644 index 0000000..6983501 --- /dev/null +++ b/boilerplate/cc/boilerplate.cc @@ -0,0 +1,46 @@ +#include "boilerplate.hh" + +// newline separated split +std::vector readFile(std::string file){ + std::vector outputVec; + + std::ifstream inputFile(file); + if (!inputFile.is_open()){ + std::cerr << "File " << file << "not found"; + exit(1); + } + + std::string line; + while(getline(inputFile, line)){ + outputVec.push_back(line); + } + return outputVec; +} + +// newline, and delimited split +InputArrays readFile(std::string file, char delim){ + InputArrays outputVec; + + std::ifstream inputFile(file); + if (!inputFile.is_open()){ + std::cerr << "File " << file << "not found"; + exit(1); + } + + std::string line; + while(getline(inputFile, line)){ + outputVec.push_back(ssplit(line, delim)); + } + return outputVec; +} + +std::vector ssplit(std::string str, char delimiter){ + std::vector output; + std::istringstream iss(str); + + std::string split; + while(getline(iss, split, delimiter)){ + output.push_back(split); + } + return output; +} \ No newline at end of file diff --git a/boilerplate/cc/boilerplate.hh b/boilerplate/cc/boilerplate.hh new file mode 100644 index 0000000..17c9f04 --- /dev/null +++ b/boilerplate/cc/boilerplate.hh @@ -0,0 +1,15 @@ +#ifndef BOILERPLATE_HH +#define BOILERPLATE_HH + +#include +#include +#include +#include + +using InputArrays = std::vector>; + +InputArrays readFile(std::string, char); +std::vector readFile(std::string); +std::vector ssplit(std::string, char); + +#endif \ No newline at end of file diff --git a/boilerplate/go/boilerplate.go b/boilerplate/go/boilerplate.go new file mode 100644 index 0000000..37d309e --- /dev/null +++ b/boilerplate/go/boilerplate.go @@ -0,0 +1,30 @@ +package main + +import ( + "bufio" + "log" + "os" +) + +func readFile(filename string) []string { + file, err := os.Open(filename) + if err != nil { + log.Fatal(err) + } + defer file.Close() + + scanner := bufio.NewScanner(file) + scanner.Split(bufio.ScanLines) + + var ret []string + + for scanner.Scan() { + ret = append(ret, scanner.Text()) + } + + return ret +} + +func main() { + +} diff --git a/boilerplate/js/boilerplate.js b/boilerplate/js/boilerplate.js new file mode 100644 index 0000000..4257292 --- /dev/null +++ b/boilerplate/js/boilerplate.js @@ -0,0 +1,8 @@ +const fs = require("fs") + +const input = fs.readFileSync("input.txt", "utf-8", (err, data) => { + if (err) { + console.error(err) + return + } +}).split("\n").map(line => line.split(","))