Dengan menggunakan bahasa pilihan Anda, tulislah fungsi / skrip / program terpendek yang dapat Anda identifikasi dengan kata dengan jumlah huruf unik terbanyak dalam sebuah teks.
- Huruf unik harus menyertakan karakter berbeda menggunakan pengkodean UTF-8 .
- Versi huruf besar dan kecil dari karakter yang sama berbeda dan berbeda;
'a' != 'A'
- Versi huruf besar dan kecil dari karakter yang sama berbeda dan berbeda;
- Kata-kata terikat oleh karakter spasi putih apa pun.
- 'Letters' adalah simbol apa saja yang dapat diwakili oleh satu karakter unicode.
- Dokumen teks harus dibaca oleh kode Anda - tidak ada preloading / hard-coding dari teks yang diizinkan.
- Outputnya harus kata, diikuti oleh jumlah huruf unik.
llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch - 18
- Setiap pembatas / jarak antara dua nilai terserah Anda, asalkan setidaknya ada satu karakter untuk memisahkannya.
- Jika ada lebih dari satu kata dengan jumlah tertinggi, cetak semua kata untuk hitungan itu, dengan satu pembatas baris baru.
ucapan terimakasih - 16 pseudolamellibranchiate - 16
- Ini kode golf, jadi kode terpendek menang.
Jawaban pada Bahasa Inggris ini. Saya terinspirasi untuk menciptakan tantangan ini. Contohnya hanya menggunakan daftar kata , tetapi teks apa pun harus dapat diproses.
LlanfairPG
adalah kata Welsh dan berisi huruf-huruf dari alfabet Welsh -ll
danch
keduanya merupakan huruf tunggal dalam bahasa Welsh.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()_+~`<>/\\?'";:{}[],.
apakah "kata" yang valid?Jawaban:
APL (56)
Ini adalah fungsi (pertanyaan mengatakan itu diizinkan) yang mengambil string dan mengembalikan matriks kata dan panjang yang unik.
Pemakaian:
Penjelasan:
⎕ML←3
: setel level migrasi ke 3 (jadi itu⊂
partisi, bukan diapit)W←⍵⊂⍨⍵≠' '
: store diW
string yang diberikan, di mana setiap partisi terdiri dari karakter non-spasi.⍙←⍒∆←↑∘⍴∘∪¨W
: dapatkan jumlah (⍴
)∪
elemen unik ( ) di setiap bagian (¨
) dariW
, dan simpan ini di∆
, lalu dapatkan urutan sortir saat diurutkan ke bawah pada this (⍒
) dan simpan di⍙
.∆[⍙
...]
: urutkan∆
berdasarkan⍙
, jadi sekarang kami memiliki urutan yang unik.∆∘.=∆←∆
: simpan yang disortir∆
kembali∆
, dan lihat elemen mana∆
yang sama.↑+/
: jumlah baris (sekarang kita tahu berapa banyak elemen yang sama dengan setiap elemen) dan kemudian mengambil item pertama (sekarang kita tahu berapa banyak elemen yang sama dengan elemen pertama, yaitu berapa banyak kata yang diikat untuk tempat pertama.)W[⍙]⍴⍨
: urutkanW
berdasarkan⍙
, dan ambil N pertama, di mana N adalah angka yang baru saja kita hitung.{⍵,⍴∪⍵}¨
: untuk masing-masing ini, dapatkan kata itu sendiri dan jumlah karakter unik dalam kata tersebut⊃
: format sebagai matrikssumber
Mathematica
96115Sunting : kode sekarang menemukan semua kata dari jumlah karakter maksimum. Saya menolak untuk memperlakukan koma sebagai karakter kata.
Contohnya
atau
atau
Contoh yang lebih panjang
Kejutan: Kata paling "unik" dalam Deklarasi Kemerdekaan juga kata paling unik di Alice in Wonderland !
sumber
Python 2 (110 (98 menggunakan input file))
.
Hal-hal yang perlu ditingkatkan: pencetakan (33 karakter)
Tanda baca dianggap huruf.
sumber
NameError: global name 'r' is not defined
. Setelah menambahkan tanda kutip tunggal sekitarr
:AttributeError: 'file' object has no attribute 'split'
. Python 3.3.0:SyntaxError: invalid syntax 'print i,c'
.Ini codegolf pertama saya, saya sangat bersemangat :) Juga itu berarti mungkin tidak ada gunanya.
Groovy
127117112 112105Sunting: Karena fungsi tampaknya diizinkan di sini adalah satu dari 105. Saya juga mengganti nama variabel untuk membuat kolom pertama membaca ACDC, karena itu penting dalam segala jenis kode sumber:
Anda akan menyebutnya seperti itu:
Tanpa fungsi menggunakan input standar di 112 :
Input: Lorem Ipsum Teks dari primo
Semua hasil skrip:
Adakah yang punya ide bagaimana membuatnya lebih asyik?
sumber
Perl 78 byte
Menafsirkan batasan "Dokumen teks harus dibaca oleh kode Anda" untuk berarti bahwa opsi baris perintah yang membaca dan mengurai input tidak diperbolehkan. Seperti halnya solusi PHP di bawah ini, hanya karakter 10 dan 32 yang dianggap sebagai pembatas kata. Input dan output juga diambil dengan cara yang sama.
PHP 128 byte
Satu-satunya karakter yang dianggap pembatas kata adalah characer 10, dan karakter 32. Selebihnya, termasuk tanda baca, dianggap sebagai bagian dari kata.
Ini berisi beberapa karakter biner, yang menyimpan tanda kutip, tetapi sebagai hasilnya perlu disimpan dengan pengkodean ANSI agar berfungsi dengan benar. Atau, versi ini dapat digunakan, yang lebih berat 3 byte:
Sampel I / O:
input 1:
output 1:
input 2:
output 2:
sumber
incredulity
memiliki 10 huruf unik, bukan 11.GoRuby 2.0.0 - 66 karakter
Solusi di bawah ini sebenarnya tidak menemukan semua kecocokan tetapi hanya satu. Ini versi terakhir saya:
Contoh:
menghasilkan:
GoRuby 2.0.0 - 29 karakter (format output tidak tepat)
Harapkan input dari stdin. Format outputnya sedikit berbeda. Sebagai contoh:
GoRuby 2.0.0 -
4240 karaktermengharapkan input dari stdin
Ruby 1.9.3 - 6965 karaktermengharapkan input dari stdin (sama seperti di atas, tetapi tanpa singkatan GoRuby)
sumber
Javascript
163 155 152162 byteIni adalah tentang sesingkat yang saya bisa mendapatkannya:
Dalam versi ini
/\s/
memisahkan kata-kata berdasarkan spasi, jadi itu termasuk tanda baca, koma, titik, dll sebagai bagian dari kata. Ini mudah diubah/\b/
menjadi tidak termasuk mereka.Saya akan melihat apa yang bisa saya lakukan dengan for-loop bukan forEaches sedikit.
I / O:
sumber
In the event more than one word exists with the highest count, print all words for that count, **with one new line delimiting**.
Scala 129 chars:
sumber
R - 106 karakter
Sebagai fungsi dengan teks input sebagai parameter:
Dan beberapa contoh:
Atau R - 100 karakter
Sebagai fungsi dengan jalur ke file teks sebagai parameter:
Pemakaian:
sumber
Python
176168sumber
Python3 119
Membaca dari sebuah file yang bernama
a
.Diuji dengan teks input dari @primo:
sumber
VBScript - 430 / VBA - 420
VBScript:
VBA:
sumber