Ad
Code
Diff
  • import java.util.List;
    import java.util.Map;
    
    public class TrainsAndRailways {
    
    	public static Map<Character, List<Character>> travel(char[][] tracks) {
    		Map<Character,List<java.util.Map.Entry<Character,Integer>>> result = new java.util.HashMap<>();
    		for (int row = 0; row < tracks.length; row++) {
    			for (int column = 0; column < tracks[row].length; column++) {
    				if (isTrain(tracks[row][column])) {
    					java.util.Map.Entry<Character, Integer> train = new java.util.AbstractMap.SimpleEntry(tracks[row][column],0);
    					goOnTraveling(tracks, row, column+1,train, result);
    				}
    			}
    		}
    		Map<Character,List<Character>> sortedShipOnStations = new java.util.HashMap<>();
    		result.forEach((k,v) -> sortedShipOnStations.put(k,sortTrains(v)));
    		
        return sortedShipOnStations;
    	}
    
    	private static boolean isTrain(char piece) {
    		return piece >= 65 && piece <= 90;
    	}
    	
    	private static boolean isStation (char piece) {
    		return piece >= 48 && piece <= 57;
    	}
    
    	private static void goOnTraveling(char[][] tracks, int row, int column, java.util.Map.Entry<Character, Integer> train, Map<Character, List<java.util.Map.Entry<Character, Integer>>> result) {
    		while (column < tracks[row].length) {
    			switch (tracks[row][column]) {
    				case '¡': {
    					train.setValue(train.getValue()+2);
    					break;
    				}
    				case '-': {
    					break;
    				}
    				case '/': {
    					train.setValue(train.getValue()+1);
    					row--;
    					break;
    				}
    				case '\\': {
    					train.setValue(train.getValue()+1);
    					row++;
    					break;
    				}
    				case ')': {
    					return;
    				}
    				default: {
    					if (isStation(tracks[row][column])) {
    						result.putIfAbsent(tracks[row][column], new java.util.LinkedList<Map.Entry<Character,Integer>>());
    						result.get(tracks[row][column]).add(train);
    					}
    					return;
    				}
    			}
    			train.setValue(train.getValue()+1);
          column++;
    		}
    	}
    	
    	private static List<Character> sortTrains (List<java.util.Map.Entry<Character, Integer>> stationArrivals) {
    		List<Character> orderedTrains = new java.util.LinkedList<>();
    		stationArrivals.forEach(e -> orderedTrains.add(e.getKey()));
    		return stationArrivals.stream()
    		.sorted(java.util.Comparator.comparing(java.util.Map.Entry<Character, Integer>::getValue)
                    .thenComparing(java.util.Map.Entry::getKey))
    		.map(java.util.Map.Entry::getKey)
    		.toList();
    	}
    } 
    
    • import java.util.List;
    • import java.util.Map;
    • import java.util.Map.Entry;
    • public class TrainsAndRailwaysv2 {
    • public class TrainsAndRailways {
    • public static Map<Character, List<Character>> travel(char[][] tracks) {
    • Map<Character,List<Map.Entry<Character,Integer>>> result = new java.util.HashMap<>();
    • Map<Character,List<java.util.Map.Entry<Character,Integer>>> result = new java.util.HashMap<>();
    • for (int row = 0; row < tracks.length; row++) {
    • for (int column = 0; column < tracks[row].length; column++) {
    • if (isTrain(tracks[row][column])) {
    • Map.Entry<Character, Integer> train = new java.util.AbstractMap.SimpleEntry(tracks[row][column],0);
    • java.util.Map.Entry<Character, Integer> train = new java.util.AbstractMap.SimpleEntry(tracks[row][column],0);
    • goOnTraveling(tracks, row, column+1,train, result);
    • }
    • }
    • }
    • Map<Character,List<Character>> sortedShipOnStations = new java.util.HashMap<>();
    • result.forEach((k,v) -> sortedShipOnStations.put(k,sortTrains(v)));
    • return sortedShipOnStations;
    • }
    • private static boolean isTrain(char piece) {
    • return piece >= 65 && piece <= 90;
    • }
    • private static boolean isStation (char piece) {
    • return piece >= 48 && piece <= 57;
    • }
    • private static void goOnTraveling(char[][] tracks, int row, int column, Entry<Character, Integer> train, Map<Character, List<Map.Entry<Character, Integer>>> result) {
    • private static void goOnTraveling(char[][] tracks, int row, int column, java.util.Map.Entry<Character, Integer> train, Map<Character, List<java.util.Map.Entry<Character, Integer>>> result) {
    • while (column < tracks[row].length) {
    • switch (tracks[row][column]) {
    • case '¡': {
    • train.setValue(train.getValue()+2);
    • column++;
    • break;
    • }
    • case '-': {
    • column++;
    • break;
    • }
    • case '/': {
    • train.setValue(train.getValue()+1);
    • row--;
    • break;
    • }
    • case '\\': {
    • train.setValue(train.getValue()+1);
    • row++;
    • break;
    • }
    • case ')': {
    • return;
    • }
    • default: {
    • if (isStation(tracks[row][column])) {
    • result.putIfAbsent(tracks[row][column], new java.util.LinkedList<Map.Entry<Character,Integer>>());
    • result.get(tracks[row][column]).add(train);
    • }
    • return;
    • }
    • }
    • train.setValue(train.getValue()+1);
    • column++;
    • }
    • }
    • private static List<Character> sortTrains (List<Entry<Character, Integer>> stationArrivals) {
    • private static List<Character> sortTrains (List<java.util.Map.Entry<Character, Integer>> stationArrivals) {
    • List<Character> orderedTrains = new java.util.LinkedList<>();
    • stationArrivals.forEach(e -> orderedTrains.add(e.getKey()));
    • return stationArrivals.stream()
    • .sorted((entry1,entry2) ->
    • Integer.compare(entry1.getValue(), entry2.getValue()))
    • .map(Entry::getKey)
    • .sorted(java.util.Comparator.comparing(java.util.Map.Entry<Character, Integer>::getValue)
    • .thenComparing(java.util.Map.Entry::getKey))
    • .map(java.util.Map.Entry::getKey)
    • .toList();
    • }
    • }
Code
Diff
  • import java.util.List;
    import java.util.Map;
    import java.util.Map.Entry;
    
    public class TrainsAndRailwaysv2 {
    
    	public static Map<Character, List<Character>> travel(char[][] tracks) {
    		Map<Character,List<Map.Entry<Character,Integer>>> result = new java.util.HashMap<>();
    		for (int row = 0; row < tracks.length; row++) {
    			for (int column = 0; column < tracks[row].length; column++) {
    				if (isTrain(tracks[row][column])) {
    					Map.Entry<Character, Integer> train = new java.util.AbstractMap.SimpleEntry(tracks[row][column],0);
    					goOnTraveling(tracks, row, column+1,train, result);
    				}
    			}
    		}
    		Map<Character,List<Character>> sortedShipOnStations = new java.util.HashMap<>();
    		result.forEach((k,v) -> sortedShipOnStations.put(k,sortTrains(v)));
    		return sortedShipOnStations;
    	}
    
    	private static boolean isTrain(char piece) {
    		return piece >= 65 && piece <= 90;
    	}
    	
    	private static boolean isStation (char piece) {
    		return piece >= 48 && piece <= 57;
    	}
    
    	private static void goOnTraveling(char[][] tracks, int row, int column, Entry<Character, Integer> train, Map<Character, List<Map.Entry<Character, Integer>>> result) {
    		while (column < tracks[row].length) {
    			switch (tracks[row][column]) {
    				case '¡': {
    					train.setValue(train.getValue()+2);
    					column++;
    					break;
    				}
    				case '-': {
    					column++;
    					break;
    				}
    				case '/': {
    					train.setValue(train.getValue()+1);
    					row--;
    					break;
    				}
    				case '\\': {
    					train.setValue(train.getValue()+1);
    					row++;
    					break;
    				}
    				case ')': {
    					return;
    				}
    				default: {
    					if (isStation(tracks[row][column])) {
    						result.putIfAbsent(tracks[row][column], new java.util.LinkedList<Map.Entry<Character,Integer>>());
    						result.get(tracks[row][column]).add(train);
    					}
    					return;
    				}
    			}
    			train.setValue(train.getValue()+1);
    		}
    	}
    	
    	private static List<Character> sortTrains (List<Entry<Character, Integer>> stationArrivals) {
    		List<Character> orderedTrains = new java.util.LinkedList<>();
    		stationArrivals.forEach(e -> orderedTrains.add(e.getKey()));
    		return stationArrivals.stream()
    		.sorted((entry1,entry2) -> 
    		Integer.compare(entry1.getValue(), entry2.getValue()))
    		.map(Entry::getKey)
    		.toList();
    	}
    }
    • import java.util.List;
    • import java.util.Map;
    • import java.util.Map.Entry;
    • public class TrainsAndRailwaysv2 {
    • public static Map<Character, List<Character>> travel(char[][] tracks) {
    • return null;
    • }
    • Map<Character,List<Map.Entry<Character,Integer>>> result = new java.util.HashMap<>();
    • for (int row = 0; row < tracks.length; row++) {
    • for (int column = 0; column < tracks[row].length; column++) {
    • if (isTrain(tracks[row][column])) {
    • Map.Entry<Character, Integer> train = new java.util.AbstractMap.SimpleEntry(tracks[row][column],0);
    • goOnTraveling(tracks, row, column+1,train, result);
    • }
    • }
    • }
    • Map<Character,List<Character>> sortedShipOnStations = new java.util.HashMap<>();
    • result.forEach((k,v) -> sortedShipOnStations.put(k,sortTrains(v)));
    • return sortedShipOnStations;
    • }
    • private static boolean isTrain(char piece) {
    • return piece >= 65 && piece <= 90;
    • }
    • private static boolean isStation (char piece) {
    • return piece >= 48 && piece <= 57;
    • }
    • private static void goOnTraveling(char[][] tracks, int row, int column, Entry<Character, Integer> train, Map<Character, List<Map.Entry<Character, Integer>>> result) {
    • while (column < tracks[row].length) {
    • switch (tracks[row][column]) {
    • case '¡': {
    • train.setValue(train.getValue()+2);
    • column++;
    • break;
    • }
    • case '-': {
    • column++;
    • break;
    • }
    • case '/': {
    • train.setValue(train.getValue()+1);
    • row--;
    • break;
    • }
    • case '\\': {
    • train.setValue(train.getValue()+1);
    • row++;
    • break;
    • }
    • case ')': {
    • return;
    • }
    • default: {
    • if (isStation(tracks[row][column])) {
    • result.putIfAbsent(tracks[row][column], new java.util.LinkedList<Map.Entry<Character,Integer>>());
    • result.get(tracks[row][column]).add(train);
    • }
    • return;
    • }
    • }
    • train.setValue(train.getValue()+1);
    • }
    • }
    • private static List<Character> sortTrains (List<Entry<Character, Integer>> stationArrivals) {
    • List<Character> orderedTrains = new java.util.LinkedList<>();
    • stationArrivals.forEach(e -> orderedTrains.add(e.getKey()));
    • return stationArrivals.stream()
    • .sorted((entry1,entry2) ->
    • Integer.compare(entry1.getValue(), entry2.getValue()))
    • .map(Entry::getKey)
    • .toList();
    • }
    • }
Code
Diff
  • import java.util.List;
    import java.util.Map;
    
    public class TrainsAndRailwaysv2 {
    
    	public static Map<Character, List<Character>> travel(char[][] tracks) {
        //suerte
        return null;  
      }
    }
    • import java.util.List;
    • import java.util.Map;
    • public class TrainsAndRailwaysv2 {
    • public static Map<Character, List<Character>> travel(char[][] tracks) {
    • //suerte
    • return null;
    • }
    • }

Hola

import java.util.List;
import java.util.Map;

public class TrainsAndRailwaysv2 {

	public static Map<Character, List<Character>> travel(char[][] tracks) {
    return null;  
  }
}