Author: Nicholas Prado <nmprado@nzen.ws>
Date: Thu Dec 5 07:03:55 UTC 2019
Parent: d271ce605572471f42422a4d171bc2bd97fb16c8
Log message:
temp i1904-1 partial draft that advances to the first value This can increment the first value up to one that satisfies the neighbor same or greater constraint. However, it doesn't check whether the pair constraint is satisfied. The first value does satisfy it, but it's better to have another pass that also satisfies the pair constraint, so the pair cursor is in the right spot before this starts incrementing. In case it's not clear from that description, I intend to generate the values, rather than do some combinatoric series analysis.
1: diff --git a/src/java/Exercise19041.java b/src/java/Exercise19041.java 2: new file mode 100644 3: index 0000000..eb94b75 4: --- /dev/null 5: +++ b/src/java/Exercise19041.java 6: @@ -0,0 +1,217 @@ 7: + 8: +import java.awt.Point; 9: +import java.io.IOException; 10: +import java.nio.file.Files; 11: +import java.nio.file.InvalidPathException; 12: +import java.nio.file.Path; 13: +import java.nio.file.Paths; 14: +import java.util.ArrayList; 15: +import java.util.Collection; 16: +import java.util.LinkedList; 17: +import java.util.List; 18: +import java.util.HashSet; 19: +import java.util.Map; 20: +import java.util.Set; 21: +import java.util.SortedSet; 22: +import java.util.TreeMap; 23: +import java.util.TreeSet; 24: + 25: +public class Exercise19041 26: +{ 27: + private static final String cl = "19041."; 28: + 29: + public static void main( String args[] ) 30: + { 31: + final String here = Exercise19041.cl +"m "; 32: + if ( args.length < 1 ) 33: + { 34: + throw new RuntimeException( here +"add a filename argument" ); 35: + } 36: + String userSaysFile = args[ 0 ]; 37: + List<String> fileLines = new LinkedList<>(); 38: + try 39: + { 40: + Path where = Paths.get( userSaysFile ); 41: + fileLines = Files.readAllLines( where ); 42: + } 43: + catch ( IOException | InvalidPathException ie ) 44: + { 45: + System.err.println( here +"couldn't read file "+ userSaysFile +" because "+ ie ); 46: + return; 47: + } 48: + /* 49: + - interpretation of spec - 50: + gen combinations of six digits where left is less or equal to right neighgor 51: + and at least two digits are of equal value 52: + */ 53: + int lowLim = Integer.parseInt( fileLines.get( 0 ) ); 54: + int highLim = Integer.parseInt( fileLines.get( 1 ) ); 55: + System.out.println( "answer is "+ new Exercise19041() 56: + .combinationsIncreasingWithPairBetween( lowLim, highLim ) ); 57: + } 58: + 59: + 60: + private int combinationsIncreasingWithPairBetween( int lowLim, int highLim ) 61: + { 62: + final String here = cl +"ciwpb "; 63: + String initialAsStr = Integer.toString( lowLim ); 64: + WholeN[] register = new WholeN[ 6 ]; 65: + register[ 0 ] = new WholeN( Integer.parseInt( initialAsStr.substring( 0, 1 ) ) ); 66: + register[ 1 ] = new WholeN( Integer.parseInt( initialAsStr.substring( 1, 2 ) ) ); 67: + register[ 2 ] = new WholeN( Integer.parseInt( initialAsStr.substring( 2, 3 ) ) ); 68: + register[ 3 ] = new WholeN( Integer.parseInt( initialAsStr.substring( 3, 4 ) ) ); 69: + register[ 4 ] = new WholeN( Integer.parseInt( initialAsStr.substring( 4, 5 ) ) ); 70: + register[ 5 ] = new WholeN( Integer.parseInt( initialAsStr.substring( 5 ) ) ); 71: + /* 72: + for ( WholeN nn : register ) 73: + System.out.print( nn ); 74: + System.out.println(); 75: + */ 76: + int currentResolvedValue = lowLim; 77: + // ensure registers begin with valid neighbor same/above constraint 78: + for ( int ind = 1; ind < register.length; ind++ ) 79: + { 80: + /* 81: + System.out.println( here +"iv "+ register[ ind -1 ].ownValue +" "+ register[ ind ].ownValue ); 82: + System.out.print( here +"e if "+ register[ ind -1 ].ownValue +" > "+ register[ ind ].ownValue +" ("+ (register[ ind -1 ].ownValue > register[ ind ].ownValue) +") "+ ((register[ ind -1 ].ownValue <= register[ ind ].ownValue) 83: + ? "stay" : "["+ register[ ind ].ownValue +"] = "+ register[ ind -1 ].ownValue ) ); 84: + */ 85: + if ( register[ ind -1 ].ownValue > register[ ind ].ownValue ) 86: + register[ ind ].ownValue = register[ ind -1 ].ownValue; 87: + // System.out.println( " ; now "+ valueOfRegister( register ) ); 88: + } 89: + currentResolvedValue = valueOfRegister( register ); 90: + System.out.println( "initial value is "+ currentResolvedValue ); 91: + // 92: +/* 93: + int leftSideOfPair = 4; 94: + Set<WholeN> candidates = new HashSet<>(); 95: + for ( ; leftSideOfPair >= 0; leftSideOfPair-- ) 96: + { 97: + for ( int colInd = 5; colInd > leftSideOfPair +1; colInd-- ) 98: + { 99: + 100: + } 101: + } 102: + return -1; 103: + */ 104: + } 105: + 106: + 107: + private int valueOfRegister( WholeN[] register ) 108: + { 109: + int total = 0, position = 1; 110: + for ( int col = register.length -1; col >= 0 ; col-- ) 111: + { 112: + total += register[ col ].ownValue * position; 113: + position *= 10; 114: + } 115: + return total; 116: + } 117: + 118: + 119: + private class WholeN 120: + { 121: + int ownValue; 122: + 123: + public WholeN( int someValue ) 124: + { 125: + // ignoring antagonistic input 126: + ownValue = someValue; 127: + } 128: + 129: + public WholeN next( int value ) 130: + { 131: + switch ( value ) 132: + { 133: + case 0 : 134: + { 135: + ownValue = 1; 136: + return this; 137: + } 138: + case 1 : 139: + { 140: + ownValue = 2; 141: + return this; 142: + } 143: + case 2 : 144: + { 145: + ownValue = 3; 146: + return this; 147: + } 148: + case 3 : 149: + { 150: + ownValue = 4; 151: + return this; 152: + } 153: + case 4 : 154: + { 155: + ownValue = 5; 156: + return this; 157: + } 158: + case 5 : 159: + { 160: + ownValue = 6; 161: + return this; 162: + } 163: + case 6 : 164: + { 165: + ownValue = 7; 166: + return this; 167: + } 168: + case 7 : 169: + { 170: + ownValue = 8; 171: + return this; 172: + } 173: + case 8 : 174: + { 175: + ownValue = 9; 176: + return this; 177: + } 178: + case 9 : 179: + { 180: + ownValue = 0; 181: + return this; 182: + } 183: + default : 184: + { 185: + ownValue = -1; 186: + return this; 187: + } 188: + } 189: + } 190: + 191: + public String toString() 192: + { 193: + return Integer.valueOf( ownValue ).toString(); 194: + } 195: + } 196: + 197: +} 198: + 199: + 200: + 201: + 202: + 203: + 204: + 205: + 206: + 207: + 208: + 209: + 210: + 211: + 212: + 213: + 214: + 215: + 216: + 217: + 218: + 219: + 220: + 221: + 222: + 223: + 224: diff --git a/src/res/19_04_input.txt b/src/res/19_04_input.txt 225: new file mode 100644 226: index 0000000..dc63fd2 227: --- /dev/null 228: +++ b/src/res/19_04_input.txt 229: @@ -0,0 +1,2 @@ 230: +353096 231: +843212 232: \ No newline at end of file