comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[RETO] Ordenar caracteres (Dificultad=media)

  • 13 Respuestas
  • 4679 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado LKI

  • *
  • Underc0der
  • Mensajes: 61
  • Actividad:
    0%
  • Reputación 0
  • |Un día sin aprender nada, es un día perdido..|
    • Ver Perfil
    • Email
« en: Agosto 20, 2015, 10:04:11 pm »

Ordenar de mayor a menor según cantidad de apariciones las siguientes letras del alfabeto. Si empatan, ordenar alfabéticamente. Dar la respuesta en minúscula.

  • La cadena es la siguiente:

Código: [Seleccionar]
qanwPVEAwnmSViNjTOLZPRRSaTAECnbArUjPmELcsWhdVMXYfdYLUGLpjLdOMdzvAEgfhXWNvRJZqMhlwocRPHKcwbUFJVjBjmLOwPVqjoYHLTtixQAnBHwuvfxDMPnAbpHBRNYTpKSzxLTWOusljvXidQjqbqjgcvpFMLbPPOkHdTTJbkswfdEeeFTbllerqvbFMpO
Se puede usar cualquier algoritmo y cualquier lenguaje!!

PD: Para que no se quejen el reto oficial es de la siguiente pagina http://hackealo.co/ y siempre cambia solo me pareció un buen reto nada más que eso.

Ganadores:
  • 79137913
  • MF
« Última modificación: Septiembre 25, 2015, 06:08:23 pm por LKI »
Ser mejor cada día es mi meta

 =LKI=

Desconectado fermino

  • *
  • Underc0der
  • Mensajes: 330
  • Actividad:
    0%
  • Reputación 1
  • Aprendiz de todo, maestro de nada...
    • Ver Perfil
    • In The Middle Of Knowledge
« Respuesta #1 en: Agosto 21, 2015, 01:51:00 am »
Array con abc...xyz, strtolower, for, substr_count y listo (?

Sino, se puede hacer sin usar el array y substr_count con unos cuantos bucles, fijandose qué caracteres hay, etc...

Saludos!
-fermino-

Desconectado rollth

  • *
  • Underc0der
  • Mensajes: 874
  • Actividad:
    0%
  • Reputación 16
  • El conocimiento es libre.
    • Ver Perfil
    • Whateversec
    • Email
  • Twitter: @RoloMijan
« Respuesta #2 en: Agosto 21, 2015, 05:27:50 am »
Cuando tenga mi ordenador lo hago, pero no se si lo he entendido bien, hay que hacer un Script que te cuenta cuantas letras hay de cada letra (independientemente de si está en mayúscula o minúscula) y dar un output en plan A(si es la que más veces había) C (si es la segunda) y así continuado?

Desconectado 79137913

  • *
  • Co Admin
  • Mensajes: 636
  • Actividad:
    6.67%
  • Reputación 11
  • 4 Esquinas
    • Ver Perfil
    • Doors.Party
    • Email
  • Skype: fg_mdq@hotmail.com
« Respuesta #3 en: Agosto 21, 2015, 10:00:42 am »
HOLA!!!

Al fin retos de programacion!

En que lenguaje queres la respuesta?

GRACIAS POR LEER!!!
"Algunos creen que soy un bot, puede que tengan razon"
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

*Shadow Scout Team*                                                   DOORS.PARTY

Desconectado sancakoky

  • *
  • Underc0der
  • Mensajes: 5
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
« Respuesta #4 en: Agosto 21, 2015, 10:35:42 am »
Pero porqué no leeis?
Lo dice bien claro. En cualquier lenguaje y primero las que mas se repiten y si empatan en orden alfabético.

Yo solo lo he leído una vez y me parece que se explica como el agua, no entiendo como os surgen dudas o preguntáis en que lenguaje si lo dice.

Desconectado 79137913

  • *
  • Co Admin
  • Mensajes: 636
  • Actividad:
    6.67%
  • Reputación 11
  • 4 Esquinas
    • Ver Perfil
    • Doors.Party
    • Email
  • Skype: fg_mdq@hotmail.com
« Respuesta #5 en: Agosto 21, 2015, 11:26:10 am »
HOLA!!!

Aqui mi solucion[VBS] por que no tengo ningun compilador aca:

Código: Visual Basic
  1. Dim ABC (25)
  2. Cadena = LCase(InputBox("Inserte cadena a analizar","RETO"))
  3. For X = 1 To Len (Cadena)
  4.     Letra = mid(Cadena,x,1)
  5.     NumLetra = asc(Letra)-97
  6.     ABC(NumLetra) = ABC(NumLetra) & Letra
  7. Next
  8.  
  9. For x = 24 To 0 Step -1
  10.     For y = 0 to x
  11.         If Len(ABC(y)) > Len(ABC(y + 1)) Then
  12.             temp = ABC(y+1)
  13.             ABC(y + 1) = ABC(y)
  14.             ABC(y) = temp
  15.         End If
  16.     Next
  17. Next
  18.  
  19. Do
  20.     Flag = True
  21.     For x = 0 to 24
  22.         If Len(ABC(x))=Len(abc(x+1)) Then
  23.             If Asc(Right(ABC(x),1)) < Asc(Right(ABC(x + 1),1)) Then
  24.                 temp = ABC(x)
  25.                 ABC(x) = ABC(x + 1)
  26.                 ABC(x + 1) = temp
  27.                 Flag = Flase
  28.             End If
  29.         End If
  30.     Next
  31. Loop Until Flag
  32.  
  33. For X = 0 to 25
  34.     Out = Out & RIGHT(ABC(x),1)
  35. Next
  36.  
  37. Inputbox "Resultado", "RETO", strreverse(Out)
  38.  

Para la cadena que colocas aqui sera:

lpjbvwmtadefhnoqrsxcukyzgi



@sancakoky

Perdon, no lo vi, debi haberlo salteado sin darme cuenta, pero esas no son formas de contestar, intenta mantener el respeto que es fundamental para el foro.

GRACIAS POR LEER!!!
« Última modificación: Agosto 21, 2015, 01:48:15 pm por 79137913 »
"Algunos creen que soy un bot, puede que tengan razon"
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

*Shadow Scout Team*                                                   DOORS.PARTY

Desconectado LKI

  • *
  • Underc0der
  • Mensajes: 61
  • Actividad:
    0%
  • Reputación 0
  • |Un día sin aprender nada, es un día perdido..|
    • Ver Perfil
    • Email
« Respuesta #6 en: Agosto 21, 2015, 04:48:08 pm »
Cuando tenga mi ordenador lo hago, pero no se si lo he entendido bien, hay que hacer un Script que te cuenta cuantas letras hay de cada letra (independientemente de si está en mayúscula o minúscula) y dar un output en plan A(si es la que más veces había) C (si es la segunda) y así continuado?

Ejemplo la cadena es esta = "BBAAba";  Es indiferente las mayusculas y minusculas se cuenta como la misma letra
 b=> 3
 a=>3
solucion => ab
Empataron entonces hay que devolverlos en orden alfabético y siempre dar la solución en minúscula.
« Última modificación: Agosto 21, 2015, 10:16:18 pm por LKI »
Ser mejor cada día es mi meta

 =LKI=

Desconectado LKI

  • *
  • Underc0der
  • Mensajes: 61
  • Actividad:
    0%
  • Reputación 0
  • |Un día sin aprender nada, es un día perdido..|
    • Ver Perfil
    • Email
« Respuesta #7 en: Agosto 21, 2015, 11:45:02 pm »
HOLA!!!

Aqui mi solucion[VBS] por que no tengo ningun compilador aca:

Código: Visual Basic
  1. Dim ABC (25)
  2. Cadena = LCase(InputBox("Inserte cadena a analizar","RETO"))
  3. For X = 1 To Len (Cadena)
  4.     Letra = mid(Cadena,x,1)
  5.     NumLetra = asc(Letra)-97
  6.     ABC(NumLetra) = ABC(NumLetra) & Letra
  7. Next
  8.  
  9. For x = 24 To 0 Step -1
  10.     For y = 0 to x
  11.         If Len(ABC(y)) > Len(ABC(y + 1)) Then
  12.             temp = ABC(y+1)
  13.             ABC(y + 1) = ABC(y)
  14.             ABC(y) = temp
  15.         End If
  16.     Next
  17. Next
  18.  
  19. Do
  20.     Flag = True
  21.     For x = 0 to 24
  22.         If Len(ABC(x))=Len(abc(x+1)) Then
  23.             If Asc(Right(ABC(x),1)) < Asc(Right(ABC(x + 1),1)) Then
  24.                 temp = ABC(x)
  25.                 ABC(x) = ABC(x + 1)
  26.                 ABC(x + 1) = temp
  27.                 Flag = Flase
  28.             End If
  29.         End If
  30.     Next
  31. Loop Until Flag
  32.  
  33. For X = 0 to 25
  34.     Out = Out & RIGHT(ABC(x),1)
  35. Next
  36.  
  37. Inputbox "Resultado", "RETO", strreverse(Out)
  38.  

Para la cadena que colocas aqui sera:

lpjbvwmtadefhnoqrsxcukyzgi



@sancakoky

Perdon, no lo vi, debi haberlo salteado sin darme cuenta, pero esas no son formas de contestar, intenta mantener el respeto que es fundamental para el foro.

GRACIAS POR LEER!!!

Es correcto felicitaciones!!
Ser mejor cada día es mi meta

 =LKI=

Desconectado sancakoky

  • *
  • Underc0der
  • Mensajes: 5
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
« Respuesta #8 en: Agosto 22, 2015, 11:26:31 am »
Tienes razon @79137913 y pido disculpas. No se si tenia un mal día o que me paso por que a todos nos puede pasar que nos saltemos algo al leer por prisas o por lo que sea. Y los demas tambien pido disculpas por la contestación tan desagradable.

Bueno comentar que llevo toda la mañana con este reto y no he tenido huev.s de conseguirlo. Dar las gracias al compañero @LKI y haber si se anima él o alguien mas a subir mas retos de este tipo.

Voy a pasarme por el subforo de python haber si alguien me hecha una mano con el dichoso reto ya que veo que me va a quitar el sueño y no lo consigo.

SUERTE PARA QUIEN LO INTENTE!
« Última modificación: Agosto 22, 2015, 11:28:20 am por sancakoky »

Desconectado rollth

  • *
  • Underc0der
  • Mensajes: 874
  • Actividad:
    0%
  • Reputación 16
  • El conocimiento es libre.
    • Ver Perfil
    • Whateversec
    • Email
  • Twitter: @RoloMijan
« Respuesta #9 en: Agosto 22, 2015, 04:48:26 pm »
Tienes razon @79137913 y pido disculpas. No se si tenia un mal día o que me paso por que a todos nos puede pasar que nos saltemos algo al leer por prisas o por lo que sea. Y los demas tambien pido disculpas por la contestación tan desagradable.

Bueno comentar que llevo toda la mañana con este reto y no he tenido huev.s de conseguirlo. Dar las gracias al compañero @LKI y haber si se anima él o alguien mas a subir mas retos de este tipo.

Voy a pasarme por el subforo de python haber si alguien me hecha una mano con el dichoso reto ya que veo que me va a quitar el sueño y no lo consigo.

SUERTE PARA QUIEN LO INTENTE!

Yo lo haré mañana que ya tendré mi pc (por fin), puedes mirar el código de @79137913 para hacerte una idea, o el mío cuando lo haga mañana, saludos.

Conectado rochesto

  • *
  • Underc0der
  • Mensajes: 14
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
« Respuesta #10 en: Septiembre 16, 2015, 03:50:44 pm »
Buenas,  aprovechando el reto, me he puesto al lio de los algoritmos de ordenación.
Aquí os dejo el código con los algoritmos: selección, insercción, shell y quicksort.

Estoy aprendiendo por lo que seguro que hay muchos errores , no sean crueles :o  ;D


Código: C++
  1. #include <iostream>
  2. #include <string>
  3.  
  4. using namespace std;
  5.  
  6. void seleccion(string&);
  7. void insercion(string&);
  8. void ordenacion_shell (string &);
  9. void quicksort( string&, int, int );
  10.  
  11. int main()
  12. {
  13.  
  14.     string str = "qanwPVEAwnmSViNjTOLZPRRSaTAErCnbArUjPmELcsWhdVMXYfdYLUGLpjLdOMdzvAEgfhXWNvRJZqMhlwocRPHKcwbUFJVjBjmcsWhdVMXYfdYLUGLpjLdOMdzvAEgfhXWNvRJZqMhlwocRPHK";
  15.  
  16. //Cambiar a minusculas  todas las letras
  17.     string::size_type l;
  18.     for (l = 0; l < str.length(); l++)
  19.     {
  20.         str[l] = tolower(str[l]);
  21.     }
  22. //~ Fin minusculas
  23.  
  24. //METODOS DE ORDENACION
  25.  
  26.         //Ordenación por selección
  27.     //seleccion(str);
  28.  
  29.         //Ordenación por inserción
  30.     //insercion(str);
  31.  
  32.         //Ordenación por shell
  33.     //ordenacion_shell(str);
  34.  
  35.         //Ordenación rápida QUICKSOFT
  36.     quicksort(str, 0, str.length()-1);
  37.  
  38. //~ FIN METODOS ORDENACION
  39.  
  40.  
  41. //Contador
  42.     int contador = 0;
  43.     char letra = 'a';
  44.  
  45.     for (int i = 0; i < str.length(); i++)
  46.     {
  47.         if(str[i] == str[i+1]){
  48.             contador++;
  49.         }else{
  50.             cout << letra << ": " << contador+1 << endl;
  51.             contador = 0;
  52.             letra++;
  53.         }
  54.     }
  55. //~ Fin contador
  56.  
  57.     return 0;
  58. }
  59.  
  60. //Ordenación por selección
  61. void seleccion(string &str){
  62.  
  63.     string::size_type i, j, k;
  64.     for(i = 0; i < str.length(); i++){
  65.         for(k= i, j = i +1; j < str.length(); j++){
  66.  
  67.             if (str[j] < str[k]){
  68.  
  69.                 char aux = str[i];
  70.                 str[i] = str[j];
  71.                 str[j] = aux;
  72.  
  73.             }
  74.         }
  75.     }
  76. }
  77.  
  78. //Ordenacion por insercion
  79. void insercion(string &str)
  80. {
  81.     char tmp;
  82.     int j = 0;
  83.     for (int i = 1; i < str.length(); i++){
  84.         tmp = str[i];
  85.         j = i -1;
  86.         while( j>=0 && tmp < str[j])
  87.         {
  88.             str[j+1] = str[j];
  89.             j--;
  90.         }
  91.         str[j+1] = tmp;
  92.     }
  93. }
  94.  
  95.  
  96. //Ordenacion por shell
  97. void ordenacion_shell (string &str)
  98. {
  99.     int incr = str.length()/2, p, j;
  100.     char tmp;
  101.     do
  102.     {
  103.         for (p = incr; p < str.length(); p++)
  104.         {
  105.             tmp = str[p];
  106.             j = p - incr;
  107.             while ((j >= 0) && (tmp < str[j]))
  108.             {
  109.                 str[j + incr] = str[j];
  110.                 j -= incr;
  111.             }
  112.             str[j + incr] = tmp;
  113.         }
  114.         incr /= 2;
  115.     }
  116.     while (incr > 0);
  117. }
  118.  
  119.  
  120. //Ordenacion rapida QUICKSORT
  121. void quicksort(string &array, int start, int end)
  122. {
  123.     int pivote, left, right;
  124.     char temp;
  125.  
  126.     if (start < end){
  127.        
  128.  
  129.         pivote = start;
  130.         left = start;
  131.         right = end;
  132.         while(left < right)
  133.         {
  134.             while(array[right] > array[pivote]){
  135.                 right--;
  136.             }
  137.             while(left<right && array[left] <= array[pivote]){
  138.                 left++;
  139.             }
  140.  
  141.             if (left < right){
  142.                 temp = array[left];
  143.                 array[left] = array[right];
  144.                 array[right] = temp;
  145.             }
  146.         }
  147.  
  148.         temp = array[right];
  149.         array[right] = array[pivote];
  150.         array[pivote] = temp;
  151.  
  152.         pivote = right;
  153.  
  154.  
  155.         quicksort(array, start, pivote-1);
  156.         quicksort(array, pivote+1, end);
  157.     }
  158. }
  159.  
  160.  

Desconectado 79137913

  • *
  • Co Admin
  • Mensajes: 636
  • Actividad:
    6.67%
  • Reputación 11
  • 4 Esquinas
    • Ver Perfil
    • Doors.Party
    • Email
  • Skype: fg_mdq@hotmail.com
« Respuesta #11 en: Septiembre 17, 2015, 01:31:09 pm »
HOLA!!!

@rochesto :

No sere duro, solo te dire que en los retos se estila hacer una UNICA funcion sin funciones externas, por que es la mejor forma para aprender.

GRACIAS POR LEER!!!
"Algunos creen que soy un bot, puede que tengan razon"
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

*Shadow Scout Team*                                                   DOORS.PARTY

Desconectado mf

  • *
  • Underc0der
  • Mensajes: 1
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #12 en: Septiembre 24, 2015, 11:17:19 am »
buenas,

Código: Python
  1. #stringtoConvert= raw_input("\n[+] Reto underc0de\nEnter string, please: ")
  2. stringtoConvert= "qanwPVEAwnmSViNjTOLZPRRSaTAECnbArUjPmELcsWhdVMXYfdYLUGLpjLdOMdzvAEgfhXWNvRJZqMhlwocRPHKcwbUFJVjBjmLOwPVqjoYHLTtixQAnBHwuvfxDMPnAbpHBRNYTpKSzxLTWOusljvXidQjqbqjgcvpFMLbPPOkHdTTJbkswfdEeeFTbllerqvbFMpO"
  3. stringtC= stringtoConvert.lower()
  4. diccio= {}
  5. resultado= ""
  6. dicOrdenado= []
  7. cMax= 0
  8.  
  9. for a in stringtC:
  10.         if not diccio.has_key(a):
  11.                 diccio[a] = 1
  12.         elif diccio.has_key(a):
  13.                 cont = (diccio[a]) + 1
  14.                 diccio[a] = cont
  15.         if diccio[a] > cMax:
  16.                 cMax = diccio[a]
  17. ldic= diccio.items()
  18. cDin= cMax
  19.  
  20. while len(dicOrdenado) != len(diccio):
  21.         cont= 0
  22.         for letra in ldic:
  23.                 if letra[1] == cDin:
  24.                         dicOrdenado.append(letra)
  25.                 cont= cont + 1
  26.         cDin = cDin - 1
  27. cDin= cMax
  28.  
  29. while len(resultado) != len(dicOrdenado):
  30.         mismoEquipo= []
  31.         for letra in dicOrdenado:
  32.                 if letra[1] == cDin:
  33.                         mismoEquipo.append(letra[0])
  34.                         mismoEquipo= sorted(mismoEquipo)
  35.         for leter in mismoEquipo:
  36.                 resultado= resultado +leter
  37.         cDin = cDin - 1
  38. print resultado
  39.  

sl2 :)

Desconectado LKI

  • *
  • Underc0der
  • Mensajes: 61
  • Actividad:
    0%
  • Reputación 0
  • |Un día sin aprender nada, es un día perdido..|
    • Ver Perfil
    • Email
« Respuesta #13 en: Septiembre 25, 2015, 06:07:27 pm »
buenas,

Código: Python
  1. #stringtoConvert= raw_input("\n[+] Reto underc0de\nEnter string, please: ")
  2. stringtoConvert= "qanwPVEAwnmSViNjTOLZPRRSaTAECnbArUjPmELcsWhdVMXYfdYLUGLpjLdOMdzvAEgfhXWNvRJZqMhlwocRPHKcwbUFJVjBjmLOwPVqjoYHLTtixQAnBHwuvfxDMPnAbpHBRNYTpKSzxLTWOusljvXidQjqbqjgcvpFMLbPPOkHdTTJbkswfdEeeFTbllerqvbFMpO"
  3. stringtC= stringtoConvert.lower()
  4. diccio= {}
  5. resultado= ""
  6. dicOrdenado= []
  7. cMax= 0
  8.  
  9. for a in stringtC:
  10.         if not diccio.has_key(a):
  11.                 diccio[a] = 1
  12.         elif diccio.has_key(a):
  13.                 cont = (diccio[a]) + 1
  14.                 diccio[a] = cont
  15.         if diccio[a] > cMax:
  16.                 cMax = diccio[a]
  17. ldic= diccio.items()
  18. cDin= cMax
  19.  
  20. while len(dicOrdenado) != len(diccio):
  21.         cont= 0
  22.         for letra in ldic:
  23.                 if letra[1] == cDin:
  24.                         dicOrdenado.append(letra)
  25.                 cont= cont + 1
  26.         cDin = cDin - 1
  27. cDin= cMax
  28.  
  29. while len(resultado) != len(dicOrdenado):
  30.         mismoEquipo= []
  31.         for letra in dicOrdenado:
  32.                 if letra[1] == cDin:
  33.                         mismoEquipo.append(letra[0])
  34.                         mismoEquipo= sorted(mismoEquipo)
  35.         for leter in mismoEquipo:
  36.                 resultado= resultado +leter
  37.         cDin = cDin - 1
  38. print resultado
  39.  

sl2 :)


Es correcto !! Felicitaciones !!  ;D
Ser mejor cada día es mi meta

 =LKI=

 

¿Te gustó el post? COMPARTILO!



Reto "Crackea el Menú"

Iniciado por Zekro

Respuestas: 2
Vistas: 1844
Último mensaje Noviembre 29, 2012, 05:57:24 pm
por Zekro
[Solucionario] Reto "Descubre la frase"

Iniciado por q3rv0

Respuestas: 10
Vistas: 3924
Último mensaje Agosto 13, 2012, 04:24:40 pm
por hdbreaker
Un Crackme que hice hace tiempo, haber si alguien lo resuelve [RETO]

Iniciado por LauBuru

Respuestas: 2
Vistas: 2314
Último mensaje Abril 04, 2016, 12:07:45 pm
por rush
[RETO] Wargame Lógica-Cifrado - Nivel Medio

Iniciado por fermino

Respuestas: 9
Vistas: 3755
Último mensaje Septiembre 28, 2017, 11:05:07 am
por xyz
[RETO] Wargame Cifrado - Nivel facil/medio

Iniciado por fermino

Respuestas: 12
Vistas: 3627
Último mensaje Septiembre 25, 2014, 06:25:33 pm
por fermino