From 67df614d4114a2775ff3988518bd347db0a83d30 Mon Sep 17 00:00:00 2001 From: Sobottasgithub Date: Wed, 12 Nov 2025 11:39:20 +0100 Subject: [PATCH] Init --- .envrc | 1 + .idea/.gitignore | 3 ++ .idea/misc.xml | 6 ++++ .idea/modules.xml | 8 +++++ GNUmakefile | 16 ++++++++++ Gegenstand.java | 17 +++++++++++ Inventar.java | 77 +++++++++++++++++++++++++++++++++++++++++++++++ Main.java | 5 +++ README.md | 5 +++ flake.lock | 61 +++++++++++++++++++++++++++++++++++++ flake.nix | 57 +++++++++++++++++++++++++++++++++++ 11 files changed, 256 insertions(+) create mode 100644 .envrc create mode 100644 .idea/.gitignore create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 GNUmakefile create mode 100644 Gegenstand.java create mode 100644 Inventar.java create mode 100644 Main.java create mode 100644 README.md create mode 100644 flake.lock create mode 100644 flake.nix diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..a5dbbcb --- /dev/null +++ b/.envrc @@ -0,0 +1 @@ +use flake . diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..f5bd2df --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..b43c2b9 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/GNUmakefile b/GNUmakefile new file mode 100644 index 0000000..cc72bb3 --- /dev/null +++ b/GNUmakefile @@ -0,0 +1,16 @@ +JAVA_FMT = google-java-format +JAVA_FILES = $(shell find . -name '*.java') +XML_FMT = xmlindent +XML_FILES = $(shell find . -name '*.xml') + +.PHONY: fmt +fmt: + @echo "Formatting all Java files..." + @for f in $(JAVA_FILES); do \ + echo " $$f"; \ + $(JAVA_FMT) -i $$f; \ + done + +.PHONY: clean +clean: + rm -rf *.class *.~ava result diff --git a/Gegenstand.java b/Gegenstand.java new file mode 100644 index 0000000..ff06919 --- /dev/null +++ b/Gegenstand.java @@ -0,0 +1,17 @@ +public class Gegenstand { + private String name; + private int ausdauer; + + public Gegenstand(String name, int ausdauer) { + this.name = name; + this.ausdauer = ausdauer; + } + + public String getName() { + return name; + } + + public int getAusdauer() { + return ausdauer; + } +} diff --git a/Inventar.java b/Inventar.java new file mode 100644 index 0000000..a7c5153 --- /dev/null +++ b/Inventar.java @@ -0,0 +1,77 @@ +import java.util.Collections; + +public class Inventar { + private Gegenstand[] gegenstaende; + + public Inventar() { + this.gegenstaende = new Gegenstand[10]; + gegenstaende[0] = new Gegenstand ("Bogen", 20); + gegenstaende[1] = new Gegenstand ("Gürtel", 10); + gegenstaende[2] = new Gegenstand ("Helm", 25); + gegenstaende[3] = new Gegenstand ("Pfeile", 5); + gegenstaende[4] = new Gegenstand ("Ring", 7); + gegenstaende[5] = new Gegenstand ("Schild", 30); + gegenstaende[6] = new Gegenstand ("Schwert", 18); + gegenstaende[7] = new Gegenstand ("Rüstung", 22); + gegenstaende[8] = new Gegenstand ("Stiefel", 16); + gegenstaende[9] = new Gegenstand ("Kette", 18); + + gegenstaende = sortArray(gegenstaende); + + for(int i = 0; i < gegenstaende.length; i++) { + System.out.println(gegenstaende[i].getName()); + } + + // Test binary search: + int position = binarySearch(gegenstaende, gegenstaende[2].getName()); + System.out.println("Found " + gegenstaende[position].getName() + " at position: " + position + " with 'ausdauer': " + gegenstaende[position].getAusdauer()); + } + + public Gegenstand[] sortArray(Gegenstand[] gegenstaende) { + // Insertion sort + + for (int index = 1; index < gegenstaende.length; index++) { + Gegenstand entry = gegenstaende[index]; + int previousIndex = index; + + while (previousIndex > 0 && gegenstaende[previousIndex - 1].getName().compareTo(entry.getName()) > 0) { + gegenstaende[previousIndex] = gegenstaende[previousIndex - 1]; + previousIndex--; + } + gegenstaende[previousIndex] = entry; + } + + return gegenstaende; + } + + public int binarySearch(Gegenstand[] gegenstaende, String searchedName) { + int low = 0; + int high = gegenstaende.length-1; + + while(low <= high) { + int pivot = (low + high) / 2; + + int compareToResult = gegenstaende[pivot].getName().compareTo(searchedName); + if(compareToResult == 0) { + return pivot; + } else if (compareToResult < 0) { + low = pivot + 1; + } else if (compareToResult > 0) { + high = pivot -1; + } + } + return -1; + } + + public void lineareSuche(String name) { + // to do + } + + public Gegenstand[] getGegenstaende() { + return gegenstaende; + } + + public void maxAusdauer() { + // to do + } +} diff --git a/Main.java b/Main.java new file mode 100644 index 0000000..9fb358b --- /dev/null +++ b/Main.java @@ -0,0 +1,5 @@ +public class Main { + public static void main(String[] args) { + Inventar inventar = new Inventar(); + } +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..4d1459a --- /dev/null +++ b/README.md @@ -0,0 +1,5 @@ +## Gerne auch mit nix ausführen! +Dafür einfach nur in der Konsole (sofern installiert): +```bash +nix run +``` \ No newline at end of file diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..dc0a060 --- /dev/null +++ b/flake.lock @@ -0,0 +1,61 @@ +{ + "nodes": { + "flake-parts": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1760948891, + "narHash": "sha256-TmWcdiUUaWk8J4lpjzu4gCGxWY6/Ok7mOK4fIFfBuU4=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "864599284fc7c0ba6357ed89ed5e2cd5040f0c04", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1761114652, + "narHash": "sha256-f/QCJM/YhrV/lavyCVz8iU3rlZun6d+dAiC3H+CDle4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "01f116e4df6a15f4ccdffb1bcd41096869fb385c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib": { + "locked": { + "lastModified": 1754788789, + "narHash": "sha256-x2rJ+Ovzq0sCMpgfgGaaqgBSwY+LST+WbZ6TytnT9Rk=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "a73b9c743612e4244d865a2fdee11865283c04e6", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "root": { + "inputs": { + "flake-parts": "flake-parts", + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..13d74f3 --- /dev/null +++ b/flake.nix @@ -0,0 +1,57 @@ +{ + description = "Inventar"; + + inputs = { + flake-parts.url = "github:hercules-ci/flake-parts"; + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + }; + + outputs = inputs@{ flake-parts, ... }: + flake-parts.lib.mkFlake { inherit inputs; } { + imports = [ + ]; + systems = [ "x86_64-linux" "aarch64-linux" "aarch64-darwin" "x86_64-darwin" ]; + perSystem = { config, self', inputs', pkgs, system, ... }: let + + jdk = pkgs.jdk21.override { + }; + + buildInputs = [ + jdk + ]; + + devTools = [ + pkgs.google-java-format + ]; + + in { + devShells.default = pkgs.mkShell { + buildInputs = buildInputs ++ devTools; + }; + + packages = { + default = pkgs.stdenv.mkDerivation { + pname = "inventar"; + version = "1.0.0"; + + src = ./.; + + nativeBuildInputs = buildInputs ++ [ pkgs.makeWrapper ]; + + buildPhase = '' + javac -Werror -g:none -deprecation -verbose Main.java + ''; + + installPhase = '' + mkdir -p $out/{bin,lib} + cp *.class $out/lib + + makeWrapper ${pkgs.lib.getExe jdk} $out/bin/inventar --add-flags "-cp $out/lib/ Main" + ''; + }; + }; + }; + flake = { + }; + }; +}