Eşit uzunlukta iki tel arasındaki Hamming mesafesi , karşılık gelen karakterlerin farklı olduğu konumların sayısıdır. Dizeler eşit uzunlukta değilse, Hamming mesafesi tanımlanmamıştır.
Meydan okuma
Aşağıda açıklanan kurallara göre gerektiği gibi doldurulmuş bir dizeler listesinden tüm dize çiftleri arasındaki en büyük Hamming mesafesini bulan bir program veya işlev yazın.
Karakterler içeriden olacaktır a-zA-Z0-9
.
Dizelerin uzunluğu eşit olmayabilir, bu nedenle her karşılaştırma için daha kısa dizenin aşağıdaki gibi doldurulması gerekir:
- dizeyi baştan itibaren gerekli uzunlukta eşleştirmek için gerektiği kadar sarın
- Her bir tek kaydırma (1, 3, 5, vb.) harflerinin durumlarını değiştirin
- kaydırırken işleri
a-zA-Z
değişmeden bırakmak
Örneğin, 5 karakter dizesini ab9Cd
18 karakterle sonuçlanacak şekilde doldurmanız gerektiğini varsayalım . Sonuç olarak:
ab9CdAB9cDab9CdAB9
^^^^^ ^^^
ile ^
vaka değişikliklere vurgu için 1. ve 3. tamamladı altına ekledi.
Giriş çıkış
Giriş / çıkış formatı esnektir. Girişin en az iki dizesi olduğunu ve tüm dizelerin en az bir karakteri olacağını varsayabilirsiniz.
Çıktı bir tamsayıdır.
kurallar
Bu kod golfü . Standart kurallar geçerlidir.
Test senaryoları
[ "a", "b" ] => 1
[ "a", "b", "c" ] => 1
[ "a", "a", "c" ] => 1
[ "abc", "abcd" ] => 1
[ "abc12D5", "abC34d3", "ABC14dabc23DAbC89d"] => 17
[ "a", "Aaa", "AaaA", "aAaAa", "aaaaaaaaaaaaaa", "AAaAA", "aAa" ] => 8
["AacaAc", "Aab"] => 2
Referans uygulaması
Kodunuzla deneyebileceğiniz diğer örnekleri karşılaştırmak için burada deneyebileceğiniz (tamamen ungolfed) R koduyla örnekleri test ettim .
["AacaAc", "Aab"] => 2
. Jelly cevabım için amaçlanan bir golf bu durumda başarısız olacaktı, ama diğerlerini geçecekti.