Tantangan
Saya yakin Anda membaca judulnya, dan datang ke peternakan perwakilan Anda, memikirkan hal-hal anak-anaknya, tetapi pikirkan lagi! Anda harus saling menantang dalam kode terpendek untuk menghitung kemunculan string di string lain. Misalnya, diberi input berikut:
aaaabbbbsssffhd
sebagai string, dan string
s
harus keluar
3
Aturan
Tepat sebelum Anda tersenyum dan berkata, "Hei, saya akan menggunakan ----," baca ini:
- Tidak menggunakan perpustakaan eksternal, atau API bahasa Anda. Anda harus mengimplementasikannya secara manual. Yang berarti Anda tidak dapat menggunakan fungsi atau metode bawaan bahasa Anda untuk menghitung kejadian
- Tidak ada file I / O
- Tidak terhubung dengan server, situs web, dan lain-lain
- Dalam kasus `ababa`, yang dimulai dengan` aba` dan jika Anda membaca 3 huruf terakhir itu juga `aba`, Anda hanya menghitung satu *
Terima kasih @ProgramFOX untuk itu (aturan terakhir)!
* Petunjuk : Saat menghitung kejadian, Anda dapat menghapus yang Anda hitung untuk menghindari pelanggaran aturan ini
Saya pikir 2 aturan terakhir hanya untuk pembengkok aturan!
Kriteria Kemenangan
Seperti yang dinyatakan sebelumnya, pemenangnya adalah kode dengan byte yang lebih sedikit digunakan. Pemenang akan diumumkan lima hari kemudian (15 Juni 2014)
Jawaban Kecil Saya
Inilah jawaban C ++ saya, yang mengasumsikan bahwa li
variabel tersebut menyimpan string untuk memeriksa kejadian, dan l
merupakan string yang harus dicari f
:
Tidak disatukan
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;
}
Tentu saja, untuk menggunakan std::string
, Anda harus memasukkan file header string!
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;}
Hasil
Variabel c
akan menjadi nilai berapa kali string ditemukan
Nikmati!
Pemenang
Setelah menunggu lama, jawaban @Dennis menang hanya dengan 3 byte, ditulis dalam GolfScript
ababa
danaba
, haruskah kita output1
atau2
? Yang ketigaa
adalah akhir dari yang pertamaaba
dan awal dari yang keduaaba
.s
untuk pencocokan? Jika tidak: Saya punya solusi J 5 Char:+/a=b
Jawaban:
GolfScript, 3 byte
Asumsikan string dan substring ada di tumpukan.
Cobalah online.
Bagaimana itu bekerja
sumber
golfscript <<< '127,32,-""+'
lebih cepat daripada membuka browser web.[win key] jqt [return] a. [return]
bahkan lebih cepat;)jqt
kedengarannya menarik. Apa itu?iPython QTConsole
)JavaScript 32
Tidak ada yang benar-benar menarik di sini ...
split
Tujuan utamanya adalah membuat array dari string menggunakan pembatas dalam argumen.sumber
split()
bukan bagian dari "API bahasa Anda"?a.split(b).length-1
19. Mungkin @svidgen harus menjelaskan inisialisasi dalam pertanyaan.J (7)
No use of external libraries
Memeriksa!, or your language's API.
Memeriksa...? Saya tidak tahu apa itu API bahasa.You have to implement it manually
Memeriksa!No file I/O
Memeriksa!No connecting with a server, website, et cetera
Memeriksa!Bagaimana itu bekerja:
E.
adalahWindowedMatch
: J Refsheet memberi're' E. 'reread'
contoh. Ini memberi1 0 1 0 0 0
. Kemudian, satu-satunya yang tersisa untuk dilakukan adalah menambahkan ini dengan+/
(pada dasarnyasum
).Saya tidak berpikir ini dianggap sebagai penggunaan
your language's built-in function or method for counting occurences
, tapi itu bisa diperdebatkan.EDIT: Hanya untuk memperjelas:
sumber
ababa
->aba
adalah mengembalikan 1?@Synthetica Absolutley go for it!
ketika saya bertanya kepadanya, jadi saya kira tidak apa-apa.C # - 73
sumber
aba
muncul dua kali dalam ababa:aba ba
ab aba
.ababa
, di mana dimulai denganaba
dan jika Anda membaca 3 huruf terakhir itu jugaaba
, Anda hanya menghitung satu *" << Dalam aturan ..Python 2.x -
49 2322 byteIni dengan asumsi input variabel tidak apa-apa. Kedua string bisa panjang.
Shortav @ singkat.
Versi 49 bytes, menghitung setiap instance dari substring ('aba' ada di 'ababa' dua kali).
sumber
a='aa'
dan b adalah sama. Apakah itu tidak apa apa?a='aba'; b='ababa'
kasing.Powershell 32
Bekerja seperti ini:
Penjelasan: Menggunakan
-split
untuk memisahkan argumen pertama dengan argumen kedua, mengembalikan ukuran array yang dihasilkan dari split (minus 1)sumber
Applescript, 106 byte
Applescript adalah bahasa yang asyik, tapi konyol untuk bermain golf.
Jalankan dengan
osascript
:sumber
C # - 66 Bytes
sumber
C
130120Catatan: mungkin akan macet jika dipanggil dengan argumen yang salah.
Tidak digabungkan (agak):
Versi lama dengan
strstr
danstrlen
: 103sumber
Delphi XE3 (113)
Mengambil 2 string, menghilangkan substring dari string dan mengurangi panjang baru dari panjang yang lama diikuti oleh pembagian panjang substring.
Pengujian:
sumber
Lua (48)
Jadi saya pikir saya bisa mengirimkan jawaban lain, kali ini di lua. Sangat mungkin ini bisa ditingkatkan banyak, saya sangat baru dalam hal ini.
sumber
Fortran 90: 101
Penyalahgunaan standar pengetikan implisit, berfungsi untuk array panjang apa pun
a
danb
, meskipun orang harus mengharapkan itulen(a) < len(b)
.Fungsi ini harus
contain
diedit dalam program lengkap agar berfungsi.a
danb
diterima dari stdin dan dapat dimasukkan pada baris yang sama (baik dipisahkan oleh koma atau spasi) atau pada baris yang berbeda. Kompilasi viagfortran -o main main.f90
dan eksekusi seperti yang Anda lakukan pada program kompilasi lainnya.Tes:
Saya bisa membuat pengembalian di atas 1 jika saya menambahkan 4 karakter (
,k+1
) untukdo
loopsumber
Mathematica
2623Bekerja seperti algoritma Dennis, tetapi wordier:
Tiga karakter dicukur oleh Szabolics.
sumber
Length@StringCases[a,b]
lebih pendek. Masalah ini tidak ditentukan dengan baik karena jika kita tidak diizinkan untuk menggunakanStringCount
, tidak jelas apakah adaString*
fungsi builtin lain yang diizinkan atau tidak ... semuanya didasarkan pada kode dasar yang sama.StringCases
. Tidak jelas bagi saya apa arti OP oleh API bahasa.Length@*StringCases
. Ini lebih pendek daripadaLength@StringCases[##]&
jika kita hanya menulis fungsi tetapi tidak benar-benar menerapkannya kea
danb
.C ++ 225
sumber
Jawa (38)
(Pertanyaan tidak memerlukan program atau fungsi yang lengkap.)
sumber
Cobra - 25
sumber
K / Kona 6
di mana
x
string dany
substring.~
adalah operator negate, dengan'
, diterapkan pada setiap elemen dix
; itu akan kembali0
jika tidak cocok dan1
jika cocok. Karena itu diterapkan elemen-bijaksana, hasilnyay~'x
adalah vektor,+/
kemudian menjumlahkan hasilnya memberikan jumlah total kejadian.Sayangnya, metode ini mensyaratkan
y
hanya satu karakter, jika tidak kita akan membandingkan string multi-karakter dengan string karakter tunggal, yang menghasilkan alength error
.sumber