Desafío
Estoy seguro de que leíste el título y entraste a trabajar con tu representante, pensando en cosas de niños, ¡pero piénsalo de nuevo! Deben desafiarse entre sí en el código más corto para contar las ocurrencias de una cadena en otra. Por ejemplo, dada la siguiente entrada:
aaaabbbbsssffhd
como una cuerda, y la cuerda
s
debería salir
3
Reglas
Justo antes de sonreír y decir: "Oye, usaré ----", lee esto:
- No se utilizan bibliotecas externas ni la API de su idioma. Tienes que implementarlo manualmente. Lo que significa que no puede usar la función o método incorporado de su idioma para contar las ocurrencias
- Sin E / S de archivo
- No conectarse con un servidor, sitio web, etc.
- En el caso de `ababa`, donde comienza con` aba` y si lee las últimas 3 letras también es `aba`, solo cuenta una *
¡Gracias @ProgramFOX por eso (la última regla)!
* Sugerencia : cuando cuente las ocurrencias, puede eliminar las que contó para evitar desobedecer esta regla
¡Creo que las últimas 2 reglas son solo para dobladores de reglas!
Criterio ganador
Como se indicó anteriormente, el ganador es el código con menos bytes utilizados. El ganador será anunciado cinco días después (15 de junio de 2014)
Mi pequeña respuesta
Aquí está mi respuesta de C ++, donde se supone que la livariable contiene la cadena para verificar las ocurrencias, y les la cadena a buscar en f:
Sin golf
int c = 0;
while (li.find(lf) != string::npos)
{
int p = li.find(lf);
int l = p + lf.length() - 1;
for (p = p; p <= l; p++)
{
li[p] = static_cast<char>(8);
}
++c;
}
¡Por supuesto, para usar std::string, debe incluir el archivo de encabezado de cadena!
Golfed
int c=0;while(li.find(lf)!=string::npos){int p=li.find(lf);int l=p+lf.length()-1;for(p=p;p<=l;p++){li[p]=static_cast<char>(8);}++c;}
Resultado
La variable cva a ser el valor de cuántas veces se encontró la cadena
¡Disfrutar!
Ganador
Después de una larga espera, la respuesta de @Dennis gana con solo 3 bytes, escrita en GolfScript
spara emparejar? Si no: tengo una solución de 5 char J:+/a=b
ababayaba, ¿deberíamos sacar1o2? El terceroaes tanto el final del primeroabacomo el comienzo del segundoaba.