Compare commits

..

29 Commits

Author SHA1 Message Date
f304a30299 chore(deps): update ghcr.io/renovatebot/renovate docker tag to v41
All checks were successful
Continuous integration / Check (push) Successful in 42s
Continuous integration / Test Suite (push) Successful in 45s
Continuous integration / Rustfmt (push) Successful in 37s
Continuous integration / Clippy (push) Successful in 42s
Continuous integration / build (push) Successful in 48s
Continuous integration / Check (pull_request) Successful in 41s
Continuous integration / Test Suite (pull_request) Successful in 42s
Continuous integration / Rustfmt (pull_request) Successful in 36s
Continuous integration / Clippy (pull_request) Successful in 42s
Continuous integration / build (pull_request) Successful in 47s
2025-08-21 00:01:56 +00:00
e9486290d1 chore(deps): update ghcr.io/renovatebot/renovate docker tag to v39.264.0
All checks were successful
Continuous integration / Check (pull_request) Successful in 33s
Continuous integration / Test Suite (pull_request) Successful in 34s
Continuous integration / Rustfmt (pull_request) Successful in 35s
Continuous integration / Clippy (pull_request) Successful in 34s
Continuous integration / build (pull_request) Successful in 37s
renovate / renovate (push) Successful in 1m9s
Continuous integration / Check (push) Successful in 52s
Continuous integration / Test Suite (push) Successful in 1m1s
Continuous integration / Rustfmt (push) Successful in 34s
Continuous integration / Clippy (push) Successful in 52s
Continuous integration / build (push) Successful in 1m3s
2025-04-30 00:03:04 +00:00
64e1df272f chore(deps): update ghcr.io/renovatebot/renovate docker tag to v39.259.0
All checks were successful
Continuous integration / Test Suite (pull_request) Successful in 19s
Continuous integration / Rustfmt (pull_request) Successful in 13s
Continuous integration / Clippy (pull_request) Successful in 17s
Continuous integration / build (pull_request) Successful in 23s
Continuous integration / Check (pull_request) Successful in 15s
Continuous integration / Check (push) Successful in 47s
Continuous integration / Test Suite (push) Successful in 1m0s
Continuous integration / Rustfmt (push) Successful in 12s
Continuous integration / Clippy (push) Successful in 46s
Continuous integration / build (push) Successful in 1m0s
renovate / renovate (push) Successful in 1m12s
2025-04-26 18:37:58 +00:00
ec9652499c chore(deps): update ghcr.io/renovatebot/renovate docker tag to v39.254.3
All checks were successful
Continuous integration / Check (pull_request) Successful in 13s
Continuous integration / Test Suite (pull_request) Successful in 16s
Continuous integration / Rustfmt (pull_request) Successful in 12s
Continuous integration / Clippy (pull_request) Successful in 14s
Continuous integration / build (pull_request) Successful in 20s
renovate / renovate (push) Successful in 36s
Continuous integration / Check (push) Successful in 14s
Continuous integration / Test Suite (push) Successful in 15s
Continuous integration / Rustfmt (push) Successful in 11s
Continuous integration / Clippy (push) Successful in 14s
Continuous integration / build (push) Successful in 22s
2025-04-23 09:03:48 +00:00
f34bc05741 chore(deps): update ghcr.io/renovatebot/renovate docker tag to v39.218.1
All checks were successful
Continuous integration / Check (pull_request) Successful in 15s
Continuous integration / Test Suite (pull_request) Successful in 20s
Continuous integration / Rustfmt (pull_request) Successful in 11s
Continuous integration / Clippy (pull_request) Successful in 14s
Continuous integration / build (pull_request) Successful in 22s
Continuous integration / Check (push) Successful in 16s
Continuous integration / Test Suite (push) Successful in 18s
Continuous integration / Rustfmt (push) Successful in 11s
Continuous integration / Clippy (push) Successful in 14s
Continuous integration / build (push) Successful in 21s
renovate / renovate (push) Successful in 30s
2025-03-26 19:19:23 +00:00
a1da5a5e7c chore(deps): update ghcr.io/renovatebot/renovate docker tag to v39.218.0
All checks were successful
Continuous integration / Check (pull_request) Successful in 14s
Continuous integration / Test Suite (pull_request) Successful in 21s
Continuous integration / Rustfmt (pull_request) Successful in 12s
Continuous integration / Clippy (pull_request) Successful in 16s
Continuous integration / build (pull_request) Successful in 24s
Continuous integration / Check (push) Successful in 16s
Continuous integration / Test Suite (push) Successful in 20s
Continuous integration / Clippy (push) Successful in 17s
Continuous integration / Rustfmt (push) Successful in 11s
Continuous integration / build (push) Successful in 24s
renovate / renovate (push) Successful in 40s
2025-03-26 15:25:52 +00:00
a05b615693 chore(deps): update ghcr.io/renovatebot/renovate docker tag to v39.216.1
All checks were successful
Continuous integration / Check (pull_request) Successful in 10s
Continuous integration / Test Suite (pull_request) Successful in 11s
Continuous integration / Rustfmt (pull_request) Successful in 8s
Continuous integration / Clippy (pull_request) Successful in 11s
Continuous integration / build (pull_request) Successful in 15s
renovate / renovate (push) Successful in 18s
Continuous integration / Check (push) Successful in 11s
Continuous integration / Test Suite (push) Successful in 12s
Continuous integration / Rustfmt (push) Successful in 7s
Continuous integration / Clippy (push) Successful in 10s
Continuous integration / build (push) Successful in 14s
2025-03-26 00:01:07 +00:00
0317fb08cb Merge pull request 'chore(deps): update ghcr.io/renovatebot/renovate docker tag to v39.215.2' (#6) from renovate/ghcr.io-renovatebot-renovate-39.x into main
All checks were successful
Continuous integration / Clippy (push) Successful in 10s
Continuous integration / Check (push) Successful in 9s
Continuous integration / Test Suite (push) Successful in 12s
Continuous integration / Rustfmt (push) Successful in 8s
Continuous integration / build (push) Successful in 14s
renovate / renovate (push) Successful in 20s
Reviewed-on: #6
2025-03-25 21:56:00 +00:00
0c111f4548 chore(deps): update ghcr.io/renovatebot/renovate docker tag to v39.215.2
All checks were successful
Continuous integration / Check (push) Successful in 9s
Continuous integration / Test Suite (push) Successful in 13s
Continuous integration / Rustfmt (push) Successful in 8s
Continuous integration / Clippy (push) Successful in 10s
Continuous integration / build (push) Successful in 14s
Continuous integration / Check (pull_request) Successful in 9s
Continuous integration / Test Suite (pull_request) Successful in 11s
Continuous integration / Rustfmt (pull_request) Successful in 8s
Continuous integration / Clippy (pull_request) Successful in 9s
Continuous integration / build (pull_request) Successful in 14s
2025-03-25 21:54:26 +00:00
45f2a0d601 chore(deps): update ghcr.io/renovatebot/renovate docker tag to v39.211.0
All checks were successful
Continuous integration / Check (pull_request) Successful in 9s
Continuous integration / Test Suite (pull_request) Successful in 11s
Continuous integration / Rustfmt (pull_request) Successful in 7s
Continuous integration / Clippy (pull_request) Successful in 11s
Continuous integration / build (pull_request) Successful in 12s
renovate / renovate (push) Successful in 18s
Continuous integration / Check (push) Successful in 10s
Continuous integration / Test Suite (push) Successful in 11s
Continuous integration / Rustfmt (push) Successful in 8s
Continuous integration / Clippy (push) Successful in 12s
Continuous integration / build (push) Successful in 15s
2025-03-22 00:00:26 +00:00
d5d0d32c2e Merge pull request 'chore(deps): update ghcr.io/renovatebot/renovate docker tag to v39.208.1' (#4) from renovate/ghcr.io-renovatebot-renovate-39.x into main
All checks were successful
Continuous integration / Check (push) Successful in 34s
Continuous integration / Test Suite (push) Successful in 32s
Continuous integration / Rustfmt (push) Successful in 32s
Continuous integration / Clippy (push) Successful in 34s
Continuous integration / build (push) Successful in 35s
renovate / renovate (push) Successful in 16s
Reviewed-on: #4
2025-03-20 05:55:55 +00:00
7ee280d222 chore(deps): update ghcr.io/renovatebot/renovate docker tag to v39.208.1
All checks were successful
Continuous integration / Check (push) Successful in 38s
Continuous integration / Test Suite (push) Successful in 42s
Continuous integration / Rustfmt (push) Successful in 30s
Continuous integration / Clippy (push) Successful in 37s
Continuous integration / build (push) Successful in 44s
Continuous integration / Check (pull_request) Successful in 32s
Continuous integration / Test Suite (pull_request) Successful in 34s
Continuous integration / Rustfmt (pull_request) Successful in 31s
Continuous integration / Clippy (pull_request) Successful in 34s
Continuous integration / build (pull_request) Successful in 38s
2025-03-20 00:01:14 +00:00
2ac1cb4c8a Merge pull request 'chore(deps): update ghcr.io/renovatebot/renovate docker tag to v39.207.3' (#3) from renovate/ghcr.io-renovatebot-renovate-39.x into main
All checks were successful
Continuous integration / Test Suite (push) Successful in 1m8s
Continuous integration / Clippy (push) Successful in 1m3s
Continuous integration / build (push) Successful in 1m11s
Continuous integration / Check (push) Successful in 1m2s
Continuous integration / Rustfmt (push) Successful in 31s
renovate / renovate (push) Successful in 35s
Reviewed-on: #3
2025-03-19 07:46:29 +00:00
499ac62dbe chore(deps): update ghcr.io/renovatebot/renovate docker tag to v39.207.3
All checks were successful
Continuous integration / Check (push) Successful in 1m19s
Continuous integration / Test Suite (push) Successful in 1m8s
Continuous integration / Rustfmt (push) Successful in 31s
Continuous integration / Clippy (push) Successful in 1m3s
Continuous integration / build (push) Successful in 1m10s
Continuous integration / Check (pull_request) Successful in 30s
Continuous integration / Test Suite (pull_request) Successful in 32s
Continuous integration / Rustfmt (pull_request) Successful in 30s
Continuous integration / Clippy (pull_request) Successful in 31s
Continuous integration / build (pull_request) Successful in 33s
2025-03-19 00:01:15 +00:00
6aed675ecc feat: add release settings
All checks were successful
Continuous integration / Test Suite (push) Successful in 30s
Continuous integration / Check (push) Successful in 31s
Continuous integration / Rustfmt (push) Successful in 29s
Continuous integration / Clippy (push) Successful in 31s
Continuous integration / build (push) Successful in 34s
renovate / renovate (push) Successful in 32s
2025-03-17 22:42:06 +01:00
b42b8f5ced feat: add real coordinates 2025-03-17 22:41:53 +01:00
63d0dfb84a docs: update README.md and add badges
All checks were successful
renovate / renovate (push) Successful in 23s
Continuous integration / Check (push) Successful in 33s
Continuous integration / Test Suite (push) Successful in 32s
Continuous integration / Rustfmt (push) Successful in 29s
Continuous integration / Clippy (push) Successful in 32s
Continuous integration / build (push) Successful in 35s
2025-03-17 21:54:15 +01:00
4d0a236e7c fix: format main.rs
All checks were successful
renovate / renovate (push) Successful in 24s
Continuous integration / Check (push) Successful in 31s
Continuous integration / Test Suite (push) Successful in 32s
Continuous integration / Rustfmt (push) Successful in 31s
Continuous integration / Clippy (push) Successful in 32s
Continuous integration / build (push) Successful in 35s
2025-03-17 21:49:43 +01:00
0aa50aad1c ci: update rust ci pipeline
Some checks failed
renovate / renovate (push) Successful in 24s
Continuous integration / Check (push) Successful in 1m0s
Continuous integration / Test Suite (push) Successful in 1m8s
Continuous integration / Rustfmt (push) Failing after 31s
Continuous integration / Clippy (push) Failing after 1m2s
Continuous integration / build (push) Successful in 34s
2025-03-17 21:43:58 +01:00
69d1ed02e2 ci: add rust setup in pipeline
All checks were successful
renovate / renovate (push) Successful in 24s
Rust / build (push) Successful in 1m29s
2025-03-17 21:36:37 +01:00
872c42381b ci: add rust pipeline
Some checks failed
renovate / renovate (push) Successful in 24s
Rust / build (push) Failing after 5s
2025-03-17 21:33:49 +01:00
33c9bba8be feat: add Kernighan–Lin algorithm
All checks were successful
renovate / renovate (push) Successful in 23s
2025-03-17 21:30:19 +01:00
60aecf6a17 Merge pull request 'fix(deps): update rust crate rocket to 0.5.0' (#2) from renovate/rocket-0.x into main
All checks were successful
renovate / renovate (push) Successful in 25s
Reviewed-on: #2
2025-03-17 19:28:44 +00:00
aa3759b287 fix(deps): update rust crate rocket to 0.5.0 2025-03-17 19:27:42 +00:00
6db8bf1781 test: renovate pipeline
All checks were successful
renovate / renovate (push) Successful in 27s
2025-03-17 20:25:52 +01:00
df5755d9ae ci: add dependency Dashboard for renovate
All checks were successful
renovate / renovate (push) Successful in 24s
2025-03-17 20:19:44 +01:00
e905c4263e feat: add rocket web-framework
All checks were successful
renovate / renovate (push) Successful in 25s
2025-03-17 20:17:50 +01:00
7f36bb2abd ci: add renovate pipeline
All checks were successful
renovate / renovate (push) Successful in 24s
2025-03-17 20:11:41 +01:00
09f412391d feat: initial commit 2025-03-17 20:11:25 +01:00
8 changed files with 185 additions and 1 deletions

View File

@@ -0,0 +1,8 @@
module.exports = {
"endpoint": "https://git.dev-null.rocks/api/v1", // replace it with your actual endpoint
"gitAuthor": "Renovate Bot <renovate-bot@dev-null.rocks>",
"platform": "gitea",
"onboardingConfigFileName": "renovate.json",
"autodiscover": true,
"optimizeForDisabled": true,
};

View File

@@ -0,0 +1,20 @@
name: renovate
on:
schedule:
- cron: "@daily"
push:
branches:
- main
jobs:
renovate:
runs-on: ubuntu-latest
container: ghcr.io/renovatebot/renovate:41.82.1
steps:
- uses: actions/checkout@v4
- run: renovate
env:
RENOVATE_CONFIG_FILE: ".gitea/workflows/config.js" # replace it with your config.js path
LOG_LEVEL: "debug"
RENOVATE_TOKEN: ${{ secrets.RENOVATE_TOKEN }} # your Revonate bot token

View File

@@ -0,0 +1,46 @@
on: [push, pull_request]
name: Continuous integration
jobs:
check:
name: Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions-rust-lang/setup-rust-toolchain@v1
- run: cargo check
test:
name: Test Suite
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions-rust-lang/setup-rust-toolchain@v1
- run: cargo test
fmt:
name: Rustfmt
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions-rust-lang/setup-rust-toolchain@v1
- run: rustup component add rustfmt
- run: cargo fmt --all -- --check
clippy:
name: Clippy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions-rust-lang/setup-rust-toolchain@v1
- run: rustup component add clippy
- run: cargo clippy -- -D warnings
build:
name: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions-rust-lang/setup-rust-toolchain@v1
- run: cargo build

5
.gitignore vendored
View File

@@ -20,3 +20,8 @@ Cargo.lock
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/
# Added by cargo
/target

16
Cargo.toml Normal file
View File

@@ -0,0 +1,16 @@
[package]
name = "tsp-rs"
version = "0.1.0"
edition = "2021"
[dependencies]
rand = "0.9.0"
rocket = "0.5.1"
[profile.release]
opt-level = 'z' # Optimize for size
lto = true # Enable link-time optimization
codegen-units = 1 # Reduce number of codegen units to increase optimizations
panic = 'abort' # Abort on panic
strip = true # Strip symbols from binary*

View File

@@ -1,2 +1,6 @@
# tsp-rs
<p align="center">
<a href="https://git.dev-null.rocks/alexohneander/tsp-rs/actions">
<img src="https://git.dev-null.rocks/alexohneander/tsp-rs/actions/workflows/rust.yaml/badge.svg?branch=main" alt="Build status"></a>
</p>
# tsp-rs

9
renovate.json Normal file
View File

@@ -0,0 +1,9 @@
{
"extends": ["config:recommended", ":dependencyDashboard"],
"packageRules": [
{
"matchUpdateTypes": ["minor", "patch", "pin", "digest"],
"automerge": true
}
]
}

76
src/main.rs Normal file
View File

@@ -0,0 +1,76 @@
//use rand::rng;
//use rand::seq::SliceRandom;
#[macro_use]
extern crate rocket;
fn calculate_distance(city1: &(f64, f64), city2: &(f64, f64)) -> f64 {
let dx = city1.0 - city2.0;
let dy = city1.1 - city2.1;
(dx * dx + dy * dy).sqrt()
}
fn calculate_tour_length(tour: &[usize], cities: &[(f64, f64)]) -> f64 {
let mut length = 0.0;
for i in 0..tour.len() {
let city1 = &cities[tour[i]];
let city2 = &cities[tour[(i + 1) % tour.len()]];
length += calculate_distance(city1, city2);
}
length
}
fn lin_kernighan(mut tour: Vec<usize>, cities: &[(f64, f64)]) -> Vec<usize> {
// let rng = rng();
let n = cities.len();
let mut improved = true;
while improved {
improved = false;
for i in 0..n {
for j in (i + 2)..n {
if i == 0 && j == n - 1 {
continue;
}
let mut new_tour = tour.clone();
new_tour[i + 1..=j].reverse();
if calculate_tour_length(&new_tour, cities) < calculate_tour_length(&tour, cities) {
tour = new_tour;
improved = true;
}
}
}
}
tour
}
#[get("/")]
fn index() -> String {
let cities = vec![
(50.03317681689108, 7.630692594382566),
(50.0511467529328, 7.610264891874095),
(50.07417811821386, 7.637215727783678),
(50.10154844328665, 7.683642662673185),
(50.070237512738046, 7.697022868469907),
(50.052876354261926, 7.6108551506699955),
];
let tour: Vec<usize> = (0..cities.len()).collect();
//tour.shuffle(&mut rng());
let best_tour = lin_kernighan(tour, &cities);
// println!("Beste Tour: {:?}", best_tour);
println!(
"Länge der besten Tour: {}",
calculate_tour_length(&best_tour, &cities)
);
let tour_str = format!("Beste Tour: {:?}", best_tour);
tour_str
}
#[launch]
fn rocket() -> _ {
rocket::build().mount("/", routes![index])
}