Popüler (ve temel) bilgisayar bilimleri kitabında, Peter Linz'in Biçimsel Dillere ve Otomatlara Giriş , aşağıdaki biçim dili sıklıkla dile getirilmiştir:
temel olarak bu dil sonlu durumlu otomatlarla işlenemediğinden. Bu ifade, "Dil L" nin "a" dizelerinin tamamını, ardından "a" ve "b sayısının eşit ve sıfır olmayan" olduğu anlamına gelir.
Meydan okuma
Yalnızca "a" s ve "b" s içeren bir dizge alan, girdi olarak geri dönen / çıktı veren , bu dizenin biçimsel L geçerli olup olmadığını söyleyen bir çalışma programı / işlevi yazın .
Programınız ağ, harici programlar vb. Dahil olmak üzere harici hesaplama araçlarını kullanamaz. Kabuklar bu kuralın bir istisnasıdır; Örneğin Bash, komut satırı yardımcı programlarını kullanabilir.
Programınız sonucu "mantıksal" bir şekilde döndürmeli / vermelidir, örneğin: 0 yerine 10, "bip" sesi, stdout çıktısı vb .
Standart kod golf kuralları geçerlidir.
Bu bir kod golfü . Bayt cinsinden en kısa kod kazanır. İyi şanslar!
Truthy test durumları
"ab"
"aabb"
"aaabbb"
"aaaabbbb"
"aaaaabbbbb"
"aaaaaabbbbbb"
Sahte test durumları
""
"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
ve non-empty string == falsy
kabul edilebilir?
a^n b^n
, sadece a
s sayısıyla eşit olanların sayısından ziyade bir söz veya benzeri b
)