Web'deki en büyük forum olan postcount ++ denilen yeni bir forum oyunu yapmaya karar verdi. Bu oyunda amaç, kelimeyi yayınlamaktır, ancak kelimenin bir harf eklenmesi, kaldırılması veya değiştirilmesi gerekir. Patronunuz, daha akıllı forum oyunlarına sahip daha akıllı bir forumu olan ve rekabeti yok etmek isteyen şirket için çalışırken, kelimeyi alan bir program ve UNIX sözlüğünü yazmanızı istedi (hey, bu sizin patronunuz, yapma onunla tartış, işinden zaten çok para alıyorsun).
Programınız iki argüman alacak, kelime ve sözlük. Programı yöneten kullanıcı (evet, bir kullanıcı, şirketinizin botları çalıştırmak için kaynakları yok) mükemmel olmadığından, her ikisinde de durumu normalleştirmelisiniz. Sözlükteki sözcükler ASCII harfleri (hem büyük hem de küçük harf olabilir, ancak karşılaştırma sırasında göz ardı edilmelidir), tire, kesme işareti ve ortada ardışık olmayan boşluklar içerebilir. 78 karakterden uzun olmayacaklar. Manuel olarak kelimeleri düşünen insanların eğlencesini kırmak için oyunda kabul edilecek kelimelerin listesini çıkarmalısınız.
Bu, benzer kelimeleri kontrol ederek beklenen programınıza bir örnektir golf
.
> ./similar golf /usr/share/dict/words
Goff
Wolf
gold
golfs
goof
gulf
wolf
/usr/share/dict/words
Her sonra satır sonu ile kelimelerin bir listesidir. Örneğin, fgets () ile bunu kolayca okuyabilirsiniz.
Çalıştığınız şirketin çok fazla yumruk kartı yok (evet, 2014 ve hala delikli kart kullanıyorlar), bu yüzden onları boşa harcamayın. Mümkün olduğunca kısa bir program yazın. Oh, ve sizden Levenshtein mesafesinin yerleşik veya harici uygulamalarını veya benzer bir algoritmayı kullanmamanız istendi. Burada ya da arkada, satıcının dile yerleştirdiği bir şey var (bunların kanıtı yok, ancak patronunuzla tartışmayın). Yani mesafe istiyorsanız, bunu kendiniz uygulamak zorunda kalacaksınız.
Herhangi bir dili kullanmakta özgürsünüz. Delikli kartlarda bile, şirket Cobol Ruby veya Haskell gibi modern programlama dillerinin çoğuna veya istediğiniz her şeye erişebilir . Dizgi manipülasyonu için iyi olduğunu düşünüyorsanız, GolfScript bile var (bilmiyorum, belki ...).
Kazanan benden 15 itibar puanı ve muhtemelen topluluktan birçok puan alır. Diğer iyi cevaplar 10 puan alacak ve topluluktan puan alacak. Puanların değersiz olduğunu duydunuz, ancak büyük olasılıkla 2050'de dolarların yerini alacaklar. Ancak bu doğrulanmadı, ancak yine de puan almak iyi bir fikir.