This commit is contained in:
Sobottasgithub 2025-11-12 11:39:20 +01:00
commit 67df614d41
11 changed files with 256 additions and 0 deletions

1
.envrc Normal file
View File

@ -0,0 +1 @@
use flake .

3
.idea/.gitignore generated vendored Normal file
View File

@ -0,0 +1,3 @@
# Default ignored files
/shelf/
/workspace.xml

6
.idea/misc.xml generated Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="openjdk-25" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

8
.idea/modules.xml generated Normal file
View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/Inventar.iml" filepath="$PROJECT_DIR$/Inventar.iml" />
</modules>
</component>
</project>

16
GNUmakefile Normal file
View File

@ -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

17
Gegenstand.java Normal file
View File

@ -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;
}
}

77
Inventar.java Normal file
View File

@ -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
}
}

5
Main.java Normal file
View File

@ -0,0 +1,5 @@
public class Main {
public static void main(String[] args) {
Inventar inventar = new Inventar();
}
}

5
README.md Normal file
View File

@ -0,0 +1,5 @@
## Gerne auch mit nix ausführen!
Dafür einfach nur in der Konsole (sofern installiert):
```bash
nix run
```

61
flake.lock generated Normal file
View File

@ -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
}

57
flake.nix Normal file
View File

@ -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 = {
};
};
}