Tantangan
¡Kami akan memberikan tanda seru dan tanda tanya teman terbalik!
Diberikan teks berisi kalimat yang diakhiri dengan .
,, ?
atau !
, dipertanyakan tanda tanya terbalik ¿
,, untuk kalimat interogatif (kalimat berakhiran ?
) dan tanda seru terbalik ¡
,, hingga seruan (kalimat berakhiran !
). Kalimat yang diakhiri .
harus diabaikan.
Kalimat akan dipisahkan oleh spasi putih (spasi, tab, dan / atau baris baru) dan hanya akan berisi alfanumerik, koma, apostrof, dan spasi. Setiap kalimat memiliki setidaknya satu kata. Kata pertama dari setiap kalimat dijamin menjadi huruf besar. Input dapat dimulai dan diakhiri dengan spasi putih apa pun.
Contoh
Memasukkan:
Hello there! What is your name?
My name is Ron. What's your name?
My name is Alex. Nice to meet you!
Nice to meet you to! How was your break?
It was great, I spent all my time code golfing!
What's that?
Wow, you're such a n00b! Here, let me show you.
Keluaran:
¡Hello there! ¿What is your name?
My name is Ron. ¿What's your name?
My name is Alex. ¡Nice to meet you!
¡Nice to meet you to! ¿How was your break?
¡It was great, I spent all my time code golfing!
¿What's that?
¡Wow, you're such a n00b! Here, let me show you.
Aturan
- Semua aturan Golf Code default berlaku.
- Program dengan jumlah byte terpendek akan menang.
Bonus (diskon 17%) - Mengurai banyak nilai
Sebuah kalimat juga dapat diakhiri dengan beberapa tanda seru / tanda tanya. Berikan masing-masing tanda ini tanda seru terbalik / tanda tanya untuk tambahan 17% dari jumlah byte Anda.
Contoh
Memasukkan:
I am a man in a can doing a dance?? Maybe...
Doing it for the views??!???!
Keluaran:
¿¿I am a man in a can doing a dance?? Maybe...
¡¿¿¿¡¿¿Doing it for the views??!???!
Output salah :
¿¿I am a man in a can doing a dance?? Maybe...
¿¿¡¿¿¿¡Doing it for the views??!???!
sumber
Jawaban:
Retina ,
393734 byteCobalah online.
Penjelasan
Ini cocok dengan kalimat yang berakhir dengan tanda seru atau tanda tanya, dan menambahkan karakter tanda baca itu ke kalimat. Sekarang kita tahu bahwa semua
!
atau?
yang segera diikuti oleh karakter non-spasi harus yang kita masukkan, karena yang asli harus dipisahkan dari karakter selanjutnya oleh spasi.Tahap transliterasi ini mengubah semua
!
dan?
menjadi¡
dan¿
, masing-masing, asalkan mereka ditemukan dalam kecocokan\S\b
, yang hanya berlaku untuk yang baru saja kita masukkan. Mengganti keduanya dalam dua substitusi terpisah dalam jumlah byte yang sama, tetapi saya lebih suka semantik dari tahap transliterasi di sini.sumber
Mathematica 137 byte
Bukan yang terpendek, tapi itu menyenangkan untuk dilakukan.
TextSentences
memecah teks input menjadi kalimat danStringPosition
menemukan posisi awal dan akhir dari setiap kalimat dalam teks. Tanda baca terbalik dimasukkan pada awal setiap kalimat seperti yang diperlukan.Penggunaan, dengan asumsi teks dimasukkan pada
t
,sumber
Sed, 61 byte
Uji coba:
sumber
-r
flag to (GNU) sed, Anda tidak perlu melarikan diri dari(
dan)
yang seharusnya menyelamatkan Anda 8. Anda perlu menambahkan poin tambahan untuk penggunaan opsi non-default ini.Javascript (ES6),
86796663 byteTidak Disatukan:
Pemakaian:
Akan mengimplementasikan solusi bonus segera.
Terima kasih kepada:
@ user81655 , 86 => 79 byte
sumber
i=>i.replace(/[A-Z][^.!?]*[.!?]/g,k=>(r=k.slice(-1))<'.'?'¡'+k:r>'.'?'¿'+k:k)
.
.Mathematica,
1019291 bytesumber
Python 2, 127,82 (154-17%) byte
sumber
𝔼𝕊𝕄𝕚𝕟, 36 karakter / 53 byte
Try it here (Firefox only).
sumber