Desafio
Tenho certeza de que você leu o título e veio buscar seu representante, pensando nas coisas de seus filhos, mas pense novamente! Você precisa desafiar um ao outro no código mais curto para contar as ocorrências de uma string em outra. Por exemplo, dada a seguinte entrada:
aaaabbbbsssffhd
como uma string e a string
s
deve produzir
3
Regras
Pouco antes de você sorrir e dizer: "Ei, eu vou usar ----", leia isto:
- Não há uso de bibliotecas externas ou da API do seu idioma. Você precisa implementá-lo manualmente. O que significa que você não pode usar a função ou o método interno do seu idioma para contar ocorrências
- E / S sem arquivo
- Não há conexão com um servidor, site, etc.
- No caso de `ababa`, onde começa com` aba` e se você ler as últimas 3 letras, também é `aba`, você conta apenas uma *
Obrigado @ProgramFOX por isso (a última regra)!
* Dica : ao contar ocorrências, você pode remover as que contou para evitar desobedecer a esta regra
Eu acho que as duas últimas regras são apenas para dobradores de regras!
Critério vencedor
Como indicado anteriormente, o vencedor é o código com menos bytes usados. O vencedor será anunciado cinco dias depois (15 de junho de 2014)
Minha pequena resposta
Aqui está minha resposta em C ++, na qual assume que a livariável contém a string para verificar ocorrências e lé a string a procurar f:
Ungolfed
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;
}
Obviamente, para usar std::string, você deve incluir o arquivo de cabeçalho da string!
Golfe
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
A variável cserá o valor de quantas vezes a cadeia foi encontrada
Aproveitar!
Vencedora
Após uma longa espera, a resposta @Dennis vence com apenas 3 bytes, escritos em GolfScript
spara correspondência? Se não: eu tenho uma solução J 5 caractere:+/a=b
ababaeaba, devemos produzir1ou2? O terceiroaé o fim do primeiroabae o começo do segundoaba.