From 67e1333c2a8ce8c723a4fe14eb33fe7a267712d6 Mon Sep 17 00:00:00 2001 From: InigoGutierrez Date: Sat, 18 Nov 2017 13:24:40 +0100 Subject: Problema 100 (Wrong Answer) --- AceptaElReto/src/Problema100.java | 53 +++++++++++++++++++++++++++++---------- 1 file changed, 40 insertions(+), 13 deletions(-) diff --git a/AceptaElReto/src/Problema100.java b/AceptaElReto/src/Problema100.java index b6f47cd..aa94a98 100644 --- a/AceptaElReto/src/Problema100.java +++ b/AceptaElReto/src/Problema100.java @@ -5,25 +5,26 @@ * Para la propia constante de Kaprekar deberá indicar 0. */ -import java.util.ArrayList; +import java.util.Arrays; public class Problema100 { public static void main(String[] args) { int counter; - final int KAPREKAR = 6174; final String KAPREKAR_STRING = "6174"; for ( String arg: args ) { + //System.out.println("Input: " + arg); if ( arg.equals(KAPREKAR_STRING) ) { System.out.println(0); } else { counter = 0; - while ( arg != KAPREKAR_STRING && counter < 8 ) { + while ( !arg.equals(KAPREKAR_STRING) && counter < 8 ) { arg = nextKaprekar(arg); counter++; + //System.out.println("Iteration " + counter + ": " + arg); } System.out.println(counter); } @@ -33,18 +34,44 @@ public class Problema100 { } private static String nextKaprekar(String arg) { - char[] array; - char[] newArray = new char[4]; - char max = 0; - array = arg.toCharArray(); - // Order the array - for (int i = 0; i < 4; i++) { - for (int j = 0; j < 4; j++) { - if ( number > max ) { - - } + char[] ascending = new char[4]; + char[] chars = arg.toCharArray(); + for ( int i = 0; i < 4; i++ ) { + if (!(i >= chars.length) ) { + ascending[i] = chars[i]; + } + else { + ascending[i] = '0'; } } + // Order the array in ascending order + Arrays.sort(ascending); + //System.out.println("Ascending ordered for " + arg + ": " + charArrayToString(ascending)); + + // Compute new value + int ascendingInt = Character.getNumericValue(ascending[0])*1000 + + Character.getNumericValue(ascending[1])*100 + + Character.getNumericValue(ascending[2])*10 + + Character.getNumericValue(ascending[3]); + int descendingInt = Character.getNumericValue(ascending[3])*1000 + + Character.getNumericValue(ascending[2])*100 + + Character.getNumericValue(ascending[1])*10 + + Character.getNumericValue(ascending[0]); + //System.out.println("Result: " + String.valueOf(descendingInt - ascendingInt)); + return String.valueOf(descendingInt - ascendingInt); } + /** + * For testing. + * @param charArray + * @return String corresponding to charArray. + */ + /*public static String charArrayToString(char[] charArray) { + String result = ""; + for ( int i = 0; i < charArray.length; i++ ) { + result += String.valueOf(Character.getNumericValue(charArray[i])); + } + return result; + }*/ + } -- cgit v1.2.1