Meydan okuma
Geçerli bir regex verildiğinde, aynı dizelerle eşleşen ancak tersine çevrilen bir regex verin.
Görev
Bu zorluk en temel regex işlemlerini kullanır: ^
, $
, ?
, +
, *
, []
, {}
, |
. Yakalama grupları ya da o karmaşık şeylerden hiçbiri gibi bir şey yoktur. Özel karakterler kaçabilir.
Örnek Giriş / Çıkış
Not: Geçersiz giriş asla verilmez ve verilen bir giriş için genellikle birden fazla olası cevap vardır!
Input | Sample Output
-----------|-------------
abc | cba
tuv? | v?ut
a(b|c) | (c|b)a
1[23] | [23]1
a([bc]|cd) | (dc|[bc])a
^a[^bc]d$ | ^d[^bc]a$
x[yz]{1,2} | [yz]{1,2}x
p{2} | p{2}
q{7,} | q{7,}
\[c[de] | [de]c\[
ab[c | <output undefined>
a(?bc) | <output undefined>
a[]]bc | <output undefined>
gösteri
Doğru giriş / çıkışları gösteren çalışma demosu . Bunun, gerçek bir cevapta gerekli olmayan girişleri doğrulamak için ek bir mantığı vardır. Tanımlanmamış davranış olarak geçersiz girdiler düşünün.
Ayrıntılı Bilgiler
Basit olması için, tüm özel karakterlerin ya özel anlamları vardır ya da kaçılırlar; yani, [[]
bir karakter aralığı değil [
. Uzunluk aralıkları standart POSIX ERE'lerden gelir; olduğunu, {n}
, {n,}
ve {n,m}
desteklenmektedir. Karakter değişiyor []
ve [^]
destekleniyor. Bu kurallar nedeniyle ve geçersiz bir giriş olmadığından, yalnızca bunların içeriğini doğrudan çıktıya kopyalamanız gerekir. Son olarak, açgözlülük önemli değil, yani tersine çevrilen regex'in önce farklı bir eşleşme bulması önemli değil , sadece aynı dizgiler için bir eşleşme bulması gerekiyor.
puanlama
Bayt cinsinden en küçük program (ağ istekleri gibi hile engelleme) kazanır. Program ya gerçek IO kullanabilir ya da sadece bir fonksiyon tanımlayabilir.
(^a|b)(c$|d)
Yine de bir test durumu gibi bir şey eklemek isteyebilirsiniz .
(a)?(b)+
↦ (b)+(a)?
?
()
Örnekte kullanılan regex işlem listeniz eksik .
?
bağlanacak bir şey yok ./a(?bc)/
Tarayıcının konsoluna yazmaya çalışın .