Anda harus menulis program atau fungsi yang menentukan bahasa kata yang diberikan.
Tugasnya adalah mengenali beberapa dari 5000 kata yang paling umum dalam 4 bahasa:
- Inggris
- Jerman
- Italia
- Hongaria
Daftar kata dapat ditemukan di repositori GitHub ini.
Kamu adalah diizinkan untuk membuat kesalahan dalam 40% dari kasus uji yang disediakan . Yaitu Anda dapat salah mengkategorikan 8000 dari 20.000 input.
Detail
- Daftar hanya berisi kata-kata dengan huruf kecil
a-z
jadi misalnyawon't
danmöchte
tidak termasuk. - Beberapa kata muncul dalam berbagai bahasa yang berarti kode Anda tidak selalu dapat menebak hasil yang diharapkan dengan benar.
- Untuk kenyamanan Anda dapat mengunduh semua kotak uji sebagai satu daftar . Di setiap baris angka menunjukkan bahasa kata. (
1
untuk bahasa Inggris,2
untuk Jerman,3
untuk Italia dan4
untuk Hongaria.) - Celah standar tidak diijinkan.
- Menggunakan kata mencantumkan data serupa kami yang disediakan oleh bahasa pemrograman Anda dilarang.
Memasukkan
- String yang hanya berisi huruf Inggris (az) kecil.
- Mengejar baris baru adalah opsional.
Keluaran
- Anda dapat mengategorikan kata-kata dengan memberikan output yang berbeda dan konsisten (selalu sama) untuk setiap bahasa. (Misalnya
1
untuk Bahasa Inggris,2
untuk Bahasa Jerman,3
untuk Bahasa Italia dan4
untuk Bahasa Hongaria.)
Ini adalah kode golf sehingga program atau fungsi terpendek menang.
Pertanyaan terkait kode golf: Apakah ini sebuah kata?
Daftar kata diambil dari wiktionary.org dan 101languages.net.
code-golf
natural-language
word
classification
randomra
sumber
sumber
all_languages
file termasuk puluhan kata dikapitalisasi (Mr
,Gutenberg
, dll) dan non-kata "" (string kosong) dan "]] | -". Saya menganggap tidak apa-apa untuk mengurangi yang pertama dan menghapus yang terakhir?Jawaban:
Retina , 51 byte
Saya datang dengan regex dan @ MartinBüttner melakukan konversi ke / golf di Retina jadi ... hore untuk upaya tim?
Pemetaannya adalah
1 -> Italian, 2 -> German, (empty) -> Hungarian, 4 -> English
, dengan jumlah yang diklasifikasikan dalam setiap kategori4506 + 1852 + 2092 + 3560 = 12010
.Cobalah online! | Versi multiline yang dimodifikasi
Penjelasan
Pertama, setara dengan Python adalah seperti ini:
Mari saya hanya mengatakan bahwa
o$
adalah sangat baik indikator yang dari bahasa Italia.Versi Retina serupa, dengan pasangan garis membentuk tahap penggantian. Misalnya, dua baris pertama
mengganti kecocokan dari baris pertama dengan isi baris kedua.
Tiga baris berikutnya melakukan hal yang sama, tetapi menggunakan mode anti-grep Retina - anti-grep (ditentukan dengan
A`
) menghapus baris jika cocok dengan regex yang diberikan, dan dua baris berikut adalah penggantian dari baris kosong ke output yang diinginkan.Baris berikut menggunakan anti-grep lagi, tetapi tidak menggantikan baris kosong, memberikan output tetap untuk Hongaria.
Akhirnya, dua baris terakhir
menggantikan baris non-kosong dengan
4
. Semua pergantian hanya dapat terjadi jika tidak ada pergantian sebelumnya diaktifkan, mensimulasikanif/else if
rantai.sumber
LabVIEW, 29 Primview LabVIEW Primview dan 148,950 Bytes
siklus melalui bahasa dan menempatkan iterator ke dalam array jika kata itu ada. Ini akan diperiksa oleh loop dalam, memilih garis h dan melakukan
=
. Dalam LabVIEW, itu hanya memberikan kebenaran jika String sama persis.Sekarang ambil elemen pertama dari array output sehingga bahasa Inggris mengambil alih sisanya.
Output untuk saat ini adalah
0
untuk bahasa Inggris,1
untuk Jerman,2
untuk Italia dan3
untuk Hongaria.sumber
Java, 3416 byte, 62%
ini solusi saya, saya menganalisis daftar kata-kata yang diberikan dan menemukan 60 bigrams dan trigram yang paling umum untuk setiap bahasa. Sekarang saya memeriksa n-gram saya terhadap kata, dan memilih bahasa dengan n-gram terbanyak dalam kata.
dan ini adalah testcase saya
sumber