[RETO] Ordenar caracteres (Dificultad=media)

Iniciado por LKI, Agosto 20, 2015, 10:04:11 PM

Tema anterior - Siguiente tema

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

Agosto 20, 2015, 10:04:11 PM Ultima modificación: Septiembre 25, 2015, 06:08:23 PM por LKI

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: php
qanwPVEAwnmSViNjTOLZPRRSaTAECnbArUjPmELcsWhdVMXYfdYLUGLpjLdOMdzvAEgfhXWNvRJZqMhlwocRPHKcwbUFJVjBjmLOwPVqjoYHLTtixQAnBHwuvfxDMPnAbpHBRNYTpKSzxLTWOusljvXidQjqbqjgcvpFMLbPPOkHdTTJbkswfdEeeFTbllerqvbFMpO


Se puede usar cualquier algoritmo y cualquier lenguaje!!

PD: Para que no se quejen el reto oficial es de la siguiente pagina No tienes permitido ver los links. Registrarse o Entrar a mi cuenta y siempre cambia solo me pareció un buen reto nada más que eso.


Ganadores:

  • 79137913
  • MF
Ser mejor cada día es mi meta

=LKI=

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-
Visita mi blog: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta.

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?
RollthBuen hacker mejor No tienes permitido ver los links. Registrarse o Entrar a mi cuenta/No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

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 Scouts Team*                                                No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

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.

Agosto 21, 2015, 11:26:10 AM #5 Ultima modificación: Agosto 21, 2015, 01:48:15 PM por 79137913
HOLA!!!

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

Código: vb
Dim ABC (25)
Cadena = LCase(InputBox("Inserte cadena a analizar","RETO"))
For X = 1 To Len (Cadena)
    Letra = mid(Cadena,x,1)
    NumLetra = asc(Letra)-97
    ABC(NumLetra) = ABC(NumLetra) & Letra
Next

For x = 24 To 0 Step -1
    For y = 0 to x
        If Len(ABC(y)) > Len(ABC(y + 1)) Then
            temp = ABC(y+1)
            ABC(y + 1) = ABC(y)
            ABC(y) = temp
        End If
    Next
Next

Do
    Flag = True
    For x = 0 to 24
        If Len(ABC(x))=Len(abc(x+1)) Then
            If Asc(Right(ABC(x),1)) < Asc(Right(ABC(x + 1),1)) Then
                temp = ABC(x)
                ABC(x) = ABC(x + 1)
                ABC(x + 1) = temp
                Flag = Flase
            End If
        End If
    Next
Loop Until Flag

For X = 0 to 25
    Out = Out & RIGHT(ABC(x),1)
Next

Inputbox "Resultado", "RETO", strreverse(Out)


Para la cadena que colocas aqui sera:

lpjbvwmtadefhnoqrsxcukyzgi




@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

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!!!
"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 Scouts Team*                                                No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Agosto 21, 2015, 04:48:08 PM #6 Ultima modificación: Agosto 21, 2015, 10:16:18 PM por LKI
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
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.
Ser mejor cada día es mi meta

=LKI=

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
HOLA!!!

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

Código: vb
Dim ABC (25)
Cadena = LCase(InputBox("Inserte cadena a analizar","RETO"))
For X = 1 To Len (Cadena)
    Letra = mid(Cadena,x,1)
    NumLetra = asc(Letra)-97
    ABC(NumLetra) = ABC(NumLetra) & Letra
Next

For x = 24 To 0 Step -1
    For y = 0 to x
        If Len(ABC(y)) > Len(ABC(y + 1)) Then
            temp = ABC(y+1)
            ABC(y + 1) = ABC(y)
            ABC(y) = temp
        End If
    Next
Next

Do
    Flag = True
    For x = 0 to 24
        If Len(ABC(x))=Len(abc(x+1)) Then
            If Asc(Right(ABC(x),1)) < Asc(Right(ABC(x + 1),1)) Then
                temp = ABC(x)
                ABC(x) = ABC(x + 1)
                ABC(x + 1) = temp
                Flag = Flase
            End If
        End If
    Next
Loop Until Flag

For X = 0 to 25
    Out = Out & RIGHT(ABC(x),1)
Next

Inputbox "Resultado", "RETO", strreverse(Out)


Para la cadena que colocas aqui sera:

lpjbvwmtadefhnoqrsxcukyzgi




@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

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=

Agosto 22, 2015, 11:26:31 AM #8 Ultima modificación: Agosto 22, 2015, 11:28:20 AM por sancakoky
Tienes razon @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta 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 @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta 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!

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Tienes razon @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta 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 @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta 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 @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta para hacerte una idea, o el mío cuando lo haga mañana, saludos.
RollthBuen hacker mejor No tienes permitido ver los links. Registrarse o Entrar a mi cuenta/No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

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: cpp

#include <iostream>
#include <string>

using namespace std;

void seleccion(string&);
void insercion(string&);
void ordenacion_shell (string &);
void quicksort( string&, int, int );

int main()
{

    string str = "qanwPVEAwnmSViNjTOLZPRRSaTAErCnbArUjPmELcsWhdVMXYfdYLUGLpjLdOMdzvAEgfhXWNvRJZqMhlwocRPHKcwbUFJVjBjmcsWhdVMXYfdYLUGLpjLdOMdzvAEgfhXWNvRJZqMhlwocRPHK";

//Cambiar a minusculas  todas las letras
    string::size_type l;
    for (l = 0; l < str.length(); l++)
    {
        str[l] = tolower(str[l]);
    }
//~ Fin minusculas

//METODOS DE ORDENACION

        //Ordenación por selección
    //seleccion(str);

        //Ordenación por inserción
    //insercion(str);

        //Ordenación por shell
    //ordenacion_shell(str);

        //Ordenación rápida QUICKSOFT
    quicksort(str, 0, str.length()-1);

//~ FIN METODOS ORDENACION


//Contador
    int contador = 0;
    char letra = 'a';

    for (int i = 0; i < str.length(); i++)
    {
        if(str[i] == str[i+1]){
            contador++;
        }else{
            cout << letra << ": " << contador+1 << endl;
            contador = 0;
            letra++;
        }
    }
//~ Fin contador

    return 0;
}

//Ordenación por selección
void seleccion(string &str){

    string::size_type i, j, k;
    for(i = 0; i < str.length(); i++){
        for(k= i, j = i +1; j < str.length(); j++){

            if (str[j] < str[k]){

                char aux = str[i];
                str[i] = str[j];
                str[j] = aux;

            }
        }
    }
}

//Ordenacion por insercion
void insercion(string &str)
{
    char tmp;
    int j = 0;
    for (int i = 1; i < str.length(); i++){
        tmp = str[i];
        j = i -1;
        while( j>=0 && tmp < str[j])
        {
            str[j+1] = str[j];
            j--;
        }
        str[j+1] = tmp;
    }
}


//Ordenacion por shell
void ordenacion_shell (string &str)
{
    int incr = str.length()/2, p, j;
    char tmp;
    do
    {
        for (p = incr; p < str.length(); p++)
        {
            tmp = str[p];
            j = p - incr;
            while ((j >= 0) && (tmp < str[j]))
            {
                str[j + incr] = str[j];
                j -= incr;
            }
            str[j + incr] = tmp;
        }
        incr /= 2;
    }
    while (incr > 0);
}


//Ordenacion rapida QUICKSORT
void quicksort(string &array, int start, int end)
{
    int pivote, left, right;
    char temp;

    if (start < end){
       

        pivote = start;
        left = start;
        right = end;
        while(left < right)
        {
            while(array[right] > array[pivote]){
                right--;
            }
            while(left<right && array[left] <= array[pivote]){
                left++;
            }

            if (left < right){
                temp = array[left];
                array[left] = array[right];
                array[right] = temp;
            }
        }

        temp = array[right];
        array[right] = array[pivote];
        array[pivote] = temp;

        pivote = right;


        quicksort(array, start, pivote-1);
        quicksort(array, pivote+1, end);
    }
}


HOLA!!!

@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta :

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 Scouts Team*                                                No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

buenas,

Código: python

#stringtoConvert= raw_input("\n[+] Reto underc0de\nEnter string, please: ")
stringtoConvert= "qanwPVEAwnmSViNjTOLZPRRSaTAECnbArUjPmELcsWhdVMXYfdYLUGLpjLdOMdzvAEgfhXWNvRJZqMhlwocRPHKcwbUFJVjBjmLOwPVqjoYHLTtixQAnBHwuvfxDMPnAbpHBRNYTpKSzxLTWOusljvXidQjqbqjgcvpFMLbPPOkHdTTJbkswfdEeeFTbllerqvbFMpO"
stringtC= stringtoConvert.lower()
diccio= {}
resultado= ""
dicOrdenado= []
cMax= 0

for a in stringtC:
if not diccio.has_key(a):
diccio[a] = 1
elif diccio.has_key(a):
cont = (diccio[a]) + 1
diccio[a] = cont
if diccio[a] > cMax:
cMax = diccio[a]
ldic= diccio.items()
cDin= cMax

while len(dicOrdenado) != len(diccio):
cont= 0
for letra in ldic:
if letra[1] == cDin:
dicOrdenado.append(letra)
cont= cont + 1
cDin = cDin - 1
cDin= cMax

while len(resultado) != len(dicOrdenado):
mismoEquipo= []
for letra in dicOrdenado:
if letra[1] == cDin:
mismoEquipo.append(letra[0])
mismoEquipo= sorted(mismoEquipo)
for leter in mismoEquipo:
resultado= resultado +leter
cDin = cDin - 1
print resultado


sl2 :)

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
buenas,

Código: python

#stringtoConvert= raw_input("\n[+] Reto underc0de\nEnter string, please: ")
stringtoConvert= "qanwPVEAwnmSViNjTOLZPRRSaTAECnbArUjPmELcsWhdVMXYfdYLUGLpjLdOMdzvAEgfhXWNvRJZqMhlwocRPHKcwbUFJVjBjmLOwPVqjoYHLTtixQAnBHwuvfxDMPnAbpHBRNYTpKSzxLTWOusljvXidQjqbqjgcvpFMLbPPOkHdTTJbkswfdEeeFTbllerqvbFMpO"
stringtC= stringtoConvert.lower()
diccio= {}
resultado= ""
dicOrdenado= []
cMax= 0

for a in stringtC:
if not diccio.has_key(a):
diccio[a] = 1
elif diccio.has_key(a):
cont = (diccio[a]) + 1
diccio[a] = cont
if diccio[a] > cMax:
cMax = diccio[a]
ldic= diccio.items()
cDin= cMax

while len(dicOrdenado) != len(diccio):
cont= 0
for letra in ldic:
if letra[1] == cDin:
dicOrdenado.append(letra)
cont= cont + 1
cDin = cDin - 1
cDin= cMax

while len(resultado) != len(dicOrdenado):
mismoEquipo= []
for letra in dicOrdenado:
if letra[1] == cDin:
mismoEquipo.append(letra[0])
mismoEquipo= sorted(mismoEquipo)
for leter in mismoEquipo:
resultado= resultado +leter
cDin = cDin - 1
print resultado


sl2 :)


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

=LKI=