Merhabalar arkadaşlar, belki birinizin ödevlerinde veya algoritma, mantık derslerinde yardımcı olur diyerekten burada paylaşıyorum.
Öncelikle pq Sistemi Nedir?
pq sistemi, üç farklı sembolden oluşan basit bir sistemdir: p, q ve - (yani, p harfi, q harfi ve kısa çizgi). Bu üç sembolden sisteme ait olan veya olmayan sembol dizileri oluşturabilirsiniz: ör. p, qq-p veya --p-q.
Bir dize, bir aksiyomsa veya bir aksiyomdan bir kuralla türetilebilen bir durumdaysa sisteme aittir.
pq sistemi aşağıdaki durumda (sonsuz sayıda) aksiyoma sahiptir:
• X'in sıfırdan farklı aynı sayıda kısa çizgiyi temsil ettiği Xp-qX- biçimindeki tüm dizeler sistemin bir parçasıdır.
Ve bu aksiyomlardan yeni diziler üretmek için tek bir kural:
•X, Y ve Z'nin yalnızca kısa çizgiler içeren dizeleri temsil ettiğini varsayalım. XpYqZ sistemin bir parçasıysa, XpY-qZ- de sistemin bir parçasıdır
String'i kontrol eden kod
Öncelikle pq Sistemi Nedir?
pq sistemi, üç farklı sembolden oluşan basit bir sistemdir: p, q ve - (yani, p harfi, q harfi ve kısa çizgi). Bu üç sembolden sisteme ait olan veya olmayan sembol dizileri oluşturabilirsiniz: ör. p, qq-p veya --p-q.
Bir dize, bir aksiyomsa veya bir aksiyomdan bir kuralla türetilebilen bir durumdaysa sisteme aittir.
pq sistemi aşağıdaki durumda (sonsuz sayıda) aksiyoma sahiptir:
• X'in sıfırdan farklı aynı sayıda kısa çizgiyi temsil ettiği Xp-qX- biçimindeki tüm dizeler sistemin bir parçasıdır.
Ve bu aksiyomlardan yeni diziler üretmek için tek bir kural:
•X, Y ve Z'nin yalnızca kısa çizgiler içeren dizeleri temsil ettiğini varsayalım. XpYqZ sistemin bir parçasıysa, XpY-qZ- de sistemin bir parçasıdır
String'i kontrol eden kod
Python:
import re #re kutuphanesini ekler
hyphencounterforward=0 #gerekli degiskenleri tanimliyoruz, boolean tipinde de olabilir
hyphencounterreverse=0
dashnumber=0
theorem=0
hypennumber=0
i=0
j=0
qbefore = 0
pq=input("Enter the string: ") #input
reversepq=pq[::-1] #q harfinin p harfinden once gelmediginden emin olmak ve kisa cizgileri
#saymak icin stringi ters ceviriyoruz
text1 = pq.partition("p")[0] #p'den onceki kisa cizgileri ayiriyoruz
text2 = reversepq.partition("q")[0] #q'dan sonraki kisa cizgileri ayiriyoruz
hyphencounterforward=len(text1) #Kisa cizgilerin sayisini baska degiskinlere atiyoruz (opsiyonel)
hyphencounterreverse=len(text2)
if hyphencounterreverse==hyphencounterforward+1:
dashnumber=1 #Kurala gore q'dan sonraki cizgi sayisinin p'den oncekinden en az bir fazla olmasi gerek
pqorder=pq.replace("-", "") #p'den once q'nun gelip gelmedigini kontrol ediyoruz
if pqorder[0]=="q":
qbefore=1
hyphenbetween = re.search('p(.*)q', pq) #re ile p ve q arasindaki cizgileri ayirip sayisina bakacagiz
hyphennumber=hyphenbetween.group(1) #cunku p ve q arasinda en az bir cizgi olmasi gerek
if len(hyphennumber) >= 1:
hyphennumber=1
dashcheck=pq.replace("q", "") #string icindeki tum cizgileri saymak icin p ve qyu cikartiyoruz
dashcheck=dashcheck.replace("p", "")
startend=hyphencounterforward+hyphencounterreverse
if len(dashcheck)/2==hyphencounterreverse: #q'dan sonraki cizgi sayisi, sistemin geri kalanindaki cizgi sayisina esit olmali
theorem=1
p = "p" in pq #stringde sadece p, q ve - karakterleri bulunmali, bunu kontrol ediyoruz (Onceki satirlara da eklenebilir)
q = "q" in pq
dash= "-" in pq
if p==1 and q==1 and dash==1 and pq[-1] == "-" and pq[0] == "-" and qbefore==0 and dashnumber==1 or theorem==1 and hyphennumber==1:
#Tum gerekli sartlari sagliyorsa bu string sistemin bir parcasidir
print("Bu string sistemin bir parcasidir")
else:
#Bu elementlerden bir tanesi bile eksikse -Teorem haric- bu string sistemin bir parcasi degildir.
print("Bu string sistemin bir parcasi degildir")

