SORU
24 EKİM 2008, Cuma


Nasıl bir dize kontrol etmek için bir palindrom düzenli ifadeler kullanarak?

Bu cevap mümkün olduğu röportaj bir soruydu

Nasıl bir dize kontrol etmek için bir palindrom düzenli ifadeler kullanarak?

p.s. "How to check if the given string is palindrome?" ve farklı dillerde cevap veriyor, ama düzenli ifadeler kullanan cevap. soru zaten yok

CEVAP
29 EKİM 2008, ÇARŞAMBA


Bu sorunun cevabı "imkansız". Daha spesifik olarak, görüşmeci eğer hesaplama teorisi sınıfında dikkat eğer merak ediyor.

Hesaplama teorisi sınıf sonlu durum makineleri öğrendim. Sonlu durum makinesi düğümler ve kenarlar oluşur. Her kenar sonlu bir alfabenin bir harfi ile açıklamalı. Bir veya daha fazla düğüm" düğüm ve düğüm "düğüm. başlangıç "kabul özel Her harf olarak verilen bir kelime okunur biz traverse makineye verilen kenarı. Biz kabul bir devlet ise o zaman makine" kelime. "kabul eder ki

Düzenli ifade her zaman eşdeğer sonlu durum makinesine çevrilebilir. Ve düzenli ifade olarak aynı kelimeleri kabul eder veya reddeder o gerçek dünyada, bazı regexp dilleri keyfi fonksiyonlar için izin, bu sayılmaz).

İmkansız palindromes kabul eden sonlu durum makinesi kurmak için. Kanıt kolay düğüm, yani dize keyfi büyük bir sayı gerektiren bir dize inşa gerçeklere dayanır

x b^x (örn., bir^ aba, aabaa,,, .... aaabaaa aaaabaaaa)

x x bir kere tekrarlanan bir^. Bu en az x, 'b' x kez geri sayım için bir palindrom olduğunu emin olmalıyız. gördükten sonra düğümler gerektirir

Son olarak, geri orijinal soruya başlarken, bazı sonlu sabit uzunluk daha küçük olan tüm palindromes kabul eden bir düzenli ifade yazabilirsiniz görüşmeci söyleyebilirsin. Eğer orada hiç bir gerçek dünya uygulama gerektirir belirlenmesi palindromes sonra neredeyse kesinlikle vardır keyfi olarak uzun olanlar, böylece bu cevap gösteriyor ki ayırt teorik imkansızlıklar gerçek dünya uygulamaları. Yine de, gerçek regexp oldukça uzun, eşdeğer 4 satırı programı çok daha uzun (okuyucu için kolay egzersiz: palindromes tanımlayan bir program yazmak) olur.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Djbasilio AuToBaSs

    Djbasilio Au

    20 Aralık 2008
  • jeffisthecoolguy

    jeffisthecoo

    17 HAZİRAN 2013
  • TitaniumBackup

    TitaniumBack

    10 EYLÜL 2011