Viết một kiểm duyệt không rõ ràng D * mn


16

Kiểm duyệt là một công cụ phổ biến được sử dụng trên các interwebs. Nhưng họ thường kiểm duyệt quá nhiều từ này, và do đó làm cho lời nguyền trở nên mơ hồ với người đọc. Và đôi khi họ không kiểm duyệt đủ, vì vậy những lời nói vẫn còn xúc phạm. Nhiệm vụ của bạn là khắc phục điều đó.

Nhiệm vụ của bạn

Viết chương trình / hàm / bất cứ thứ gì có hai danh sách và chuỗi. Danh sách đầu tiên sẽ là từ điển của tất cả các từ trong ngôn ngữ của bạn như : ["hello", "goodbye", "belgium", "offensive", "jumping", "hypercool"]. Phần tiếp theo sẽ là tập hợp con của danh sách đầu tiên chứa tất cả các từ gây khó chịu trong ngôn ngữ : ["belgium", "offensive"]. Các từ trong các danh sách này được đảm bảo chỉ chứa các chữ cái viết thường của bảng chữ cái.

Chuỗi là cụm từ bạn sẽ phải kiểm duyệt. Nó sẽ được tạo từ các từ trong từ điển, cách nhau bởi khoảng trắng:"Goodbye offensive belgium"

Giá trị trả về sẽ là cụm từ đó được kiểm duyệt. Tuy nhiên, bạn phải kiểm duyệt theo một cách nhất định. Cụ thể, đối với mỗi từ trong danh sách tấn công, bạn phải kiểm duyệt càng nhiều chữ cái càng tốt trong khi vẫn hoàn toàn không rõ ràng trong từ điển chính. Vì vậy, ở đây nó sẽ là : Goodbye o******** b******.

Làm rõ

  • Mã của bạn phải diễn giải các từ không phân biệt chữ hoa chữ thường, nhưng trả về với chữ viết hoa ban đầu.
  • Nếu có nhiều câu trả lời tối ưu, hãy chọn bất kỳ câu trả lời nào.
  • Nếu không thể kiểm duyệt rõ ràng, hãy kiểm duyệt một chữ cái có số lượng giải thích ít nhất có thể khác (Nếu có thể nhiều lần, một lần nữa, đó là lựa chọn của bạn).

Các trường hợp thử nghiệm

["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*"

Đây là để mã d * mn ngắn nhất tính theo byte thắng!

PS Bất cứ ai bắt được tài liệu tham khảo với belgium? ; P


Trong lời giải thích của bạn, bạn nói ["hello", "goodbye", "belgium", "offensive"] ["belgium", "offensive"] "Goodbye offensive belgium" -> "Goodbye o******** b******"nhưng trường hợp kiểm tra nói ["hello", "goodbye", "belgium", "offensive"] ["belgium", "offensive"] "Goodbye offensive belgium" -> "Goodbye offensive b******" Trường hợp kiểm tra là sai, đúng không?
Jerry Jeremiah

@JerryJeremiah cố định.
Maltysen

5
Tôi muốn cảm ơn bạn để hạn chế nhận xét như "B * lgium" cho một cái gì đó nghệ thuật.
lịch sử

2
@orlp Tôi đoán câu hỏi của tôi không đủ rõ ràng. "Độc giả" của những tin nhắn bị kiểm duyệt này không biết về sự hiện diện của danh sách kiểm duyệt. Họ chỉ biết chính tả.
Maltysen

1
@Maltysen - chỉ bản thân Zaphod mới đủ trơ tráo để sử dụng một từ như b ****** trong văn bản đơn giản, ngay cả khi giải thích vấn đề. Tôi bị sốc. Bạn chắc chắn không phải là một horo frood!
Alchymist

Câu trả lời:


1

JavaScript ES7, 194 byte

(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` `

Một chức năng rất lớn. Tôi đoán một vài byte có thể được đánh golf nhưng không nhiều trừ khi tôi thay đổi hoàn toàn cách nó hoạt động.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.