Escreva um programa ou função que, dada uma string, retire o zalgo, se houver algum.
Zalgo
Para esta postagem, zalgo é definido como qualquer caractere dos seguintes intervalos Unicode:
- Combinação de marcas diacríticas (0300-036F)
- Combinação de marcas diacríticas estendidas (1AB0–1AFF)
- Suplemento Combinando Marcas Diacríticas (1DC0–1DFF)
- Combinação de marcas diacríticas para símbolos (20D0–20FF)
- Combinando meias marcas (FE20 – FE2F)
https://en.wikipedia.org/wiki/Combining_character#Unicode_ranges
Entrada
- Pode ser transmitido por meio de argumentos da linha de comando, STDIN ou qualquer outro método padrão de entrada suportado pelo seu idioma
- Será uma sequência que pode ou não conter zalgo ou outros caracteres não ASCII
Saída
A saída deve ser uma sequência que não contenha zalgo.
Casos de teste
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
⚡⃤ -> ⚡
Pontuação
Como esse é o código-golfe , a resposta mais curta em bytes vence.
a͕
bom, masa͕̰
é despojadoa
. (Também agora, graças ao detector emoji, eu quero colocar diacríticos no emoji ... 🤔̘͕̑ pfft, que parece bobo)Respostas:
Retina , 35 bytes
Experimente online!
Simplesmente remove todos os caracteres nos intervalos indicados no desafio da entrada. O código é super ilegível, é claro, mas conceitualmente não é diferente de algo
T`0-9A-Za-z
que excluiria todos os caracteres alfanuméricos.fonte
Python 3 ,
7369 bytes-4 bytes graças ao L3viathan.
Não tenho certeza se participar do seu próprio desafio está ok ou não, mas ... Roubei o regex
e também a idéia, essencialmente> <direto das respostas JS e Retina.Experimente online!
fonte
`
.)JavaScript (ES6), 55 bytes
fonte
Japonês , 37 bytes
Experimente online!
fonte
PHP, 67 bytes
mais curto quanto a gravação
Experimente online!
PHP, 115 bytes
Experimente online!
PHP, 35 bytes
Válido para os casos de teste fornecidos, ele remove todas as marcas
Experimente online!
fonte
Python 3,
127118 bytesApenas uma resposta direta por enquanto, vamos ver como é jogável.
Changelog:
fonte
0or
não é uma coisa, então você tem que consertar ou aumentaráSyntaxError
.Bash + coreutils, 41
Simplesmente retira caracteres nos intervalos especificados.
Experimente online .
fonte
APL (Dyalog Unicode) , 43 bytes
Experimente online!
PCRE R moran Jr. todos aqueles com nada
Versão de 44 bytes que não usa RegEx ou literais de caracteres estranhos (e, portanto, um único byte por caractere):
Experimente online!
⍳7
1… 7 (1 2 3 4 5 6 7)2 6~⍨
exceto 2 e 6 (1 3 4 5 7)16×
multiplicar por 16 (16 48 64 80 112)⍳¨
1… cada (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16, 1 2 3…,… 110 111 112)+
adicione deslocamento a cada lista (65056 65057 65058…,… 877 878 879)∊
alistar-se (achatar)⎕UCS
converter para o caractere Unicode correspondente⍞~
obter entrada de texto e remover todos esses caracteresfonte
Geléia , 32 bytes
Experimente online!
Explicação
fonte
b65072
que eu acho que é? : oJava 8, 57 bytes
Experimente aqui.
fonte
05AB1E , 32 bytes
Experimente online!
fonte