Pazartesi Mini Golf: Her Pazartesi yayınlanan (umarım!) Bir dizi kısa kod golf mücadelesi.
(Üzgünüm, bu biraz geç oldu.)
İnsanların çoğunun Levenshtein mesafesini duyduğuna eminim , iki tel arasındaki mesafeyi hesaplamak için bir algoritma. Eh, bu zorluk anagram uzaklık denilen kendi buluşum * ile benzer bir algoritma uygulamaktır . En büyük fark, karakterlerin sırasının önemli olmamasıdır; bunun yerine, yalnızca bir dizeye veya diğerine özgü karakterler ölçülür.
Meydan okuma
Bu zorluğun amacı iki dizgede geçen ve aralarındaki anagram mesafesini döndüren bir program veya işlev yazmaktır. Bunu yapmanın ana yolu aşağıdaki mantığı kullanmaktır:
- Her iki dizeyi de küçük harfe dönüştürün ve (isteğe bağlı olarak) her birinin karakterini alfabetik olarak sıralayın.
- Dizeler en az bir eşit karakter içeriyorsa da, bu karakterin ilk örneğini her dizeden kaldırın.
- Kalan dizelerin uzunluklarını ekleyin ve sonucu geri verin / verin.
Örnek
Girişler:
Hello, world!
Code golf!
Sonra, daha küçük harflerle sıralanır, bunlar şöyle olur: (JS'nin varsayılan sıralaması;
!,dehllloorw
!cdefgloo
Her iki dizedeki karakterlerin hepsini de kaldırarak bitiriyoruz:
,hllrw
cfg
Böylece, orijinal iki karakter arasındaki anagram mesafesi = 6 + 3 = 9.
ayrıntılar
- Teller herhangi bir makul biçimde alınabilir.
- Dizeler yalnızca yazdırılabilir ASCII'den oluşacaktır.
- Dizelerin kendileri normal boşluklardan başka bir boşluk içermez. (Sekme yok, yeni satır yok, vb.)
- Sonuçlar aynı olduğu sürece bu kesin algoritmayı kullanmanıza gerek yoktur.
Test-vakalar
Giriş 1:
Hello, world!
Code golf!
Çıkış 1:
9
Giriş 2:
12345 This is some text.
.txet emos si sihT 54321
Çıkış 2:
0
Giriş 3:
All unique characters here!
Bdfgjkmopvwxyz?
Çıkış 3:
42
Giriş 4:
This is not exactly like Levenshtein distance,
but you'll notice it is quite similar.
Çıkış 4:
30
Giriş 5:
all lowercase.
ALL UPPERCASE!
Çıkış 5:
8
puanlama
Bu kod-golf , bayt cinsinden geçerli en kısa koddur. Tiebreaker ilk önce son bayt sayısına ulaşan gönderime gidiyor. Kazanan, 12 Ekim Pazartesi günü seçilecek. İyi şanslar!
Düzenleme: Kazanan, @isaacg, 12 bayt şaşırtıcı için Pyth (tekrar) kullanarak tebrikler !
* Bu algoritma başka bir yerde kullanılmışsa ve / veya başka bir isim verilmişse, lütfen bana bildirin! 20 dakikalık bir aramayla bulamadım.