D * mn Belirsiz Sansür Yaz


16

Sansürler, iç ağlarda kullanılan yaygın bir araçtır. Ancak genellikle kelimenin çok fazla sansürlenirler ve böylece lanetlerini okuyucuya belirsiz hale getirirler. Ve bazen yeterince sansürlemiyorlar, bu yüzden kelimeler hala rahatsız edici. Göreviniz bunu düzeltmektir.

Senin görevin

İki liste ve bir dize alan bir program / işlev / ne olursa olsun yazın. İlk liste gibi dildeki tüm kelimelerin sözlük olacaktır: ["hello", "goodbye", "belgium", "offensive", "jumping", "hypercool"]. Bir sonraki tümünü içeren ilk listenin alt küme edilecektir saldırgan dilde kelime: ["belgium", "offensive"]. Bu listelerdeki kelimelerin yalnızca alfabedeki küçük harfleri içermesi garanti edilir.

Dize, sansürlemek zorunda kalacağınız ifadedir. Bu, sözlükten boşluklarla ayrılmış sözcüklerden oluşacaktır:"Goodbye offensive belgium"

Dönüş değeri sansürlenen cümle olacaktır. Ancak, belli bir şekilde sansürlemeniz gerekir. Özellikle, rahatsız edici listedeki her kelime için , ana sözlükte tam olarak açık kalırken mümkün olduğunca çok harf sansürlemeniz gerekir . Yani burada olurdu: Goodbye o******** b******.

Açıklamalar

  • Kodunuzun kelimeleri büyük / küçük harfe duyarlı olmayan şekilde yorumlaması gerekir, ancak ilk büyük harfle geri döner.
  • Birden fazla en uygun cevap varsa, bunlardan herhangi birini seçin.
  • Belirsiz sansür mümkün değilse, mümkün olan en az sayıda başka yorumu olan tek bir harfi sansürleyin (eğer birden fazla mümkünse, yine bu seçimdir).

Test Durumları

["hello", "goodbye", "belgium", "offensive", "jumping", "hypercool"] ["belgium", "offensive"] "Goodbye offensive belgium" -> "Goodbye o******** b******"
["word"] ["word"] "word" -> "****"
["hot", "hat", "bat", "had"] ["hat"] "hat" -> "*at" or "h*t" or "ha*"
https://gist.github.com/deekayen/4148741 ["quart"] "I am a quart" -> "I am a q**r*"

Bu çok kısa bayt kazanır d * mn kodu kazanır!

PS Belçika ile referans yakalayan var mı? P


Açıklamanızda diyorsunuz ["hello", "goodbye", "belgium", "offensive"] ["belgium", "offensive"] "Goodbye offensive belgium" -> "Goodbye o******** b******"ama test senaryoları ["hello", "goodbye", "belgium", "offensive"] ["belgium", "offensive"] "Goodbye offensive belgium" -> "Goodbye offensive b******" Test senaryosu yanlış, doğru mu?
Jerry Jeremiah

@JerryJeremiah düzeltildi.
Maltysen

5
"B * lgium" gibi yorumları sanatsal bir şeyle sınırlandırdığınız için teşekkür ederim.
histokrat

2
@orlp Sanırım sorum yeterince açık değil. Bu sansürlenen iletilerin "okuyucusu", sansür listelerinin varlığının farkında değildir. Onlar sadece ana dikeni biliyorlar.
Maltysen

1
@Maltysen - sadece Zaphod'un kendisi, sorunu açıklarken bile b ****** gibi bir kelimeyi düz metinde kullanacak kadar yüzsüz olurdu. Şok oldum. Kesinlikle bir çember kurbağası değilsin!
Simyacı

Yanıtlar:


1

JavaScript ES7, 194 bayt

(d,c,s,g=(a,b)=>[...b].reduce((z,l,i)=>z+(a[i]==l?1:0),0))=>[for(s of s.split` `)~d.indexOf(s)?[...c[(x=[for(i of c)g(i,s)]).indexOf(Math.max(...x))]].map((l,i)=>l!=s[i]?`*`:l).join``:s].join` `

Çok büyük bir işlev. Tamamen çalışır şekilde değiştirmek sürece birkaç bayt golf olabilir ama çok değil tahmin ediyorum.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.