SCREEN 12
CLS

luk$ = "                                                                           "
elemsorszamoriz = 7
DIM pal(15): DIM piros(15): DIM zold(15): DIM kek(15)

DIM kerdeskod$(-1 TO 2, -1 TO 2, 0 TO 1, 0 TO 1)
DIM kerdes$(50)

'A kepletmodositaskor sok beszurasi modszer lehetseges, bizonyos esetekben
'tobb, masokban kevesebb. Ez nehezkesen kezelheto felteteles elagazasokkal.

'Az 1. komponens a regi elem nagytipusa
'A  2. komponens az uj  elem nagytipusa
'Nagytipusok: -1 = hatarozatlan vegelem, 0 = rendes vegelem,
'              1 = egyvaltozos fv,       2 = ketvaltozos muvelet.
'Nagytipus eloallitasa: nt = INT(LOG(ABS(tipus(elemsorszam) - .5)) / LOG(10))
'A 3. komponens 0, ha a regi elem 1. utodja nem letezik (0) v. hat.lan (1);
'               1, ha letezik es nem hatarozatlan.
'A 4. komponens 0, ha a regi elem 2. utodja nem letezik (0) v. hat.lan (1);
'               1, ha letezik es nem hatarozatlan.
'E komponensek eloallitasa: SGN(INT(.8 * tipus(hivatk1/2(elemsorszam))))

'A kerdeskod$ betujegyei taroljak az adott esethez tartozo kerdeseket,
'azaz az osszes ide vonatkozo kerdes$ sorszamat. Ha a kerdeskod$ ures,
'akkor nincs kerdes abban az esetben. A kerdesek tartalmaban sok az atfedes,
'mert a felhasznalonak ne kelljen sok gombot nyomkodnia a keplet bovitesekor,
'hanem mindent megoldhasson egy fomenuvel es egy almenuvel (az ittenivel).

'hatarozatlan vegelem csereje
kerdes$(ASC(CHR$(35)) - 34) = "A kivalasztott elem beillesztese?                             "
kerdes$(ASC(CHR$(36)) - 34) = "A kivalasztott fuggveny beillesztese?                         "
kerdes$(ASC(CHR$(37)) - 34) = "A kivalasztott muvelet beillesztese?                          "

kerdeskod$(-1, 0, 0, 0) = CHR$(35)
kerdeskod$(-1, 1, 0, 0) = CHR$(36) + CHR$(60)
kerdeskod$(-1, 2, 0, 0) = CHR$(37) + CHR$(61) + CHR$(62)

'nem hatarozatlan vegelem csereje
kerdes$(ASC(CHR$(38)) - 34) = "Helyettesites ezen elemmel?                                   "
kerdes$(ASC(CHR$(39)) - 34) = "Helyettesites e fuggvennyel?                                  "
kerdes$(ASC(CHR$(40)) - 34) = "Helyettesites e muvelettel?                                   "

kerdeskod$(0, 0, 0, 0) = CHR$(38)
kerdeskod$(0, 1, 0, 0) = CHR$(39) + CHR$(60)
kerdeskod$(0, 2, 0, 0) = CHR$(40) + CHR$(61) + CHR$(62)

'1valt fv. csereje
kerdes$(ASC(CHR$(41)) - 34) = "Helyettesites ezen elemmel?                                   "
kerdes$(ASC(CHR$(42)) - 34) = "Helyettesites ezen elemmel? (a folytatast kitorli!)           "
kerdes$(ASC(CHR$(43)) - 34) = "Helyettesites e fuggvennyel?                                  "
kerdes$(ASC(CHR$(44)) - 34) = "Helyettesites e fuggvennyel + a folytatast kitorli?           "
kerdes$(ASC(CHR$(45)) - 34) = "Helyettesites e fuggvennyel + a folytatast megorzi?           "
kerdes$(ASC(CHR$(46)) - 34) = "Helyettesites e muvelettel?                                   "
kerdes$(ASC(CHR$(47)) - 34) = "Helyettesites e muvelettel + a folytatast kitorli?            "
kerdes$(ASC(CHR$(48)) - 34) = "Helyettesites e muvelettel + a folytatast 1. utodkent megorzi?"
kerdes$(ASC(CHR$(49)) - 34) = "Helyettesites e muvelettel + a folytatast 2. utodkent megorzi?"

kerdeskod$(1, 0, 0, 0) = CHR$(41)
kerdeskod$(1, 0, 0, 1) = CHR$(42)
kerdeskod$(1, 1, 0, 0) = CHR$(43) + CHR$(60)
kerdeskod$(1, 1, 0, 1) = CHR$(44) + CHR$(45) + CHR$(60)
kerdeskod$(1, 2, 0, 0) = CHR$(46) + CHR$(61) + CHR$(62)
kerdeskod$(1, 2, 0, 1) = CHR$(47) + CHR$(48) + CHR$(49) + CHR$(61) + CHR$(62)

'2valt muvelet csereje
kerdes$(ASC(CHR$(50)) - 34) = "Helyettesites ezen elemmel? (a folytatast kitorli!)           "
kerdes$(ASC(CHR$(51)) - 34) = "Helyettesites e fuggvennyel + az 1. folytatast megorzi?       "
kerdes$(ASC(CHR$(52)) - 34) = "Helyettesites e fuggvennyel + a  2. folytatast megorzi?       "
kerdes$(ASC(CHR$(53)) - 34) = "Helyettesites e muvelettel + mindket folytatast megorzi?      "
kerdes$(ASC(CHR$(54)) - 34) = "Helyettesites e muvelettel + a ket folytatast felcsereli?     "
kerdes$(ASC(CHR$(55)) - 34) = "Helyettesites e muvelettel + az 1. folytatast megorzi?        "
kerdes$(ASC(CHR$(56)) - 34) = "Helyettesites e muvelettel + a  2. folytatast megorzi?        "
kerdes$(ASC(CHR$(57)) - 34) = "Helyettesites e muvelettel + az 1. folytatast megorzi + csere?"
kerdes$(ASC(CHR$(58)) - 34) = "Helyettesites e muvelettel + a  2. folytatast megorzi + csere?"
kerdes$(ASC(CHR$(59)) - 34) = "Helyettesites e muvelettel + mindket folytatast kitorli?      "

kerdeskod$(2, 0, 0, 0) = CHR$(41)
kerdeskod$(2, 0, 0, 1) = CHR$(50)
kerdeskod$(2, 0, 1, 0) = CHR$(50)
kerdeskod$(2, 0, 1, 1) = CHR$(50)
kerdeskod$(2, 1, 0, 0) = CHR$(43) + CHR$(60)
kerdeskod$(2, 1, 0, 1) = CHR$(44) + CHR$(52) + CHR$(60)
kerdeskod$(2, 1, 1, 0) = CHR$(44) + CHR$(51) + CHR$(60)
kerdeskod$(2, 1, 1, 1) = CHR$(44) + CHR$(51) + CHR$(52) + CHR$(60)
kerdeskod$(2, 2, 0, 0) = CHR$(46) + CHR$(61) + CHR$(62)
kerdeskod$(2, 2, 0, 1) = CHR$(54) + CHR$(56) + CHR$(58) + CHR$(47) + CHR$(61) + CHR$(62)
kerdeskod$(2, 2, 1, 0) = CHR$(54) + CHR$(55) + CHR$(57) + CHR$(47) + CHR$(61) + CHR$(62)
kerdeskod$(2, 2, 1, 1) = CHR$(53) + CHR$(54) + CHR$(55) + CHR$(56) + CHR$(57) + CHR$(58) + CHR$(59) + CHR$(61) + CHR$(62)

'Hozzairasok
kerdes$(ASC(CHR$(60)) - 34) = "E fuggveny beszurasa a kijelolt mezo ele?                     "
kerdes$(ASC(CHR$(61)) - 34) = "E muvelet beszurasa a kijelolt mezo ele?                      "
kerdes$(ASC(CHR$(62)) - 34) = "E muvelet beszurasa a kijelolt mezo moge?                     "

'torlesek
kerdeskod$(0, -1, 0, 0) = CHR$(63)
kerdeskod$(1, -1, 0, 0) = CHR$(63)
kerdeskod$(2, -1, 0, 0) = CHR$(63)
kerdeskod$(1, -1, 0, 1) = CHR$(64)
kerdeskod$(2, -1, 0, 1) = CHR$(64)
kerdeskod$(2, -1, 1, 0) = CHR$(64)
kerdeskod$(2, -1, 1, 1) = CHR$(64)

kerdes$(ASC(CHR$(63)) - 34) = "Torli a kijelolt mezot?                                       "
kerdes$(ASC(CHR$(64)) - 34) = "Torli a kijelolt mezot es folytatasat?                        "

'kerdes$(ASC("z") - 34) = "A tarolt elem beillesztese a kijelolt mezobe? (A regit torli!)"
'Ez tavlati cel: tudjon kijelolt elemet masolatkent tarolni es beilleszteni.
'2000 elemu tombokkel megoldhato, hogy akar az egesz kepletet masolatkent
'tarolja. Ez esetben a beillesztes utani darabszam nem lehet 1000-nel tobb,
'es egy ideiglenes tombrendszerbe toltse bele, azon megallapitja az
'elemszamot, ha ez 1000 alatt van, csak akkor illeszti be a kepletbe.
'Nem is biztos, hogy a masolast es a beillesztest ezen kerdesrendszerbe
'kellene beiktatni, inkabb kulonallo gombokkal lehetne vezerelni a kepletben
'valo lepegetes kozben.

piros: DATA 6,6,6,4,0,0,0,0,0,0,2,3,4,5,6
zoldd: DATA 0,3,5,6,6,5,5,4,2,0,0,0,0,0,0
kekkk: DATA 0,0,0,0,0,2,4,6,6,6,6,6,6,4,3

sotetites = 10
FOR i = 1 TO 15: READ t: piros(i) = INT(t * sotetites): NEXT
FOR i = 1 TO 15: READ t: zold(i) = INT(t * sotetites): NEXT
FOR i = 1 TO 15: READ t: kek(i) = INT(t * sotetites): NEXT

FOR i = 1 TO 15: pal(i) = 65536 * kek(i) + 256 * zold(i) + piros(i): NEXT

FOR n = 1 TO 15
PALETTE n, pal(n)
NEXT n

vegelemhatterszin = 7
keretszin = 10
hatterszin = 2
lechatarszin = 10
kepkozep = 222
kezdosorszam = 1
vastagsag = 5
mitszurbesorsz = 1
hogyszurbesorsz = 1

DIM szin(255)
szin(ASC("0")) = 0
szin(ASC("1")) = 4
lec1hatterszin = szin(ASC("1"))
szin(ASC("2")) = 14
szin(ASC("3")) = 15
szin(ASC("4")) = 7
szin(ASC("5")) = 5
szin(ASC("6")) = 3
szin(ASC("7")) = 11
szin(ASC("8")) = 13
szin(ASC("9")) = 5
lec2hatterszin = szin(ASC("9"))

DIM cimkeszelesseg(150) AS INTEGER
DIM cimkemagassag(150) AS INTEGER
DIM tipusnev$(150)

DIM cimkeszin(150, 9, 15) AS STRING * 1
' A cimkek szine a takarekossag jegyeben karaktertipusu valtozoban tarolodik.
' Ebbol egy szin(255) nevu tomb segitsegevel lesz majd hasznalhato szin.

RANDOMIZE TIMER
GOSUB adatok

'Ezen allomany vegerol beolvassa a cimkek feliratait, melyeket ott
'pixelenkent taroltunk. Ez a reszleg bovitheto. A cimkek legfeljebb
'15 pont szelesek es 9 pont magasak lehetnek.

tipusdbszam = 0
DIM felhhatotipus(150) AS INTEGER

ujfelirat:
READ kod$
IF kod$ = "vege" THEN GOTO bezar
'Ha nem "vege", akkor ez a "kod" szo.
READ kod
tipusnev$(kod) = kod$
tipusdbszam = tipusdbszam + 1
felhhatotipus(tipusdbszam) = kod

READ szel$
'Ez a "szelesseg" szo.
READ szel
cimkeszelesseg(kod) = szel

READ mag$
'Ez a "magassag" szo.
READ mag
cimkemagassag(kod) = mag

FOR m = 1 TO cimkemagassag(kod)
FOR sz = 1 TO cimkeszelesseg(kod)
READ szam
cimkeszin(kod, m, sz) = RIGHT$(STR$(szam), 1)
NEXT sz
NEXT m
GOTO ujfelirat

bezar:

DIM elemertekvalos(1000) AS LONG
DIM elemertekkepz(1000) AS LONG
' az illeto elem komplex szamerteke

DIM tipus(1000) AS INTEGER

' *** 0-9: vegelemek (amelyek nem hivatkoznak tovabbi elemre)
' 0: meg/mar nem hasznalt elem, melyet tarolaskor atugrik
' 1: hatarozatlan elem, melybe erteket var (mentheto, de nem futtathato)
' 2: konstans (menteskor tarolando)
' 3: felkonstans (az iteracio elejen bemeno z0-ertek)
' 4: bemeno valtozo (az elozo iteracios lepesben kijott z-ertek)

' *** 10-100: egyvaltozos fuggvenyek (a lista bovitheto)
' 11: Arg (a komplex szam argumentuma, azaz iranyszoge)
' 12: Abs (a komplex szam mint vektor hossza)
' 13: Re (Kpx szam valos resze)
' 14: Im (Kpx szam kepzetes resze)
' 15: Cj (Kpx szam konjugaltja)
' 16: Sgn (komponensenkenti elojel)
' 17: Int (komponensenkenti egeszresz)
' 18: Fr (komponensenkenti tortresz)
'
' 21: sin
' 22: cosec (1/sin)
' 23: cos
' 24: sec (1/cos)
' 25: tg
' 26: ctg

' 31: arc sin
' 32: arc cosec
' 33: arc cos
' 34: arc sec
' 35: arc tg
' 36: arc ctg

' 41: exp
' 42: sh
' 43: ch
' 44: th
' 45: cth

' 51: log
' 52: arsh
' 53: arch
' 54: arth
' 55: arcth

'61: z^2
'62: z^3

'65: z^(1/2)
'66: z^(1/3)

' *** 100-tol: ketvaltozos fuggvenyek

' 101: osszeadas
' 102: kivonas
' 103: szorzas
' 104: osztas
' 105: hatvanyozas (z1^z2, ahol mindketto lehet komplex)
' 106: maradek (z1:z2 eseten z2-z2*int(z1:z2), ahol ezek lehetnek tortek is)

' 111: ket szam valos-nagyobbika
' 112: ket szam valos-kisebbike
' 113: ket szam kepzetes-nagyobbika
' 114: ket szam kepzetes-kisebbike
' 115: ket szam hossz-nagyobbika
' 116: ket szam hossz-kisebbike

' 121: ket szam szamtani kozepe
' 122: ket szam mertani kozepe
' 123: ket szam harmonikus kozepe
' 124: ket szam negyzetes kozepe
' ************************************************************

DIM regiremutato(1000) AS INTEGER
DIM ujramutato(1000) AS INTEGER

DIM hivatk2(1000) AS INTEGER
' Megadja az elso bemeno valtozo forrasaul szolgalo elem sorszamat.
' Ha az elemtipus 1 jegyu, akkor nem veszi figyelembe szamolaskor.
' Ha az elemtipus 2 jegyu, akkor csak ezt veszi figyelembe szamolaskor.
' Azert a masodikat, mert az egyvaltozos fvek kiirasa elegansabb, ha a
' valtozojuk a fvszimbolum utan van.

DIM hivatk1(1000) AS INTEGER
' Megadja a masodik bemeno valtozo forrasaul szolgalo elem sorszamat.
' Ha az elemtipus 1 vagy 2 jegyu, akkor nem veszi figyelembe szamolaskor.

DIM visszahivatk(1000) AS INTEGER
' Minden elemnek van pontosan egy ose, kiveve az elsot. Ezt az elemek kezdo-
' pixelenek szamitasakor hasznalja, mert ott minden elem helye attol fugg,
' hol volt az ose. A sorszamok e tekintetben nem igazitanak el.

'tipus(1) = 103
'tipus(2) = 2
'tipus(3) = 104
'tipus(4) = 3
'tipus(5) = 21
'tipus(6) = 4
'hivatk1(1) = 2
'hivatk2(1) = 3
'hivatk1(3) = 4
'hivatk2(3) = 5
'hivatk2(5) = 6
'visszahivatk(1) = 0
'visszahivatk(2) = 1
'visszahivatk(3) = 1
'visszahivatk(4) = 3
'visszahivatk(5) = 3
'visszahivatk(6) = 5
'aktualiselemszam = 6

hivatk1(1) = 2
hivatk2(1) = 10
hivatk2(2) = 3
hivatk1(3) = 9
hivatk2(3) = 4
hivatk1(4) = 5
hivatk2(4) = 8
hivatk1(5) = 7
hivatk2(5) = 6
hivatk2(10) = 11
hivatk1(11) = 13
hivatk2(11) = 12
hivatk1(13) = 14
hivatk2(13) = 15
hivatk2(15) = 16
hivatk1(16) = 17
hivatk2(16) = 18

visszahivatk(1) = 0
visszahivatk(2) = 1
visszahivatk(3) = 2
visszahivatk(4) = 3
visszahivatk(5) = 4
visszahivatk(6) = 5
visszahivatk(7) = 5
visszahivatk(8) = 4
visszahivatk(9) = 3
visszahivatk(10) = 1
visszahivatk(11) = 10
visszahivatk(12) = 11
visszahivatk(13) = 11
visszahivatk(14) = 13
visszahivatk(15) = 13
visszahivatk(16) = 15
visszahivatk(17) = 16
visszahivatk(18) = 16

tipus(1) = 101
tipus(2) = 65
tipus(3) = 102
tipus(4) = 103
tipus(5) = 105
tipus(6) = 2
tipus(7) = 4
tipus(8) = 3
tipus(9) = 2
tipus(10) = 55
tipus(11) = 104
tipus(12) = 5
tipus(13) = 103
tipus(14) = 1
tipus(15) = 23
tipus(16) = 101
tipus(17) = 2
tipus(18) = 6

aktualiselemszam = 18
DIM elemszelesseg(aktualiselemszam) AS INTEGER
DIM elemmagassag(aktualiselemszam) AS INTEGER
' Az adott elem grafikus megjelenitesehez szukseges adat.
' Rekurzivan szamolja ki a vegelemek magassag- es szelessegadataibol.

DIM kezdopixelx(aktualiselemszam) AS INTEGER
DIM kezdopixely(aktualiselemszam) AS INTEGER
'A keplet kiiratasahoz ez is szukseges.

DIM felulrolhanyadik(aktualiselemszam) AS INTEGER
' Megadja, hogy az illeti elem legalabb hany lepesben erheto el a sajat
' (legmagasabb) agbogai felol. Ennek a szamolasban van jelentosege: mindig
' a vegelemeket szamolja ki eloszor, aztan az elsorendueket es igy tovabb.

DIM alulrolhanyadik(aktualiselemszam) AS INTEGER
' Megadja, hogy az illeto elem hany lepesben erheto el a keplet altal
' definialt fa-grafon a kimeno ertek (mint gyoker) felol. Ennek a
' megjelenitesben van szerepe, mert a fuggvenyeket, muveleteket annak
' megfeleloen irja egymas melle vagy ala elhelyezett grafikus cellakba,
' hogy ez a szam paros vagy paratlan. Igy egy ketfelekepp tagozott tablazat
' adodik, melyben a keplet bovitese, modositasa celjabol ugralni lehet.

DIM ideigl(1000) AS INTEGER
'az atrendezeshez

DIM elagazas(1000) AS INTEGER
' A fa-grafban elhelyezkedo elemek tombbe irasakor backtrack-algoritmust
' hajt vegre, es innen fogja tudni, hogy az egyes elagazasokban melyik
' agat vegye sorra a ketto kozul.

lepcsofelulrolhanyadik = 0

sorszamalulrol: ' ***************************************************

FOR n = 1 TO 15
LINE (n * 30, 440)-(n * 30 + 30, 460), n, BF
NEXT n

alulrolhanyadik(1) = 0
FOR elemsorszam = 2 TO aktualiselemszam
alulrolhanyadik(elemsorszam) = 1000
NEXT elemsorszam

ujlepcso2:
FOR elemsorszam = 1 TO aktualiselemszam
'alulrol indul:
IF tipus(elemsorszam) <= 9 THEN GOTO ujelem2
'Ahhoz, hogy ez jol mukodjon, szukseges, hogy minden elem csak a sajat
'sorszamanal nagyobb sorszamu elemekre hivatkozzon mind a keplet
'szerkesztesekor, mind tarolasakor es onnan valo beolvasasakor.
alulrolhanyadik(hivatk2(elemsorszam)) = alulrolhanyadik(elemsorszam) + 1
IF tipus(elemsorszam) <= 99 THEN GOTO ujelem2
alulrolhanyadik(hivatk1(elemsorszam)) = alulrolhanyadik(elemsorszam) + 1
ujelem2: NEXT elemsorszam

sorszamfelulrol: ' ***************************************************

'Kezdetben minden elemet nehezen elerhetonek tuntet fel, nehogy ido elott
'hivatkozni lehessen ra a kiszamolaskor.
FOR elemsorszam = 1 TO aktualiselemszam
felulrolhanyadik(elemsorszam) = 1000
NEXT elemsorszam

ujlepcso:

'Megallapitja, legalabb hanyadik lepesben lehet kiszamolni az illeto elemet.
'Ez lesz a "felulrol kezdve ertelmezett" sorszam.
FOR elemsorszam = 1 TO aktualiselemszam
'ezek a vegelemek:
SELECT CASE tipus(elemsorszam)
CASE IS < 10
'Minden vegelemet (hatarozatlant is) sorra vesz, akar hasznalja a keplet,
'akar nem. A kepletbol kitorolt elemek nem okoznak gondot, mert kiirni ugyis
'csak azokat kell, amelyeket a gyokerelemrol indulo backtrack-algoritmus eler.
IF tipus(elemsorszam) > 0 THEN felulrolhanyadik(elemsorszam) = 0: GOSUB meretetszamol

CASE IS < 100
' Egyvaltozos fv. Ha a hivatkozott elem sorszama eppen a lepcsosorszammal
' egyezik, akkor az illeto elem elemsorszam+1.-rendu lesz.
IF felulrolhanyadik(hivatk2(elemsorszam)) = lepcsofelulrolhanyadik - 1 THEN felulrolhanyadik(elemsorszam) = lepcsofelulrolhanyadik: GOSUB meretetszamol

CASE IS >= 100
' Ketvaltozos fv. Ha valamelyik hivatkozott elem sorszama eppen a
' lepcsosorszammal egyezik, akkor az illeto elem ideiglenesen elemsorszam+1.-
' rendu lesz. Ha a masik hivatkozott elem sorszama egy kesobbi lepcsosor-
' szammal egyezik, akkor atirja az elem sorszamat ezen (uj elemsorszam)+1-re.
IF felulrolhanyadik(hivatk1(elemsorszam)) = lepcsofelulrolhanyadik - 1 OR felulrolhanyadik(hivatk2(elemsorszam)) = lepcsofelulrolhanyadik - 1 THEN felulrolhanyadik(elemsorszam) = lepcsofelulrolhanyadik: GOSUB meretetszamol
END SELECT
NEXT elemsorszam

lepcsofelulrolhanyadik = lepcsofelulrolhanyadik + 1
IF lepcsofelulrolhanyadik = 20 THEN GOTO hakellnyujt
GOTO ujlepcso
'Ez igy meeg igen durva: rovid kepletek eseten foloslegesen dolgozik.
'Backtrack kell.

meretetszamol: ' **************************************************
'Vagy vegelemrol, vagy olyan koztes elemrol ugrik ide, melynek (mindket)
'felso folytatasa mar rendelkezik felso sorszammal, szelesseggel es
'magassaggal. Ezekbol most kiszamolja az illeto elem ket emlitett adatat,
'amelyeket a kiiro rutin hasznalni fog, de az elhelyezes szuksege miatt
'csak akkor, ha mar megvan az osszes elem mindket merete.

SELECT CASE tipus(elemsorszam)
CASE IS <= 9
'vegelem

elemszelesseg(elemsorszam) = cimkeszelesseg(tipus(elemsorszam))
elemmagassag(elemsorszam) = cimkemagassag(tipus(elemsorszam))

CASE IS <= 99
'egyvaltozos
IF INT(alulrolhanyadik(elemsorszam) / 2) = alulrolhanyadik(elemsorszam) / 2 THEN GOTO egymasmelle

'ilyenkor egymas ala rendezi a ket cellat
elemmagassag(elemsorszam) = cimkemagassag(tipus(elemsorszam)) + 1 + elemmagassag(hivatk2(elemsorszam))
a = cimkeszelesseg(tipus(elemsorszam))
b = elemszelesseg(hivatk2(elemsorszam))
elemszelesseg(elemsorszam) = INT((a + b + ABS(a - b)) / 2)
'A hivatkozott elem es a fvcimke szelessege kozul a nagyobbikat valasztja.
RETURN

egymasmelle:
'ilyenkor egymas melle rendezi a ket cellat
elemszelesseg(elemsorszam) = cimkeszelesseg(tipus(elemsorszam)) + 1 + elemszelesseg(hivatk2(elemsorszam))
a = cimkemagassag(tipus(elemsorszam))
b = elemmagassag(hivatk2(elemsorszam))
elemmagassag(elemsorszam) = INT((a + b + ABS(a - b)) / 2)
'A hivatkozott elem es a fvcimke magassaga kozul a nagyobbikat valasztja.

CASE IS > 100
'ketvaltozos
IF INT(alulrolhanyadik(elemsorszam) / 2) = alulrolhanyadik(elemsorszam) / 2 THEN GOTO egymasmelle2

'ilyenkor egymas ala rendezi a ket cellat
elemmagassag(elemsorszam) = elemmagassag(hivatk1(elemsorszam)) + 1 + cimkemagassag(tipus(elemsorszam)) + 1 + elemmagassag(hivatk2(elemsorszam))
a = cimkeszelesseg(tipus(elemsorszam))
b = elemszelesseg(hivatk1(elemsorszam))
c = elemszelesseg(hivatk2(elemsorszam))
d = INT((a + b + ABS(a - b)) / 2)
elemszelesseg(elemsorszam) = INT((c + d + ABS(c - d)) / 2)
'A hivatkozott elemek es a fvcimke szelessege kozul a legnagyobbikat valasztja.
RETURN

egymasmelle2:
'ilyenkor egymas melle rendezi a ket cellat
elemszelesseg(elemsorszam) = elemszelesseg(hivatk1(elemsorszam)) + 1 + cimkeszelesseg(tipus(elemsorszam)) + 1 + elemszelesseg(hivatk2(elemsorszam))
a = cimkemagassag(tipus(elemsorszam))
b = elemmagassag(hivatk1(elemsorszam))
c = elemmagassag(hivatk2(elemsorszam))
d = INT((a + b + ABS(a - b)) / 2)
elemmagassag(elemsorszam) = INT((c + d + ABS(c - d)) / 2)
'A hivatkozott elemek es a fvcimke magassaga kozul a legnagyobbikat valasztja.
RETURN
END SELECT
RETURN

hakellnyujt: ' ************************************************
'FOR i = 1 TO aktualiselemszam
'LOCATE i, 1: PRINT i, tipus(i), elemmagassag(i), elemszelesseg(i)
'NEXT
'INPUT q$

' A fuggvenyeket mint elemeket nem mindig tudjuk sajat minimalis
' meretuknel fogva kellokeppen kinyujtani. Ha pl. egy vizszintesen
' bontott fuggveny-elem sokkal alacsonyabb, mint valamely kozos ostol
' ketlepcsos hivatkozas utjan szarmazo parja, akkor e fv. alatt es
' folott csunya ur tamad, melyen az o fuggoleges elvalasztolece sem
' hatol at. Ennek kikuszobolese vegett az elsotol szamitva az osszes
' elemet kivulrol kinyujtjuk, vagyis olyan magassa es szelesse tesszuk
' oket, hogy elvalasztoleceikkel pontosan athidaljak a rendelkezesukre
' allo teret, es hogy mellettuk ne alakuljon ki a fent emlitett ektelen
' uresseg.

FOR elemsorszam = 1 TO aktualiselemszam
IF tipus(elemsorszam) < 10 THEN GOTO nemfv
p = alulrolhanyadik(elemsorszam)
SELECT CASE tipus(elemsorszam)
CASE IS <= 99
SELECT CASE p / 2 - INT(p / 2)
CASE IS > 0
'Fuggoleges egyvaltozos fv. nyujtasa:
elemszelesseg(hivatk2(elemsorszam)) = elemszelesseg(elemsorszam)
elemmagassag(hivatk2(elemsorszam)) = elemmagassag(elemsorszam) - 1 - cimkemagassag(tipus(elemsorszam))

CASE IS = 0
'Vizszintes egyvaltozos fv. nyujtasa:
elemmagassag(hivatk2(elemsorszam)) = elemmagassag(elemsorszam)
elemszelesseg(hivatk2(elemsorszam)) = elemszelesseg(elemsorszam) - 1 - cimkeszelesseg(tipus(elemsorszam))

END SELECT

CASE IS > 99
SELECT CASE p / 2 - INT(p / 2)
CASE IS > 0
' Fuggoleges ketvaltozos fv. nyujtasa: a rendelkezesre allo magassag
' elosztasa a ket palyazo elem valodi meretenek aranyaban.

elemszelesseg(hivatk1(elemsorszam)) = elemszelesseg(elemsorszam)
elemszelesseg(hivatk2(elemsorszam)) = elemszelesseg(elemsorszam)
elemmagassag(hivatk1(elemsorszam)) = INT((elemmagassag(elemsorszam) - 2 - cimkemagassag(tipus(elemsorszam))) * elemmagassag(hivatk1(elemsorszam)) / (elemmagassag(hivatk1(elemsorszam)) + elemmagassag(hivatk2(elemsorszam))))
elemmagassag(hivatk2(elemsorszam)) = elemmagassag(elemsorszam) - 2 - cimkemagassag(tipus(elemsorszam)) - elemmagassag(hivatk1(elemsorszam))

CASE IS = 0
' Vizszintes ketvaltozos fv. nyujtasa: a rendelkezesre allo szelesseg
' elosztasa a ket palyazo elem valodi meretenek aranyaban.

elemmagassag(hivatk1(elemsorszam)) = elemmagassag(elemsorszam)
elemmagassag(hivatk2(elemsorszam)) = elemmagassag(elemsorszam)
elemszelesseg(hivatk1(elemsorszam)) = INT((elemszelesseg(elemsorszam) - 2 - cimkeszelesseg(tipus(elemsorszam))) * elemszelesseg(hivatk1(elemsorszam)) / (elemszelesseg(hivatk1(elemsorszam)) + elemszelesseg(hivatk2(elemsorszam))))
elemszelesseg(hivatk2(elemsorszam)) = elemszelesseg(elemsorszam) - 2 - cimkeszelesseg(tipus(elemsorszam)) - elemszelesseg(hivatk1(elemsorszam))

END SELECT
END SELECT
nemfv:
NEXT elemsorszam

kirajzol: ' *********************************************************

LINE (kepkozep + kezdopixelx(1) - vastagsag, kepkozep + kezdopixely(1) - vastagsag)-(kepkozep + kezdopixelx(1) + elemszelesseg(1) - 1 + vastagsag, kepkozep + kezdopixely(1) + elemmagassag(1) - 1 + vastagsag), hatterszin + szintobblet - 16 * INT(( _
hatterszin + szintobblet) / 16), BF
LINE (kepkozep + kezdopixelx(1) - 1, kepkozep + kezdopixely(1) - 1)-(kepkozep + kezdopixelx(1) + elemszelesseg(1), kepkozep + kezdopixely(1) + elemmagassag(1)), keretszin + szintobblet - 16 * INT((keretszin + szintobblet) / 16), B

szintobblet = 0

FOR elemsorszam = 1 TO aktualiselemszam
GOSUB elemkiir
NEXT elemsorszam

elemsorszam = elemsorszamoriz

GOTO hovalepsz

elemkiir:
 'Kiir mindenfele elemet, akar eloszor (sorban), akar kurzormozgataskor egyet.
 IF INT(alulrolhanyadik(elemsorszam) / 2) < alulrolhanyadik(elemsorszam) / 2 THEN GOTO fuggelhely
 v = visszahivatk(elemsorszam)

'IF hivatk1(v) <> elemsorszam AND hivatk2(v) <> elemsorszam THEN RETURN
'A valaha hasznalt, de mar ervenytelen vegelemeket nem irja ki.
'Lehet, hogy erre a bizt. feltetelre nincs szukseg.

 kezdopixelx(elemsorszam) = kezdopixelx(v)
 IF hivatk1(v) = elemsorszam THEN kezdopixely(elemsorszam) = kezdopixely(v)
 IF hivatk2(v) = elemsorszam THEN kezdopixely(elemsorszam) = kezdopixely(v) + elemmagassag(hivatk1(v)) + cimkemagassag(tipus(v)) + 2
 IF tipus(v) < 100 AND tipus(v) >= 10 THEN kezdopixely(elemsorszam) = kezdopixely(elemsorszam) - 1

 SELECT CASE tipus(elemsorszam)

 CASE IS <= 9
 '*********************************************
 ' Vegelem. Hatteret szinez es a cimket rairja. A vegelem (jelentes nelkuli)
 ' belso elrendezese vizszintes, ezert ot mint egy fuggoleges egyseg reszet
 ' fogja kiirni.

 a = kezdopixelx(elemsorszam)
 b = kezdopixelx(elemsorszam) + elemszelesseg(v) - 1
 c = kezdopixely(elemsorszam)
 d = kezdopixely(elemsorszam) + elemmagassag(elemsorszam) - 1

 IF hivatk1(v) = elemsorszam THEN ajtoirany1 = 0: ajtoirany2 = 1
 IF hivatk2(v) = elemsorszam THEN ajtoirany1 = -1: ajtoirany2 = 0
 IF elemsorszam = kezdosorszam THEN ajtoirany1 = 0: ajtoirany2 = 0

 LINE (kepkozep + a, kepkozep + c + ajtoirany1)-(kepkozep + b, kepkozep + d + ajtoirany2), vegelemhatterszin + szintobblet - 16 * INT((vegelemhatterszin + szintobblet) / 16), BF
 cimkekezdx = a + INT((elemszelesseg(v) - cimkeszelesseg(tipus(elemsorszam))) / 2) - 1
 cimkekezdy = c + INT((elemmagassag(elemsorszam) - cimkemagassag(tipus(elemsorszam))) / 2) - 1

 GOSUB cimketkiir

 CASE IS <= 99
 '***********************************************************************
 ' Egyvaltozos fv. vizsz. bontasban. Rajzol egy fuggoleges elvalasztolecet,
 ' tole balra hatteret szinez es fvcimket fest, a jobb oldali tartomanyt
 ' uresen hagyja.

 b = elemszelesseg(hivatk2(elemsorszam))
 c = elemszelesseg(elemsorszam)
 d = cimkeszelesseg(tipus(elemsorszam))

 lecx = kezdopixelx(elemsorszam) + INT((c - 1) * d / c) + 1
 lec1y = kezdopixely(elemsorszam)
 lec2y = lec1y + elemmagassag(elemsorszam) - 1

 IF hivatk1(v) = elemsorszam THEN ajtoirany1 = 0: ajtoirany2 = 1
 IF hivatk2(v) = elemsorszam THEN ajtoirany1 = -1: ajtoirany2 = 0
 IF elemsorszam = kezdosorszam THEN ajtoirany1 = 0: ajtoirany2 = 0
 LINE (kepkozep + kezdopixelx(elemsorszam), kepkozep + lec1y + ajtoirany1)-(kepkozep + lecx - 1, kepkozep + lec2y + ajtoirany2), lec1hatterszin + szintobblet - 16 * INT((lec1hatterszin + szintobblet) / 16), BF
 IF kiirtaemar = 0 THEN LINE (kepkozep + lecx, kepkozep + lec1y)-(kepkozep + lecx, kepkozep + lec2y), lechatarszin + szintobblet - 16 * INT((lechatarszin + szintobblet) / 16)

 cimkekezdx = kezdopixelx(elemsorszam) - 1
 cimkekezdy = lec1y + INT((elemmagassag(elemsorszam) - cimkemagassag(tipus(elemsorszam))) / 2) - 1

 GOSUB cimketkiir

 CASE IS >= 100
 
 '***********************************************************************
 ' Ketvaltozos fv. vizszintesen bontva. Rajzol ket fuggoleges elvalasztolecet,
 ' kozottuk hatteret szinez es fvcimket fest, a masik ket reszt uresen hagyja.
 
 a = elemszelesseg(hivatk1(elemsorszam))
 b = elemszelesseg(hivatk2(elemsorszam))
 c = elemszelesseg(elemsorszam)
 d = cimkeszelesseg(tipus(elemsorszam))

 lec1x = kezdopixelx(elemsorszam) + INT((c - d - 2) * a / (a + b))
 lec2x = lec1x + d + 1
 lec1y = kezdopixely(elemsorszam)
 lec2y = lec1y + elemmagassag(elemsorszam) - 1

 IF hivatk1(v) = elemsorszam THEN ajtoirany1 = 0: ajtoirany2 = 1
 IF hivatk2(v) = elemsorszam THEN ajtoirany1 = -1: ajtoirany2 = 0
 IF elemsorszam = kezdosorszam THEN ajtoirany1 = 0: ajtoirany2 = 0
 LINE (kepkozep + lec1x + 1, kepkozep + lec1y + ajtoirany1)-(kepkozep + lec2x - 1, kepkozep + lec2y + ajtoirany2), lec2hatterszin + szintobblet - 16 * INT((lec2hatterszin + szintobblet) / 16), BF
 IF kiirtaemar = 0 THEN LINE (kepkozep + lec1x, kepkozep + lec1y)-(kepkozep + lec1x, kepkozep + lec2y), lechatarszin + szintobblet - 16 * INT((lechatarszin + szintobblet) / 16)
 IF kiirtaemar = 0 THEN LINE (kepkozep + lec2x, kepkozep + lec1y)-(kepkozep + lec2x, kepkozep + lec2y), lechatarszin + szintobblet - 16 * INT((lechatarszin + szintobblet) / 16)

 cimkekezdx = lec1x
 cimkekezdy = lec1y + INT((elemmagassag(elemsorszam) - cimkemagassag(tipus(elemsorszam))) / 2) - 1
 
 GOSUB cimketkiir
 END SELECT
RETURN

fuggelhely:
 v = visszahivatk(elemsorszam)

 'IF hivatk1(v) <> elemsorszam AND hivatk1(v) <> elemsorszam THEN RETURN
 'A valaha hasznalt, de mar ervenytelen vegelemeket nem irja ki.
 'Lehet, hogy erre a bizt. feltetelre nincs szukseg.

 kezdopixely(elemsorszam) = kezdopixely(v)
 IF hivatk1(v) = elemsorszam THEN kezdopixelx(elemsorszam) = kezdopixelx(v)
 IF hivatk2(v) = elemsorszam THEN kezdopixelx(elemsorszam) = kezdopixelx(v) + elemszelesseg(hivatk1(v)) + cimkeszelesseg(tipus(v)) + 2
 IF tipus(v) < 100 AND tipus(v) >= 10 THEN kezdopixelx(elemsorszam) = kezdopixelx(elemsorszam) - 1

 SELECT CASE tipus(elemsorszam)

 CASE IS <= 9
 '*********************************************
 ' Vegelem. Hatteret szinez es a cimket rairja. A vegelem (jelentes nelkuli)
 ' belso elrendezese fuggoleges, ezert ot mint egy vizszintes egyseg reszet
 ' fogja kiirni.

 a = kezdopixelx(elemsorszam)
 b = kezdopixelx(elemsorszam) + elemszelesseg(elemsorszam) - 1
 c = kezdopixely(elemsorszam)
 d = kezdopixely(elemsorszam) + elemmagassag(v) - 1

 IF hivatk1(v) = elemsorszam THEN ajtoirany1 = 0: ajtoirany2 = 1
 IF hivatk2(v) = elemsorszam THEN ajtoirany1 = -1: ajtoirany2 = 0
 IF elemsorszam = kezdosorszam THEN ajtoirany1 = 0: ajtoirany2 = 0

 LINE (kepkozep + a + ajtoirany1, kepkozep + c)-(kepkozep + b + ajtoirany2, kepkozep + d), vegelemhatterszin + szintobblet - 16 * INT((vegelemhatterszin + szintobblet) / 16), BF

 cimkekezdx = a + INT((elemszelesseg(elemsorszam) - cimkeszelesseg(tipus(elemsorszam))) / 2) - 1
 cimkekezdy = c + INT((elemmagassag(v) - cimkemagassag(tipus(elemsorszam))) / 2) - 1

 GOSUB cimketkiir

 CASE IS <= 99
 '***********************************************************************
 ' Egyvaltozos fv. fugg. bontasban. Rajzol egy vizszintes elvalasztolecet,
 ' folotte hatteret szinez es fvcimket fest, az alatta levo tartomanyt
 ' uresen hagyja.

 b = elemmagassag(hivatk2(elemsorszam))
 c = elemmagassag(elemsorszam)
 d = cimkemagassag(tipus(elemsorszam))

 lecy = kezdopixely(elemsorszam) + INT((c - 1) * d / c) + 1
 lec1x = kezdopixelx(elemsorszam)
 lec2x = lec1x + elemszelesseg(elemsorszam) - 1

 IF hivatk1(v) = elemsorszam THEN ajtoirany1 = 0: ajtoirany2 = 1
 IF hivatk2(v) = elemsorszam THEN ajtoirany1 = -1: ajtoirany2 = 0
 IF elemsorszam = kezdosorszam THEN ajtoirany1 = 0: ajtoirany2 = 0

 LINE (kepkozep + lec1x + ajtoirany1, kepkozep + kezdopixely(elemsorszam))-(kepkozep + lec2x + ajtoirany2, kepkozep + lecy - 1), lec1hatterszin + szintobblet - 16 * INT((lec1hatterszin + szintobblet) / 16), BF
 IF kiirtaemar = 0 THEN LINE (kepkozep + lec1x, kepkozep + lecy)-(kepkozep + lec2x, kepkozep + lecy), lechatarszin + szintobblet - 16 * INT((lechatarszin + szintobblet) / 16)

 cimkekezdy = kezdopixely(elemsorszam) - 1
 cimkekezdx = lec1x + INT((elemszelesseg(elemsorszam) - cimkeszelesseg(tipus(elemsorszam))) / 2) - 1

 GOSUB cimketkiir

 CASE IS >= 100
 '***********************************************************************
 ' Ketvaltozos fv. fuggolegesen bontva. Rajzol ket vizszintes elvalasztolecet,
 ' kozottuk hatteret szinez es fvcimket fest, a masik ket reszt uresen hagyja.

 a = elemmagassag(hivatk1(elemsorszam))
 b = elemmagassag(hivatk2(elemsorszam))
 c = elemmagassag(elemsorszam)
 d = cimkemagassag(tipus(elemsorszam))

 lec1y = kezdopixely(elemsorszam) + INT((c - d - 2) * a / (a + b))
 lec2y = lec1y + d + 1
 lec1x = kezdopixelx(elemsorszam)
 lec2x = lec1x + elemszelesseg(elemsorszam) - 1

 IF hivatk1(v) = elemsorszam THEN ajtoirany1 = 0: ajtoirany2 = 1
 IF hivatk2(v) = elemsorszam THEN ajtoirany1 = -1: ajtoirany2 = 0
 IF elemsorszam = kezdosorszam THEN ajtoirany1 = 0: ajtoirany2 = 0

 LINE (kepkozep + lec1x + ajtoirany1, kepkozep + lec1y + 1)-(kepkozep + lec2x + ajtoirany2, kepkozep + lec2y - 1), lec2hatterszin + szintobblet - 16 * INT((lec2hatterszin + szintobblet) / 16), BF
 IF kiirtaemar = 0 THEN LINE (kepkozep + lec1x, kepkozep + lec1y)-(kepkozep + lec2x, kepkozep + lec1y), lechatarszin + szintobblet - 16 * INT((lechatarszin + szintobblet) / 16)
 IF kiirtaemar = 0 THEN LINE (kepkozep + lec1x, kepkozep + lec2y)-(kepkozep + lec2x, kepkozep + lec2y), lechatarszin + szintobblet - 16 * INT((lechatarszin + szintobblet) / 16)

 cimkekezdy = lec1y
 cimkekezdx = lec1x + INT((elemszelesseg(elemsorszam) - cimkeszelesseg(tipus(elemsorszam))) / 2) - 1

 GOSUB cimketkiir
 END SELECT
RETURN
'Ez az "elemkiir" nevu rutin vege.


cimketkiir:
LOCATE 7, 5: PRINT "elemsorszam"; elemsorszam
'LOCATE 1, 1: PRINT "sorszam"; elemsorszam; "  "
'LOCATE 2, 1: PRINT "tipus: "; tipusnev$(tipus(elemsorszam)); "("; tipus(elemsorszam); ")        "
'LOCATE 3, 1: PRINT "cimkex"; cimkekezdx; "  "
'LOCATE 4, 1: PRINT "cimkey"; cimkekezdy; "  "
'LOCATE 5, 1: PRINT "alulrol"; alulrolhanyadik(elemsorszam); "  "
'LOCATE 6, 1: PRINT "felulrol"; felulrolhanyadik(elemsorszam); "  "
'LOCATE 7, 1: PRINT "szeless"; elemszelesseg(elemsorszam); "  "
'LOCATE 8, 1: PRINT "magass"; elemmagassag(elemsorszam); "  "
'LOCATE 9, 1: PRINT "hivatk1"; hivatk1(elemsorszam); "    "
'LOCATE 10, 1: PRINT "hivatk2"; hivatk2(elemsorszam); "    "

FOR j = 1 TO cimkemagassag(tipus(elemsorszam))
FOR i = 1 TO cimkeszelesseg(tipus(elemsorszam))
PSET (kepkozep + cimkekezdx + i, kepkozep + cimkekezdy + j), szin(ASC(cimkeszin(tipus(elemsorszam), j, i))) + szintobblet - 16 * INT((szin(ASC(cimkeszin(tipus(elemsorszam), j, i))) + szintobblet) / 16)
NEXT i
NEXT j
RETURN



hovalepsz:
kiirtaemar = 1
'LOCATE 1, 1
'COLOR 1: PRINT "Beszuras: ";
'COLOR 5: PRINT "szokoz. ";
'COLOR 1: PRINT "Lepegetes: ";
'COLOR 5: PRINT "nyilakkal. ";
'COLOR 1: PRINT "Gyorsvissza: ";
'COLOR 5: PRINT "ESC."

szintobblet = 8
GOSUB elemkiir

FOR i = 11 TO 14
KEY(i) ON
NEXT i

hovalepsz2:

ON KEY(11) GOSUB kepletbenfel
ON KEY(12) GOSUB kepletbenbal
ON KEY(13) GOSUB kepletbenjobb
ON KEY(14) GOSUB kepletbenle
rr: r$ = INKEY$
SELECT CASE r$

CASE IS = CHR$(27)
GOSUB kepletbenvissza

CASE IS = CHR$(13)
END

CASE IS = " "
FOR i = 11 TO 14
KEY(i) OFF
NEXT i
GOTO kepletbeszur

CASE IS = "m", "M"
'Gyorsmasolatot keszit arrol az elemrol (utodaival egyutt), amelyen eppen all.
masolandosorszam = elemsorszam

CASE IS = "b", "B"
'Beilleszti a masolando elemeket es ujrarendezest indit.
IF masolandosorszam = 0 THEN GOTO hovalepsz2

'??? ***************    Kepletreszlet-masolas. Kiserleti.   ******************

IF elemsorszam = 1 THEN GOTO gyokerelemasol
IF hivatk1(visszahivatk(elemsorszam)) = elemsorszam THEN hivatk1(visszahivatk(elemsorszam)) = aktualiselemszam + 1
IF hivatk2(visszahivatk(elemsorszam)) = elemsorszam THEN hivatk2(visszahivatk(elemsorszam)) = aktualiselemszam + 1
visszahivatk(aktualiselemszam + 1) = visszahivatk(elemsorszam)

ujramutato(visszahivatk(elemsorszam)) = visszahivatk(aktualiselemszam + 1)
regiremutato(visszahivatk(aktualiselemszam + 1)) = visszahivatk(elemsorszam)

gyokerelemasol:

tipus(aktualiselemszam + 1) = tipus(masolandosorszam)
'lehet, hogy nem kell: ahova kuldom, ott ugyis megcsinalja.

FOR i = 1 TO aktualiselemszam
LOCATE i, 1: PRINT i
LOCATE i, 5: PRINT tipusnev$(tipus(i))
IF hivatk1(i) > 0 THEN LOCATE i, 13: PRINT hivatk1(i)
IF hivatk2(i) > 0 THEN LOCATE i, 17: PRINT hivatk2(i)
NEXT i

toldas = aktualiselemszam
regisorszam = masolandosorszam
kezdosorszam = masolandosorszam
GOSUB sorszamotrendez
GOSUB visszatolt

FOR i = 1 TO aktualiselemszam
LOCATE i, 20: PRINT ujramutato(i)
LOCATE i, 24: PRINT regiremutato(i)
LOCATE i, 28: PRINT i
LOCATE i, 32: PRINT tipusnev$(tipus(i))
IF hivatk1(i) > 0 THEN LOCATE i, 42: PRINT hivatk1(i)
IF hivatk2(i) > 0 THEN LOCATE i, 46: PRINT hivatk2(i)
NEXT i

toldas = 0
kezdosorszam = 1
regisorszam = 1

GOSUB sorszamotrendez
GOSUB visszatolt

FOR i = 1 TO aktualiselemszam
LOCATE i, 52: PRINT ujramutato(i)
LOCATE i, 56: PRINT regiremutato(i)
LOCATE i, 60: PRINT i
LOCATE i, 64: PRINT tipusnev$(tipus(i))
IF hivatk1(i) > 0 THEN LOCATE i, 72: PRINT hivatk1(i)
IF hivatk2(i) > 0 THEN LOCATE i, 76: PRINT hivatk2(i)
NEXT i
LOCATE 22, 1: PRINT aktualiselemszam

lepcsofelulrolhanyadik = 0
REDIM elemszelesseg(aktualiselemszam) AS INTEGER
REDIM elemmagassag(aktualiselemszam) AS INTEGER
REDIM kezdopixelx(aktualiselemszam) AS INTEGER
REDIM kezdopixely(aktualiselemszam) AS INTEGER
REDIM felulrolhanyadik(aktualiselemszam) AS INTEGER
REDIM alulrolhanyadik(aktualiselemszam) AS INTEGER
'REDIM regiremutato(1000) AS INTEGER
'REDIM ujramutato(1000) AS INTEGER

'IF ujramutato(kezdosorszam) <= aktualiselemszam THEN kezdosorszam = ujramutato(kezdosorszam) ELSE kezdosorszam = 1
kezdosorszam = 1
IF ujramutato(elemsorszamoriz) <= aktualiselemszam THEN elemsorszamoriz = ujramutato(elemsorszamoriz) ELSE elemsorszamoriz = 1: elemsorszam = 1
szintobblet = 0
kiirtaemar = 0
GOTO sorszamalulrol
END SELECT
GOTO hovalepsz2






'masolo rutin vege








kepletbenvissza:
 IF elemsorszam = 1 THEN SOUND (600), .5: RETURN
 szintobblet = 0: GOSUB elemkiir
 elemsorszam = visszahivatk(elemsorszam)
 szintobblet = 8: GOSUB elemkiir
RETURN

kepletbenfel:
'FOR i = 11 TO 14: KEY(i) OFF: NEXT i
p = alulrolhanyadik(elemsorszam)

SELECT CASE p / 2 - INT(p / 2)
CASE IS = 0
 'vizsz. elembol hova ugrik folfele
 IF elemsorszam = 1 THEN SOUND (600), .5: RETURN
 IF hivatk2(visszahivatk(elemsorszam)) <> elemsorszam THEN SOUND (1000), .3: RETURN
 szintobblet = 0: GOSUB elemkiir
 elemsorszam = visszahivatk(elemsorszam)
 szintobblet = 8: GOSUB elemkiir

CASE IS > 0
 'fugg. elembol hova ugrik folfele
 SELECT CASE tipus(elemsorszam)
  CASE IS < 100
  SOUND (1000), .3: RETURN
  CASE IS >= 100
  szintobblet = 0: GOSUB elemkiir
  elemsorszam = hivatk1(elemsorszam)
  szintobblet = 8: GOSUB elemkiir
 END SELECT
END SELECT

RETURN

kepletbenbal:
p = alulrolhanyadik(elemsorszam)
SELECT CASE p / 2 - INT(p / 2)
CASE IS = 0
 'vizsz. elembol hova ugrik balra
 IF tipus(elemsorszam) < 100 THEN SOUND (1000), .3: RETURN
 szintobblet = 0: GOSUB elemkiir
 elemsorszam = hivatk1(elemsorszam)
 szintobblet = 8: GOSUB elemkiir

 CASE IS > 0
 'fugg. elembol hova ugrik balra
 IF hivatk2(visszahivatk(elemsorszam)) <> elemsorszam THEN SOUND (1000), .3: RETURN
  szintobblet = 0: GOSUB elemkiir
  elemsorszam = visszahivatk(elemsorszam)
  szintobblet = 8: GOSUB elemkiir
 END SELECT
RETURN

kepletbenjobb:
p = alulrolhanyadik(elemsorszam)
SELECT CASE p / 2 - INT(p / 2)
CASE IS = 0
 'vizsz. elembol hova ugrik jobbra
 IF tipus(elemsorszam) < 10 THEN SOUND (1000), .3: RETURN
 szintobblet = 0: GOSUB elemkiir
 elemsorszam = hivatk2(elemsorszam)
 szintobblet = 8: GOSUB elemkiir

 CASE IS > 0
 'fugg. elembol hova ugrik jobbra
 IF hivatk1(visszahivatk(elemsorszam)) <> elemsorszam THEN SOUND (1000), .3: RETURN
  szintobblet = 0: GOSUB elemkiir
  elemsorszam = visszahivatk(elemsorszam)
  szintobblet = 8: GOSUB elemkiir
 END SELECT
RETURN

kepletbenle:
p = alulrolhanyadik(elemsorszam)

SELECT CASE p / 2 - INT(p / 2)
CASE IS = 0
 'vizsz. elembol hova ugrik lefele
 IF elemsorszam = 1 THEN SOUND (600), .5: RETURN
 IF hivatk1(visszahivatk(elemsorszam)) <> elemsorszam OR tipus(visszahivatk(elemsorszam)) < 100 THEN SOUND (1000), .3: RETURN
 szintobblet = 0: GOSUB elemkiir
 elemsorszam = visszahivatk(elemsorszam)
 szintobblet = 8: GOSUB elemkiir

CASE IS > 0
 'fugg. elembol hova ugrik lefele
 SELECT CASE tipus(elemsorszam)
  CASE IS < 10
  SOUND (1000), .3: RETURN
  CASE IS >= 10
  szintobblet = 0: GOSUB elemkiir
  elemsorszam = hivatk2(elemsorszam)
  szintobblet = 8: GOSUB elemkiir
 END SELECT
END SELECT
RETURN

kepletbeszur:
elemsorszamoriz = elemsorszam
FOR hely = 1 TO 11
LOCATE hely, 1: PRINT luk$
NEXT hely

KEY(11) ON
KEY(14) ON
LOCATE 1, 1: PRINT luk$

LOCATE 1, 1: COLOR 1: PRINT "Beszuras modja:";
LOCATE 1, 67: COLOR 5: PRINT "(TAB, "; CHR$(24); "/"; CHR$(25); ")";
LOCATE 3, 67: COLOR 1: PRINT "Mit szur be?"

COLOR 1
LOCATE 26, 66: PRINT "A keplethez:"
COLOR 5
LOCATE 27, 66: PRINT "Hatratorles."

mitszurbesorsz = 1
hogyszurbesorsz = 1

GOSUB mitszurbemenu
GOSUB hogyszurbemenu

mitszurbe:
nagytipus1 = INT(LOG(ABS(tipus(elemsorszam) - .5)) / LOG(10))
nagytipus2 = INT(LOG(ABS(felhhatotipus(mitszurbesorsz) - .5)) / LOG(10))
folyt1 = SGN(INT(.8 * tipus(hivatk1(elemsorszam))))
folyt2 = SGN(INT(.8 * tipus(hivatk2(elemsorszam))))
kodhossz = LEN(kerdeskod$(nagytipus1, nagytipus2, folyt1, folyt2))
'LOCATE 23, 1: PRINT kodhossz, mitszurbesorsz, felhhatotipus(mitszurbesorsz), kerdeskod$(nagytipus1, nagytipus2, folyt1, folyt2); "*****"
ON KEY(11) GOSUB mitszurbefel
ON KEY(14) GOSUB mitszurbele
r$ = INKEY$
IF r$ = CHR$(9) AND kodhossz < 2 THEN SOUND (1000), .1: GOTO mitszurbe
IF r$ = CHR$(9) THEN GOTO hogyszurbe
IF r$ = CHR$(8) THEN GOTO menutorol
IF nagytipus1 = -1 AND nagytipus2 = -1 THEN GOTO mitszurbe
IF r$ = CHR$(13) THEN GOTO kepletetmodosit
GOTO mitszurbe

mitszurbefel:
mitszurbesorsz = mitszurbesorsz - 1
IF mitszurbesorsz < 1 THEN mitszurbesorsz = tipusdbszam
nagytipus1 = INT(LOG(ABS(tipus(elemsorszam) - .5)) / LOG(10))
nagytipus2 = INT(LOG(ABS(felhhatotipus(mitszurbesorsz) - .5)) / LOG(10))
folyt1 = SGN(INT(.8 * tipus(hivatk1(elemsorszam))))
folyt2 = SGN(INT(.8 * tipus(hivatk2(elemsorszam))))
kodhossz = LEN(kerdeskod$(nagytipus1, nagytipus2, folyt1, folyt2))
GOSUB mitszurbemenu
GOSUB hogyszurbemenu
RETURN

mitszurbele:
mitszurbesorsz = mitszurbesorsz + 1
IF mitszurbesorsz > tipusdbszam THEN mitszurbesorsz = 1
nagytipus1 = INT(LOG(ABS(tipus(elemsorszam) - .5)) / LOG(10))
nagytipus2 = INT(LOG(ABS(felhhatotipus(mitszurbesorsz) - .5)) / LOG(10))
folyt1 = SGN(INT(.8 * tipus(hivatk1(elemsorszam))))
folyt2 = SGN(INT(.8 * tipus(hivatk2(elemsorszam))))
kodhossz = LEN(kerdeskod$(nagytipus1, nagytipus2, folyt1, folyt2))
GOSUB mitszurbemenu
GOSUB hogyszurbemenu
RETURN

mitszurbemenu:
FOR hely = -5 TO 5
kiirtbeszurando = mitszurbesorsz + hely
IF kiirtbeszurando > tipusdbszam THEN kiirtbeszurando = kiirtbeszurando - tipusdbszam
IF kiirtbeszurando < 1 THEN kiirtbeszurando = kiirtbeszurando + tipusdbszam

LOCATE 18 + hely, 71: PRINT "          "
IF hely = 0 THEN COLOR 3 ELSE COLOR 11
LOCATE 18 + hely, 71: PRINT tipusnev$(felhhatotipus(kiirtbeszurando))
NEXT hely
RETURN

hogyszurbe:
ON KEY(11) GOSUB hogyszurbefel
ON KEY(14) GOSUB hogyszurbele
r$ = INKEY$
IF r$ = CHR$(9) THEN GOTO mitszurbe
IF r$ = CHR$(8) THEN GOTO menutorol
IF nagytipus1 = -1 AND nagytipus2 = -1 THEN GOTO hogyszurbe
IF r$ = CHR$(13) THEN GOTO kepletetmodosit
GOTO hogyszurbe

hogyszurbefel:
hogyszurbesorsz = hogyszurbesorsz - 1
IF hogyszurbesorsz < 1 THEN hogyszurbesorsz = kodhossz
GOSUB hogyszurbemenu
RETURN

hogyszurbele:
hogyszurbesorsz = hogyszurbesorsz + 1
IF hogyszurbesorsz > kodhossz THEN hogyszurbesorsz = 1
GOSUB hogyszurbemenu
RETURN

hogyszurbemenu:
FOR hely = kodhossz + 2 TO 11
LOCATE hely, 1: PRINT luk$
NEXT hely

FOR hely = 1 TO kodhossz
igyszurjabe = hogyszurbesorsz + hely - 1
iii: IF igyszurjabe > kodhossz THEN igyszurjabe = igyszurjabe - kodhossz: GOTO iii
jjj: IF igyszurjabe < 1 THEN igyszurjabe = igyszurjabe + kodhossz: GOTO jjj
'IF hely = 1 THEN COLOR 3 ELSE COLOR 11
IF hely = INT(kodhossz / 2) + 1 THEN COLOR 3: valasztottbeszurasimod = igyszurjabe ELSE COLOR 11
LOCATE 1 + hely, 1: PRINT kerdes$(ASC(MID$(kerdeskod$(nagytipus1, nagytipus2, folyt1, folyt2), igyszurjabe, 1)) - 34)
NEXT hely
RETURN

menutorol:
LOCATE 1, 61: PRINT "                    "

FOR i = 2 TO 26
LOCATE i, 68: PRINT "             "
NEXT i
GOTO hovalepsz

kepletetmodosit:
masolandosorszam = 0
'Azert, hogy ne lehessen a masolas es a beillesztes kozott orvul valtoztatni
'a kepleten.
tt = ASC(MID$(kerdeskod$(nagytipus1, nagytipus2, folyt1, folyt2), valasztottbeszurasimod, 1)) - 34
IF tt < 25.5 OR tt > 28.5 THEN tipus(elemsorszam) = felhhatotipus(mitszurbesorsz)

SELECT CASE tt

'Hatarozatlan v. nem hzt. vegelem csereje vegelemmel.
CASE IS = 1, 4
'semmit nem kell csinalni, mert fentebb megtortent.

CASE IS = 2, 5
'1v. fuggvennyel
'visszahivatk(hivatk1(elemsorszam)) = 0
'hivatk1(elemsorszam) = 0
'ezek elvileg nem kellenenek, mert a vegelem letrehozasakor amugy is igy
'lettek beallitve ezek az ertekek.
hivatk2(elemsorszam) = aktualiselemszam + 1
tipus(hivatk2(elemsorszam)) = 1
'Hatarozatlan elemet illeszt be  az uj fv. vegere.
visszahivatk(hivatk2(elemsorszam)) = elemsorszam
aktualiselemszam = aktualiselemszam + 1

CASE IS = 3, 6
'2v. muvelettel
hivatk1(elemsorszam) = aktualiselemszam + 1
hivatk2(elemsorszam) = aktualiselemszam + 2
visszahivatk(hivatk1(elemsorszam)) = elemsorszam
visszahivatk(hivatk2(elemsorszam)) = elemsorszam
tipus(hivatk1(elemsorszam)) = 1
tipus(hivatk2(elemsorszam)) = 1
'Hatarozatlan elemeket illeszt be az uj muvelet vegere.
aktualiselemszam = aktualiselemszam + 2

'Nem hatarozatlan vegelem csereje---
'CASE IS = 4
'---vegelemmel - ilyenkor semmit nem kell csinalni.

'CASE IS = 5
'kerdes$(ASC(CHR$(39)) - 34) = "Helyettesites e fuggvennyel?                                  "

'CASE IS = 6
'kerdes$(ASC(CHR$(40)) - 34) = "Helyettesites e muvelettel?                                   "

'1valt fv. csereje
CASE IS = 7, 8
'vegelemmel
'visszahivatk(hivatk1(elemsorszam)) = 0
visszahivatk(hivatk2(elemsorszam)) = 0
'hivatk1(elemsorszam) = 0
hivatk2(elemsorszam) = 0

'CASE IS = 8
'kerdes$(ASC(CHR$(42)) - 34) = "Helyettesites ezen elemmel? (a folytatast kitorli!)           "

CASE IS = 9
kerdes$(ASC(CHR$(43)) - 34) = "Helyettesites e fuggvennyel?                                  "
'nincs teendo: a folytatas hatarozatlan volt is es marad is.

CASE IS = 10
kerdes$(ASC(CHR$(44)) - 34) = "Helyettesites e fuggvennyel + a folytatast kitorli?           "
'visszahivatk(hivatk1(elemsorszam)) = 0
'hivatk1(elemsorszam) = 0
'ezek elvileg nem kellenenek, mert a vegelem letrehozasakor amugy is igy
'lettek beallitve ezek az ertekek.
tipus(hivatk2(elemsorszam)) = 1
'Hatarozatlan elemet illeszt be  az uj fv. vegere.
'visszahivatk(hivatk2(elemsorszam)) = elemsorszam
'Eddig is igy volt.

CASE IS = 11
kerdes$(ASC(CHR$(45)) - 34) = "Helyettesites e fuggvennyel + a folytatast megorzi?           "
'Semmi teendo, fent megvolt.

CASE IS = 12, 13
kerdes$(ASC(CHR$(46)) - 34) = "Helyettesites e muvelettel?                                   "
hivatk1(elemsorszam) = aktualiselemszam + 1
visszahivatk(hivatk1(elemsorszam)) = elemsorszam
tipus(hivatk1(elemsorszam)) = 1
visszahivatk(hivatk2(elemsorszam)) = elemsorszam
tipus(hivatk2(elemsorszam)) = 1
aktualiselemszam = aktualiselemszam + 1

'CASE IS = 13
'kerdes$(ASC(CHR$(47)) - 34) = "Helyettesites e muvelettel + a folytatast kitorli?            "

CASE IS = 14
'kerdes$(ASC(CHR$(48)) - 34) = "Helyettesites e muvelettel + a folytatast 1. utodkent megorzi?"
hivatk1(elemsorszam) = hivatk2(elemsorszam)
hivatk2(elemsorszam) = aktualiselemszam + 1
tipus(hivatk2(elemsorszam)) = 1
visszahivatk(hivatk1(elemsorszam)) = elemsorszam
visszahivatk(hivatk2(elemsorszam)) = elemsorszam
aktualiselemszam = aktualiselemszam + 1

CASE IS = 15
'kerdes$(ASC(CHR$(49)) - 34) = "Helyettesites e muvelettel + a folytatast 2. utodkent megorzi?"
hivatk1(elemsorszam) = aktualiselemszam + 1
tipus(hivatk1(elemsorszam)) = 1
visszahivatk(hivatk1(elemsorszam)) = elemsorszam
aktualiselemszam = aktualiselemszam + 1

'2valt muvelet csereje
CASE IS = 16
'kerdes$(ASC(CHR$(50)) - 34) = "Helyettesites ezen elemmel? (a folytatast kitorli!)           "
'vegelemmel
visszahivatk(hivatk1(elemsorszam)) = 0
visszahivatk(hivatk2(elemsorszam)) = 0
hivatk1(elemsorszam) = 0
hivatk2(elemsorszam) = 0

CASE IS = 17
'kerdes$(ASC(CHR$(51)) - 34) = "Helyettesites e fuggvennyel + az 1. folytatast megorzi?       "
visszahivatk(hivatk1(elemsorszam)) = 0
hivatk2(elemsorszam) = hivatk1(elemsorszam)
hivatk1(elemsorszam) = 0

CASE IS = 18
'kerdes$(ASC(CHR$(52)) - 34) = "Helyettesites e fuggvennyel + a  2. folytatast megorzi?       "
visszahivatk(hivatk1(elemsorszam)) = 0
hivatk1(elemsorszam) = 0

CASE IS = 19
kerdes$(ASC(CHR$(53)) - 34) = "Helyettesites e muvelettel + mindket folytatast megorzi?      "
'Semmit nem kell tenni.

CASE IS = 20
kerdes$(ASC(CHR$(54)) - 34) = "Helyettesites e muvelettel + a ket folytatast felcsereli?     "
aa = hivatk2(elemsorszam)
hivatk2(elemsorszam) = hivatk1(elemsorszam)
hivatk1(elemsorszam) = aa

CASE IS = 21
kerdes$(ASC(CHR$(55)) - 34) = "Helyettesites e muvelettel + az 1. folytatast megorzi?        "
tipus(hivatk2(elemsorszam)) = 1

CASE IS = 22
kerdes$(ASC(CHR$(56)) - 34) = "Helyettesites e muvelettel + a  2. folytatast megorzi?        "
tipus(hivatk1(elemsorszam)) = 1

CASE IS = 23
kerdes$(ASC(CHR$(57)) - 34) = "Helyettesites e muvelettel + az 1. folytatast megorzi + csere?"
aa = hivatk2(elemsorszam)
hivatk2(elemsorszam) = hivatk1(elemsorszam)
hivatk1(elemsorszam) = aa
tipus(hivatk1(elemsorszam)) = 1

CASE IS = 24
kerdes$(ASC(CHR$(58)) - 34) = "Helyettesites e muvelettel + a  2. folytatast megorzi + csere?"
aa = hivatk2(elemsorszam)
hivatk2(elemsorszam) = hivatk1(elemsorszam)
hivatk1(elemsorszam) = aa
tipus(hivatk2(elemsorszam)) = 1

CASE IS = 25
kerdes$(ASC(CHR$(59)) - 34) = "Helyettesites e muvelettel + mindket folytatast kitorli?      "
tipus(hivatk1(elemsorszam)) = 1
tipus(hivatk2(elemsorszam)) = 1

'Hozzairasok
CASE IS = 26
'kerdes$(ASC(CHR$(60)) - 34) = "E fuggveny beszurasa a kijelolt mezo ele?                     "

hivatk1(aktualiselemszam + 1) = 0
hivatk2(aktualiselemszam + 1) = elemsorszam
tipus(aktualiselemszam + 1) = felhhatotipus(mitszurbesorsz)
aktualiselemszam = aktualiselemszam + 1

IF kezdosorszam = elemsorszam THEN GOTO gyokereleszurbe1
uu = visszahivatk(elemsorszam)
IF hivatk1(uu) = elemsorszam THEN hivatk1(uu) = aktualiselemszam ELSE hivatk2(uu) = aktualiselemszam
visszahivatk(aktualiselemszam) = uu
visszahivatk(elemsorszam) = aktualiselemszam

GOTO zz

gyokereleszurbe1:
kezdosorszam = aktualiselemszam
visszahivatk(elemsorszam) = aktualiselemszam

CASE IS = 27
'kerdes$(ASC(CHR$(61)) - 34) = "E muvelet beszurasa a kijelolt mezo ele?                      "
tipus(aktualiselemszam + 1) = felhhatotipus(mitszurbesorsz)
hivatk1(aktualiselemszam + 1) = aktualiselemszam + 2
hivatk2(aktualiselemszam + 1) = elemsorszam
visszahivatk(aktualiselemszam + 2) = aktualiselemszam + 1
tipus(aktualiselemszam + 2) = 1
aktualiselemszam = aktualiselemszam + 2

IF kezdosorszam = elemsorszam THEN GOTO gyokereleszurbe2
uu = visszahivatk(elemsorszam)
IF hivatk1(uu) = elemsorszam THEN hivatk1(uu) = aktualiselemszam - 1 ELSE hivatk2(uu) = aktualiselemszam - 1
visszahivatk(aktualiselemszam - 1) = uu
visszahivatk(elemsorszam) = aktualiselemszam - 1
GOTO zz

gyokereleszurbe2:
kezdosorszam = aktualiselemszam - 1
visszahivatk(elemsorszam) = aktualiselemszam - 1

CASE IS = 28
'kerdes$(ASC(CHR$(62)) - 34) = "E muvelet beszurasa a kijelolt mezo moge?                     "

tipus(aktualiselemszam + 1) = felhhatotipus(mitszurbesorsz)
hivatk2(aktualiselemszam + 1) = aktualiselemszam + 2
hivatk1(aktualiselemszam + 1) = elemsorszam
visszahivatk(aktualiselemszam + 2) = aktualiselemszam + 1
tipus(aktualiselemszam + 2) = 1
aktualiselemszam = aktualiselemszam + 2

IF kezdosorszam = elemsorszam THEN GOTO gyokereleszurbe3
uu = visszahivatk(elemsorszam)
IF hivatk1(uu) = elemsorszam THEN hivatk1(uu) = aktualiselemszam - 1 ELSE hivatk2(uu) = aktualiselemszam - 1
visszahivatk(aktualiselemszam - 1) = uu
visszahivatk(elemsorszam) = aktualiselemszam - 1

GOTO zz
gyokereleszurbe3:
kezdosorszam = aktualiselemszam - 1
visszahivatk(elemsorszam) = aktualiselemszam - 1

'torlesek
CASE IS = 29
kerdes$(ASC(CHR$(63)) - 34) = "Torli a kijelolt mezot?                                       "
tipus(elemsorszam) = 1

CASE IS = 30
kerdes$(ASC(CHR$(64)) - 34) = "Torli a kijelolt mezot es folytatasat?                        "
tipus(elemsorszam) = 1
visszahivatk(hivatk1(elemsorszam)) = 0
visszahivatk(hivatk2(elemsorszam)) = 0
hivatk1(elemsorszam) = 0
hivatk2(elemsorszam) = 0

zz:
END SELECT
CLS

FOR i = 1 TO aktualiselemszam
LOCATE i, 1: PRINT i
LOCATE i, 6: PRINT tipusnev$(tipus(i))
IF hivatk1(i) > 0 THEN LOCATE i, 16: PRINT hivatk1(i)
IF hivatk2(i) > 0 THEN LOCATE i, 21: PRINT hivatk2(i)
NEXT i

toldas = 0
regisorszam = kezdosorszam
GOSUB sorszamotrendez
GOSUB visszatolt
lepcsofelulrolhanyadik = 0
'kiirtaemar = 1

FOR i = 1 TO aktualiselemszam
LOCATE i, 26: PRINT regiremutato(i); "."
LOCATE i, 31: PRINT i
LOCATE i, 36: PRINT tipusnev$(tipus(i))
IF hivatk1(i) > 0 THEN LOCATE i, 46: PRINT hivatk1(i)
IF hivatk2(i) > 0 THEN LOCATE i, 51: PRINT hivatk2(i)
NEXT i
'END

REDIM elemszelesseg(aktualiselemszam) AS INTEGER
REDIM elemmagassag(aktualiselemszam) AS INTEGER
REDIM kezdopixelx(aktualiselemszam) AS INTEGER
REDIM kezdopixely(aktualiselemszam) AS INTEGER
REDIM felulrolhanyadik(aktualiselemszam) AS INTEGER
REDIM alulrolhanyadik(aktualiselemszam) AS INTEGER
'REDIM regiremutato(1000) AS INTEGER
'REDIM ujramutato(1000) AS INTEGER

IF ujramutato(kezdosorszam) <= aktualiselemszam THEN kezdosorszam = ujramutato(kezdosorszam) ELSE kezdosorszam = 1
IF ujramutato(elemsorszamoriz) <= aktualiselemszam THEN elemsorszamoriz = ujramutato(elemsorszamoriz) ELSE elemsorszamoriz = 1
szintobblet = 0
kiirtaemar = 0
GOTO sorszamalulrol

sorszamotrendez:
'Barmilyen kepletmodositas vagy masolas utan.
'Ez egy szubrutin; ket helyrol is meghivjak.

FOR i = 1 TO aktualiselemszam + toldas
elagazas(i) = 0
NEXT i

ujsorszam = 0
INPUT z$

sorszrend2:
SELECT CASE elagazas(regisorszam)
CASE IS = 0
 SELECT CASE tipus(regisorszam)
 CASE IS < 10
  ujsorszam = ujsorszam + 1
 ' regiremutato(ujsorszam) = regisorszam
 ' ujramutato(regisorszam) = ujsorszam
  regiremutato(ujsorszam + toldas) = regisorszam
  ujramutato(regisorszam) = ujsorszam + toldas
 
  IF aktualiselemszam = 1 THEN RETURN
  regisorszam = visszahivatk(regisorszam)
 CASE IS < 100
  ujsorszam = ujsorszam + 1
  elagazas(regisorszam) = 2
'  regiremutato(ujsorszam) = regisorszam
'  ujramutato(regisorszam) = ujsorszam
  regiremutato(ujsorszam + toldas) = regisorszam
  ujramutato(regisorszam) = ujsorszam + toldas

  regisorszam = hivatk2(regisorszam)
  CASE IS > 100
  ujsorszam = ujsorszam + 1
  elagazas(regisorszam) = 1
  'regiremutato(ujsorszam) = regisorszam
  'ujramutato(regisorszam) = ujsorszam
  regiremutato(ujsorszam + toldas) = regisorszam
  ujramutato(regisorszam) = ujsorszam + toldas
  regisorszam = hivatk1(regisorszam)
 END SELECT

CASE IS = 1
 'Most csak a tipus(regisorszam) > 100 eset lehetseges.
  elagazas(regisorszam) = 2
  regisorszam = hivatk2(regisorszam)

CASE IS = 2
 SELECT CASE tipus(regisorszam)
 CASE IS < 100
 'Csak egyvaltozos lehet most.
 IF regisorszam = kezdosorszam THEN RETURN
  regisorszam = visszahivatk(regisorszam)
 CASE IS > 100
 IF regisorszam = kezdosorszam THEN RETURN
  regisorszam = visszahivatk(regisorszam)
 END SELECT
END SELECT
GOTO sorszrend2

visszatolt:
'Vegrehajtja az atrendezest egy ideiglenes tomb es a regi-uj sorszamok
'kozti atrendezofuggveny segitsegevel.
'A "toldas" nevu valtozo nulla, ha a egesz kepletet atrendezi; illetve
'a megtartando elemszammal egyezik meg, ha valamely kepletresz masolasara
'es valahova torteno beillesztesere hasznaljuk ezt a reszt.

'FOR i = 1 TO ujsorszam + toldas
FOR i = 1 TO ujsorszam
ideigl(i) = tipus(regiremutato(i + toldas))
NEXT i
FOR i = 1 TO ujsorszam
tipus(i + toldas) = ideigl(i)
NEXT i

FOR i = 1 TO ujsorszam
ideigl(i) = ujramutato(hivatk1(regiremutato(i + toldas)))
NEXT i
FOR i = 1 TO ujsorszam
hivatk1(i + toldas) = ideigl(i)
NEXT i

FOR i = 1 TO ujsorszam
ideigl(i) = ujramutato(hivatk2(regiremutato(i + toldas)))
NEXT i
FOR i = 1 TO ujsorszam
hivatk2(i + toldas) = ideigl(i)
NEXT i

FOR i = 1 TO ujsorszam
ideigl(i) = ujramutato(visszahivatk(regiremutato(i + toldas)))
NEXT i
FOR i = 1 TO ujsorszam
visszahivatk(i + toldas) = ideigl(i)
NEXT i

aktualiselemszam = ujsorszam + toldas
'aktualiselemszam = ujsorszam
RETURN

END

adatok:

DATA " HAT.LAN",1
DATA "szelesseg",7
DATA "magassag",7

DATA 4,4,4,4,4,4,4
DATA 4,0,0,0,0,0,4
DATA 4,0,0,0,0,0,4
DATA 4,0,0,0,0,0,4
DATA 4,0,0,0,0,0,4
DATA 4,0,0,0,0,0,4
DATA 4,4,4,4,4,4,4

DATA " KONST",2
DATA "szelesseg",7
DATA "magassag",7

DATA 4,4,4,4,4,4,4
DATA 4,4,7,7,7,4,4
DATA 4,7,4,4,4,7,4
DATA 4,7,4,4,4,4,4
DATA 4,7,4,4,4,7,4
DATA 4,4,7,7,7,4,4
DATA 4,4,4,4,4,4,4

DATA " W.KEZDO",3
DATA "szelesseg",7
DATA "magassag",7

DATA 4,4,4,4,4,4,4
DATA 4,7,4,4,4,7,4
DATA 4,7,4,4,4,7,4
DATA 4,7,4,4,4,7,4
DATA 4,7,4,7,4,7,4
DATA 4,4,7,4,7,4,4
DATA 4,4,4,4,4,4,4

DATA " Z.VALTOZO",4
DATA "szelesseg",7
DATA "magassag",7

DATA 4,4,4,4,4,4,4
DATA 4,7,7,7,7,7,4
DATA 4,7,4,4,7,4,4
DATA 4,4,4,7,4,4,4
DATA 4,4,7,4,4,7,4
DATA 4,7,7,7,7,7,4
DATA 4,4,4,4,4,4,4

DATA " X.VALTOZO",5
DATA "szelesseg",7
DATA "magassag",7

DATA 4,4,4,4,4,4,4
DATA 4,7,4,4,4,7,4
DATA 4,4,7,4,7,4,4
DATA 4,4,4,7,4,4,4
DATA 4,4,7,4,7,4,4
DATA 4,7,4,4,4,7,4
DATA 4,4,4,4,4,4,4

DATA " Y.VALTOZO",6
DATA "szelesseg",7
DATA "magassag",7

DATA 4,4,4,4,4,4,4
DATA 4,7,4,4,4,7,4
DATA 4,7,4,4,4,7,4
DATA 4,4,7,7,7,4,4
DATA 4,4,4,7,4,4,4
DATA 4,7,7,4,4,4,4
DATA 4,4,4,4,4,4,4

DATA " U.KEZDO",7
DATA "szelesseg",7
DATA "magassag",7

DATA 4,4,4,4,4,4,4
DATA 4,7,4,4,4,7,4
DATA 4,7,4,4,4,7,4
DATA 4,7,4,4,4,7,4
DATA 4,7,4,4,4,7,4
DATA 4,4,7,7,7,7,4
DATA 4,4,4,4,4,4,4

DATA " V.KEZDO",8
DATA "szelesseg",7
DATA "magassag",7

DATA 4,4,4,4,4,4,4
DATA 4,7,4,4,4,7,4
DATA 4,7,4,4,4,7,4
DATA 4,7,4,4,4,7,4
DATA 4,4,7,4,7,4,4
DATA 4,4,4,7,4,4,4
DATA 4,4,4,4,4,4,4

DATA "iranyszog",11
DATA "szelesseg",15
DATA "magassag",9

DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
DATA 1,1,2,1,1,2,2,2,1,1,1,2,2,1,1
DATA 1,2,1,2,1,2,1,1,2,1,2,1,1,2,1
DATA 1,2,1,2,1,2,1,1,2,1,2,1,1,1,1
DATA 1,2,2,2,1,2,2,2,1,1,2,1,2,2,1
DATA 1,2,1,2,1,2,2,1,1,1,2,1,1,2,1
DATA 1,2,1,2,1,2,1,2,1,1,2,1,1,2,1
DATA 1,2,1,2,1,2,1,1,2,1,1,2,2,2,1
DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1

DATA "absz.ert",12
DATA "szelesseg",15
DATA "magassag",9

DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
DATA 1,1,2,1,1,2,2,2,1,1,1,2,2,1,1
DATA 1,2,1,2,1,2,1,1,2,1,2,1,1,2,1
DATA 1,2,1,2,1,2,1,1,2,1,2,1,1,1,1
DATA 1,2,2,2,1,2,1,2,1,1,1,2,2,1,1
DATA 1,2,1,2,1,2,1,1,2,1,1,1,1,2,1
DATA 1,2,1,2,1,2,1,1,2,1,2,1,1,2,1
DATA 1,2,1,2,1,2,2,2,1,1,1,2,2,1,1
DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1

DATA "valosresz",13
DATA "szelesseg",11
DATA "magassag",9

DATA 1,1,1,1,1,1,1,1,1,1,1
DATA 1,2,2,2,1,1,2,2,2,2,1
DATA 1,2,1,1,2,1,2,1,1,1,1
DATA 1,2,1,1,2,1,2,1,1,1,1
DATA 1,2,2,2,1,1,2,2,2,2,1
DATA 1,2,2,1,1,1,2,1,1,1,1
DATA 1,2,1,2,1,1,2,1,1,1,1
DATA 1,2,1,1,2,1,2,2,2,2,1
DATA 1,1,1,1,1,1,1,1,1,1,1

DATA "kepz.resz",14
DATA "szelesseg",11
DATA "magassag",9

DATA 1,1,1,1,1,1,1,1,1,1,1
DATA 1,2,1,2,2,1,1,1,2,2,1
DATA 1,2,1,2,2,2,1,2,2,2,1
DATA 1,2,1,2,1,2,2,2,1,2,1
DATA 1,2,1,2,1,1,2,1,1,2,1
DATA 1,2,1,2,1,1,1,1,1,2,1
DATA 1,2,1,2,1,1,1,1,1,2,1
DATA 1,2,1,2,1,1,1,1,1,2,1
DATA 1,1,1,1,1,1,1,1,1,1,1

DATA "konjugalt",15
DATA "szelesseg",12
DATA "magassag",9

DATA 1,1,1,1,1,1,1,1,1,1,1,1
DATA 1,1,2,2,1,1,2,2,2,2,1,1
DATA 1,2,1,1,2,1,1,1,1,2,1,1
DATA 1,2,1,1,1,1,1,1,2,2,2,1
DATA 1,2,1,1,1,1,1,1,1,2,1,1
DATA 1,2,1,1,1,1,1,1,1,2,1,1
DATA 1,2,1,1,2,1,2,1,1,2,1,1
DATA 1,1,2,2,1,1,1,2,2,1,1,1
DATA 1,1,1,1,1,1,1,1,1,1,1,1

DATA "elojel",16
DATA "szelesseg",11
DATA "magassag",9

DATA 1,1,1,1,1,1,1,1,1,1,1
DATA 1,1,2,2,1,1,1,2,2,1,1
DATA 1,2,1,1,2,1,2,1,1,2,1
DATA 1,2,1,1,1,1,2,1,1,1,1
DATA 1,1,2,2,1,1,2,1,2,2,1
DATA 1,1,1,1,2,1,2,1,1,2,1
DATA 1,2,1,1,2,1,2,1,1,2,1
DATA 1,1,2,2,1,1,1,2,2,1,1
DATA 1,1,1,1,1,1,1,1,1,1,1

DATA "egeszresz",17
DATA "szelesseg",13
DATA "magassag",9

DATA 1,1,1,1,1,1,1,1,1,1,1,1,1
DATA 1,2,1,2,1,1,1,2,1,2,2,2,1
DATA 1,2,1,2,2,1,1,2,1,1,2,1,1
DATA 1,2,1,2,2,1,1,2,1,1,2,1,1
DATA 1,2,1,2,1,2,1,2,1,1,2,1,1
DATA 1,2,1,2,1,1,2,2,1,1,2,1,1
DATA 1,2,1,2,1,1,2,2,1,1,2,1,1
DATA 1,2,1,2,1,1,1,2,1,1,2,1,1
DATA 1,1,1,1,1,1,1,1,1,1,1,1,1

DATA "tortresz",18
DATA "szelesseg",10
DATA "magassag",9

DATA 1,1,1,1,1,1,1,1,1,1
DATA 1,2,2,2,1,2,2,2,1,1
DATA 1,2,1,1,1,2,1,1,2,1
DATA 1,2,1,1,1,2,1,1,2,1
DATA 1,2,2,2,1,2,2,2,1,1
DATA 1,2,1,1,1,2,2,1,1,1
DATA 1,2,1,1,1,2,1,2,1,1
DATA 1,2,1,1,1,2,1,1,2,1
DATA 1,1,1,1,1,1,1,1,1,1

DATA "sin",21
DATA "szelesseg",14
DATA "magassag",9

DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1
DATA 1,1,2,2,1,1,2,1,2,1,1,1,2,1
DATA 1,2,1,1,2,1,2,1,2,2,1,1,2,1
DATA 1,2,1,1,1,1,2,1,2,2,1,1,2,1
DATA 1,1,2,2,1,1,2,1,2,1,2,1,2,1
DATA 1,1,1,1,2,1,2,1,2,1,1,2,2,1
DATA 1,2,1,1,2,1,2,1,2,1,1,2,2,1
DATA 1,1,2,2,1,1,2,1,2,1,1,1,2,1
DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1

DATA "cosec",22
DATA "szelesseg",11
DATA "magassag",9

DATA 1,1,1,1,1,1,1,1,1,1,1
DATA 1,1,2,2,1,1,1,2,2,1,1
DATA 1,2,1,1,2,1,2,1,1,2,1
DATA 1,2,1,1,1,1,1,2,1,1,1
DATA 1,2,1,1,1,1,1,1,2,1,1
DATA 1,2,1,1,1,1,1,1,1,2,1
DATA 1,2,1,1,2,1,2,1,1,2,1
DATA 1,1,2,2,1,1,1,2,2,1,1
DATA 1,1,1,1,1,1,1,1,1,1,1

DATA "cos",23
DATA "szelesseg",14
DATA "magassag",9

DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1
DATA 1,1,2,1,1,1,2,1,1,1,2,2,1,1
DATA 1,2,1,2,1,2,1,2,1,2,1,1,2,1
DATA 1,2,1,1,1,2,1,2,1,2,1,1,1,1
DATA 1,2,1,1,1,2,1,2,1,1,2,2,1,1
DATA 1,2,1,1,1,2,1,2,1,1,1,1,2,1
DATA 1,2,1,2,1,2,1,2,1,2,1,1,2,1
DATA 1,1,2,1,1,1,2,1,1,1,2,2,1,1
DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1

DATA "sec",24
DATA "szelesseg",11
DATA "magassag",9

DATA 1,1,1,1,1,1,1,1,1,1,1
DATA 1,1,2,2,1,1,1,2,2,1,1
DATA 1,2,1,1,2,1,2,1,1,2,1
DATA 1,2,1,1,1,1,2,1,1,1,1
DATA 1,1,2,2,1,1,2,1,1,1,1
DATA 1,1,1,1,2,1,2,1,1,1,1
DATA 1,2,1,1,2,1,2,1,1,2,1
DATA 1,1,2,2,1,1,1,2,2,1,1
DATA 1,1,1,1,1,1,1,1,1,1,1

DATA "tg",25
DATA "szelesseg",10
DATA "magassag",9

DATA 1,1,1,1,1,1,1,1,1,1
DATA 1,2,2,2,1,1,2,2,1,1
DATA 1,1,2,1,1,2,1,1,2,1
DATA 1,1,2,1,1,2,1,1,1,1
DATA 1,1,2,1,1,2,1,2,2,1
DATA 1,1,2,1,1,2,1,1,2,1
DATA 1,1,2,1,1,2,1,1,2,1
DATA 1,1,2,1,1,1,2,2,1,1
DATA 1,1,1,1,1,1,1,1,1,1

DATA "ctg",26
DATA "szelesseg",10
DATA "magassag",9

DATA 1,1,1,1,1,1,1,1,1,1
DATA 1,1,2,2,1,1,2,2,2,1
DATA 1,2,1,1,2,1,1,2,1,1
DATA 1,2,1,1,1,1,1,2,1,1
DATA 1,2,1,1,1,1,1,2,1,1
DATA 1,2,1,1,1,1,1,2,1,1
DATA 1,2,1,1,2,1,1,2,1,1
DATA 1,1,2,2,1,1,1,2,1,1
DATA 1,1,1,1,1,1,1,1,1,1

DATA "arcsin",31
DATA "szelesseg",10
DATA "magassag",9

DATA 1,1,1,1,1,1,1,1,1,1
DATA 1,1,2,1,1,1,2,2,1,1
DATA 1,2,1,2,1,2,1,1,2,1
DATA 1,2,1,2,1,2,1,1,1,1
DATA 1,2,2,2,1,1,2,2,1,1
DATA 1,2,1,2,1,1,1,1,2,1
DATA 1,2,1,2,1,2,1,1,2,1
DATA 1,2,1,2,1,1,2,2,1,1
DATA 1,1,1,1,1,1,1,1,1,1

DATA "arccosec",32
DATA "szelesseg",14
DATA "magassag",9

DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1
DATA 1,1,2,1,1,1,2,1,1,1,2,2,1,1
DATA 1,2,1,2,1,2,1,2,1,2,1,1,2,1
DATA 1,2,1,2,1,2,1,1,1,2,1,1,1,1
DATA 1,2,2,2,1,2,1,1,1,1,2,2,1,1
DATA 1,2,1,2,1,2,1,1,1,1,1,1,2,1
DATA 1,2,1,2,1,2,1,2,1,2,1,1,2,1
DATA 1,2,1,2,1,1,2,1,1,1,2,2,1,1
DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1

DATA "arccos",33
DATA "szelesseg",9
DATA "magassag",9

DATA 1,1,1,1,1,1,1,1,1
DATA 1,1,2,1,1,1,2,1,1
DATA 1,2,1,2,1,2,1,2,1
DATA 1,2,1,2,1,2,1,1,1
DATA 1,2,2,2,1,2,1,1,1
DATA 1,2,1,2,1,2,1,1,1
DATA 1,2,1,2,1,2,1,2,1
DATA 1,2,1,2,1,1,2,1,1
DATA 1,1,1,1,1,1,1,1,1

DATA "arcsec",34
DATA "szelesseg",14
DATA "magassag",9

DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1
DATA 1,1,2,1,1,1,2,2,1,1,1,2,1,1
DATA 1,2,1,2,1,2,1,1,2,1,2,1,2,1
DATA 1,2,1,2,1,2,1,1,1,1,2,1,1,1
DATA 1,2,2,2,1,1,2,2,1,1,2,1,1,1
DATA 1,2,1,2,1,1,1,1,2,1,2,1,1,1
DATA 1,2,1,2,1,2,1,1,2,1,2,1,2,1
DATA 1,2,1,2,1,1,2,2,1,1,1,2,1,1
DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1

DATA "arctg",35
DATA "szelesseg",9
DATA "magassag",9

DATA 1,1,1,1,1,1,1,1,1
DATA 1,1,2,1,1,2,2,2,1
DATA 1,2,1,2,1,1,2,1,1
DATA 1,2,1,2,1,1,2,1,1
DATA 1,2,2,2,1,1,2,1,1
DATA 1,2,1,2,1,1,2,1,1
DATA 1,2,1,2,1,1,2,1,1
DATA 1,2,1,2,1,1,2,1,1
DATA 1,1,1,1,1,1,1,1,1

DATA "arcctg",36
DATA "szelesseg",13
DATA "magassag",9

DATA 1,1,1,1,1,1,1,1,1,1,1,1,1
DATA 1,1,2,1,1,1,2,1,1,2,2,2,1
DATA 1,2,1,2,1,2,1,2,1,1,2,1,1
DATA 1,2,1,2,1,2,1,1,1,1,2,1,1
DATA 1,2,2,2,1,2,1,1,1,1,2,1,1
DATA 1,2,1,2,1,2,1,1,1,1,2,1,1
DATA 1,2,1,2,1,2,1,2,1,1,2,1,1
DATA 1,2,1,2,1,1,2,1,1,1,2,1,1
DATA 1,1,1,1,1,1,1,1,1,1,1,1,1

DATA "exp",41
DATA "szelesseg",11
DATA "magassag",9

DATA 1,1,1,1,1,1,1,1,1,1,1
DATA 1,2,2,2,1,2,1,1,1,2,1
DATA 1,2,1,1,1,2,1,1,1,2,1
DATA 1,2,1,1,1,1,2,1,2,1,1
DATA 1,2,2,2,1,1,1,2,1,1,1
DATA 1,2,1,1,1,1,2,1,2,1,1
DATA 1,2,1,1,1,2,1,1,1,2,1
DATA 1,2,2,2,1,2,1,1,1,2,1
DATA 1,1,1,1,1,1,1,1,1,1,1

DATA "sinhip",42
DATA "szelesseg",10
DATA "magassag",9

DATA 1,1,1,1,1,1,1,1,1,1
DATA 1,1,2,2,1,1,2,1,2,1
DATA 1,2,1,1,2,1,2,1,2,1
DATA 1,2,1,1,1,1,2,1,2,1
DATA 1,1,2,2,1,1,2,2,2,1
DATA 1,1,1,1,2,1,2,1,2,1
DATA 1,2,1,1,2,1,2,1,2,1
DATA 1,1,2,2,1,1,2,1,2,1
DATA 1,1,1,1,1,1,1,1,1,1

DATA "coship",43
DATA "szelesseg",9
DATA "magassag",9

DATA 1,1,1,1,1,1,1,1,1
DATA 1,1,2,1,1,2,1,2,1
DATA 1,2,1,2,1,2,1,2,1
DATA 1,2,1,1,1,2,1,2,1
DATA 1,2,1,1,1,2,2,2,1
DATA 1,2,1,1,1,2,1,2,1
DATA 1,2,1,2,1,2,1,2,1
DATA 1,1,2,1,1,2,1,2,1
DATA 1,1,1,1,1,1,1,1,1

DATA "tghip",44
DATA "szelesseg",9
DATA "magassag",9

DATA 1,1,1,1,1,1,1,1,1
DATA 1,2,2,2,1,2,1,2,1
DATA 1,1,2,1,1,2,1,2,1
DATA 1,1,2,1,1,2,1,2,1
DATA 1,1,2,1,1,2,2,2,1
DATA 1,1,2,1,1,2,1,2,1
DATA 1,1,2,1,1,2,1,2,1
DATA 1,1,2,1,1,2,1,2,1
DATA 1,1,1,1,1,1,1,1,1

DATA "ctghip",45
DATA "szelesseg",13
DATA "magassag",9

DATA 1,1,1,1,1,1,1,1,1,1,1,1,1
DATA 1,1,2,1,1,2,2,2,1,2,1,2,1
DATA 1,2,1,2,1,1,2,1,1,2,1,2,1
DATA 1,2,1,1,1,1,2,1,1,2,1,2,1
DATA 1,2,1,1,1,1,2,1,1,2,2,2,1
DATA 1,2,1,1,1,1,2,1,1,2,1,2,1
DATA 1,2,1,2,1,1,2,1,1,2,1,2,1
DATA 1,1,2,1,1,1,2,1,1,2,1,2,1
DATA 1,1,1,1,1,1,1,1,1,1,1,1,1

DATA "lg",50
DATA "szelesseg",10
DATA "magassag",9

DATA 1,1,1,1,1,1,1,1,1,1
DATA 1,2,1,1,1,1,2,2,1,1
DATA 1,2,1,1,1,2,1,1,2,1
DATA 1,2,1,1,1,2,1,1,1,1
DATA 1,2,1,1,1,2,1,2,2,1
DATA 1,2,1,1,1,2,1,1,2,1
DATA 1,2,1,1,1,2,1,1,2,1
DATA 1,2,2,2,1,1,2,2,1,1
DATA 1,1,1,1,1,1,1,1,1,1

DATA "ln",51
DATA "szelesseg",11
DATA "magassag",9

DATA 1,1,1,1,1,1,1,1,1,1,1
DATA 1,2,1,1,1,2,1,1,1,2,1
DATA 1,2,1,1,1,2,2,1,1,2,1
DATA 1,2,1,1,1,2,2,1,1,2,1
DATA 1,2,1,1,1,2,1,2,1,2,1
DATA 1,2,1,1,1,2,1,1,2,2,1
DATA 1,2,1,1,1,2,1,1,2,2,1
DATA 1,2,2,2,1,2,1,1,1,2,1
DATA 1,1,1,1,1,1,1,1,1,1,1

DATA "arsinhip",52
DATA "szelesseg",14
DATA "magassag",9

DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1
DATA 1,1,2,1,1,1,2,2,1,1,2,1,2,1
DATA 1,2,1,2,1,2,1,1,2,1,2,1,2,1
DATA 1,2,1,2,1,2,1,1,1,1,2,1,2,1
DATA 1,2,2,2,1,1,2,2,1,1,2,2,2,1
DATA 1,2,1,2,1,1,1,1,2,1,2,1,2,1
DATA 1,2,1,2,1,2,1,1,2,1,2,1,2,1
DATA 1,2,1,2,1,1,2,2,1,1,2,1,2,1
DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1

DATA "arcoship",53
DATA "szelesseg",13
DATA "magassag",9

DATA 1,1,1,1,1,1,1,1,1,1,1,1,1
DATA 1,1,2,1,1,1,2,1,1,2,1,2,1
DATA 1,2,1,2,1,2,1,2,1,2,1,2,1
DATA 1,2,1,2,1,2,1,1,1,2,1,2,1
DATA 1,2,2,2,1,2,1,1,1,2,2,2,1
DATA 1,2,1,2,1,2,1,1,1,2,1,2,1
DATA 1,2,1,2,1,2,1,2,1,2,1,2,1
DATA 1,2,1,2,1,1,2,1,1,2,1,2,1
DATA 1,1,1,1,1,1,1,1,1,1,1,1,1

DATA "artghip",54
DATA "szelesseg",13
DATA "magassag",9

DATA 1,1,1,1,1,1,1,1,1,1,1,1,1
DATA 1,1,2,1,1,2,2,2,1,2,1,2,1
DATA 1,2,1,2,1,1,2,1,1,2,1,2,1
DATA 1,2,1,2,1,1,2,1,1,2,1,2,1
DATA 1,2,2,2,1,1,2,1,1,2,2,2,1
DATA 1,2,1,2,1,1,2,1,1,2,1,2,1
DATA 1,2,1,2,1,1,2,1,1,2,1,2,1
DATA 1,2,1,2,1,1,2,1,1,2,1,2,1
DATA 1,1,1,1,1,1,1,1,1,1,1,1,1

DATA "arctghip",55
DATA "szelesseg",15
DATA "magassag",9

DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
DATA 1,1,2,1,1,1,2,1,2,2,2,2,1,2,1
DATA 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1
DATA 1,2,1,2,1,2,1,1,1,2,1,2,1,2,1
DATA 1,2,2,2,1,2,1,1,1,2,1,2,2,2,1
DATA 1,2,1,2,1,2,1,1,1,2,1,2,1,2,1
DATA 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1
DATA 1,2,1,2,1,1,2,1,1,2,1,2,1,2,1
DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1

DATA "negyzet",61
DATA "szelesseg",8
DATA "magassag",9

DATA 1,1,1,1,1,1,1,1
DATA 1,1,3,1,1,2,1,1
DATA 1,3,3,3,2,1,2,1
DATA 1,1,3,1,1,1,2,1
DATA 1,1,3,1,1,2,1,1
DATA 1,1,3,1,2,2,2,1
DATA 1,1,3,1,1,1,1,1
DATA 1,1,3,1,1,1,1,1
DATA 1,1,1,1,1,1,1,1

DATA "kob",62
DATA "szelesseg",8
DATA "magassag",9

DATA 1,1,1,1,1,1,1,1
DATA 1,1,3,1,2,2,1,1
DATA 1,3,3,3,1,1,2,1
DATA 1,1,3,1,1,2,1,1
DATA 1,1,3,1,1,1,2,1
DATA 1,1,3,1,2,2,1,1
DATA 1,1,3,1,1,1,1,1
DATA 1,1,3,1,1,1,1,1
DATA 1,1,1,1,1,1,1,1

DATA "gyok",65
DATA "szelesseg",9
DATA "magassag",9

DATA 1,1,1,1,1,1,1,1,1
DATA 1,1,1,1,2,2,2,2,1
DATA 1,1,1,1,2,1,1,1,1
DATA 1,1,1,1,2,1,1,1,1
DATA 1,2,1,1,2,1,1,1,1
DATA 1,1,2,1,2,1,1,1,1
DATA 1,1,1,2,2,1,1,1,1
DATA 1,1,1,1,2,1,1,1,1
DATA 1,1,1,1,1,1,1,1,1

DATA "kobgyok",66
DATA "szelesseg",10
DATA "magassag",9

DATA 1,1,1,1,1,1,1,1,1,1
DATA 1,3,3,1,1,2,2,2,2,1
DATA 1,1,1,3,1,2,1,1,1,1
DATA 1,1,3,1,1,2,1,1,1,1
DATA 1,1,2,3,1,2,1,1,1,1
DATA 1,3,3,2,1,2,1,1,1,1
DATA 1,1,1,1,2,2,1,1,1,1
DATA 1,1,1,1,1,2,1,1,1,1
DATA 1,1,1,1,1,1,1,1,1,1

DATA "+",101
DATA "szelesseg",7
DATA "magassag",7

DATA 9,9,9,9,9,9,9
DATA 9,9,9,8,9,9,9
DATA 9,9,9,8,9,9,9
DATA 9,8,8,8,8,8,9
DATA 9,9,9,8,9,9,9
DATA 9,9,9,8,9,9,9
DATA 9,9,9,9,9,9,9

DATA "-",102
DATA "szelesseg",7
DATA "magassag",3

DATA 9,9,9,9,9,9,9
DATA 9,8,8,8,8,8,9
DATA 9,9,9,9,9,9,9

DATA "*",103
DATA "szelesseg",4
DATA "magassag",4

DATA 9,9,9,9
DATA 9,8,8,9
DATA 9,8,8,9
DATA 9,9,9,9

DATA "/",104
DATA "szelesseg",4
DATA "magassag",7

DATA 9,9,9,9
DATA 9,8,8,9
DATA 9,8,8,9
DATA 9,9,9,9
DATA 9,8,8,9
DATA 9,8,8,9
DATA 9,9,9,9

DATA "^",105
DATA "szelesseg",7
DATA "magassag",7

DATA 9,9,9,9,9,9,9
DATA 9,9,9,8,9,9,9
DATA 9,9,8,8,8,9,9
DATA 9,8,8,9,8,8,9
DATA 9,8,9,9,9,8,9
DATA 9,9,9,9,9,9,9
DATA 9,9,9,9,9,9,9

DATA "Maradek",106
DATA "szelesseg",7
DATA "magassag",7

DATA 9,9,9,9,9,9,9
DATA 9,8,9,9,9,9,9
DATA 9,9,8,9,9,9,9
DATA 9,9,9,8,9,9,9
DATA 9,9,9,9,8,9,9
DATA 9,9,9,9,9,8,9
DATA 9,9,9,9,9,9,9

DATA "Valos >",111
DATA "szelesseg",12
DATA "magassag",9

DATA 9,9,9,9,9,9,9,9,9,9,9,9
DATA 9,9,9,9,9,9,9,8,9,9,9,9
DATA 9,7,7,9,9,7,7,7,8,9,9,9
DATA 9,7,9,7,9,7,9,9,9,8,9,9
DATA 9,7,7,9,9,7,7,7,9,9,8,9
DATA 9,7,7,9,9,7,9,9,9,8,9,9
DATA 9,7,9,7,9,7,7,7,8,9,9,9
DATA 9,9,9,9,9,9,9,8,9,9,9,9
DATA 9,9,9,9,9,9,9,9,9,9,9,9

DATA "Valos <",112
DATA "szelesseg",12
DATA "magassag",9

DATA 9,9,9,9,9,9,9,9,9,9,9,9
DATA 9,9,9,9,8,9,9,9,9,9,9,9
DATA 9,9,9,8,7,7,9,9,7,7,7,9
DATA 9,9,8,9,7,9,7,9,7,9,9,9
DATA 9,8,9,9,7,7,9,9,7,7,7,9
DATA 9,9,8,9,7,7,9,9,7,9,9,9
DATA 9,9,9,8,7,9,7,9,7,7,7,9
DATA 9,9,9,9,8,9,9,9,9,9,9,9
DATA 9,9,9,9,9,9,9,9,9,9,9,9

DATA "Kepz. >",113
DATA "szelesseg",13
DATA "magassag",9

DATA 9,9,9,9,9,9,9,9,9,9,9,9,9
DATA 9,9,9,9,9,9,9,9,8,9,9,9,9
DATA 9,7,9,7,9,9,9,7,9,8,9,9,9
DATA 9,7,9,7,7,9,7,7,9,9,8,9,9
DATA 9,7,9,7,9,7,9,7,9,9,9,8,9
DATA 9,7,9,7,9,9,9,7,9,9,8,9,9
DATA 9,7,9,7,9,9,9,7,9,8,9,9,9
DATA 9,9,9,9,9,9,9,9,8,9,9,9,9
DATA 9,9,9,9,9,9,9,9,9,9,9,9,9

DATA "Kepz. <",114
DATA "szelesseg",13
DATA "magassag",9

DATA 9,9,9,9,9,9,9,9,9,9,9,9,9
DATA 9,9,9,9,8,9,9,9,9,9,9,9,9
DATA 9,9,9,8,9,7,9,7,9,9,9,7,9
DATA 9,9,8,9,9,7,9,7,7,9,7,7,9
DATA 9,8,9,9,9,7,9,7,9,7,9,7,9
DATA 9,9,8,9,9,7,9,7,9,9,9,7,9
DATA 9,9,9,8,9,7,9,7,9,9,9,7,9
DATA 9,9,9,9,8,9,9,9,9,9,9,9,9
DATA 9,9,9,9,9,9,9,9,9,9,9,9,9

DATA "Hossz >",115
DATA "szelesseg",9
DATA "magassag",9

DATA 9,9,9,9,9,9,9,9,9
DATA 9,9,9,9,8,9,9,9,9
DATA 9,7,7,9,9,8,9,9,9
DATA 9,7,9,7,9,9,8,9,9
DATA 9,7,7,9,9,9,9,8,9
DATA 9,7,7,9,9,9,8,9,9
DATA 9,7,9,7,9,8,9,9,9
DATA 9,9,9,9,8,9,9,9,9
DATA 9,9,9,9,9,9,9,9,9

DATA "Hossz <",116
DATA "szelesseg",9
DATA "magassag",9

DATA 9,9,9,9,9,9,9,9,9
DATA 9,9,9,9,8,9,9,9,9
DATA 9,9,9,8,9,7,7,9,9
DATA 9,9,8,9,9,7,9,7,9
DATA 9,8,9,9,9,7,7,9,9
DATA 9,9,8,9,9,7,7,9,9
DATA 9,9,9,8,9,7,9,7,9
DATA 9,9,9,9,8,9,9,9,9
DATA 9,9,9,9,9,9,9,9,9

DATA "Szamt.kzp",121
DATA "szelesseg",9
DATA "magassag",9

DATA 9,9,9,9,9,9,9,9,9
DATA 9,9,9,9,7,9,9,9,9
DATA 9,9,9,7,9,7,9,9,9
DATA 9,9,9,7,7,7,9,9,9
DATA 9,8,9,7,9,7,9,8,9
DATA 9,8,8,7,9,7,8,8,9
DATA 9,9,8,8,9,8,8,9,9
DATA 9,9,9,8,9,8,9,9,9
DATA 9,9,9,9,9,9,9,9,9

DATA "Mert.kzp",122
DATA "szelesseg",10
DATA "magassag",9

DATA 9,9,9,9,9,9,9,9,9,9
DATA 9,9,9,9,7,7,9,9,9,9
DATA 9,9,9,7,9,9,9,9,9,9
DATA 9,9,9,7,9,7,9,9,9,9
DATA 9,8,9,7,9,7,9,9,8,9
DATA 9,8,8,9,7,7,9,8,8,9
DATA 9,9,8,8,9,9,8,8,9,9
DATA 9,9,9,8,9,8,8,9,9,9
DATA 9,9,9,9,9,9,9,9,9,9

DATA "Harm.kzp",123
DATA "szelesseg",11
DATA "magassag",9

DATA 9,9,9,9,9,9,9,9,9,9,9
DATA 9,9,9,9,7,9,7,9,9,9,9
DATA 9,9,9,9,7,9,7,9,9,9,9
DATA 9,9,9,9,7,7,7,9,9,9,9
DATA 9,8,9,9,7,9,7,9,9,8,9
DATA 9,8,8,9,7,9,7,9,8,8,9
DATA 9,9,8,8,9,9,9,8,8,9,9
DATA 9,9,9,8,8,9,8,8,9,9,9
DATA 9,9,9,9,9,9,9,9,9,9,9

DATA "Negyz.kzp",124
DATA "szelesseg",9
DATA "magassag",9

DATA 9,9,9,9,9,9,9,9,9
DATA 9,9,7,7,9,9,7,9,9
DATA 9,9,7,7,7,9,7,9,9
DATA 9,9,7,9,7,7,7,9,9
DATA 9,8,7,9,9,7,7,8,9
DATA 9,8,8,9,9,9,8,8,9
DATA 9,9,8,8,9,8,8,9,9
DATA 9,9,9,8,8,8,9,9,9
DATA 9,9,9,9,9,9,9,9,9

DATA "vege"

RETURN

