Göreviniz regex'te derlemek ... ... regex'deki her karakterin yerine geçecek şekilde belirleyerek.
regexes
Regex'ler bunları destekliyor
REGEX = (LITERAL REGEX / GROUP REGEX / STAR REGEX / ALTERNATIVE)
LITERAL = 1 / 0
GROUP = '(' REGEX ')'
STAR = (LITERAL / GROUP) '*'
ALTERNATIVE = '('REGEX ('|' REGEX)*')'
Neden sadece 1 veya 0? Basitleştirme içindir. Bu nedenle regex yalnızca aşağıdaki karakterlere sahiptir:
*()|10
Aşağıdaki gibi yorumlanır:
*
Kleene yıldızı (sol grubu veya değişmez 0 veya daha fazla kez tekrarlayın).|
alternatiftir (sola gelen regex veya sağa regex eşleşirse eşleşir).()
gruplandırıyor.1
karakter 1 ile eşleşir.0
0 karakteriyle eşleşir.
Nasıl derlenir?
Altı kod parçacığını belirtirsiniz: her bir regex karakterini değiştirmek için bir tane. Örneğin, cevabınız:
*
:FSAGFSDVADFS
|
:GSDGSAG
(
:GSDG
)
:GDSIH
1
:RGIHAIGH
0
:GIHEBN
Ardından her bir regex'i kod snippet'iyle değiştirin, yani:
(0|11)*
çevrildi:
GSDGGIHEBNGSDGSAGRGIHAIGHRGIHAIGHGDSIHFSAGFSDVADFS
Yapılması gereken program ne yapmalı?
Programınız:
- Girişi alın.
- Eğer regex bütün girdiyle eşleşiyorsa, gerçek bir değer çıktılar.
- Başka çıktı, sahte bir değer.
Dış giriş 01
, tanımsız davranış olarak kabul edilir. Giriş boş olabilir.
Ek kurallar
- Belirli bir regex karakteri için, ortaya çıkan snippet'in her zaman aynı olması gerekir.
- Daha sonra eklenen hiçbir önek veya sonek karakteri yoktur.
- Regex'in boş olmadığı garantilidir.
puanlama
En düşük kombine snippet kazanır. Dolayısıyla örnek olay için puan şu şekilde hesaplanır:
FSAGFSDVADFS
+ GSDGSAG
+ GSDG
+ GDSIH
+ RGIHAIGH
+GIHEBN
12 + 7 + 4 + 5 + 8 + 6 = 42