Dicuri dari @Downgoat dengan izin
Inti dari tantangan ini adalah (tidak) menyelesaikan perdebatan tentang pelafalan "gif".
Pengucapan gif masih diperdebatkan dan meskipun seharusnya (dan harus) diucapkan jif , itu masih sering diperdebatkan.
Dalam tantangan ini, Anda akan diberikan satu set kata yang memiliki g atau j , mewakili suara yang diucapkan dengan kata tersebut. Anda juga akan mendapatkan beberapa teks untuk memperbaiki ejaan gif yang salah .
Karena ini internet dan semua orang selalu salah. Ini (bukan) kesopanan umum untuk memperbaikinya.
Contoh pengucapan yang salah adalah:
Ada gif tikus makan burrito
Ejaan gif yang salah ? Tidak bisa diterima Ini harus segera diperbaiki:
Ada jif (seperti dalam kendi) seekor tikus memakan burrito
Sudahkah kita selesai? Tidak, kamu masih salah.
Kamu selalu salah
Ini harus bekerja dengan cara lain:
Di jif , kucing mengenakan topi kucing
Kesalahan mengeja yang jelas ini harus diperbaiki, kami akan memperbaikinya untuk:
Dalam gif (seperti pada gambar) , kucing mengenakan topi kucing
Aturan
- Input adalah string (kalimat) dan array string (atau alternatif apa pun yang masuk akal, seperti string yang dipisahkan koma) dalam urutan apa pun
- Anda dapat mengambil
g
danj
kata - kata dalam urutan apa pun. Mereka dapat diambil secara terpisah. - Setiap instance dari
gif
(setiap kasus) dalam kalimat harus diganti dengan dijif (as in ___)
mana___
kata yang dipilih secara acak acak dimulai denganj
dari array string, dan sebaliknyajif
dengan kata-kata yang dimulai dengang
. - HANYA kata-kata
gif
danjif
harus diganti (yaitu "jiffy" tidak boleh diubah). Kata-kata itu tidak salah. - Anda dijamin bahwa setidaknya satu kata dalam array dimulai dengan
g
dan setidaknya satu kata dimulai denganj
. - Kasing harus dilestarikan (mis.
GiF
->JiF
). - Anda dapat menulis program atau fungsi
- Celah standar berlaku
- Kita perlu (tidak) menyelesaikan perdebatan dengan cepat; kode terpendek dalam byte menang
Contohnya
Input dan output dipisahkan oleh satu baris:
graphic, jar, jam, gram
I saw a jif of how to pronounce gif that showed gif is pronounced jif
I saw a gif (as in graphic) of how to pronounce jif (as in jar) that showed jif (as in jam) is pronounced gif (as in gram)
gravy, jeff
G is for gIf, h is for JiF, i is for gIF, j is for JIf
G is for jIf (as in jeff), h is for GiF (as in gravy), i is for jIF (as in jeff), j is for JIf (as in gravy)
joke, june, gorilla, great
Jiffy should not be treated as a GIF or JIF, like gifted.
Jiffy should not be treated as a JIF (as in june) or GIF (as in great), like gifted.
The pronunciation of gif is debated and while it's supposed to be (and should be) pronounced **gif,** it's still commonly disputed.
FTFY;)Jawaban:
Mathematica,
164165 byteIni adalah kekejian, tetapi saya ingin seseorang berbagi rasa sakit saya.
Function
yang mengharapkan argumen pertama#
menjadi kalimat yang akan dikoreksi dan argumen kedua#2
menjadi serangkaian kata yang dipisahkan koma.f[f@"g"="j"]="g";f[f@"G"="J"]="G"
mendefinisikan fungsif
yang mengambil surat-suratg
,G
,j
, danJ
untuk pengganti yang sesuai mereka. Ini sedikit lebih pendek darif@"g"="j";f@"j"="g";f@"G"="J";f@"J"="G"
.Saya juga menyetel
z
sama denganIgnoreCase->True
karena saya akan menggunakannya dua kali.x:"g"|"j"~~y:"if "
adalahStringExpression
yang cocok"gif "
atau"jif "
, menamai huruf pertamax
dan tiga karakter terakhiry
. Karena opsiz
(juga dikenal sebagaiIgnoreCase->True
) diteruskan keStringReplace
, huruf-huruf ini dapat dalam kombinasi huruf besar dan kecil.Saya kemudian mengganti setiap pertandingan dengan
RandomChoice@StringCases[#2,f@x~~Except[","]..,z]
secara acak memilih satu kata dari argumen kedua#2
yang dimulai denganf[x]
, sekali lagi mengabaikan kasus karena opsiz
diberikan.sumber
IgnoreCase->True
=>IgnoreCase->1<2
True
dengan1>0
, hanya saja tidak dalam penjelasan saya :)z
sama denganIgnoreCase->True
. Saya melakukan hal yang sama kemudian: "yang dimulai denganf[x]
".¯\_(ツ)_/¯
Ruby ,
888791 byte-1 byte dari produk ETH. +4 byte karena kata-kata yang mengandung "gif" atau "jif" tidak boleh diganti. -2 byte karena daftar kata pengganti dapat diambil secara terpisah sekarang.
Cobalah online!
sumber
([gj])
ke(g|j)
? (idk banyak Ruby tapi saya tahu regex)CJam , 78 byte
Cobalah online!
Membutuhkan daftar karakter pengganti untuk dipisahkan oleh koma.
Penjelasan:
sumber
Python 3 , 237 byte
Cobalah online!
Ini adalah yang terbaik yang bisa saya lakukan - mungkin beberapa cara untuk melakukannya lebih cepat (mungkin dengan regex) tetapi otak saya sakit sekarang.
Penjelasan:
q
adalah pemetaan kamus sederhana, saya harap itu jelas.s,g,j
adalah string input, daftar kata-g, dan daftar kata-j.' '.join
bergabung bersama pemahaman daftar yang dilakukan di seluruhfor w in s.split()
karena itu untuk daftar kata-kata di s.Bagian tengahnya adalah ilmu hitam, yang akan saya hancurkan sedikit demi sedikit. Pertama, kondisi:
False in(w[0]in q,w[1:2]in['i','I'],w[2:3]in['f','F'],w[3:]in",;!.")
.w[0]in q
memeriksa karakter pertama ada di tombolq
yang ada'g','G','j','J'
. Alasan untuk berpisahq
sebagai variabel adalah kita juga menggunakannya sebagai dict / map nanti.w[1:2]in ['i','I']
memeriksa apakah karakter kedua adalah i atau I.: 2 diperlukan karena menempatkan hanyaw[1]
akan menghasilkan kehancuran pada kata-kata 1-huruf, tetapi irisan tidak melakukan itu untuk beberapa alasan (saya pikir mereka melakukannya, apa pun!)w[2:3]in ['f','F']
analog. Saya secara singkat memiliki ini hanya sebagai 2: sebelum saya menyadari saya perlu menjelaskan gif, atau jif, diikuti dengan tanda baca!w[3:]in",;!?."
memeriksa apakah karakter selanjutnya adalah tanda baca. Saya akui kode saya tidak berfungsi jika seseorang meletakkan 'gif ?!' tapi aku tidak bisa sempurna. Orang lain dapat mengambil tantangan membuka kutipan sebelum gif atau jif juga.False in(,,,)
pada dasarnya adalah NAND besar. Sebenarnya bytecount yang sama dengan memisahkan empat item denganand
dan bertukar argumen, tetapi ini terlihat lebih keren dan berfungsi lebih baik jika Anda harus memperluasnya keand
hal ed kelima .w if
berarti bahwa jika False ada dalam daftar bersyarat, kami hanya mengembalikan kata tidak berubah - itu tidak memenuhi kriteria kami.else
, kami mengubahnya menjadi:q[w[0]]+w[1:3]+" (as in "+choice(g if w[0]in 'jJ'else j)+')'+w[3:]
BAIK.
q[w[0]]
mengganti huruf pertama dengan benar.w[1:3]
paku pada i atau I dan f atau F,w[3:]
paku pada tanda baca apapun. Itu meninggalkan seperti pada klausa." (as in "+choice(g if w[0]in 'jJ'else j)+')'
menempatkan string literal yang jelas di awal dan kurung trailing, bit yang menarik di sini adalahchoice(g if w[0]in 'jJ'else j)
yang dipilih secara acak darig
atauj
, tergantung pada apakahw[0]
ada di'jJ'
. dan saya baru sadar saya memiliki bit ini mundur sehingga memperbaiki itu sepanjang, selesai.Hari yang panjang.
choice
ada dirandom
modul karenanya impor. Saya pikir itu segalanya.sumber
JavaScript (ES6), 142 byte
Membawa daftar kata
g
dan terpisahj
.sumber
Javascript (ES6), 151 byte
Saya mungkin bisa bermain golf di bagian terner lebih, tapi saya tidak bisa memikirkan bagaimana sekarang. Juga, dibutuhkan kata-kata g dan j secara terpisah.
sumber