Bu zorluğun amacı, mümkün olan en az sayıda denemede bir kelimeyi tahmin edebilen bir program yazmaktır. Lingo TV şovunun konseptine dayanmaktadır ( http://en.wikipedia.org/wiki/Lingo_(US_game_show ).
kurallar
Komut satırında ilk argüman olarak geçen bir kelime uzunluğu göz önüne alındığında, oyuncu programı , standart çıktısında bir tahmin ve ardından tek bir karakter yazarak kelimeyi tahmin etmek için beş deneme dener \n
.
Bir tahmin yapıldıktan sonra, program standart girdisinde bir dize alır ve ardından tek bir \n
karakter alır.
Dize, tahmin edilecek kelimeyle aynı uzunluğa sahiptir ve aşağıdaki karakterlerden oluşan bir diziden oluşur:
X
: yani verilen harf tahmin etmek için kelimede mevcut değil?
: bu, verilen harfin tahmin etmek için kelimede bulunduğu, ancak başka bir yerde olduğu anlamına gelirO
: bu, bu konumdaki harfin doğru bir şekilde tahmin edildiği anlamına gelir
Tahmine kelimedir Örneğin, dents
ve program haber gönderir dozes
, bu alacak OXX?O
çünkü d
ve s
doğru olduğundan e
yanlış edilir ve o
ve z
mevcut değildir.
Bir harf tahmin etmek kelimesinde daha tahmin girişim daha mevcut kez ise, bu olacağını dikkatli olun değil olarak işaretlenmesi ?
ve O
tahmin etmek kelimenin harfi tekrarlarını sayısından daha fazla kez. Örneğin, tahmin edilecek kelime cozies
ve program gönderirse tosses
, alınacak XOXXOO
tek bir tane olduğu s
için bu kodu alır.
Kelimeler bir ingilizce kelime listesinden seçilir. Program tarafından gönderilen kelime doğru uzunlukta geçerli bir kelime değilse, girişim otomatik bir hata olarak kabul edilir ve yalnızca X
'döndürülür.
Oynatıcı programı wordlist.txt
, geçerli çalışma dizininde her satırda bir sözcük adı verilen ve içeren bir dosyanın bulunduğunu ve gerektiğinde okunabileceğini varsaymalıdır .
Tahminler yalnızca alfabetik küçük harfli karakterlerden ( [a-z]
) oluşmalıdır .
Program için başka ağ veya dosya işlemlerine izin verilmez.
Oyun yalnızca oluşan bir dize O
döndürüldüğünde veya program 5 deneme yaptıktan ve kelimeyi tahmin edemedikten sonra sona erer .
puanlama
Bir oyunun puanı verilen formülle verilir:
score = 100 * (6 - number_of_attempts)
Dolayısıyla, kelime ilk denemede doğru tahmin edilirse, 500 puan verilir. Son deneme 100 puan değerindedir.
Kelimeyi tahmin etmemek sıfır puan verir.
Çukur
Oyuncu programları, her bir kelime uzunluğu için 4 ila 13 karakter arasında 100 rastgele kelime tahmin etmeye çalışılarak değerlendirilecektir .
Rastgele kelime seçimi önceden yapılacaktır, böylece tüm girişler aynı kelimeleri tahmin etmek zorunda kalacaktır.
Kazanan program ve kabul edilen cevap, en yüksek puana ulaşan program olacaktır.
Programlar, https://github.com/noirotm/lingo adresindeki kod kullanılarak bir Ubuntu sanal makinesinde çalıştırılacaktır . Herhangi bir dilde uygulamalar, bunları derlemek ve / veya çalıştırmak için makul talimatlar sağlandığı sürece kabul edilir.
Git deposunda ruby'de birkaç test uygulaması sağlıyorum, onlardan ilham almaktan çekinmeyin.
Bu soru, meydan okuyucuların girişlerini iyileştirebilmeleri için düzenli olarak yayınlanan cevaplar sıralamasıyla güncellenecektir.
Resmi nihai değerlendirme 1 Temmuz'da yapılacak .
Güncelleme
Girişler artık wordlistN.txt
4 ile 13 arasında N için geçerli kelime uzunluğu için kelime listesini okuma hızını artıracak dosyaların varlığını varsayabilir .
Örneğin, wordlist4.txt
dört harfli kelimelerin wordlist10.txt
tümünü içeren ve on harfli kelimelerin tümünü içeren bir dosya vardır .
İlk tur sonuçları
2014-07-01 tarihinde, aşağıdaki sonuçlarla birlikte üç kayıt gönderildi:
4 5 6 7 8 9 10 11 12 13 Total
./chinese-perl-goth.pl 8100 12400 15700 19100 22100 25800 27900 30600 31300 33600 226600
java Lingo 10600 14600 19500 22200 25500 28100 29000 31600 32700 33500 247300
./edc65 10900 15800 22300 24300 27200 29600 31300 33900 33400 33900 262600
** Rankings **
1: ./edc65 (262600)
2: java Lingo (247300)
3: ./chinese-perl-goth.pl (226600)
Tüm kayıtlar, @ edc65'in C ++ 's girişi olmak üzere, tutarlı bir şekilde kazanan bir performans sergiledi.
Tüm yarışmacılar oldukça harika. Şimdiye kadar @ chinese-perl-goth'u bile yenemedim.
Daha fazla giriş gönderilirse, başka bir değerlendirme yapılacaktır. Daha iyi yapabileceğinizi düşünüyorsanız, mevcut girişler de geliştirilebilir.