Skip to content

Instantly share code, notes, and snippets.

@ckob
Last active December 15, 2015 12:20
Show Gist options
  • Select an option

  • Save ckob/d7e4b4ed2d41683cfe4c to your computer and use it in GitHub Desktop.

Select an option

Save ckob/d7e4b4ed2d41683cfe4c to your computer and use it in GitHub Desktop.
Examen Iterativa 10/12/2015
System.out.println(!conteUnaSerieCapicuaDeLlargadaAlMenys3(123456789));
System.out.println(!conteUnaSerieCapicuaDeLlargadaAlMenys3(123));
System.out.println(!conteUnaSerieCapicuaDeLlargadaAlMenys3(1234));
System.out.println(!conteUnaSerieCapicuaDeLlargadaAlMenys3(12345));
System.out.println(!conteUnaSerieCapicuaDeLlargadaAlMenys3(1233));
System.out.println(!conteUnaSerieCapicuaDeLlargadaAlMenys3(12334));
System.out.println(!conteUnaSerieCapicuaDeLlargadaAlMenys3(12345561));
System.out.println(!conteUnaSerieCapicuaDeLlargadaAlMenys3(1234556123));
System.out.println(!conteUnaSerieCapicuaDeLlargadaAlMenys3(12));
System.out.println(!conteUnaSerieCapicuaDeLlargadaAlMenys3(1));
System.out.println(!conteUnaSerieCapicuaDeLlargadaAlMenys3(221));
System.out.println(!conteUnaSerieCapicuaDeLlargadaAlMenys3(213));
System.out.println(!conteUnaSerieCapicuaDeLlargadaAlMenys3(123345));
System.out.println(!conteUnaSerieCapicuaDeLlargadaAlMenys3(152335));
System.out.println(!conteUnaSerieCapicuaDeLlargadaAlMenys3(15235));
System.out.println(!conteUnaSerieCapicuaDeLlargadaAlMenys3(15235));
System.out.println(!conteUnaSerieCapicuaDeLlargadaAlMenys3(43543));
System.out.println(!conteUnaSerieCapicuaDeLlargadaAlMenys3(6455));
System.out.println(!conteUnaSerieCapicuaDeLlargadaAlMenys3(56778));
System.out.println(!conteUnaSerieCapicuaDeLlargadaAlMenys3(8564436));
System.out.println(conteUnaSerieCapicuaDeLlargadaAlMenys3(121345678));
System.out.println(conteUnaSerieCapicuaDeLlargadaAlMenys3(123456578));
System.out.println(conteUnaSerieCapicuaDeLlargadaAlMenys3(123456547));
System.out.println(conteUnaSerieCapicuaDeLlargadaAlMenys3(123456657));
System.out.println(conteUnaSerieCapicuaDeLlargadaAlMenys3(12321));
System.out.println(conteUnaSerieCapicuaDeLlargadaAlMenys3(123324567));
System.out.println(conteUnaSerieCapicuaDeLlargadaAlMenys3(121));
System.out.println(conteUnaSerieCapicuaDeLlargadaAlMenys3(1232));
System.out.println(conteUnaSerieCapicuaDeLlargadaAlMenys3(12332));
System.out.println(conteUnaSerieCapicuaDeLlargadaAlMenys3(123324));
System.out.println(conteUnaSerieCapicuaDeLlargadaAlMenys3(123321));
System.out.println(conteUnaSerieCapicuaDeLlargadaAlMenys3(56667));
System.out.println(conteUnaSerieCapicuaDeLlargadaAlMenys3(6768));
System.out.println(conteUnaSerieCapicuaDeLlargadaAlMenys3(67879));
System.out.println(conteUnaSerieCapicuaDeLlargadaAlMenys3(167769));
System.out.println(conteUnaSerieCapicuaDeLlargadaAlMenys3(6776));
System.out.println(conteUnaSerieCapicuaDeLlargadaAlMenys3(67769));
System.out.println(figuraSensePrint(0,0));
System.out.println(figuraSensePrint(0,1));
System.out.println(figuraSensePrint(1,0));
System.out.println(figuraSensePrint(1,1));
System.out.println(figuraSensePrint(3,5));
System.out.println(figuraSensePrint(5,3));
System.out.println(figuraSensePrint(6,3));
System.out.println(figuraSensePrint(6,4));
System.out.println(figuraSensePrint(6,5));
System.out.println(figuraSensePrint(6,6));
System.out.println(figuraSensePrint(6,7));
System.out.println(figuraSensePrint(6,8));
System.out.println(figuraSensePrint(6,9));
System.out.println(figuraSensePrint(8,3));
System.out.println(figuraSensePrint(8,4));
System.out.println(figuraSensePrint(8,5));
System.out.println(figuraSensePrint(8,6));
System.out.println(figuraSensePrint(8,7));
System.out.println(figuraSensePrint(8,8));
System.out.println(figuraSensePrint(8,9));
System.out.println(figuraSensePrint(8,10));
System.out.println(figuraSensePrint(10,10));
System.out.println(figuraSensePrint(12,12));
/*
* Program.java 1.0 Dec 10, 2015
*
* Copyright 2015 Charly Koch Busquets <charlykoch@gmail.com>
*
* This is free software, licensed under the GNU General Public License v3.
* See http://www.gnu.org/licenses/gpl.html for more information.
*/
public class Program {
/**
retorna true si el nombre passat com a argument contè una sèrie
capicua de llargada al menys 3 a l'interior
exemple
123456789 no
121345678 sí 121
123456578 sí 565
123456547 sí 45654
123456657 sí 5665
n és un número positiu
no cal comprovació
cap print
*/
public static boolean conteUnaSerieCapicuaDeLlargadaAlMenys3(int n){
int ndigits = numberOfDigits(n); // Calculem el nombre total de digits
for (int l=3; l<=ndigits; l++){ // Començant per el 3, i fins un maxim del total de digits...
for (int i=l; i<=ndigits; i++) { // Anem provant de si un nombre de longitud "l" i amb posició "i" es capicua...
if (isPalindromic(digitsAt(n, i, l))) { // Amb el métode isPalindromic que ja vem fer als exercicis.
return true; // Retorna true a la primera que es cumpleix
}
}
}
return false; // Retorna fals si arriba aquí, es a dir, que no ha trobat cap nombre capicua
}
public static int numberOfDigits(int n) { // Retorna el nombre de digits total del nombre "n"
n = Math.abs(n);
int sum=0;
for(int i = 1; i <= n; i*=10)
if(n%i!=n)
sum++;
return sum;
}
public static boolean isPalindromic(int n) { // Fet als exercicis.
int max = numberOfDigits(n); // Calculem el nombre de digits per utilitzarlo al bucle com a "tope"
int x = max; // Guardem a "x" el nombre de digits per començar "desde adalt"
for (int i=1;i<=max;i++) { // Per cada posició anem sumant 1 a "i" i restant 1 a "x" ...
if (digitsAt(n,i,1)!=digitsAt(n,x,1)) return false; // Per comprovar si els dos nombres son iguals
x--;
}
return true;
}
public static int digitsAt (int n, int i, int l) { // Retorna les xifres "l" que estan a la posició "i" del nombre "n"
n = (int)(n%Math.pow(10, i));
n = (int)(n/Math.pow(10, i-l));
return n;
}
}
/*
* Program.java 1.0 Dec 10, 2015
*
* Copyright 2015 Charly Koch Busquets <charlykoch@gmail.com>
*
* This is free software, licensed under the GNU General Public License v3.
* See http://www.gnu.org/licenses/gpl.html for more information.
*/
public class Program {
/**
* Dibuixa una figura en funció del arguments tal com als exemples
*
* @param n1
* @param n2
* @return la figura
*/
public static String figuraSensePrint(int n1,int n2){
int max = max(n1,n2);
String s="\nFigura "+n1+" " +n2+":\n"; // Creem l'string on guardar tot el string final.
String numeros=""; // Creem l'string on guardar la seria de nombres que apareix al dibuix
for (int n=0;n<max; n++) numeros+="_"+n%10; // Guardem a la variable els nombres. Es fa n%10 per l'exemple 12-12, que apareix 0 i 1 en lloc de 10 i 11. Es dibuixa la serie de nombres fins arribar al maxim dels dos.
numeros += "_m_x_"; // Es guarda a la variable el final de la linia de nombres
for (int y=1;y<=n1;y++) { // Es pren n1 com a referencia per al total de linies
s+="@\n"; // A cada linia, afegim una @ i un salt de linia. Al principi ja que als exemples apareix una al principi sempre que sigui >= a 1, i al final de tot no.
for (int f=1;f<y;f++) s+="+"; // Dibuixem els "+". Aumenten proporcionals a les linies.
for (int x=1;x<=Math.round(n2/2.);x++) s+="*"; // Dibuixem els "*". Un total de la meitat d'n2 redondejat a l'alça
for (int w=1;w<=y;w++) { // Per cada linia del dibuix...
if (y==n2/2) { // Si la linia es la nº n2/2...
s+=numeros; // la dibuixem
break; // i sortim del bucle
}
else s+=""; // Si no es així, dibuixem espais fins arribar a la linia que voliem (a dalt)
}
}
return s; // Retornem tot l'string pero no el dibuixem directament.
}
public static int max (int a, int b) {
if (a>b) return a;
return b;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment