HE COMETH NOT-ザルゴの挑戦


25

文字列が与えられた場合、zalgoがあればそれを取り除くプログラムまたは関数を作成します。

ザルゴ

この投稿では、zalgoは次のUnicode範囲の任意の文字として定義されます。

  • ダイアクリティカルマークの組み合わせ(0300–036F)
  • 拡張された発音区別符号の組み合わせ(1AB0–1AFF)
  • ダイアクリティカルマークの補足の組み合わせ(1DC0–1DFF)
  • 記号の発音区別符号の組み合わせ(20D0〜20FF)
  • ハーフマークの組み合わせ(FE20–FE2F)

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

入力

  • コマンドライン引数、STDIN、または言語でサポートされている他の標準入力方法を介して渡すことができます
  • zalgoまたはその他の非ASCII文字を含む場合と含まない場合がある文字列になります

出力

出力は、zalgoを含まない文字列でなければなりません。

テストケース

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
⚡⃤       -> ⚡

得点

これは、バイト単位の最短回答が優先されます。


3
文字列にはASCIIおよび/またはZalgoのみが含まれることが保証されていますか?または、他のユニコードを含むことができますか?
DJMcMayhem

4
それらのキャラクターの合法的な使用はどうですか?Zalgoは、それらのキャラクターが意図しない方法で互いに重なり合っている場合にのみ、ほとんどあります。
Draco18s

@DJMcMayhem入力文字列には、削除してはならない他の非ASCII文字が含まれている場合があります。
完全に人間の

1
@totallyhuman私はもっと一般的なアプローチを考えていました。「標準」文字の後に複数が発生した場合にのみストリッピングします。それは結構ですが、a͕̰にはぎ取られaます。(ルックスは愚かなことを今も、絵文字検出器のおかげで、私は、絵文字...🤔̘͕̑pfftに特殊記号を置きたい)
Draco18s

2
非ASCII出力のテストケースを追加する必要があります。
xnor

回答:


13

網膜、35バイト

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

オンラインでお試しください!

チャレンジで指定された範囲内のすべての文字を入力から単に削除します。もちろん、コードは非常に読みにくいですが、コードは概念的にはT`0-9A-Za-zすべての英数字を削除するようなものと違いはありません。


3
私には無敵のようです。
エリックアウトゴルファー

@EriktheOutgolfer知りません。Jellyは、単に文字をリストするよりも効率的にコードポイント範囲を生成できると思います。
マーティンエンダー

実際、私はそれができるとは思いません。
エリックアウトゴルファー

ゼリーの解決策がまだないことに驚いています。
完全に人間の

ここで@icrieverytim をリッピングしてください。P:私はより効果的にこれ以上のコードポイントを生成する方法を考え出したていない
HyperNeutrino

7

Pythonの373の 69バイト

L3viathanのおかげで-4バイト。

あなた自身のチャレンジに参加しても大丈夫かどうかは分かりませんが...正規表現盗み、本質的には同様にアイデアを盗みました> < JSとRetinaの答えから直接。

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

オンラインでお試しください!


1
それを通常のimportステートメントにすることで4バイトを節約します。
L3viathan

バイト数を更新するのを忘れました。
-xnor

@xnorえ?私には正しいようです。
完全に人間の

@totallyhuman私の間違いは、それらの文字がマルチバイトであることを逃しました。
-xnor

まあ、私は網膜の答えからキャラクターの範囲を盗んだと言ってもいいでしょう。(私の編集者が一緒にzalgoを削除したかったため、しかし、注意して`。)
ニール・

4

JavaScript(ES6)、55バイト

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



4

PHP、67バイト

書き出すほど短く

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

オンラインでお試しください!

PHP、115バイト

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

オンラインでお試しください!

PHP、35バイト

指定されたテストケースに対して有効で、すべてのマークを削除します

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

オンラインでお試しください!


@FelixDombekいいえ、それは何も与えられた範囲内でのみすべてのマークを置き換える
イェルクHülsermann

3

Python 3、127 118バイト

とりあえず簡単な答えです。ゴルフがどれだけゴルフできるか見てみましょう。

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))

変更ログ:

  • 理解度が機能的なものよりも短い(-9バイト)ことをいつまで知りますか。

0orものではないので、あなたはそれを修正する必要がありますか、それが発生しSyntaxErrorます。
エリックアウトゴルファー

2
@EriktheOutgolfer実際にテストしましたか?Python 3と2のどちらでもエラーがスローされません。
L3via17年

そうそう。私は少し混乱していました。
エリックアウトゴルファー


2

APL(Dyalog Unicode)、43バイト

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

オンラインでお試しください!

PCRE Rは、これらすべてをゼロで置き換えます


RegExまたは奇妙な文字リテラルを使用しない44バイトバージョン(したがって、文字ごとに1バイト):

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

オンラインでお試しください! ⍳7 1…7(1 2 3 4 5 6 7)

2 6~⍨ 2および6を除く(1 3 4 5 7)

16× 16を掛ける(16 48 64 80 112)

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

+ 各リストにオフセットを追加します(65056 65057 65058…、…877 878 879)

 参加(フラット化)

⎕UCS 対応するUnicode文字に変換します

⍞~ テキスト入力を取得し、そのような文字をすべて削除します


2

ゼリー、32バイト

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

オンラインでお試しください!

説明

“Żȷ'⁺¦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この質問を私が笑ったことに気づかなかった。つまりb65072、私はそれが何を考えて?:o
完全に人間

@icrieverytimはい数値リスト圧縮:D
HyperNeutrino

ゼリーは間違いなく最もザルゴの言語です。独自のコードでプログラムを実行するとどうなりますか?編集:残念ながら何もありません
スペースジャンク


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.