Perpustakaan untuk menghasilkan dan memanipulasi anagram.
CEIINOSSITTUU | UT TENSI, SIC UIS
Robert Hooke, De Potentia Restitutiva
(membutuhkan '[d4hines/anagramaton.core :as a]);; Library ini membutuhkan kamus sebagai inputnya, berupa string array. Berikut ini contohnya.(kata-kata def (str/split (slurp "/usr/share/dict/words") #"n"));; Selanjutnya kita perlu melakukan beberapa pra-pemrosesan pada kamus (def word-map (a/dict->word-map word));; Sekarang Anda dapat mulai membentuk anagram!(a/anagrams word-map "read") => #{["Sayang"] ["Berani"] ["Membaca"] ["A" "Merah"] ["Iklan" "Ulang"]}
Peneliti psikologi sedang menyelidiki kemampuan subjek untuk memecahkan anagram. Oleh karena itu, mereka memerlukan cara untuk menghasilkan dan memverifikasi solusi anagram.
Untuk tujuan proyek ini, definisi berikut berlaku:
Kata: Salah satu kumpulan kata Unix standar.
Anagram: kata atau rangkaian kata yang dibentuk dengan menyusun ulang huruf-huruf dari rangkaian lain, seperti kata-kata kasar merayap , dibentuk dari tukang kayu .
Puzzle Anagram: string yang bukan berupa kata melainkan anagram.
Solusi Anagram: sebuah kata yang terbuat dari huruf-huruf yang sama dari anagram tertentu.
Anagram yang Tidak Dapat Dipecahkan: string yang bukan merupakan kata atau anagram (sedikit keliru, ya?).
Solusinya harus:
Jadilah perpustakaan clojure...
Itu bisa menghasilkan teka-teki anagram..
Dengan tingkat kesulitan yang berbeda-beda...
Dan verifikasi bahwa kata tertentu adalah solusi untuk anagram tertentu...
Meskipun cukup cepat untuk digunakan secara interaktif di REPL.
Layanan Wordsmith menampilkan sejumlah tombol yang dapat Anda putar untuk membuat anagram yang hebat. Hal ini luar biasa. Jadi tergoda untuk membuat perpustakaan klien untuk api mereka dan selesai...
https://en.wikipedia.org/wiki/Scrabble_letter_distributions Siapa sangka
http://norvig.com/mayzner.html - Penjelasan yang sangat bagus, pembaruan pada tabel bigram https://stackoverflow.com/a/12477976 - algoritma dasar untuk menemukan anagram kata tunggal http://pi.math.cornell.edu /~mec/2003-2004/cryptography/subs/digraphs.html - Tabel Bigram yang saya gunakan https://web.stanford.edu/class/cs9/sample_probs/Anagrams.pdf - penjelasan algoritma yang bagus http://www.ssynth.co.uk/~gay/anagabout.html - implementasi, tetapi dengan detail yang jelek
https://stackoverflow.com/a/881367 - inspirasi
Terima kasih kepada @seancorfield, @dpsutton, dan @porkostomus atas bantuannya dengan algoritma anagram parsial!
Apakah kita akan membahas frasa Anagram (anagram multikata)?
Setiap definisi yang saya baca sejauh ini mendefinisikan anagram sebagai "kata, frasa , atau nama". Meskipun saya tidak tertarik dengan kompleksitas tambahan yang akan ditambahkan oleh anagram multi-kata (lebih besarnya), menurut saya anagram tersebut harus ditangani agar tetap sesuai dengan masalahnya.
Apa yang akan kita lakukan untuk mengoptimalkan kecepatan?
Sesedikit mungkin. Pengoptimalan prematur dan sebagainya.
Bagaimana kita mengukur "kesulitan"?
Lihat bagian selanjutnya.
Bagaimana cara mengukur tingkat kesulitan anagram? Ternyata hal ini menjadi bahan penelitian dan perdebatan akademis.
Inilah ringkasan singkat dan kotor dari penelitian saya sejauh ini:
Mayzner dan Tresselt tampaknya merupakan pihak yang berwenang dalam sejarah mengenai masalah ini, dan dikutip oleh banyak penelitian seperti ini.
Mereka memiliki banyak sekali penelitian yang meneliti efek dari berbagai penelitian, misalnya penelitian ini.
Banyak hal yang terlintas di kepala saya, tetapi tampaknya frekuensi bigram adalah salah satunya