Skip to content
Closed

Bugfix #2390

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
90436f1
[Sync Iteration] rust/nth-prime/1
exercism-solutions-syncer[bot] Dec 2, 2025
87d216d
[Sync Iteration] rust/eliuds-eggs/1
exercism-solutions-syncer[bot] Dec 3, 2025
b914371
[Sync Iteration] rust/eliuds-eggs/2
exercism-solutions-syncer[bot] Dec 3, 2025
1cf6ec3
[Sync Iteration] rust/kindergarten-garden/1
exercism-solutions-syncer[bot] Dec 11, 2025
2c47703
[Sync Iteration] rust/kindergarten-garden/2
exercism-solutions-syncer[bot] Dec 11, 2025
c1e46f6
[Sync Iteration] rust/high-scores/1
exercism-solutions-syncer[bot] Dec 11, 2025
a5b3637
[Sync Iteration] rust/list-ops/2
exercism-solutions-syncer[bot] Jan 27, 2026
c1c0950
[Sync Iteration] java/log-levels/1
exercism-solutions-syncer[bot] Apr 15, 2026
86e0bbf
[Sync Iteration] java/jedliks-toy-car/1
exercism-solutions-syncer[bot] Apr 16, 2026
ac79f5d
[Sync Iteration] java/karls-languages/1
exercism-solutions-syncer[bot] Apr 16, 2026
e9ab9fc
[Sync Iteration] java/captains-log/1
exercism-solutions-syncer[bot] Apr 16, 2026
c5a68c7
[Sync Iteration] java/football-match-reports/1
exercism-solutions-syncer[bot] Apr 16, 2026
fe09c7d
[Sync Iteration] java/squeaky-clean/1
exercism-solutions-syncer[bot] Apr 17, 2026
ac56aaf
[Sync Iteration] java/need-for-speed/1
exercism-solutions-syncer[bot] Apr 17, 2026
9b06862
[Sync Iteration] java/wizards-and-warriors/1
exercism-solutions-syncer[bot] Apr 17, 2026
7364349
[Sync Iteration] java/logs-logs-logs/1
exercism-solutions-syncer[bot] Apr 17, 2026
b24411b
[Sync Iteration] java/gotta-snatch-em-all/1
exercism-solutions-syncer[bot] Apr 17, 2026
07f21f5
[Sync Iteration] java/remote-control-competition/1
exercism-solutions-syncer[bot] Apr 17, 2026
d411100
[Sync Iteration] java/calculator-conundrum/1
exercism-solutions-syncer[bot] Apr 21, 2026
8ba4e21
[Sync Iteration] java/international-calling-connoisseur/1
exercism-solutions-syncer[bot] Apr 21, 2026
245c542
[Sync Iteration] java/relative-distance/1
exercism-solutions-syncer[bot] Apr 22, 2026
b951b01
[Sync Iteration] java/wizards-and-warriors-2/1
exercism-solutions-syncer[bot] Apr 22, 2026
17b17dd
Merge pull request #89 from Weltenbummler397/exercism-sync/5792dd244b…
Weltenbummler397 May 4, 2026
06e008a
Merge pull request #88 from Weltenbummler397/exercism-sync/5ed613ca78…
Weltenbummler397 May 4, 2026
924db51
Merge pull request #87 from Weltenbummler397/exercism-sync/ea0468383a…
Weltenbummler397 May 4, 2026
06fcc7c
Merge pull request #86 from Weltenbummler397/exercism-sync/2e121aaacf…
Weltenbummler397 May 4, 2026
b3a36b1
Add GitHub Actions workflow to enable auto-merge
Weltenbummler397 May 4, 2026
0455802
Merge pull request #85 from Weltenbummler397/exercism-sync/917b941688…
Weltenbummler397 May 4, 2026
cc9ea90
Merge pull request #84 from Weltenbummler397/exercism-sync/eeeb011ef9…
Weltenbummler397 May 4, 2026
665de10
Merge pull request #83 from Weltenbummler397/exercism-sync/9b0ec7af28…
Weltenbummler397 May 4, 2026
d41276c
Merge pull request #82 from Weltenbummler397/exercism-sync/1790bae751…
Weltenbummler397 May 4, 2026
dd9840e
Merge pull request #1 from Weltenbummler397/exercism-sync/ebfc06743a5…
Weltenbummler397 May 4, 2026
3fdc9cf
Merge pull request #2 from Weltenbummler397/exercism-sync/22d900627d8…
Weltenbummler397 May 4, 2026
c738617
Merge pull request #3 from Weltenbummler397/exercism-sync/3334531c851…
Weltenbummler397 May 4, 2026
91be447
Merge pull request #4 from Weltenbummler397/exercism-sync/ae6234da40d…
Weltenbummler397 May 4, 2026
dc2bde0
Merge pull request #5 from Weltenbummler397/exercism-sync/ab68f16c89c…
Weltenbummler397 May 4, 2026
687d152
Merge pull request #6 from Weltenbummler397/exercism-sync/f73acc3564f…
Weltenbummler397 May 4, 2026
0a67dde
Merge pull request #81 from Weltenbummler397/exercism-sync/776469ecb2…
Weltenbummler397 May 4, 2026
6d24495
Merge pull request #67 from Weltenbummler397/exercism-sync/df625c0984…
Weltenbummler397 May 4, 2026
34b5425
Merge pull request #78 from Weltenbummler397/exercism-sync/dd600d97a1…
Weltenbummler397 May 4, 2026
04a6d08
Merge pull request #80 from Weltenbummler397/exercism-sync/8bbb41f9ec…
Weltenbummler397 May 4, 2026
a11d4fd
Merge pull request #79 from Weltenbummler397/exercism-sync/ed31dcf4c3…
Weltenbummler397 May 4, 2026
dd98658
Merge pull request #77 from Weltenbummler397/exercism-sync/d6df76d5e3…
Weltenbummler397 May 4, 2026
0daf386
Merge pull request #72 from Weltenbummler397/exercism-sync/2c716b1672…
Weltenbummler397 May 4, 2026
69daf24
Merge pull request #57 from Weltenbummler397/exercism-sync/926978d105…
Weltenbummler397 May 4, 2026
d4ab028
fix bug
Weltenbummler397 May 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions .github/workflows/enable-automerge.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: Enable auto-merge for open PRs

on:
workflow_dispatch: {}
pull_request:
types: [opened, reopened,ready_for_review]

permissions:
contents: write
pull-requests: write

jobs:
enable:
runs-on: ubuntu-latest
steps:
- name: Enable auto-merge for all open PRs (and the current one)
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
REPO: ${{ github.repository }}
run: |
set -euo pipefail

echo "Listing open PRs in $REPO..."
prs=$(gh pr list --repo "$REPO" --state open --json number --jq '.[].number')

if [ -z "$prs" ]; then
echo "No open PRs."
exit 0
fi

for pr in $prs; do
echo "Enabling auto-merge for PR #$pr"
# Choose merge strategy: --merge | --squash | --rebase
# Use --merge here; change if you prefer squash:
gh pr merge "$pr" --repo "$REPO" --auto --merge || true
done
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
class CalculatorConundrum {
public String calculate(int operand1, int operand2, String operation) {
switch (operation) {
case null : throw new IllegalArgumentException("Operation cannot be null");
case "" : throw new IllegalArgumentException("Operation cannot be empty");
case "+" : return operand1 + " + " + operand2 + " = " + (operand1 + operand2);
case "*" : return operand1 + " * " + operand2 + " = " + (operand1 * operand2);
case "/" :
try {
return operand1 + " / " + operand2 + " = " + (operand1 / operand2);
} catch (ArithmeticException e) {
throw new IllegalOperationException("Division by zero is not allowed", e);
}
default: throw new IllegalOperationException(String.format("Operation '%s' does not exist", operation));

}
}
}
30 changes: 30 additions & 0 deletions solutions/java/captains-log/1/src/main/java/CaptainsLog.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import java.util.Random;
import java.util.List;
import java.util.concurrent.ThreadLocalRandom;

class CaptainsLog {

private static final char[] PLANET_CLASSES = new char[]{'D', 'H', 'J', 'K', 'L', 'M', 'N', 'R', 'T', 'Y'};

private Random random;

CaptainsLog(Random random) {
this.random = random;
}

char randomPlanetClass() {
List<Character> buchstaben = List.of('D', 'H', 'J', 'K', 'L', 'M', 'N', 'R', 'T', 'Y');
int index = random.nextInt(buchstaben.size());

return buchstaben.get(index);
}

String randomShipRegistryNumber() {
int zahl = random.nextInt(10000 - 1000) + 1000;
return "NCC-" + zahl;
}

double randomStardate() {
return 41000 +random.nextDouble() * (42000 - 41000);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
public class FootballMatchReports {
public static String onField(int shirtNum) {
switch (shirtNum) {
case 1:
return "goalie";
case 2:
return "left back";
case 3, 4:
return "center back";
case 5:
return "right back";
case 6, 7, 8:
return "midfielder";
case 9:
return "left wing";
case 10:
return "striker";
case 11:
return "right wing";
default:
return "invalid";
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import java.util.List;
import java.util.Set;

class GottaSnatchEmAll {

static Set<String> newCollection(List<String> cards) {
return Set.copyOf(cards);
}

static boolean addCard(String card, Set<String> collection) {
return collection.add(card);
}

static boolean canTrade(Set<String> myCollection, Set<String> theirCollection) {
boolean a = !myCollection.containsAll(theirCollection);
boolean b = !theirCollection.containsAll(myCollection);
return a && b;
}

static Set<String> commonCards(List<Set<String>> collections) {
if (collections == null || collections.isEmpty()) {
return Set.of();
}

Set<String> common = Set.copyOf(collections.get(0));

for (int i = 1; i < collections.size(); i++) {
common = common.stream()
.filter(collections.get(i)::contains)
.collect(java.util.stream.Collectors.toUnmodifiableSet());
}

return common;
}

static Set<String> allCards(List<Set<String>> collections) {
List<String> cards = new java.util.ArrayList<>();
for (Set<String> set : collections) {
for (String card : set) {
if (!cards.contains(card)) {
cards.add(card);
}
}
}
return Set.copyOf(cards);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import java.util.Map;
import java.util.HashMap;

public class DialingCodes {

Map<Integer, String> map = new HashMap<>();

public Map<Integer, String> getCodes() {
return map;
}

public void setDialingCode(Integer code, String country) {
map.put(code, country);
}

public String getCountry(Integer code) {
return map.get(code);
}

public void addNewDialingCode(Integer code, String country) {
if (map.containsKey(code) || map.containsValue(country)) {
return;
}
map.put(code, country);
}

public Integer findDialingCode(String country) {
for (Map.Entry<Integer, String> entry : map.entrySet()) {
if (entry.getValue().equals(country)) {
return entry.getKey(); // Gefunden!
}
}
return null;
}
public void updateCountryDialingCode(Integer code, String country) {
if (map.containsValue(country)) {
map.remove(findDialingCode(country));
map.put(code, country);
}
}
}
25 changes: 25 additions & 0 deletions solutions/java/jedliks-toy-car/1/src/main/java/JedliksToyCar.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
public class JedliksToyCar {
int batteries = 100;
int meters;
public static JedliksToyCar buy() {
return new JedliksToyCar();
}

public String distanceDisplay() {
return String.format("Driven %d meters", meters);
}

public String batteryDisplay() {
if (batteries == 0) {
return "Battery empty";
}
return String.format("Battery at %d%%", batteries);
}

public void drive() {
if (batteries > 0) {
meters += 20;
batteries -= 1;
}
}
}
37 changes: 37 additions & 0 deletions solutions/java/karls-languages/1/src/main/java/LanguageList.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import java.util.ArrayList;
import java.util.List;

public class LanguageList {
private final List<String> languages = new ArrayList<>();

public boolean isEmpty() {
return languages.isEmpty();
}

public void addLanguage(String language) {
languages.add(language);
}

public void removeLanguage(String language) {
languages.remove(language);
}

public String firstLanguage() {
return languages.get(0);
}

public int count() {
return languages.size();
}

public boolean containsLanguage(String language) {
return languages.contains(language);
}

public boolean isExciting() {
if (languages.contains("Kotlin") || languages.contains("Java")) {
return true;
}
return false;
}
}
53 changes: 53 additions & 0 deletions solutions/java/log-levels/1/src/main/java/LogLevels.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
public class LogLevels {

public static String message(String logLine) {
String[] parts = logLine.trim().split("\\s+", 2);
StringBuilder rest = new StringBuilder();
for (int i = 1; i < parts.length; i++) {
if (i > 1) rest.append(" "); // Separator dazwischen
rest.append(parts[i]);
}
return rest.toString();
}

public static String logLevel(String logLine) {
String[] parts = logLine.split(" ");
if (parts[0].equals("[ERROR]:")) {
return "error";
} else if (parts[0].equals("[WARNING]:")) {
return "warning";
} else {
return "info";
}
}

public static String reformat(String logLine) {
String[] parts = logLine.trim().split("\\s+", 2);

if (parts[0].equals("[ERROR]:")) {
StringBuilder rest = new StringBuilder();
for (int i = 1; i < parts.length; i++) {
if (i > 1) rest.append(" "); // Separator dazwischen
rest.append(parts[i]);
}
rest.append(" (error)");
return rest.toString();
} else if (parts[0].equals("[WARNING]:")) {
StringBuilder rest = new StringBuilder();
for (int i = 1; i < parts.length; i++) {
if (i > 1) rest.append(" "); // Separator dazwischen
rest.append(parts[i]);
}
rest.append(" (warning)");
return rest.toString();
} else {
StringBuilder rest = new StringBuilder();
for (int i = 1; i < parts.length; i++) {
if (i > 1) rest.append(" "); // Separator dazwischen
rest.append(parts[i]);
}
rest.append(" (info)");
return rest.toString();
}
}
}
9 changes: 9 additions & 0 deletions solutions/java/logs-logs-logs/1/src/main/java/LogLevel.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
public enum LogLevel {
TRACE,
DEBUG,
INFO,
WARNING,
ERROR,
FATAL,
UNKNOWN;
}
34 changes: 34 additions & 0 deletions solutions/java/logs-logs-logs/1/src/main/java/LogLine.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
public class LogLine {
private String logLine;

public LogLine(String logLine) {
this.logLine = logLine;
}

public LogLevel getLogLevel() {
String code = logLine.substring(1, 4);
switch (code) {
case "TRC": return LogLevel.TRACE;
case "DBG": return LogLevel.DEBUG;
case "INF": return LogLevel.INFO;
case "WRN": return LogLevel.WARNING;
case "ERR": return LogLevel.ERROR;
case "FTL": return LogLevel.FATAL;
default: return LogLevel.UNKNOWN;
}
}

public String getOutputForShortLog() {
String code = logLine.substring(1, 4);
String message = logLine.substring(7);
switch (code) {
case "TRC": return "1:" + message;
case "DBG": return "2:" + message;
case "INF": return "4:" + message;
case "WRN": return "5:" + message;
case "ERR": return "6:" + message;
case "FTL": return "42:" + message;
default: return "0:" + message;
}
}
}
Loading
Loading