dirkwb
Artikelen: 0
Berichten: 4.246
Lid geworden op: wo 21 mar 2007, 20:11

Re: Ti-84 plus

Vladimir Lenin schreef:dat kan ook (-> is hier een toewijzing):

end

disp str1+"+"+str2+"="+str3[/code]

@dirkwb: nee die 0.1 was gewoon als voorbeeld, het hangt af van je n (aantal mogelijkheden) en kan dus aan de hand van statistische berekeningen evenredig verdeeld worden of je kan de kansen vergroten verkleinen, maar dat is denk ik niet het probleem
Ok, dan kan jouw code wel werken. Het idee is in ieder geval duidelijk.
Quitters never win and winners never quit.
Gebruikersavatar
Vladimir Lenin
Artikelen: 0
Berichten: 829
Lid geworden op: do 25 sep 2008, 14:15

Re: Ti-84 plus

yettovisch schreef:Nee gewoon een andere naam die je TI kiest. Ik wil eigenlijk

naam1: Piet

naam2: Kees

disp, rand(naam3,naam4,naam5,naam6 enz)

maar hoe krijg je namen in een random functie?
zoals ik al zei, arrays van strings worden niet ondersteund, je kan ze enkel manueel invoeren (met if-then-else constructies, of je kan in assembler er een functie voor programmeren die rechtstreeks op de CPU van de Ti-84 inwerkt

Assembler is wel een portie extra bloed zweet en tranen, maar het kan de moeite waard zijn, en niet onbelangrijk het is de meest fundamentele taal op alle machines.

Hier meer info: http://tibasicdev.wikidot.com/assembly
"Als je niet leeft zoals je denkt, zul je snel gaan denken zoals je leeft."

--Vladimir Lenin-- (Владимир Ильич Ульянов)
yettovisch
Artikelen: 0
Berichten: 32
Lid geworden op: wo 27 dec 2006, 21:05

Re: Ti-84 plus

oke zal ik proberen

bedankt voor de reacties!

:eusa_whistle:
yettovisch
Artikelen: 0
Berichten: 32
Lid geworden op: wo 27 dec 2006, 21:05

Re: Ti-84 plus

Vladimir Lenin schreef:dat kan ook (-> is hier een toewijzing):

Code: Selecteer alles

input "naam1=?", str1

input "naam2=?", str2

if rand >= 0.1

then

"naam1"->str3

else

if rand >= 0.1

then

"naam2"->str3

else

if rand >= 0.1

then

"naam3"->str3

else

if rand >= 0.1

then

"naam4"->str3

else

"naam5"->str3

end

end

end

end

disp str1+"+"+str2+"="+str3
@dirkwb: nee die 0.1 was gewoon als voorbeeld, het hangt af van je n (aantal mogelijkheden) en kan dus aan de hand van statistische berekeningen evenredig verdeeld worden of je kan de kansen vergroten verkleinen, maar dat is denk ik niet het probleem
Deze script klopt nog steeds niet, wnt nu kiest hij de hele tijd de eerste naam eruit. Wat moet ik dan doen met rand en dat getal. Juist verlagen of verhogen?
Gebruikersavatar
317070
Artikelen: 0
Berichten: 5.609
Lid geworden op: za 28 feb 2009, 17:05

Re: Ti-84 plus

yettovisch schreef:Nee gewoon een andere naam die je TI kiest. Ik wil eigenlijk

naam1: Piet

naam2: Kees

disp, rand(naam3,naam4,naam5,naam6 enz)

maar hoe krijg je namen in een random functie?
de TI-84 ondersteunt geen array van strings, en maximaal slechts 10 strings (+-39 mits een paar TI-basic-'hacks').

Wat je wel kunt doen, is een soort van escapecharacter gebruiken (ik deed het zo vroeger)

Dus iets als:

Code: Selecteer alles

"/piet/jan/klaas/rudolf/harold/wilfried/germain/eddie/"->Str1

RandInt(2,length(Str1)-1)->I

while sub(Str1,I,1)!="/"

I-1->I

end

I+1->J

while sub(Str1,J,1)!="/"

J+1->J

end

disp sub(Str1,I+1,J-I-1)
Maar ik heb geen TI bij de hand, dus ik weet niet zeker of dit perfect werkt, en mijn geestelijke toestand laat het momenteel niet toe om het helemaal bugvrij te schrijven. Maar het idee werkt zeker.

Verborgen inhoud
Die goeie oude tijd, toen ik nog enkel op mijn TI programmeerde :eusa_whistle: . Ik heb me er toen schandalig veel mee beziggehouden... ooit zelfs nog een RPG-engine in geschreven


Edit: de referentie voor Ti-rekenmachines is http://www.ticalc.org/, ook al staat hij niet hoog in google.
What it all comes down to, is that I haven't got it all figured out just yet

And I've got one hand in my pocket and the other one is giving the peace sign

-Alanis Morisette-
Gebruikersavatar
Vladimir Lenin
Artikelen: 0
Berichten: 829
Lid geworden op: do 25 sep 2008, 14:15

Re: Ti-84 plus

Dat is idd nog de beste oplossing mss, maar het is wel iets langzamer (while-loops), een correcte uitvoer is niet gegarandeerd (neem nu dat er een slash zou tussenstaan) en de kansen zijn niet gelijkmatig verdeeld (afhankelijk van de lengte van de naam tegenover die van de total string).

Onderstaande code werkt met gelijkmatige kansen maar trager bij eenmalige executie, echter bij hogere executie zou hij sneller moeten werken, de enige voorwaarde is dat er minstens één naam inzit. Na initialisatie garandeert hij het ontvangen van een naam in O(1)

Code: Selecteer alles

"/piet/jan/klaas/rudolf/harold/wilfried/germain/eddie/"->Str1

length(Str1)->N

{1}->L1

2->J

for I, 2, N-1

   if sub(Str1,I,1) == "/"

   then

  I->L1(J)

  J+1->J

   end

end

N->L1(J)

J-1->N

RandInt(1,N)->I

L1(I)->J

disp sub(Str1,J,L1(I+1)-J)
"Als je niet leeft zoals je denkt, zul je snel gaan denken zoals je leeft."

--Vladimir Lenin-- (Владимир Ильич Ульянов)
yettovisch
Artikelen: 0
Berichten: 32
Lid geworden op: wo 27 dec 2006, 21:05

Re: Ti-84 plus

hij geeft nog steeds foutmeldingen bij :

if sub(Str1,I,1) == "/"

wat kan je daaraan doen?
Gebruikersavatar
Vladimir Lenin
Artikelen: 0
Berichten: 829
Lid geworden op: do 25 sep 2008, 14:15

Re: Ti-84 plus

yettovisch schreef:hij geeft nog steeds foutmeldingen bij :

if sub(Str1,I,1) == "/"

wat kan je daaraan doen?
Ik bedoelde een enkele = maar omdat in de meeste programmeertalen = als een toewijzing gezien wordt had ik het zo geschreven.

Mss lost dat het probleem op
"Als je niet leeft zoals je denkt, zul je snel gaan denken zoals je leeft."

--Vladimir Lenin-- (Владимир Ильич Ульянов)
Gebruikersavatar
317070
Artikelen: 0
Berichten: 5.609
Lid geworden op: za 28 feb 2009, 17:05

Re: Ti-84 plus

Code: Selecteer alles

disp sub(Str1,J,L1(I+1)-J)
Als ik me de syntax goed herinner, dan gaat dit beter werken:

Code: Selecteer alles

disp sub(Str1,J+1,L1(I+1)-J-1)
En het klopt dat gelijke kansen niet gegarandeerd is, maar ik dacht dat dit zou voldoen voor de vraagsteller :eusa_whistle:

Overigens zijn er nog efficiëntere algoritmes voor om dit te doen, zoals alle strings even lang te maken en op die veelvouden uit de string halen... maar die zijn moeilijker om te begrijpen als je begint met programmeren.
What it all comes down to, is that I haven't got it all figured out just yet

And I've got one hand in my pocket and the other one is giving the peace sign

-Alanis Morisette-

Terug naar “Informatica en programmeren”