Palindromos

Hola, necesito ayuda con este ejercicio, no es una tarea pero me lo encontré en el libro y no se como hacerlo:
                    1
                  232
                34543
              4567654
            567898765
          67890109876
        7890123210987
      890123454321098
    90123456765432109
  0123456789876543210
123456789010987654321
El numero de filas estará comprendido entre 11 y 20 y el resultado aparecerá centrado en la pantalla como se indica en la figura
Respuesta
1
public class Palindromo{
public static void main(String[] args){
int NUM_FILAS=26; //Pon el número que quieras
int NUMERO_INICIAL=1;//Pon el número que quieras del 0 al 9
int nblancos=NUM_FILAS-1;
int numero_actual=NUMERO_INICIAL;
String linea;
for (int i=0; i<NUM_FILAS; i++){
linea = buildBlancos(nblancos);
nblancos--;
linea += buildPalindromo(numero_actual, i);
numero_actual ++;
if (numero_actual>9){
numero_actual=0;
}
System.out.println(linea);
}
System.exit(0);
}
private static String buildBlancos(int num_blancos){
String res = "";
for (int i=0; i<num_blancos; i++){
res += " "; 
}
return res;
}
private static String buildPalindromo(int numero_inicial, int orden){
String res = "";
int numero = numero_inicial;
for (int i=0; i<orden; i++){
res += ""+ numero;
numero++;
if (numero>9){
numero=0;
}
}
res += "" + numero;
for (int i=0; i<orden; i++){
numero--;
if (numero<0){
numero=9;
}
res += ""+ numero;
}
return res;
}
}

1 respuesta más de otro experto

Respuesta
1
int filas = 10;
        for (int i = 1; i <= filas; i++) {
            int nEnFilas = i * 2 - 1; // Cantidad de números en cada linea
            int central = (int) Math.round (nEnFilas / 2f); // Redondea para que quede en el centro.
            long filaAMostrar = 0;
            for (int e = 1; (filaAMostrar == 0 || ((filaAMostrar + "").length() < central)); e++) {
                filaAMostrar = filaAMostrar * 10 + e;
            }//aumenta hasta el centro.
            for (int o = central - 1; (filaAMostrar + "").length() != nEnFilas ; o--) {
                filaAMostrar = filaAMostrar * 10 + o;
            }//desciende hasta que se cumple el número de la fila
            System.out.println (filaAMostrar);
        }
Este algoritmo espero que te sirva como una guía, lo que haría falta es una condicional para que después del 0 siga el 1; (Este sirve hasta las 10 filas)
Espero haberte ayudado :D

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas