Můžete zkusit [url https://chat.openai.com/chat]ChatGPT[/url].
Vytvoř regulární výraz (PCRE kompatibilní), který bude odpovídat přesně 16 znakům - velkým písmenům nebo číslicím. V textu však musí být písmena i číslice, posloupnost 16 znaků nebo 16 písmen regulárnímu výrazu nevyhoví.
^(?=.[A-Z])(?=.[0-9])[A-Z0-9]{16}$
Má to jenom jednu drobnou vadu – ten RE navržený ChatGPT je blbě
Ale ve skutečnosti je problém v tom, že ChatGPT používá Markdown, takže hvězdičky interpretoval ve výstupu jako kurzívu. Po chvilce dohadování RE po částech vysvětlil, a tam už jsou hvězdičky vidět:
Tady je upravený regulární výraz, který bude odpovídat řetězci s přesně 16 znaky, který obsahuje alespoň jedno velké písmeno a jednu číslice:
^(?=.[A-Z])(?=.[0-9])[A-Z0-9]{16}$
(?=.*[A-Z]) znamená, že musí existovat alespoň jedno velké písmeno v řetězci
(?=.*[0-9]) znamená, že musí existovat alespoň jedna číslice v řetězci
[A-Z0-9]{16} znamená, že řetězec musí obsahovat přesně 16 znaků, které mohou být velkými písmeny nebo čísly.
Správný RE, když doplním ty Markdownem ztracené hvězdičky, tedy je:
^(?=.*[A-Z])(?=.*[0-9])[A-Z0-9]{16}$
A to je (také) správně.
Odpověď ChatGPT na upozornění, že mu kvůli Markdownu vypadly hvězdičky:
Je mi líto, že jsem to nezkontroloval. Zde je opravený výraz:
^(?=.[A-Z])(?=.[0-9])[A-Z0-9]{16}$
Tj. znovu kurzíva.
Myslím, že některé diskuse se zdejšími trolly se ukážou jako výborná škola komunikace s umělou inteligencí
Ale jinak je to zajímavé řešení toho RE, to mne nenapadlo. Akorát je potřeba vyluštit tu hádanku s Markdownem…