summaryrefslogtreecommitdiff
path: root/protohackers/0-smoke-test
diff options
context:
space:
mode:
authorMathias Magnusson <mathias@magnusson.space>2024-02-28 18:00:30 +0100
committerMathias Magnusson <mathias@magnusson.space>2024-02-28 18:00:30 +0100
commit4e8ac826929117f95baeb37e1518773d1169d900 (patch)
tree8d83639b336ece6422e9f3391655db12f30d6013 /protohackers/0-smoke-test
parentd4fcb8a4a815ce8c888c3e06330e9cff71e3c312 (diff)
downloadprogramming-problem-solving-4e8ac826929117f95baeb37e1518773d1169d900.tar.gz
Random uncommited stuff
Diffstat (limited to 'protohackers/0-smoke-test')
-rw-r--r--protohackers/0-smoke-test/flake.lock25
-rw-r--r--protohackers/0-smoke-test/flake.nix24
-rw-r--r--protohackers/0-smoke-test/go.mod3
-rw-r--r--protohackers/0-smoke-test/main.go42
4 files changed, 94 insertions, 0 deletions
diff --git a/protohackers/0-smoke-test/flake.lock b/protohackers/0-smoke-test/flake.lock
new file mode 100644
index 0000000..6d89d83
--- /dev/null
+++ b/protohackers/0-smoke-test/flake.lock
@@ -0,0 +1,25 @@
+{
+ "nodes": {
+ "nixpkgs": {
+ "locked": {
+ "lastModified": 1661353537,
+ "narHash": "sha256-1E2IGPajOsrkR49mM5h55OtYnU0dGyre6gl60NXKITE=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "0e304ff0d9db453a4b230e9386418fd974d5804a",
+ "type": "github"
+ },
+ "original": {
+ "id": "nixpkgs",
+ "type": "indirect"
+ }
+ },
+ "root": {
+ "inputs": {
+ "nixpkgs": "nixpkgs"
+ }
+ }
+ },
+ "root": "root",
+ "version": 7
+}
diff --git a/protohackers/0-smoke-test/flake.nix b/protohackers/0-smoke-test/flake.nix
new file mode 100644
index 0000000..76a6f25
--- /dev/null
+++ b/protohackers/0-smoke-test/flake.nix
@@ -0,0 +1,24 @@
+{
+ description = "Protohackers 0: Smoke test";
+
+ outputs = { self, nixpkgs }:
+ let
+ system = "x86_64-linux";
+ pkgs = import nixpkgs { inherit system; };
+ in rec
+ {
+ packages.x86_64-linux.docker-image = pkgs.dockerTools.buildImage {
+ name = "smoke-test";
+ config = {
+ Cmd = [ "${packages.x86_64-linux.smoke-test}/bin/0-smoke-test" ];
+ };
+ };
+ packages.x86_64-linux.binary = pkgs.buildGoModule {
+ pname = "smoke-test";
+ version = "0.0.1";
+ src = self;
+
+ vendorSha256 = "pQpattmS9VmO3ZIQUFn66az8GSmB4IvYhTTCFn6SUmo=";
+ };
+ };
+}
diff --git a/protohackers/0-smoke-test/go.mod b/protohackers/0-smoke-test/go.mod
new file mode 100644
index 0000000..7010dd8
--- /dev/null
+++ b/protohackers/0-smoke-test/go.mod
@@ -0,0 +1,3 @@
+module 0-smoke-test
+
+go 1.18
diff --git a/protohackers/0-smoke-test/main.go b/protohackers/0-smoke-test/main.go
new file mode 100644
index 0000000..213d111
--- /dev/null
+++ b/protohackers/0-smoke-test/main.go
@@ -0,0 +1,42 @@
+package main
+
+import (
+ "io"
+ "log"
+ "net"
+)
+
+func main() {
+ listener, err := net.Listen("tcp", "0.0.0.0:7000")
+ if err != nil {
+ panic(err)
+ }
+
+ for {
+ go handle(listener.Accept())
+ }
+}
+
+func handle(conn net.Conn, err error) {
+ if err != nil {
+ log.Println(err)
+ return
+ }
+ defer conn.Close()
+
+ var buf [1024]byte
+ for {
+ n, readErr := conn.Read(buf[:])
+ log.Println("writing ", string(buf[:n]))
+ _, writeErr := conn.Write(buf[:n])
+ if writeErr != nil {
+ log.Println("error when writing", err)
+ }
+ if readErr != nil {
+ if readErr != io.EOF {
+ log.Println("error when reading", err)
+ }
+ return
+ }
+ }
+}