HE COMETH NOT - bir zalgo mücadelesi


25

Bir dize verildiğinde, varsa, onu zalgodan sıyıracak bir program veya işlev yazın.

Zalgo

Bu gönderi için, zalgo, aşağıdaki Unicode aralıklarından herhangi bir karakter olarak tanımlanır:

  • Aksanlı İşaretleri Birleştirme (0300-036F)
  • Genişletilmiş Diakritik İşaretleri Birleştirmek (1AB0–1AFF)
  • Aksanlı İşaretler Ekinin birleştirilmesi (1DC0–1DFF)
  • Sembollerin Aksanlı İşaretlerini Birleştirme (20D0–20FF)
  • Yarım İşaretleri Birleştirme (FE20 – FE2F)

https://en.wikipedia.org/wiki/Combining_character#Unicode_ranges

Giriş

  • Komut satırı argümanları, STDIN veya diliniz tarafından desteklenen herhangi bir standart giriş yöntemi aracılığıyla geçirilebilir
  • Zalgo veya diğer ASCII olmayan karakterler içeren veya içermeyen bir dize olacak

Çıktı

Çıktı, herhangi bir zalgo içermeyen bir dize olmalıdır.

Test Kılıfları

Input -> Output

HE̸͚ͦ ̓C͉Õ̗͕M͙͌͆E̋̃ͥT̠͕͌H̤̯͛ -> HE COMETH
C͉̊od̓e͔͝ ̆G̀̑ͧo͜l͔̯͊f͉͍ -> Code Golf
aaaͧͩa͕̰ȃ̘͕aa̚͢͝aa͗̿͢ -> aaaaaaaaa
ññ        -> ñn
⚡⃤       -> ⚡

puanlama

Bu , bayt cinsinden en kısa cevap kazanır.


3
Dize sadece ASCII ve / veya Zalgo içerecek mi? Veya başka unicode içerebilir mi?
DJMcMayhem

4
Peki ya bu karakterlerin meşru kullanımı? Zalgo, sadece bu karakterler birbirleriyle asla amaçlanmayan şekilde istiflendiklerinde oldukça fazla .
Draco18,

@DJMcMayhem Girdi dizgisinin kaldırılmaması gereken diğer ASCII olmayan karakterleri olabilir.
19’da

1
@totallyhuman Daha genel bir yaklaşım düşünüyordum: "standart" bir karakterden sonra birden fazla olay olursa sıyırma . Bu iyi ama a͕̰soyulur a. (Ayrıca şimdi, emoji dedektörü sayesinde, emojiye diakritik koymak istiyorum… 🤔̘͕̑ pfft, aptalca görünüyor)
Draco18s

2
ASCII çıkışı olmayan bazı test durumları eklemelisiniz.
xnor,

Yanıtlar:


13

Retina , 35 bayt

T`̀-ͯ᪰-᫿᷀-᷿⃐-⃿︠-︯

Çevrimiçi deneyin!

Girişte, mücadelede verilen aralıktaki bütün karakterleri kaldırmanız yeterlidir. Kod elbette süper okunamıyor ancak kod kavramsal olarak T`0-9A-Za-ztüm alfanümerik karakterleri silecek bir şeyden farklı değil .


3
Bana yeterince rakipsiz görünüyor.
Outgolfer Erik,

@EriktheOutgolfer Bilmiyorum, Jelly'in kod noktası aralıklarını sadece karakterleri listelemekten daha verimli üretebileceğini düşünüyorum.
Martin Ender

Aslında yapabileceğini sanmıyorum.
Outgolfer Erik,

Henüz Jelly çözümü olmadığına şaşırdım .
19

@icrieverytim burada , ve daha uzun yırtmak. Ben daha etkili bundan daha codepoints oluşturmak için nasıl çözemedim: P
HyperNeutrino

7

Python 3 , 73 69 bayt

L3viathan sayesinde -4 bayt.

Kendi zorluklarınıza katılıp katılmayacağınızdan emin değiliz ama ... Regex'i ve aslında fikri de çaldı> < doğrudan JS ve Retina cevaplarından.

lambda s:re.sub('[̀-ͯ᪰-᫿᷀-᷿⃐-⃿︠-︯]','',s)
import re

Çevrimiçi deneyin!


1
Normal bir ithalat ifadesi yaparak 4 bayttan tasarruf edin.
L3viathan

Bayt sayısını güncellemeyi unuttun.
xnor

@xnor Huh? Bana doğru geliyor.
tamamen insanlık

@totallyhuman Benim hatam, bu karakterin çok baytlı olduğunu kaçırdım.
xnor

Karakter aralığını Retina'nın cevabından çaldığımı söylemek doğru olur. (Yine de, editörüm zalgoyu da beraberinde kaldırmak istediği için `.)
Neil

4

JavaScript (ES6), 55 bayt

f=
s=>s.replace(/[̀-ͯ᪰-᫿᷀-᷿⃐-⃿︠-︯]/g,'')
<textarea oninput=o.textContent=f(this.value)></textarea><pre id=o>



4

PHP, 67 Bayt

yazmak kadar kısa

<?=preg_replace("#[̀-ͯ᪰-᫿᷀-᷿⃐-⃿︠-︯]#u","",$argn);

Çevrimiçi deneyin!

PHP, 115 Bayt

<?=preg_replace("#[\u{300}-\u{36f}\u{1ab0}-\u{1aff}\u{1dc0}-\u{1dff}\u{20d0}-\u{20ff}\u{fe20}-\u{fe2f}]#u","",$argn);

Çevrimiçi deneyin!

PHP, 35 Bayt

Verilen Testcas'lar için geçerlidir;

<?=preg_replace("#\pM#u","",$argn);

Çevrimiçi deneyin!


@FelixDombek Hayır, sadece belirtilen aralıktaki bütün Markları hiçbir şey ile değiştirmez
Jörg Hülsermann

3

Python 3, 127 118 bayt

Şimdilik sadece basit bir cevap, bakalım ne kadar golf oynanabilir.

lambda y:"".join(chr(x)for x in map(ord,y)if not(767<x<880or 6831<x<6912or 7615<x<7680or 8399<x<8448or 65055<x<65072))

Değişiklikler:

  • Kavrayışların işlevsel şeylerden (-9 bytes) daha kısa olduğunu ne zaman öğreneceğim.

0orbir şey değil, o yüzden düzeltmek zorundasın yoksa yükseltir SyntaxError.
Outgolfer Erik,

2
@EriktheOutgolfer Gerçekten test ettin mi? Ne Python 3 ne de 2'de hata
yapmaz

Ah doğru. Bir süreliğine kafam karıştı.
Outgolfer Erik,


2

APL (Dyalog Unicode) , 43 bayt

'[̀-ͯ᪰-᫿᷀-᷿⃐-⃿︠-︯]'R''

Çevrimiçi deneyin!

PCRE R , hiçbir şeyi olmayan herkesi içeriyor


44 bayt sürümü RegEx veya garip karakter değişmezleri (ve dolayısıyla karakter başına tek bayt) kullanmıyor:

⍞~⎕UCS65055 8399 7615 6831 767+⍳¨16×2 6~⍨⍳7

Çevrimiçi deneyin! ⍳7 1… 7 (1 2 3 4 5 6 7)

2 6~⍨ 2 ve 6 hariç (1 3 4 5 7)

16× 16 ile çarpın (16 48 64 80 112)

⍳¨ 1… her biri (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16, 1 2 3…,… 110 111 112)

+ her listeye ofset ekle (65056 65057 65058…,… 877 878 ​​879)

 enlist (düzleştirmek)

⎕UCS karşılık gelen Unicode karakterine dönüştür

⍞~ metin girişi al ve tüm bu karakterleri kaldır


2

Jöle , 32 bayt

“Żȷ'⁺¦60ƭṖ_WTɦ7Ụ|ṫYɠF’bȷ5r2/FỌḟ@

Çevrimiçi deneyin!

açıklama

“Żȷ'⁺¦60ƭṖ_WTɦ7Ụ|ṫYɠF’bȷ5r2/FỌḟ@  Main link
“Żȷ'⁺¦60ƭṖ_WTɦ7Ụ|ṫYɠF’            Base 250 compressed integer; 768008790683206911076160767908400084476505665071
                      bȷ5         Convert into base 100000; [768, 879, 6832, 6911, 7616, 7679, 8400, 8447, 65056, 65071]
                         r2/      Inclusive range on non-overlapping slices of length 2
                            F     Flatten
                             Ọ    chr; cast to character from codepoints
                              ḟ@  Filter; remove all characters from input that are in the characters generated before

o0 Bu soruyu çözdüğümü fark etmedim lol. Böyle mi b65072ben öyle düşünüyorum? : o
totallyhuman

D: sayısal liste sıkıştırma @icrieverytim evet
HyperNeutrino

jöle kesinlikle en zalgo dilidir. Programı kendi koduyla çalıştırsan ne olur acaba? düzenleme: maalesef hiçbir şey
uzay önemsiz


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.