Tantangan ini telah berakhir! Selamat Flonk !
Saya yakin saya akan mendapat nilai bagus, tetapi setelah menyerahkan Flonk pada pekerjaan saya, profesor saya tidak percaya itu milik saya dan juga tidak bisa mengerti mengapa itu begitu rumit ... saya gagal dan ibu saya mengirim saya ke Facebook dan Minecraft untuk sebulan. Saya tidak mengerti. :(
Terima kasih atas semua kiriman Anda! Beberapa jawaban bagus di sini. Pemenang resmi adalah Flonk dengan skor 64 . 5 teratas adalah:
- Flonk , 64 (Haskell, dengan matematika yang efisien!)
- DigitalTrauma , 40 (Awan, masa depan sekarang)
- primo , 38 (Python, dan favorit pribadi saya - dan sangat profesional!)
- Sylwester , 20 (raket, meskipun Janember merentangkannya!)
- ilmale , 16 ( Algoritma yang sangat optimal di Lua)
Tantangan asli di bawah ini.
Tolong bantu saya, ini sangat mendesak !!! :(
Saya perlu mengonversi versi singkat dari nama bulan ke representasi yang lebih panjang (mis. "Des" -> "December"), tidak peka huruf besar-kecil. Saat ini saya menggunakan Java; nama bulan adalah String dan saya lebih suka tidak mengubahnya menjadi objek Date terlebih dahulu. Namun, bahasa apa pun akan berhasil.
Apakah ada cara mudah untuk melakukan ini ?? Mudah saja, saya pemula dalam pemrograman!
Ini adalah kontes popularitas kode trolling (jenis terbaik yang ada!). Jawaban dengan suara terbanyak pada 8 April 2014 menang.
sumber
Jawaban:
Ini sangat sederhana dengan sedikit interpolasi polinomial!
Pertama, saya melihat daftar nama-nama bulan pendek
dan memeriksa jumlah nilai karakter ASCII mereka
kemudian kurangi 300 dari mereka untuk memahami apa yang saya hadapi di sini, dan menyiapkan Array yang berisi semua versi yang lebih panjang dari nama-nama bulan.
Saya kira Anda dapat melihat apa yang terjadi sekarang - yang saya butuhkan adalah fungsi getIndex yang memetakan 13 ke 0, 1 ke 1, 20 ke 2, dan seterusnya, jadi saya bisa melakukan
Untungnya, Wolfram | Alpha dapat melakukan ini untuk saya ! Jumlahnya agak besar, tetapi Haskell dapat mengatasinya dengan anggun. Kita hanya perlu memastikan untuk membulatkan hasil, karena floating-point-aritmatika sedikit tidak tepat! Jadi begitulah, Haskell yang cepat, elegan, dan idiomatis:
Jalankan saja seperti ini:
sumber
interpolating polynomial
.Bash + alat GNU + "the cloud"
Google memiliki jawaban untuk semuanya, dan saya merasa beruntung :
Digunakan:
sumber
[a-zA-Z]
berfungsi sebagai pengganti[[:alpha:]]
(sepertinya begitu ketika saya mencobanya setidaknya)? Itu akan menghemat 3 karakter. Beberapa karakter lagi dapat disimpan dengan permintaanask.com
, tetapi itu mungkin tidak dapat diandalkan.Python
Karena fungsi ini sangat penting, mungkin akan banyak digunakan, jadi Anda harus mencoba membuatnya secepat mungkin. Poster lain merekomendasikan penggunaan hashmap look-up ... jangan lakukan ini! Hashmaps sangat lambat dibandingkan dengan array. Anda hanya perlu mengubah setiap singkatan menjadi angka. Ada teknik hashing standar yang dapat digunakan untuk ini:
Ini hampir dijamin unik, dan banyak alat profesional yang menggunakannya.
Sekarang Anda perlu membuat fungsi pencarian:
Dan gunakan seperti ini:
print month_abbr_to_name("Dec")
→December
HTH!
Trolling
sumber
Raket
Saya mencari solusi CIUMAN . Saya sudah mengujinya dengan use case OP "Des" dengan semua huruf besar untuk memeriksa apakah hasil yang benar dikembalikan. Itu berlalu dengan warna terbang.
Jelas trolling di sini adalah hanya berfungsi untuk beberapa kasus jadi tidak berguna :-)
sumber
LUA
Solusi saya akan bekerja dalam bahasa lokal Anda, profesor Anda akan senang
Uji
sumber
Perl
sumber
Jawa
Anda mengatakan kode Anda saat ini di Jawa, jadi saya pikir saya akan mempermudah Anda.
sumber
Bash + coreutils + paq8hp12
Jawaban yang saat ini paling banyak dibatalkan adalah mengakses internet untuk setiap permintaan. Selain sangat tidak efisien, ini juga berarti bahwa skrip Anda akan gagal jika tidak ada internet.
Lebih baik menyimpan informasi yang diperlukan di hard disk Anda. Tentu saja, Anda dapat menyimpan hanya data yang diperlukan untuk skrip ini, tetapi itu akan membutuhkan data yang berbeda untuk tugas yang berbeda. Jauh lebih baik untuk menyimpan semua data yang mungkin Anda perlukan dalam satu file multi-guna.
Trolling
sumber
Python + SQLite
Banyak jawaban sejauh ini membuat kesalahan dengan mengkodekan nama bulan. Tapi, Anda tidak pernah tahu kapan beberapa Paus atau Presiden akan membuat kita beralih ke kalender lain, dan kemudian banyak kode parsing / pemformatan tanggal akan langsung menjadi tidak berharga! (Atau, lebih umum, ketika Anda perlu menginternasionalkan program Anda.)
Yang Anda butuhkan adalah database.
Kemudian, cukup tulis program sederhana untuk menanyakannya.
sumber
SH & seorang teman (tanggal)
Fungsi:
Mengujinya:
Ini pendek ... tapi hitunglah rasio "jahat per karakter" ... mwhuaaahahahaaa ...
sumber
date
fitur format tanggal. Dandate
menghormati lokalisasi, menghasilkan bulan yang cocok dengan lokalisasi.-d"a_month_name 1
menetapkan tanggal ke tanggal 1 bulan yang ditentukan (mungkin nama pendek) dan tahun yang hilang ditetapkan sehingga akan menjadi bulan berikutnya.+%B
adalah format untuk prnting tanggal yang diberikan dan berarti 'nama panjang bulan'. Semua tat dibungkus ke dalam fungsi shell dan karena tidak ada hal spesifik BASH di sana, SH akan cukup untuk menjalankannya. Jadi pada dasarnyadate
layak mendapat tepuk tangan, bukan aku! Dan saya tidak peduli tentang downvotes dalam codegolf! : -Þperl
Bagaimana dengan kekuatan kasar yang bagus?
Kenapa ini luar biasa:
penggunaan operator built-in perl yang berlebih (kenaikan string) membuat kode ini secepat kode C asli. Lihatlah semua nol itu, menunjukkan seberapa cepat itu berjalan!
Algoritma ini jelas secara intuitif, dan saya meninggalkan bukti sebagai latihan untuk pembaca, tetapi hanya untuk memastikan itu berfungsi dalam semua kasus, mari kita periksa Agustus, salah satu dari -ber bulan, dan salah satu dari -uaries untuk memastikan kita tidak ketinggalan apa-apa:
Trollage:
Mengesampingkan praktik pengkodean yang akan membuat Damian Conway mati pada pandangan, kode ini sesekali salah, dan sangat lambat. "Feb" beroperasi sekitar 6 kali lipat - satu juta kali - lebih lambat dari "mungkin", "jun", atau "jul". Feboapic, Sepibnd, Novgpej, dan Decabjuj bukan bulan (meskipun mereka menyenangkan untuk diucapkan).
PS - Saya memiliki beberapa kode yang memiliki penyebaran runtimes yang lebih besar, tetapi dengan membosankan menampilkan jawaban yang benar dalam semua kasus, yang jauh lebih tidak menyenangkan.
sumber
JavaScript - Cluster Node yang dioptimalkan dengan Branches, Leaves, dan string barrel.
sumber
Java, Google, dan Probabilitas
Saya kecewa karena begitu banyak solusi di sini "menemukan kembali roda" ketika jawabannya mudah tersedia di internet.
Ini adalah output program saya:
Tidak sempurna, tetapi cukup baik untuk dikirim ke QA. Saya dapat mencapai hasil ini dengan memanfaatkan kekuatan crowdsourcing:
sumber
Bash + binutils
Saya berusaha keras untuk melakukan yang jelas dengan mengubah input ke objek tanggal, tetapi gagal total. Akhirnya saya menggunakan pendekatan brute-force.
Tes berjalan:
sumber
Saya mengerti bahwa memeriksa nama-nama bulan sangat sulit, dan itu membutuhkan banyak perhitungan dan pemikiran logis. Berikut adalah versi yang dioptimalkan dari algorythm Buzz-Strahlemann untuk memeriksa nama-nama bulan .
PHP
Troll:
Jawaban ini;
Tidak menangani zona waktu dan akan menampilkan pesan peringatan;
Tidak menerima bulan sebagai input, tetapi Anda perlu meng-hardcode-nya;
Bahkan ketika Anda melakukan hardcode, itu case-sensitive;
Apa yang kode ini coba lakukan adalah untuk mendapatkan bulan berjalan, dapatkan tiga huruf pertama, dan periksa apakah cocok dengan
$month
. Jika tidak cocok, itu menambah stempel waktu oleh 1 dan kemudian coba lagi. Ini akhirnya menjadi sangat lambat ;Kode ini tidak menghasilkan apa-apa (kecuali peringatan, tentu saja);
Komentar sangat menyesatkan:
time()
tidak memuat pustaka waktu lama, tetapi mendapat cap waktu saat ini;substr($checkThis,1,4)
melompati huruf pertama bulan itu dan mendapatkan 4 berikut (arch
untukMarch
, misalnya); Bentuk yang benar adalah yang ada di komentar;Bahkan ketika kecocokan ditemukan, kode tidak akan keluar dari loop: pada kenyataannya, variabel yang diset menjadi
true
berbeda.sumber
arch
tidak akan pernah samaMar
?Batch
Apa yang Anda minta itu tidak sepele. Namun saya telah menemukan solusi yang tepat untuk Anda! Cara kerjanya adalah dengan mengunduh daftar bahasa Inggris yang sangat rumit ke hard-disk Anda. Masukan kemudian diperiksa terhadap daftar yang diunduh dan nama akhir bulan diberikan! Jenius!
Sekarang, metode ini memiliki banyak kelebihan dibandingkan metode lain, beberapa diantaranya adalah:
Jan
atauJanu
untuk Januari!Kode:
Trollz
sumber
! #/pesta
Untuk membuat program Anda merespons lebih cepat, saya telah memasukkan bulan dengan 31 hari sebelumnya dalam daftar. Secara statistik, dengan distribusi tanggal yang merata, Anda lebih mungkin berada di salah satu bulan itu.
Saya mendokumentasikan setiap baris untuk mengesankan atasan Anda.
Simpan ini dalam file yang disebut
lookup_month_script.bash
dan salin-tempel baris berikut untuk mengujinya:Semoga berhasil dengan proyek Anda!
sumber
JavaScript - 209
Ia mengatakan tidak mengkonversi ke Tanggal, yang bukan apa yang terjadi di sini, saya hanya menggunakan Tanggal untuk menghasilkan ekstensi nama pendek.
Tes Input / Output:
sumber
Java 696 termasuk input tes
sumber
Bahasa pemrograman "Brainf * ck" adalah alat yang sempurna untuk ini! Mungkin tidak persis apa yang Anda cari, tentu saja, tapi itu menyelesaikan pekerjaan dengan sempurna!
Saya yakin guru Anda akan bangga ketika Anda menunjukkan ini padanya!
Trolling
sumber
Jawa
Magang Ilmuwan Komputer Yang Terhormat,
Ini adalah tugas yang cukup sulit, dan saya telah menyelesaikan hanya sebagian: Saya kira ini untuk pekerjaan tesis Anda atau beberapa tujuan penelitian.
Hingga kini saya hanya memiliki versi beta dengan beberapa bug kecil: kadang-kadang memberikan hasil yang salah, tapi saya yakin profesor Anda akan menerima upaya Anda.
file Month.java:
mengajukan Era.java:
Untuk menjalankannya jalankan:
keluaran:
Ingatlah untuk mengatur Anda
%JAVAPATH%
ke jalur di manaJava
kompiler Anda diinstal!sumber
Karena OP menggunakan Java, saya akan memberikan solusi Java. Idenya sederhana:
Map
dari nama panjang ke nama pendek.String.equalsIgnoreCase
untuk memeriksa apakah nama pendek sama dengan nama pendek input mengabaikan kasus. Jika demikian, sukses, keluar.Inilah sumbernya:
Trolling
sumber
Terima kasih telah memposting pertanyaan yang membangkitkan semangat dan pertanyaan asli ini. Kita yang memposting jawaban di Stack Overflow menikmati kesempatan untuk membantu poster, karena tujuan dari situs web ini adalah untuk membuat katalog semua pertanyaan seperti itu untuk membuat kebutuhan akan buku teks dan pembelajaran motivasi diri menjadi usang. Jangan khawatir dengan kurangnya pemahaman Anda tentang pertanyaan khusus ini, karena ini adalah jenis pertanyaan umum yang diajukan karena trik tersembunyi yang diperlukan untuk menyelesaikannya secara efektif. Instruktur biasanya akan mengajukan pertanyaan ini untuk menentukan tidak hanya kedalaman pemahaman Anda tentang bahasa, tetapi juga apakah Anda mengetahui kesalahan umum programmer ini: pengkodean karakter. Anda akan memahami lebih lengkap setelah Anda benar-benar membaca tautan berikut, seperti yang saya tahu Anda akan: tautan .
Saya yakin sekarang bahwa profesor Anda telah menjelaskan dengan sangat rinci pentingnya penggunaan kembali kode, sehingga ketika Anda telah membaca tautan pengkodean karakter yang saya berikan, Anda benar-benar memahami bahwa Anda harus membuat kelas yang cukup generik sehingga dapat menangani bahasa apa pun, bahkan jika pertanyaan awal tidak secara spesifik menentukan persyaratan ini (Anda mungkin juga ingin mempelajari tentang spesifikasi persyaratan, yang akan membantu Anda memahami persyaratan, baca tautan ini: tautan.
Anda yang sangat cerdas dalam menyarankan tidak menggunakan objek Date yang disediakan, karena menggunakan kode dalam bahasa default tidak akan memungkinkan Anda untuk menunjukkan pemahaman bahasa Anda yang sebenarnya kepada profesor Anda.
Untuk membantu Anda melalui pertanyaan yang sulit ini, saya telah menulis aplikasi Groovy yang akan menyelesaikan masalah Anda, dan tidak diragukan lagi akan lebih masuk akal daripada java samar itu. Jangan khawatir tentang penggunaan Groovy untuk jawaban ini, karena Groovy juga berjalan pada JVM seperti kode Java, sehingga Anda dapat dengan mudah memasukkan kode ini ke kelas java Anda dengan hanya beberapa modifikasi. Saya telah melampirkan tautan untuk membantu Anda melalui proses ini, tetapi saya tidak akan khawatir tentang hal itu sampai pagi, karena hanya perlu satu detik (di sini adalah tautan untuk nanti: tautan. Jadi, cukup salin kode untuk saat ini, karena saya akan menunjukkan banyak kasus uji kode yang berfungsi dengan baik, sehingga Anda dapat merasa yakin dengan pengiriman Anda. Saya pasti mengerti bahwa Anda adalah siswa yang sangat sibuk, dengan banyak kewajiban di piring Anda. Anda mungkin menyadari bahwa kontributor di sini bekerja penuh waktu, dan diberi kompensasi dengan baik.
Maaf karena saya tidak meninggalkan apa pun untuk Anda lakukan di sini, saya terbawa untuk menjawab pertanyaan yang memancing pikiran Anda. Jadi, cukup salin dan tempel respons ini. Seperti yang dapat Anda lihat dari kode berikut, inilah yang dapat dilakukannya:
sumber
Julia
Anda akan ingin menggunakan kekuatan pengiriman ganda di sini. Pertama, kita akan menentukan tipe setiap bulan. Kemudian kita dapat menulis definisi fungsi sederhana untuk setiap jenis bulan yang memberikan jawaban yang diinginkan. Ini akan memungkinkan Anda untuk menggunakan bentuk nyaman
nicename(Jan)
tanpa harus repot dengan tanda kutip yang mengganggu. Plus, kita dapat mendefinisikan fungsi kenyamanan untuk menerima string dan mengubahnya menjadi tipe, menggunakan kembali semua pekerjaan yang sudah kita lakukan untuk menyediakan antarmuka yang sama sekali baru.sumber
Python 2.75
Keindahan sejati adalah kesederhanaan, yang berarti persyaratan memori rendah. Lupakan kamus dan paragraf kode yang sial itu. Fungsi ini sangat bagus, itu akan cocok dengan nama bulan pendek menggunakan kasus apa pun. Mengamati.
BONUS:
Anda dapat menggunakan lebih dari 3 karakter pertama (mis. "Sept", "febr", dll.)
sumber
dalam c #
sumber
Berikut adalah program kecil yang melakukan apa yang Anda minta.
Saya telah menulisnya di C ++ karena itulah yang saya gunakan saat ini, tetapi cukup mudah dikonversi ke Java. Menjadi siswa yang berdedikasi, saya yakin Anda bisa mengatasi itu sendiri.
Saya memutuskan untuk bersikap baik dan menggunakan
std::string
s bukannyachar*
s. Aku yakin aku akan bingung Anda dengan sintaks sepertichar*[]
dan saya pasti lupa panggilandelete
, atau dilakukan sesuatu yang bodoh seperti panggilandelete
bukandelete[]
.sumber
C
Semacam transformasi generik singkatan ke kata-kata penuh, cukup sesuaikan
data
array ...sumber
PHP
sumber