Aturan
Dalam tantangan ini, saya akan sedikit mendefinisikan kembali definisi "kutipan".
Tanda kutip ( kutipan AKA ) adalah karakter identik yang digunakan berpasangan dalam berbagai sistem penulisan untuk memicu pidato langsung, kutipan, atau frasa. Pasangan ini terdiri dari tanda kutip pembuka dan tanda kutip penutup, yang merupakan karakter yang sama (case-sensitive).
Jika ada pasangan-pasangan yang tumpang tindih satu sama lain,
- Jika sepasang bersarang yang lain, kedua pasangan masih valid.
- Jika pasangan tidak bersarang, pasangan awal pertama tetap valid. Yang lain tidak lagi dianggap sebagai pasangan.
Saat menghitung karakter yang dikutip (panjang sepasang kutipan),
- Kutipan itu sendiri tidak masuk hitungan.
- Panjang setiap pasangan dihitung secara independen. Tumpang tindih tidak memengaruhi yang lain.
Tujuan
Tujuan Anda adalah mencetak total panjang dari semua kutipan yang valid. Ini adalah kode golf, oleh karena itu kode dengan byte paling sedikit menang.
Contohnya
Legend:
<foo>: Valid quotes
^ : Cannot be paired character
Input : ABCDDCBA
`A` (6): <BCDDCB>
`B` (4): <CDDC>
`C` (2): <DD>
`D` (0): <>
Output : 12
Input : ABCDABCD
`A` (3): <BCD>
`B` (0): ^ ^
`C` (0): ^ ^
`D` (0): ^ ^
Output : 3
Input : AABBBBAAAABA
`A` (0): <> <><> ^
`B` (0): <><> ^
Output : 0
Input : ABCDE
Output : 0
Input : Print the total length of all "quoted" characters
`r` (40): <int the total length of all "quoted" cha>
`n` (14): <t the total le>
`t` (15): < > <o> <h of all "quo>
` ` (7): ^ <total> <of> ^ ^
`h` (0): ^ ^ ^
`e` (8): < total l> ^ ^
`o` (0): ^ ^ ^
`a` (0): ^ ^ ^ ^
`l` (0): ^ ^ <>
`"` (0): ^ ^
`c` (0): ^ ^
Output : 84
Input : Peter Piper picked a peck of pickled peppers
`P` (5): <eter >
`e` (9): <t> ^ <d a p> <d p> ^
`r` (0): ^ ^
` ` (3): ^ ^ <a> <of> ^
`i` (5): <per p>
`p` (3): <er > ^ ^ ^ <>
`c` (8): <ked a pe> ^
`k` (7): ^ < of pic>
`d` (0): ^ ^
Output : 40
Input : https://www.youtube.com/watch?v=dQw4w9WgXcQ
`h` (27): <ttps://www.youtube.com/watc>
`t` (0): <> ^ ^
`/` (0): <> ^
`w` (14): <><.youtube.com/> <4>
`.` (7): <youtube>
`o` (0): ^ ^
`u` (1): <t>
`c` (0): ^ ^ ^
`Q` (8): <w4w9WgXc>
Output : 57
Jawaban:
Jelly , 12 byte
Cobalah online!
sumber
APL (Dyalog Unicode) , 36 byte SBCS
Program lengkap. Meminta input dari stdin.
Cobalah online!
t←⍬
mendirikan sebuah akumulatort
(untuk t otal)⍞⊣
Buang yang mendukung input string dari stdin (simbol: quote in console){
...}⍣≡
terapkan lambda anonim berikut hingga stabil (fix-point; sebelumnya ≡ berikutnya)⊢⍵
pada argumen...
⎕S'\2'
PCRE S earch untuk yang berikut, kelompok 2 yang kembali untuk setiap pertandingan:(.)
karakter apa pun (kami akan memanggil grup ini 1)(.*?)
sesedikit mungkin karakter (kami akan memanggil grup ini 2)\1
karakter grup 1t,←
perbaruit
dengan menambahkan itu ket
nilai saat init⊣
buang itu (daftar terakhir yang tidak cocok) yang mendukungt
≢
hitung jumlah karakter di dalamnyasumber
Ruby , 49 byte
Solusi rekursif. Temukan grup kutipan, hitung panjangnya, dan kemudian secara rekursif mencari panjang sub-grup dan jumlahkan semuanya.
Cobalah online!
sumber
JavaScript (ES6), 64 byte
Cobalah online!
Berkomentar
sumber
JavaScript (Node.js) ,
656462 byteCobalah online!
Pendekatan asli (64 byte):
Cobalah online!
sumber
Brain-Flak , 100 byte
Cobalah online!
Berkomentar
sumber
Jelly , 17 byte
Cobalah online!
Program lengkap yang mengambil argumen tunggal, string input terbungkus dalam daftar, dan mengembalikan jumlah karakter kutipan sebagai integer.
sumber