import java.util.*; public class ASCIIPuzzle { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); // Imagen ASCII original ordenada String[] originalArt = { " *** ", // 1 " ** ** ", // 2 " ** ** ", // 3 " ** ** **** ", // 4 " ** ** ** ****", // 5 " ** ** * ** **", // 6 " ** * * ** *** **", // 7 " ** * * ** ** *", // 8 " ** ** ** ** **",// 9 " ** ** **", // 10 " * *", // 11 " * *", // 12 " * 0 0 *", // 13 " * / @ \\ *", // 14 " * \\__/ \\__/ *", // 15 " * W *", // 16 " ** ** ", // 17 " ***** "// 18 }; // Crear una copia desordenada List<String> scrambledArt = new ArrayList<>(Arrays.asList(originalArt)); Collections.shuffle(scrambledArt); while (true) { // Mostrar el arte desordenado System.out.println("\nOrdena el arte ASCII:"); for (int i = 0; i < scrambledArt.size(); i++) { System.out.println((i + 1) + ": " + scrambledArt.get(i)); } // Pedir cambio de líneas System.out.print("\n¿Qué línea cambias? (1-" + scrambledArt.size() + "): "); int firstIndex = scanner.nextInt() - 1; System.out.print("¿Por cuál la cambias? (1-" + scrambledArt.size() + "): "); int secondIndex = scanner.nextInt() - 1; // Intercambiar líneas Collections.swap(scrambledArt, firstIndex, secondIndex); // Verificar si está ordenado if (Arrays.equals(scrambledArt.toArray(), originalArt)) { System.out.println("\n¡Felicidades! Has ordenado el arte ASCII:"); for (String line : originalArt) { System.out.println(line); } break; } } scanner.close(); } }