/** @(#)TestCambiaBase.java 2011 Graba todos los números que son palindrómicos en más de 3 bases. http://www.di-mare.com/adolfo/cursos/2011-1/pi-ea-2.htm @author Adolfo Di Mare */ import junit.framework.*; // assertTrue() && JUnit /** Clase que contiene el programa principal {@code main()}. */ public class TestCambiaBase extends TestCase { /** Retorna una hilera que tiene los dígitos en base "b" del número "n". * Por ejemplo, cambiaBase(2,17) retorna la hilera "10001" que es el número 17 * escrito en binario, mientras que cambiaBase(5,17) retorna la hilera "32" * pues 3*5+2==17. Solo trabaja con la parte positiva del número. */ public static String cambiaBase( int b, int num ) { int digito,enLetras; if ( num == 0 ) { return "0"; } if ( num < 0 ) { num = -num; } String res = ""; while ( num != 0 ) { digito = num % b; num = num / b; if ( digito < 10 ) { enLetras = (int)(digito) + (int)('0'); } else if ( digito < 10 + (int)('Z')-(int)('A') +1 ) { enLetras = (int)(digito)-10 + (int)('A'); } else { enLetras = '?'; } res = (char)(enLetras) + res; } return res; } /** Retorna {@code true} si los dígitos del número {@code n} se * leen igual hacia adelante que hacia atrás. */ public static boolean esCapicuo( String str ) { { /* *** RELLENE CON SU ALGORITMO *** */ } return true; } /** test -> cambiaBase(). */ public void testCambiaBase() { assertTrue( 26 == (int)('Z')-(int)('A')+1 ); assertTrue( cambiaBase(2,17).compareTo( "10001") == 0 ); assertTrue( cambiaBase(5,17).compareTo( "32" ) == 0 ); assertTrue( cambiaBase( 10, 19040 ).compareTo( "19040" ) == 0 ); for ( int i=0; i<100; ++i ) { assertTrue( cambiaBase(10,i).compareTo( Integer.toString(i) ) == 0 ); } // OJO: no se vale usar (( "10001" == cambiaBase(2,17) )) !!!! } /** Graba todos los números que son palindrómicos en más de 3 bases, * para las bases en el rango [2..16] para números de menos de 7 * dígitos decimales. Un número es palindrómico si se leé igual * hacia adelante que hacia atrás. Por ejemplo, todos dígitos * decimales son palindrómicos en las bases 10, 11, hasta 16. */ public static void main( String args[] ) { { /* *** RELLENE CON SU ALGORITMO *** */ } } } /* > run TestCambiaBase 0(10) 0(2) 0(3) 0(4) 0(5) 0(6) 0(7) 0(8) 0(9) 0(10) 0(11) 0(12) 0(13) 0(14) 0(15) 0(16) 1(10) 1(2) 1(3) 1(4) 1(5) 1(6) 1(7) 1(8) 1(9) 1(10) 1(11) 1(12) 1(13) 1(14) 1(15) 1(16) 2(10) 2(3) 2(4) 2(5) 2(6) 2(7) 2(8) 2(9) 2(10) 2(11) 2(12) 2(13) 2(14) 2(15) 2(16) 3(10) 11(2) 3(4) 3(5) 3(6) 3(7) 3(8) 3(9) 3(10) 3(11) 3(12) 3(13) 3(14) 3(15) 3(16) 4(10) 11(3) 4(5) 4(6) 4(7) 4(8) 4(9) 4(10) 4(11) 4(12) 4(13) 4(14) 4(15) 4(16) 5(10) 101(2) 11(4) 5(6) 5(7) 5(8) 5(9) 5(10) 5(11) 5(12) 5(13) 5(14) 5(15) 5(16) 6(10) 11(5) 6(7) 6(8) 6(9) 6(10) 6(11) 6(12) 6(13) 6(14) 6(15) 6(16) 7(10) 111(2) 11(6) 7(8) 7(9) 7(10) 7(11) 7(12) 7(13) 7(14) 7(15) 7(16) 8(10) 22(3) 11(7) 8(9) 8(10) 8(11) 8(12) 8(13) 8(14) 8(15) 8(16) 9(10) 1001(2) 11(8) 9(10) 9(11) 9(12) 9(13) 9(14) 9(15) 9(16) 10(10) 101(3) 22(4) 11(9) A(11) A(12) A(13) A(14) A(15) A(16) 11(10) 11(10) B(12) B(13) B(14) B(15) B(16) 12(10) 22(5) 11(11) C(13) C(14) C(15) C(16) 13(10) 111(3) 11(12) D(14) D(15) D(16) 14(10) 22(6) 11(13) E(15) E(16) 15(10) 1111(2) 33(4) 11(14) F(16) 16(10) 121(3) 22(7) 11(15) 17(10) 10001(2) 101(4) 11(16) 21(10) 10101(2) 111(4) 33(6) 24(10) 44(5) 33(7) 22(11) 26(10) 222(3) 101(5) 22(12) 28(10) 1001(3) 44(6) 22(13) 36(10) 121(5) 44(8) 33(11) 40(10) 1111(3) 55(7) 44(9) 45(10) 101101(2) 55(8) 33(14) 48(10) 66(7) 44(11) 33(15) 51(10) 110011(2) 303(4) 33(16) 52(10) 1221(3) 202(5) 44(12) 55(10) 313(4) 131(6) 55(10) 60(10) 66(9) 55(11) 44(14) 63(10) 111111(2) 333(4) 77(8) 65(10) 1000001(2) 1001(4) 101(8) 55(12) 78(10) 303(5) 141(7) 66(12) 80(10) 2222(3) 212(6) 88(9) 55(15) 85(10) 1010101(2) 1111(4) 151(7) 55(16) 91(10) 10101(3) 111(9) 77(12) 98(10) 343(5) 242(6) 77(13) 100(10) 10201(3) 202(7) 121(9) 104(10) 404(5) 252(6) 88(12) 105(10) 1221(4) 151(8) 77(14) 112(10) 11011(3) 88(13) 77(15) 119(10) 1110111(2) 434(5) 77(16) 121(10) 11111(3) 232(7) 171(8) 121(10) 130(10) 11211(3) 2002(4) 202(8) AA(12) 135(10) 343(6) 252(7) 99(14) 150(10) 2112(4) 303(7) AA(14) 154(10) 414(6) 232(8) 181(9) BB(13) 160(10) 12221(3) 424(6) AA(15) 164(10) 20002(3) 323(7) 202(9) 170(10) 2222(4) 252(8) 101(13) AA(16) 178(10) 454(6) 343(7) 262(8) 191(10) 515(6) 232(9) 191(10) 195(10) 11000011(2) 3003(4) 303(8) DD(14) 203(10) 21112(3) 535(6) 313(8) 209(10) 545(6) 252(9) 131(13) 221(10) 434(7) 191(11) DD(16) 235(10) 3223(4) 454(7) 353(8) 151(13) 242(10) 22222(3) 464(7) 242(10) 255(10) 11111111(2) 3333(4) 313(9) 212(11) FF(16) 257(10) 100000001(2) 10001(4) 515(7) 101(16) 273(10) 100010001(2) 10101(4) 333(9) 111(16) 282(10) 2112(5) 343(9) 282(10) 292(10) 565(7) 444(8) 292(10) 300(10) 606(7) 454(8) 363(9) 1A1(13) 313(10) 100111001(2) 313(10) 1B1(13) 316(10) 102201(3) 474(8) 161(15) 321(10) 636(7) 272(11) 141(16) 325(10) 101000101(2) 11011(4) 505(8) 328(10) 110011(3) 646(7) 404(9) 337(10) 414(9) 1A1(14) 151(16) 341(10) 101010101(2) 11111(4) 525(8) 343(10) 1331(6) 343(10) 292(11) 353(10) 353(10) 212(13) 161(16) 365(10) 101101101(2) 555(8) 1C1(14) 373(10) 11311(4) 565(8) 454(9) 373(10) 400(10) 112211(3) 1111(7) 484(9) 410(10) 505(9) 343(11) 2A2(12) 422(10) 646(8) 2B2(12) 222(14) 455(10) 111000111(2) 707(8) 555(9) 464(10) 565(9) 464(10) 252(14) 471(10) 111010111(2) 727(8) 333(12) 495(10) 111101111(2) 757(8) 353(12) 510(10) 626(9) 424(11) 303(13) 546(10) 20202(4) 666(9) 222(16) 555(10) 676(9) 555(10) 3A3(12) 562(10) 20302(4) 343(13) 2C2(14) 232(16) 585(10) 1001001001(2) 1111(8) 585(10) 610(10) 747(9) 505(11) 262(16) 626(10) 10001(5) 626(10) 272(16) 656(10) 220022(3) 808(9) 656(10) 666(10) 22122(4) 666(10) 3C3(13) 676(10) 10201(5) 676(10) 565(11) 484(12) 693(10) 1010110101(2) 3113(6) 414(13) 313(15) 717(10) 1011001101(2) 717(10) 393(14) 771(10) 1100000011(2) 30003(4) 474(13) 303(16) 787(10) 30103(4) 787(10) 656(11) 313(16) 797(10) 797(10) 565(12) 494(13) 819(10) 1100110011(2) 30303(4) 3443(6) 333(16) 820(10) 1010101(3) 1111(9) 686(11) 858(10) 858(10) 454(14) 3C3(15) 910(10) 1020201(3) 4114(6) 1221(9) 942(10) 787(11) 666(12) 4B4(14) 964(10) 1022201(3) 7A7(11) 444(15) 979(10) 979(10) 454(15) 3D3(16) 1098(10) 2112(8) 909(11) 666(13) 1111(10) 1111(10) 787(12) 676(13) 595(14) 1196(10) 14241(5) 838(12) 616(14) 1220(10) A0A(11) 858(12) 565(15) 4C4(16) 1242(10) 2332(8) A2A(11) 747(13) 1252(10) 20002(5) 656(14) 4E4(16) 1268(10) 898(12) 767(13) 4F4(16) 1280(10) 8A8(12) 676(14) 5A5(15) 1285(10) 10100000101(2) 110011(4) 505(16) 1317(10) 10100100101(2) 919(12) 525(16) 1333(10) 10101(6) 7B7(13) 535(16) 1365(10) 10101010101(2) 111111(4) 959(12) 555(16) 1386(10) 2552(8) 828(13) 626(15) 1477(10) 10501(6) 898(13) 777(14) 5C5(16) 1582(10) ABA(12) 949(13) 707(15) 1667(10) 2021202(3) 23132(5) B6B(12) 1702(10) 898(14) 787(15) 6A6(16) 1885(10) 131131(4) 12421(6) 1111(12) 989(14) 1913(10) 2121212(3) 9A9(14) 878(15) 2000(10) 5555(7) 2662(9) BAB(13) 2124(10) 4114(8) 1661(11) ABA(14) 969(15) 2293(10) 33133(5) 14341(6) B9B(14) 2666(10) 20202(6) BCB(15) A6A(16) 2709(10) 101010010101(2) 41314(5) 5225(8) 2730(10) 222222(4) 3663(9) AAA(16) 3855(10) 111100001111(2) 330033(4) F0F(16) 3951(10) 111101101111(2) 7557(8) F6F(16) 3999(10) 111110011111(2) 30303(6) F9F(16) 4095(10) 111111111111(2) 333333(4) 7777(8) FFF(16) 4097(10) 1000000000001(2) 1000001(4) 10001(8) 1001(16) 4161(10) 1000001000001(2) 1001001(4) 10101(8) 4369(10) 1000100010001(2) 1010101(4) 1111(16) 6643(10) 1100111110011(2) 100010001(3) 10101(9) 8194(10) 2000002(4) 20002(8) 2002(16) 8200(10) 102020201(3) 32623(7) 12221(9) 8778(10) 21112(8) 8778(10) 3CC3(13) 10794(10) 2220222(4) 25052(8) 4BB4(13) 12291(10) 11000000000011(2) 3000003(4) 30003(8) 3003(16) 12483(10) 11000011000011(2) 3003003(4) 30303(8) 13107(10) 11001100110011(2) 3030303(4) 3333(16) 14762(10) 202020202(3) 61016(7) 22222(9) 20485(10) 101000000000101(2) 11000011(4) 50005(8) 5005(16) 20805(10) 101000101000101(2) 11011011(4) 50505(8) 21525(10) 101010000010101(2) 11100111(4) 52025(8) 7BB7(14) 21845(10) 101010101010101(2) 11111111(4) 52525(8) 5555(16) 22800(10) 123321(7) 34243(9) 8448(14) 23205(10) 11222211(4) 34743(9) 5AA5(16) 28679(10) 111000000000111(2) 70007(8) 7007(16) 30039(10) 111010101010111(2) 72527(8) 7557(16) 31279(10) 111101000101111(2) 75057(8) 11311(13) 32152(10) 1122002211(3) 2012102(5) 48084(9) 32800(10) 1122222211(3) 48884(9) 11C11(13) 36873(10) 1001000000001001(2) 110011(8) 9009(16) 39593(10) 39593(10) 10601(14) 9AA9(16) 42330(10) 22111122(4) 29892(11) A55A(16) 53235(10) 1100111111110011(2) 30333303(4) 53235(10) 56096(10) 2211221122(3) 84848(9) 1C6C1(13) 58718(10) 3334333(5) 29B92(12) E55E(16) 61455(10) 1111000000001111(2) 33000033(4) F00F(16) 65535(10) 1111111111111111(2) 33333333(4) 31B13(12) FFFF(16) 65537(10) 10000000000000001(2) 100000001(4) 10001(16) 65793(10) 10000000100000001(2) 100010001(4) 10101(16) 69649(10) 10001000000010001(2) 101000101(4) 11011(16) 69905(10) 10001000100010001(2) 101010101(4) 11111(16) 74647(10) 10210101201(3) 1333331(6) 74647(10) 75399(10) 4403044(5) 51715(11) 37773(12) 79546(10) 11001010011(3) 54845(11) 18881(15) 100636(10) 12010001021(3) 4A2A4(12) 36A63(13) 110057(10) 122313221(4) 53835(12) 22922(15) 151497(10) 100100111111001001(2) 3125213(6) 3D2D3(14) 192573(10) 101111000000111101(2) 570075(8) 93539(12) 196611(10) 110000000000000011(2) 300000003(4) 30003(16) 197379(10) 110000001100000011(2) 300030003(4) 30303(16) 208947(10) 110011000000110011(2) 303000303(4) 33033(16) 209715(10) 110011001100110011(2) 303030303(4) 33333(16) 258111(10) 111111000000111111(2) 333000333(4) 770077(8) 262143(10) 111111111111111111(2) 333333333(4) 777777(8) 262145(10) 1000000000000000001(2) 1000000001(4) 1000001(8) 266305(10) 1000001000001000001(2) 1001001001(4) 1010101(8) 327685(10) 1010000000000000101(2) 1100000011(4) 50005(16) 328965(10) 1010000010100000101(2) 1100110011(4) 50505(16) 348245(10) 1010101000001010101(2) 1111001111(4) 55055(16) 349525(10) 1010101010101010101(2) 1111111111(4) 55555(16) 356981(10) 1010111001001110101(2) 94149(14) 57275(16) 428585(10) 1220220221(4) 3433343(7) 1505051(8) 532900(10) 1000002000001(3) 4346434(7) 1002001(9) 536770(10) 2003003002(4) 2030302(8) A909A(15) 696490(10) 2222002222(4) 2520252(8) AA0AA(16) 699050(10) 2222222222(4) 2525252(8) AAAAA(16) 786435(10) 11000000000000000011(2) 3000000003(4) 6453546(7) 3000003(8) 798915(10) 11000011000011000011(2) 3003003003(4) 3030303(8) 983055(10) 11110000000000001111(2) 3300000033(4) F000F(16) 986895(10) 11110000111100001111(2) 3300330033(4) F0F0F(16) */ /* EOF: TestCambiaBase.java */