Feature: resolve enigma from command line

This commit is contained in:
2017-09-28 14:39:20 +02:00
parent dbfa1892ee
commit 17e41487a0
4 changed files with 14 additions and 9 deletions

View File

@@ -50,7 +50,7 @@ public class DictionaryBuilder {
return resolver;
}
public static Enigma generateEnigma(String language, int minLength, int maxLength) {
public static Enigma generateEnigma(String language, int minLength, int maxLength, char[] letters) {
Resolver resolver;
try {
resolver = ScrabbleUtils.loadResolver(language);
@@ -58,7 +58,7 @@ public class DictionaryBuilder {
e.printStackTrace();
return null;
}
return resolver.generateEnigma(minLength, maxLength);
return resolver.generateEnigma(minLength, maxLength, letters);
}

View File

@@ -19,7 +19,7 @@ public class Main {
private final static Options options = configParameters();
public static void main(String[] args) {
//achilst
final CommandLineParser parser = new DefaultParser();
CommandLine firstLine = null;
try {
@@ -38,6 +38,7 @@ public class Main {
try {
CommandLine line = parser.parse(options, args);
System.out.println(line.getArgList());
if( line.hasOption( "build" ) ) {
generate(line);
} else {
@@ -81,10 +82,13 @@ public class Main {
final String language = line.getOptionValue("lang", "");
final int min = Integer.parseInt(line.getOptionValue("min", "3"));
final int max = Integer.parseInt(line.getOptionValue("max", "7"));
char[] letters = null;
if( line.getArgList().size() == 1 ) {
letters = line.getArgList().get(0).toCharArray();
}
try {
manageLanguage(language);
Enigma enigma = DictionaryBuilder.generateEnigma(language, min, max);
Enigma enigma = DictionaryBuilder.generateEnigma(language, min, max, letters);
System.out.println(enigma);
} catch(IllegalArgumentException e) {
System.err.println(e.getMessage());

View File

@@ -47,12 +47,13 @@ public class Resolver implements Serializable {
return this.statistics;
}
public Enigma generateEnigma(int minimalLettersCount, int maximalLettersCount) {
public Enigma generateEnigma(int minimalLettersCount, int maximalLettersCount, char[] letters) {
boolean mustRun = false;
char[] letters;
Map<Integer, List<String>> allWords;
do {
if( letters == null ) {
letters = getRandomSet(maximalLettersCount);
}
allWords = getWords(letters, minimalLettersCount);
int wordsCount = 0;

Binary file not shown.