Rastgele kelimeler üretmenin birçok yolu vardır. Bir setten rastgele heceler alabilir , ünsüzler ve ünlüler arasında dönüşümlü olarak n-tuples, muhtemelen sinir ağları (ne yapamazlar?) Kullanabilirsiniz . Bu zorluğun temel aldığı yöntem çok kötü . Rastgele kelimeler üretmek için bir Markov zinciri kullanır. Eğer Markov zincirlerini biliyorsanız, muhtemelen bu yöntemin neden bu kadar korkunç olduğunu biliyorsunuzdur.
Markov zincirleri hakkında okumak istiyorsanız, buraya tıklayın .
Programınız bir veya daha fazla kelime girecek ve ağırlıklı bir Markov zinciri yöntemiyle tek bir rastgele kelime oluşturacaktır. Bu muhtemelen benden başka kimseye mantıklı olmadığından, Markov zincirinin bir resminin girişi ile kullanılmasıyla bir açıklama abba
:
(Tüm kenar ağırlıkları tüm resimler için aynıdır) Programınız, giriş metnine dayalı olarak yolu bir Markov zincirinden çıkarır. Gördüğünüz gibi, çıkacağı 1/2 şans a
, 1/8 şans aba
, 1/16 şans abba
, 1/32 şans ababa
vb. Var .
Markov zincirlerinden bazıları:
yabba dabba doo
wolfram
supercalifragilisticexpialidocious
Daha fazla örnek isterseniz, kullanmak bu . (Üzerinde çok çalıştım)
Meydan okuma ayrıntıları:
- Giriş, dizelerin listesi olarak veya boşluk, virgül veya satırsonu ile ayrılmış dize olarak alınabilir
- Tüm kelimelerin noktalama işareti olmadan tamamen küçük harf olacağını varsayabilirsiniz (ASCII 97-122)
- Bir program veya işlev yazabilirsiniz
- Test etmek için muhtemelen örnekleri girebilir ve tüm girişlerin Markov zincirleriyle aynı hizada olup olmadığını görebilirsiniz.
Bu kod golf, programınız bayt cinsinden puanlanır.
Bunun herhangi bir kısmının belirsiz olup olmadığını bana bildirin ve daha anlamlı hale getirmeye çalışacağım.
b
bir çift üretemez böylece b
. Üstelik sen ulaştıktan sonra bir b
o kadar mümkün görünmüyor start
diğer kelimeleri üretmek için geri dön ). İhtiyaçların ne olduğunu açıklığa kavuşturmak gerektiğine inanıyorum ...
yabba dabba doo
kaza. En kısa sürede düzeltirim. Başlamak için geri dönememeye gelince, belirli bir kelime kümesinden yalnızca bir kelime üretersiniz. Bu açıklığa kavuşuyor mu?