elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


  Mostrar Mensajes
Páginas: 1 ... 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 [72] 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 ... 235
711  Programación / Programación C/C++ / [Problema Reto C/C++] Sumatoria de Rangos de Impares en: 8 Marzo 2017, 22:24 pm
Buenas!

Este problema lo vi en otro Foro, pero me gustaria ampliarlo y Discutir sobre la eficiencia del codigo contra la "FORMA FACIL".


Problema
Tu tienes que proporcionar la Suma de Todos los numeros Impares contenidos en un rango de numeros dados [a,b]

Ejemplo:
a = 5
b = 10
Numeros impares en el rango [5,10] = { 5,7,9 };
Sumatoria 5 +7 + 9 = 21

Ejemplo
a = 1
b = 5
Numeros impares en el rango [1,5] = { 1,3,5 };
Sumatoria 1+3 +5 = 9

Entrada del programa:
Pueden existir multiples casos para probar, La primera Linea contiene el valor T Donde T es el numero de casos a realizar,  1 <= T  <= 100000
Y seguido de T Casos, Cada Caso consiste en dos Numeros enteros a, b  donde 0 <= a <=b <=10000. En dos lineas sepaadas (1 linea por numero entero)

Ejemplo de Entrada:

Código:
2
5
10
1
5

Ejemplo de salida

Código:
Caso 1: 21
Caso 2: 8




La solucion que muchos aplican es codigo:

Código
  1. int T= 0,a = 0,b= 0,i,suma;
  2. scanf("%d\n",&T);
  3. i = 0;
  4. while(i < T) {
  5. scanf("%d\n",&a);
  6. scanf("%d\n",&b);
  7. suma = 0;
  8. while(a <= b) {
  9. if(a % 2 == 1) {
  10. suma += a;
  11. }
  12. a++;
  13. }
  14. printf("Case %i:%i\n",i+1,suma);
  15. i++;
  16. }
  17.  

Sin embargo en mi punto de vista es bastante ineficiente, ya que si te dan 10000 Veces el peor de los casos de [0,10000] (Pongo 10000 y no 100000 para que no desborde el entero de 32 bits...) En dado caso tu programa ejecutaria un ciclo de 10000 * 10000 = 100'000,000
Claro que para los procesadores modernos no hay tanta direrencia entre 100, Mi aproximacion fue sacar la formula para determinar la sumaria de los impares del rango de 0 a A y del rango de 0 a B

Y En teoria solo entro al ciclo T veces:

Código
  1. #include<stdio.h>
  2.  
  3. int main() {
  4. int T= 0,a = 0,b= 0,i;
  5. int rango_a,rango_b;
  6. scanf("%d\n",&T);
  7. i = 0;
  8. while(i < T) {
  9. scanf("%d\n",&a);
  10. scanf("%d\n",&b);
  11. if(a % 2 != 0) {
  12. a-=1;
  13. }
  14. rango_a = (((a/2)*a)/2); // Suma de Impares desde 0 hasta a-1
  15. if(b % 2 == 0) {
  16. rango_b = (((b/2)*b)/2); //Suma de Impares desde 0 hasta b
  17. }
  18. else {
  19. rango_b = ((((b+1)/2)*(b+1))/2); //Suma de Impares desde 0 hasta b
  20. }
  21. printf("Case %i:%i\n",i+1,rango_b-rango_a);
  22. i++;
  23. }
  24. return 0;
  25. }
  26.  



Consideren el siguiente archivo de Entrada 10000 veces rangos de [0,10000]
http://pastebin.com/raw/nK0xQ6cz
712  Comunicaciones / Redes / Re: Duda sobre como sabe el ISP a que cliente mandar los paquetes en: 1 Marzo 2017, 21:49 pm
Los libros ayunda, pero nada deja mas experiencia que practicar.

Lee los RFC de cada protocolo he intenta mandar los paquetes construidos a mano.

Por ejemplo puedes empezar con pequeñas peticiones GET mediante netcat a las paginas WEB y ver como responden, y posterioemente podrias capturar el paquete mediante wireshark y ver toda los paquetes que se requiere solo para una petition GET.

Saludos
713  Sistemas Operativos / Unix/Unix-Like / Re: Grupo de telegram de habla hispana *BSD en: 13 Febrero 2017, 22:41 pm
Me apunto ya mismo!
714  Programación / Programación C/C++ / Re: Piedra papel o tijeras en: 11 Enero 2017, 19:29 pm
Buen día te dejo un video de un puedra papel o tijera.

715  Foros Generales / Foro Libre / Re: Estaría interesante crear un programita con el algoritmo de cada especie animal en: 9 Noviembre 2016, 00:26 am
Obvio se trata de simulaciones, y como les comente la mas basica es el juego de la vida, aunque no simula realmente celulas, parece como si estuviera vivo:

Ponder aqui el codigo para el  juego sobre un camvas de 100 x 100

Screenshots








Demo Online:

http://imgs.mx/vida.html


Código
  1. <canvas id="world">
  2. </canvas>
  3. <script>
  4. var world = document.getElementById("world");
  5. var max = 100;
  6. var w = [];
  7. var mult_size = 2;
  8. var i = 0,j;
  9. while(i < max ) {
  10. j = 0;
  11. w[i] = [];
  12. while(j < max) {
  13. if(Math.random() < 0.1) {
  14. w[i][j] = 1; //1 alive
  15. }
  16. else {
  17. w[i][j] = 0; //1 alive
  18. }
  19. j++;
  20. }
  21. i++;
  22. }
  23. world.width = max*mult_size;
  24. world.height = max*mult_size;
  25. //drawLive();
  26. setInterval(drawLive, 1000);
  27. function drawLive() {
  28. var i = 0,j;
  29. var world = document.getElementById("world");
  30. var ctx = world.getContext("2d");
  31. while(i < max ) {
  32. j = 0;
  33. while(j < max) {
  34. if(w[i][j] == 0) {
  35. ctx.fillStyle = "#000000"; //Black
  36. ctx.fillRect(j*mult_size,i*mult_size,mult_size,mult_size);
  37. }
  38. else {
  39. ctx.fillStyle = "#FFFFFF"; //White
  40. ctx.fillRect(j*mult_size,i*mult_size,mult_size,mult_size);
  41. }
  42. j++;
  43. }
  44. i++;
  45. }
  46. //Calcular next turno
  47. var v = 0;
  48. i = 0;
  49. while(i < max ) {
  50. j = 0;
  51. while(j < max) {
  52. v = vecinas(j,i);
  53. if(w[i][j] == 0) { //Celula muerta
  54. if(v == 3) {
  55. w[i][j] = 1; //Si la celula esta muerta y tiene 3 vecinas vivas, entonces la celula nace
  56. }
  57. }
  58. if(w[i][j] == 1) { //Celula viva
  59. if(v == 2 || v == 3) {
  60. w[i][j] = 1; //Si la celula tiene solo una vecina muerte o tambien si tiene 4 o mas
  61. }
  62. else {
  63. w[i][j] = 0;
  64. }
  65. }
  66. j++;
  67. }
  68. i++;
  69. }
  70.  
  71. }
  72. function vecinas(x,y) {
  73. var x_menos_1 = x - 1;
  74. var x_mas_1 = x + 1;
  75. var y_menos_1 = y - 1;
  76. var y_mas_1 = y + 1;
  77. if(x_menos_1 == -1) {
  78. x_menos_1 = max - 1;
  79. }
  80. if(x_mas_1 == max) {
  81. x_mas_1 = 0;
  82. }
  83. if(y_menos_1 == -1) {
  84. y_menos_1 = max -1;
  85. }
  86. if(y_mas_1 == max) {
  87. y_mas_1 = 0 ;
  88. }
  89. var contador = w[y_menos_1][x_menos_1] + w[y_menos_1][x] + w[y_menos_1][x_mas_1];
  90. contador+= w[y][x_menos_1]  + w[y][x_mas_1];
  91. contador+= w[y_mas_1][x_menos_1] + w[y_mas_1][x] + w[y_mas_1][x_mas_1];
  92. return contador;
  93. }
  94. </script>
  95.  

716  Foros Generales / Foro Libre / Re: Estaría interesante crear un programita con el algoritmo de cada especie animal en: 7 Noviembre 2016, 17:26 pm
Pues esta interesante la idea, aunque la verdad también esta muy ambiciosa.

¿Que tanto has programado?

Minimo ya has programado el código del juego de la vida? donde las celulas mueres de inanición si estan muy amontonadas?

Las simulaciones son buenas y aunque no le veo un objetivo claro al proyecto.
Si es por aprender a programar, el proyecto esta muy ambicioso.

Si es por investigación científica, esta bien (Para alguien con doctorado en Biologia y/o ecosistemas )

Saludos!


717  Seguridad Informática / Hacking / Re: Tabla ARP en: 4 Noviembre 2016, 01:50 am
Hace tiempo escribi una app para linux y Freebsd llamada TequiLAN el cual hacia un envenenamiento de las tablas ARP de forma aleatoria
 la idea era causar un pequeño DoS a la LAN Mientras se ejecute el programa.

Si quieres hacerlo por Diversion, aprende como generar respuestas ARP.

Por otro lado hay entradas estaticas en la tabla arp precisamente para evitar ataques como el mencionado.

saludos
718  Foros Generales / Foro Libre / Re: que opinan sobre la programacion en: 2 Noviembre 2016, 21:47 pm
No es deseable eso ya que si todo el mundo lo supiera, perderia valor el saber hacerlo. (Pagarian menos a los programadores) ya que encontrar quien sustituya un puesto de programador seria ridículamente facil.

En lo personal yo opino que



Por lo cuál no hay que darle superpoderes a cualquiera.

Ya que con un gran poder viene un gran responsabilidad.

xD
719  Foros Generales / Foro Libre / Re: Bosque Cementerio? en: 1 Noviembre 2016, 15:43 pm

A mi me gusta el sistema japonés. La cremación es obligatoria en practicamente todo el país, y hay una tumba familiar. Todas las cenizas van al mismo lugar, y desde luego como son cenizas no se van a pelear entre ellos.

A mi tambien me gusta ese sistema y tambien he visto ideas con las cenizas, la que comentaton era colocar las cenizas en una maceta y plantar un bonita planta ahi :).

No se me hace tan descabellado!!


PD: Esto es algo que aunque todos los ciudadanos o casi todos estén de acuerdo, jamás se haría porque el dinero que se mueve es demasiado.

Obvio el tema es sacar dinero, aun que es opcional, pues si obtas por el sistema de creación, podrian poner tus cenizas ya sea en un "arbol familiar" o en una maceta o regarlas en algun lugar de pelicula como el mar alguna montaña etc..

Aun asi muchos no estan listos para esto, muchos siguen pensando un buen de cosas sobre la muerte ademas de que somos muy apegados a las cosas.

En fin.

Un saludo!
720  Foros Generales / Foro Libre / Re: Bosque Cementerio? en: 1 Noviembre 2016, 03:38 am

PD: Incluso se podria implementar en zonas semi-deserticas, para evitar el avance del desierto.

Si es cierto esta muy bien la idea
Páginas: 1 ... 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 [72] 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 ... 235
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines