Thử thách
Tôi chắc rằng bạn đã đọc tiêu đề và đến trang trại của bạn, nghĩ về những thứ của trẻ em, nhưng hãy suy nghĩ lại! Bạn phải thách thức nhau trong mã ngắn nhất để đếm số lần xuất hiện của chuỗi trong chuỗi khác. Ví dụ, đưa ra đầu vào sau:
aaaabbbbsssffhd
dưới dạng chuỗi và chuỗi
S
nên đầu ra
3
Quy tắc
Ngay trước khi bạn mỉm cười và nói, "Này, tôi sẽ sử dụng ----," hãy đọc nó:
- Không sử dụng các thư viện bên ngoài hoặc API ngôn ngữ của bạn. Bạn phải thực hiện nó bằng tay. Điều đó có nghĩa là bạn không thể sử dụng chức năng hoặc phương thức tích hợp sẵn trong ngôn ngữ của mình để đếm số lần xuất hiện
- Không có tập tin I / O
- Không kết nối với máy chủ, trang web, et cetera
- Trong trường hợp `ababa`, nơi nó bắt đầu bằng` aba` và nếu bạn đọc 3 chữ cái cuối cùng thì đó cũng là` aba`, bạn chỉ đếm được một *
Cảm ơn bạn @ProgramFOX vì điều đó (quy tắc cuối cùng)!
* Gợi ý : Khi bạn đếm số lần xuất hiện, bạn có thể xóa những lần bạn đã đếm để tránh không tuân theo quy tắc này
Tôi nghĩ rằng 2 quy tắc cuối cùng chỉ dành cho người uốn cong quy tắc!
Tiêu chí chiến thắng
Như đã nói trước đây, người chiến thắng là mã có ít byte được sử dụng. Người chiến thắng sẽ được công bố năm ngày sau (15 tháng 6 năm 2014)
Câu trả lời nhỏ của tôi
Đây là câu trả lời C ++ của tôi, trong đó nó giả sử rằng li
biến giữ chuỗi để kiểm tra các lần xuất hiện và l
là chuỗi cần tìm trong f
:
Ung dung
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;
}
Tất nhiên, để sử dụng std::string
, bạn phải bao gồm tệp tiêu đề chuỗi!
Chơi gôn
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;}
Kết quả
Biến c
sẽ là giá trị của số lần tìm thấy chuỗi
Thưởng thức!
Người chiến thắng
Sau một chờ đợi lâu dài @Dennis thắng với câu trả lời chỉ có 3 byte, viết bằng GolfScript
s
với kết hợp? Nếu không: Tôi có giải pháp 5 char J:+/a=b
ababa
vàaba
, chúng ta nên đầu ra1
hay2
? Thứ baa
là cả kết thúc của thứ nhấtaba
và bắt đầu thứ haiaba
.