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; 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; Resolver resolver;
try { try {
resolver = ScrabbleUtils.loadResolver(language); resolver = ScrabbleUtils.loadResolver(language);
@@ -58,7 +58,7 @@ public class DictionaryBuilder {
e.printStackTrace(); e.printStackTrace();
return null; 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(); private final static Options options = configParameters();
public static void main(String[] args) { public static void main(String[] args) {
//achilst
final CommandLineParser parser = new DefaultParser(); final CommandLineParser parser = new DefaultParser();
CommandLine firstLine = null; CommandLine firstLine = null;
try { try {
@@ -38,6 +38,7 @@ public class Main {
try { try {
CommandLine line = parser.parse(options, args); CommandLine line = parser.parse(options, args);
System.out.println(line.getArgList());
if( line.hasOption( "build" ) ) { if( line.hasOption( "build" ) ) {
generate(line); generate(line);
} else { } else {
@@ -81,10 +82,13 @@ public class Main {
final String language = line.getOptionValue("lang", ""); final String language = line.getOptionValue("lang", "");
final int min = Integer.parseInt(line.getOptionValue("min", "3")); final int min = Integer.parseInt(line.getOptionValue("min", "3"));
final int max = Integer.parseInt(line.getOptionValue("max", "7")); final int max = Integer.parseInt(line.getOptionValue("max", "7"));
char[] letters = null;
if( line.getArgList().size() == 1 ) {
letters = line.getArgList().get(0).toCharArray();
}
try { try {
manageLanguage(language); manageLanguage(language);
Enigma enigma = DictionaryBuilder.generateEnigma(language, min, max); Enigma enigma = DictionaryBuilder.generateEnigma(language, min, max, letters);
System.out.println(enigma); System.out.println(enigma);
} catch(IllegalArgumentException e) { } catch(IllegalArgumentException e) {
System.err.println(e.getMessage()); System.err.println(e.getMessage());
@@ -140,7 +144,7 @@ public class Main {
.argName("max") .argName("max")
.required(false) .required(false)
.build(); .build();
final Options options = new Options(); final Options options = new Options();
options.addOption(buildOption); options.addOption(buildOption);

View File

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

Binary file not shown.