Nel popolare (ed essenziale) libro di informatica, Introduzione ai linguaggi formali e agli automi di Peter Linz, viene spesso affermato il seguente linguaggio formale:
principalmente perché questa lingua non può essere elaborata con automi a stati finiti. Questa espressione significa "La lingua L è costituita da tutte le stringhe di" a "seguite da" b ", in cui il numero di" a "e" b è uguale e diverso da zero ".
Sfida
Scrivi un programma / funzione funzionante che ottiene una stringa, contenente solo "a" se "b" , come input e restituisce / genera un valore di verità , dicendo se questa stringa è valida il linguaggio formale L.
Il programma non può utilizzare strumenti di calcolo esterni, inclusi rete, programmi esterni, ecc. Le shell sono un'eccezione a questa regola; Bash, ad esempio, può utilizzare le utilità della riga di comando.
Il programma deve restituire / emettere il risultato in modo "logico", ad esempio: restituendo 10 anziché 0, suono "beep", invio a stdout ecc. Ulteriori informazioni qui.
Si applicano le regole standard per il golf.
Questo è un codice-golf . Vince il codice più breve in byte. In bocca al lupo!
Casi di prova veritieri
"ab"
"aabb"
"aaabbb"
"aaaabbbb"
"aaaaabbbbb"
"aaaaaabbbbbb"
Casi di prova falsi
""
"a"
"b"
"aa"
"ba"
"bb"
"aaa"
"aab"
"aba"
"abb"
"baa"
"bab"
"bba"
"bbb"
"aaaa"
"aaab"
"aaba"
"abaa"
"abab"
"abba"
"abbb"
"baaa"
"baab"
"baba"
"babb"
"bbaa"
"bbab"
"bbba"
"bbbb"
empty string == truthy
ed non-empty string == falsy
essere accettabile?
a^n b^n
o simile, piuttosto che solo il numero di a
s pari al numero di b
s)