strings : eliza

Cursussen, tutorials
Plaats hier uw bijdrage.

strings : eliza

Berichtdoor bluatigro » do nov 05, 2009 1:07 pm

dit is n voor beeld wat je allemaal met strings kan doen
met n paar verschillende basic comandoos
Code: Selecteer alles
'dit is een demonstratie van taalhekenning
'blua tigro (c) 2-5-9
DIM a$( 20 ) , b$( 20 ) , zin$( 50 , 3 )
CLS
PRINT "Blua Tigro (C) 1994"
PRINT "presenteert :"
PRINT "Dr. Blua Tigro ."
PRINT "A.I. simulatie van n psychiater ."
print "[ zinnen zonder leetekens aub ]"

maxwoord = 1
WHILE a$( maxwoord - 1 ) <> "="
'spiegeldata inlezen
  READ a$ , b$
  a$( maxwoord ) = a$
  b$( maxwoord ) = b$
  maxwoord = maxwoord + 1
WEND
maxzin = 1
WHILE zin$( maxzin - 1 , 0 ) <> "="
'sleutels en reactie zinnen inlezen
  FOR t = 0 TO 3
    READ z$
    zin$( maxzin , t ) = z$
  NEXT t
  maxzin = maxzin + 1
WEND
zin$ = "qq"
PRINT "Dokter Blua Tigro is aanwezig ."
while zin$ <> ""
  INPUT zin$ 
  z$ = zin$
  a = 0
  zin$ = Lower$( zin$ + " " )
  FOR t = 1 TO maxzin - 1
  'alle sleutels langslopen     
    IF INSTR( zin$ , zin$( t, 0 ) ) <> 0 THEN
    'sleutel gevonden ?
      antwoord$ = zin$( t , INT( RND * 2.99 + 1 ) )
      a = t
    END IF
  NEXT t
  IF a = 0 THEN
  'geen sleutel gevonden ?
    IF mijn$ = "" THEN
    'geen vorig bezit ?
      t = 1
      while word$( zin , t ) <> ""
        t = t + 1
      wend
      IF word$( zin$ , t - 1 ) = "mijn" THEN
      'bezit in zin ?
        mijn$ = word$( zin$ , t ) 'sla bezit op
      END IF
      SELECT CASE INT(RND * 4)
      'reageer als niets is gevonden
        CASE IS = 0
          PRINT "Kunt u daar meer over vertellen ?"
        CASE IS = 1
          PRINT "Dat is zeer interesant ."
        CASE IS = 2
          PRINT "Gaat u daar eens over door ."
        CASE IS = 3
          PRINT "Dat komt vaker voor ."
      END SELECT
      ELSE
      'reageer op laatste bezit en vergeet bezit
        PRINT "Eerder had u het over uw "; mijn$ ; " ."
        PRINT "Kunt u meer over uw "; mijn$ ; " vertelen ?"
        mijn$ = ""
      END IF
    else
      IF RIGHT$( antwoord$ , 1 ) = "=" THEN
      'reactiezin heeft aanhangsel
      antwoord$ = LEFT$( antwoord$ , LEN( antwoord$ ) - 1 )
      'verwijder sleutel van zin
      zin$ = RIGHT$( zin$ , LEN( zin$ ) - LEN( zin$( a , 0 ) ) )
      PRINT antwoord$;
      'plak spiegel worden achter reactiezin
      'te gebruiken voor vertaler
      t = 1
      while word$( zin$ , t ) <> ""
      'alle woorden uit zin
        qq = 0
        FOR e = 0 TO maxwoord
          IF word$( zin$ , t ) = a$( e ) THEN
          'is woord een spiegelwoord ?
            PRINT b$( e ) + " ";
            qq = 1
          END IF
        NEXT e
        IF qq = 0 THEN PRINT word$( zin$ , t ) + " ";
        t = t + 1
      wend
      PRINT "?"
    ELSE
      PRINT antwoord$
    END IF
  end if
wend
print "tot ziens ."
END

'                                  spiegel-data

'het is zeer waarschijnlijk
'dat ik hier wat vergeten ben
'aub uitbreiden .

DATA "ik","u","u","ik","jij","ik"
DATA "mijn","uw","uw","mijn","jouw","mijn"
DATA "ben","bent","bent","ben"
DATA "heb","heeft","heeft","heb"
DATA "ga","gaat" ,"gaat","ga"
DATA "=","="

'                           sleutel en zinnen data

'dit is het interesantste gedeelte
'en voor uitbreiding en verbetering vatbaar
'een sleutel bestaat uit een of meer woorden
'en heeft 3 reactie zinnen .
'als je de reactie zin met = laat eindigen
'plakt het progamma het
'gespiegelde gedeelte erachter
'dan moet de sleutel wel in t begin
'van de zin staan

DATA "?"
DATA "Waarom vraagt u dat ?"
DATA "Weet u dat niet ?"
DATA "Wat denkt u zelf ?"

DATA "natuurlijk"
DATA "Bent u altijd zo zeker ?"
DATA "Weet u dat zeker ?"
DATA "U bent er wel zeker van ."

DATA "computers"
DATA "Bedoelt u mij daar ook mee ?"
DATA "Heeft u dat vaker met computers ?"
DATA "Slaat dat ook op mij ?"

DATA "ik heb"
DATA "Waarom heeft u ="
DATA "Hoelang heeft u al ="
DATA "Heeft u vaker ="

DATA "ik ben"
DATA "Bent u vaak ="
DATA "Waarom bent u ="
DATA "Hoelang bent u al ="

DATA "ik wou dat"
DATA "Maakt het veel uit als ="
DATA "Waarom wilt u dat ="
DATA "Wilt u vaak dat ="

DATA "ik denk dat"
DATA "Twijvelt u er aan dat ="
DATA "Denkt u vaak dat ="
DATA "Waarom denkt u dat ="

DATA "ik wil"
DATA "Waarom wilt u ="
DATA "Wilt u vaak ="
DATA "Hoelang wilt u ="

DATA "ik vind dat"
DATA "Vindt u vaak ="
DATA "Hoelang vindt u ="
DATA "Waarom vindt u ="

DATA "ik haat"
DATA "Haat u vaker ="
DATA "Waarom haat u ="
DATA "Waneer haat u ="

DATA "ik hou van"
DATA "Houdt u veel van ="
DATA "Waarom houdt u van ="
DATA "Houdt u vaker van ="

DATA "=","=","=","="

eliza was orsprongkelijk n programma uit de jaren 60
dat werkte met verschillende onderwerpen in kaartenbakken
de kaartenbak met 'dokter' was t meest populair
er waren zelfs mensen die er serieuse 'gesprekken'
me begonnen
bluatigro
 
Berichten: 306
Geregistreerd: za sep 27, 2008 6:01 pm

Re: strings : eliza

Berichtdoor Gordon » za nov 07, 2009 1:24 pm

Hallo Blautigro,

Telkens als jouw programma geen pasklaar antwoord heeft,
slaat het vast.

Overigens een helder stukje.

Gordon
Avatar gebruiker
Gordon
Site Admin
 
Berichten: 684
Geregistreerd: zo mei 22, 2005 12:50 am

Re: strings : eliza

Berichtdoor bluatigro » zo nov 08, 2009 7:49 pm

alle opdachen in hooft letters
komen uit n qb4.5 listing
daar werkt t wel in

ik zie de fout niet
en de errorcode
snap ik niet

ik heb de liberty versie
alleen met de sleutels getest
ik ging r van uit dat t goed werkte
[ stom maar wel begijpelijk ]
bluatigro
 
Berichten: 306
Geregistreerd: za sep 27, 2008 6:01 pm


Keer terug naar Leren programmeren met Liberty BASIC

Wie is er online

Gebruikers op dit forum: Geen geregistreerde gebruikers. en 1 gast

cron