Sebuah numeronim (juga dikenal sebagai "kontraksi numerik") adalah ketika sebuah kata disingkat menggunakan angka. Metode kontraksi umum adalah dengan menggunakan panjang substring yang diganti untuk mengganti semua kecuali karakter pertama dan terakhir. Misalnya, gunakan i18n
sebagai ganti internationalization
, atau L10n
alih-alihlocalization
. (Huruf L
kapital karena huruf kecil terlihat terlalu mirip dengan 1
.)
Tentu saja, beberapa kata dalam frasa yang sama mungkin memiliki bentuk singkatan yang sama, jadi tugas Anda adalah mengonversi sekelompok kata menjadi angka-angka mereka, atau jika ada beberapa kata yang berbeda dengan angka-angka yang sama, program Anda harus memberikan hasil A7s R4t
, kependekan dari Ambiguous Result
(ya, saya tahu bahwa hasil ini sendiri merupakan hasil yang ambigu.)
Aturan:
- Gunakan program atau fungsi, dan cetak atau kembalikan hasilnya.
- Input diambil sebagai string tunggal.
- Outputnya adalah string tunggal dari kata-kata yang dibatasi ruang.
- Program Anda tidak perlu mengonversi kata dengan panjang 3, dan tidak boleh mengonversi kata yang lebih pendek.
- Jika
l
(huruf kecil) terjadi sebelum1
(satu), harus dibuat huruf besar. - Jika
I
(huruf besar) akan terjadi sebelum1
(satu), itu harus dibuat huruf kecil. - Input akan dicetak ASCII dan spasi. Kata-kata dipisahkan oleh spasi.
- Kode terpendek menang.
Contoh:
A7s R4t -> A7s R4t (OR: A1s R1t, etc)
Ambiguous Result -> A7s R4t
Billy goats gruff -> B3y g3s g3f
Thanks for the Memories -> T4s f1r the M6s (one possible answer, NOT: Thnks fr th Mmrs)
Programming Puzzles & Code Golf -> P9g P5s & C2e G2f
globalization -> g11n
localizability -> L12y
Internationalization or antidisestablishmentarianism -> i18n or a26m
Internationalization or InternXXXXXalization -> A7s R4t
what is this fiddle and faddle -> A7s R4t
A be see -> A be s1e (OR: A be see)
see sea -> s1e s1a (OR: see sea)
2B or not 2B -> 2B or not 2B (OR: 2B or n1t 2B. 2 letters, don't change, don't count as ambiguous)
this example is this example -> t2s e5e is t2s e5e (same words aren't ambiguous)
l1 -> l1 (2 letters, don't change.)
I1 -> I1 (2 letters, don't change.)
Sunting: Jika ada yang tidak mendapatkan referensi: Thnks fr th Mmrs
l1
menjadiL1
atau tetap samal1
?example example
akane5e e5e
, tapi itu akan baik untuk menyertakan kasus uji yang mencakup ini.2B or not 2B
dan setelah.)Jawaban:
J, 92 byte
Rantai telepon yang tenang. Bagian pertama hanyalah garpu: literal
joinstring
,, dan fungsi (dalam J,1 (10 + +) 2
adalah(10 + (1 + 2))
). Bagian kedua adalah fungsinya. Duarplc
panggilan itu untuk menggantikan I / l ketika mereka bisa bingung.&
adalah komposisi, dan menyusun operator dengan kari nilai. (sehingga3&+
memberikan fungsi yang mengharapkan argumen ke-2 ditambahkan). Akhirnya, bagian terakhir adalah fungsi yang mengambil yang pertama, panjang-2 (tersusun dengan pengencangan), dan yang terakhir. yang&>&;:
sedikit di akhir menyusun fungsi ini (yang harus diterapkan untuk setiap argumen) ke>
(unboxing), karena;:
(kata split) mengembalikan daftar kotak (sehingga setiap elemen dapat memiliki panjang yang berbeda).contoh:
sumber
Caché ObjectScript , 231 byte
Ini akan menjadi MUMPS yang memenuhi standar yang baik jika bukan karena
$REPLACE
panggilan sial itu , yang bukan bagian dari standar. Mengimplementasikan ulang dalam M murni membutuhkan 80ish byte yang baik, jadi saya tidak turun rute itu.Titik masuknya adalah
$$z("your string here")
, yang mengembalikan"y2r s4g h2e"
, dan sebagainya.sumber
C #,
280274 bytePegolf pertama kali di sini! Telah menikmati membaca ini akhir-akhir ini dan jadi saya pikir saya mungkin akan mencobanya sendiri! Mungkin bukan solusi terbaik, tapi oh well!
Hal yang sama ungolfed:
Terima kasih teman-teman!
sumber
Perl,
131120 byteSaya telah menambahkan byte untuk menggunakan
-p
sakelar:Penjelasan
sumber
s/(\w)(\w+)(\w)/$1.length($2)."$3_$2"/ge
→s/\B(\w+)(\w)/length($1)."$2_$1"/ge
.[Il]
hanya sebelumnya1
- juga menyimpan beberapa byte!JavaScript (ES6), 165 byte
Penjelasan
Uji
Tampilkan cuplikan kode
sumber
JavaScript ES6, 162
Kurang golf
Uji
Tampilkan cuplikan kode
sumber
Python 2, 185 byte
sumber
Python 3, 160
Saya ingin menemukan cara yang baik untuk mengganti panggilan pengganti itu.
Dengan beberapa kasus uji:
sumber
Factor,
4835 byte, tidak bersaingIni adalah lambda yang ada di tumpukan, yang secara teknis tidak memenuhi persyaratan yang sangat menyebalkan yang awalnya saya abaikan.
Menggunakan
english
kosakata.Atau, jika kami sebaris
a10n
kata perpustakaan, maka 131 byte (dengan impor otomatis):sumber