Keluarga saya memiliki bisnis e-commerce. Di situs kami sendiri, kami memaksa orang untuk memilih negara mereka dari menu dropdown ketika mereka memasukkan alamat mereka, tetapi melalui beberapa saluran lain yang kami gunakan, pelanggan dapat memasukkan apa pun yang mereka inginkan ke dalam kotak.
Ibuku suka templat faktur yang kubuat untuknya, yang dibuat secara otomatis. Tetapi karena mereka sangat cantik dan seimbang, dia tidak tahan ketika orang MENULIS nama negara bagian mereka, atau lebih buruk, menulis sesuatu seperti "baju baru." Dia mengatakan itu merusak tampilan.
Ayah saya suka kode menjadi ringan. Jadi, daripada menggunakan switch-case block, dia menginginkan solusi yang lebih ramping.
Jadi tantangannya adalah membuat fungsi pendek yang mengambil input yang mungkin dan mengembalikan singkatan dua huruf (ditulis dengan huruf besar, untuk Mom). Kami akan membuat asumsi (salah) bahwa pengguna kami dapat mengeja dan selalu memberi spasi pada nama (jika diperlukan) atau memberikan singkatan yang benar. Cakupannya adalah 50 negara bagian AS.
- New York
- new york
- NY
- ny
semua input yang dapat diterima untuk New York, dan harus menampilkan NY.
Jika sesuatu seperti New Yrok diteruskan, fungsinya dapat mengembalikan nilai asli.
Anda dapat menggunakan bahasa umum apa saja. Ini adalah kontes popularitas, jadi yang memiliki suara terbanyak di akhir minggu menang. Saya berasumsi bahwa ini akan mendukung hal baru dan utilitas.
EDIT: Deskripsi adalah cerita bulu, tetapi saya sedang mengerjakan proyek serupa dan berpikir bahwa pasti ada cara yang lebih menarik untuk melakukannya. Saya dapat mengerjakan proyek sendiri (sudah melakukannya) tetapi saya pikir ini adalah tempat yang bagus untuk tantangan yang lebih menarik. Dengan "Bahasa apa pun" Saya mengecualikan bahasa khusus / perpustakaan yang dirancang untuk tantangan ini - saya mencoba mencari metode baru, daripada bantuan kode gratis. Saya pikir semua orang telah melakukan ini di beberapa titik, tetapi akan menyenangkan untuk melakukannya dengan cara yang tidak biasa. Saya menemukan bahwa proyek yang paling menarik adalah proyek di mana Anda menangani tugas sehari-hari dengan cara baru dan menarik - itulah sebabnya ini adalah kontes popularitas daripada golf.
sumber
you can use any code
... jadi OP akan menulis ulang situsnya untuk menggunakan solusi APL / CJAM / GolfScript Anda? Ini tantangan berdasarkan kisah nyata. Saya memilihJawaban:
Rubi
Kupikir akan menarik untuk mengekstrak singkatan negara tanpa menulis nama atau singkatan apa pun secara eksplisit. Yang ini tidak mengambil salah mengeja input menjadi pertimbangan, karena kami tidak peduli tentang hal seperti itu di codegolf.SE, rihgt ?
Butuh waktu yang cukup lama untuk menemukan pola yang pintar untuk mencocokkan semua negara bagian. Urutan pola penting - setiap pola berurutan berlaku untuk status yang tersisa yang tidak cocok dengan pola sebelumnya:
Semua negara dengan dua kata di dalamnya menggunakan huruf awal dari dua kata: Semua negara bagian yang memulai dengan huruf apa pun di {CDGHKLPV
} menggunakan huruf pertama dan terakhir dalam nama: Dari status yang tersisa, huruf {ZVX
} unik: Semua status tersisa yang diawali dengan {FNOUW
} menggunakan dua huruf pertama. Kemudian, {DNR
} unik sebagai huruf kedua:Sangat sulit membuat pola umum, tapi ...
Hanya tiga negara yang tersisa menggunakan doubleN
atauL
, dan double letter digunakan dalam singkatan negara:A
atauO
setelah double S adalah unik untuk Setiap kali {SNW
} muncul di depan huruf-huruf lain dengan nama negara yang tersisa, huruf-huruf sesudahnya digunakan dalam singkatan: Tinggal dua. Ini menggunakan dua huruf pertama:Tentu saja bisa bermain golf:
Ruby 2 -
191165154 karakterLain 26 karakter off dengan memberi tanda regex sedikit. Juga, salah satu regex asli ternyata mubazir!
sumber
If something like New Yrok is passed in, the function should return the original value.
C #
Saya menggunakan karakter yang sudah ada di negara bagian untuk singkatan untuk mempersingkat string negara.
sumber
JavaScript (E6)
Di sini sebagian besar adalah daftar nama, menggunakan trik camelCase untuk mempersingkat sedikit. Golf, 617 byte.
sumber
Python
Memutuskan untuk melakukan ini sebagai tantangan kode-golf. Dapatkan hingga
906713694 karakter dengan bantuan daniero dan hsl:Namun, jika modul diizinkan (seperti modul us ), saya bisa mendapatkannya hingga 130 karakter:
Dan jika Anda tidak harus mengembalikan nilai asli ketika negara tidak ada, saya bisa menurunkannya menjadi 50 karakter:
sumber
s
menjadi satu string besar, lalu membaginya menjadi koma (,
); Tidak perlu untuk semua tanda kutip tunggal.bash + sed, 291 byte
Konversi memalukan dari solusi Ruby Daniero ke sed:
sumber
Golfscript -
750653Sebagian besar dalam nama negara bagian dan singkatan.
Penjelasan:
sumber
PHP
Upaya saya, yang tidak sesukses yang saya harapkan, menggunakan panjang string dan beberapa penempatan karakter khusus untuk mengekstrak singkatan dari nama negara. Mungkin beberapa urutan penghapusan nama yang lebih baik adalah mungkin.
Tentu saja, bisa bermain golf. Ini adalah upaya golf pertama saya, jadi wawasan sangat dihargai. (911)
sumber
Javascript
Saya tahu ini bukan kode golf, tapi saya tetap ingin golf. :)
Yay untuk hal-hal baru! (Potongan Stack)
sumber
eval(open('a.txt'))
juga valid? Jika Anda menggunakan file apa pun, Anda juga harus memasukkan file itu dan nama file-nya dalam jumlah karakter Anda. (Ini bukan kode golf, jadi sebenarnya tidak terlalu penting dalam kasus ini.)