In article <6RHG9.52636$HU.3596322@news010.worldonline.dk>,
dr_scooter.news@kandu.dk says...
> Jeg er lidt af en newbie til delphi 6... og jeg skal lave et lille
> program i datalogi(valgfag på gym.)
> og jeg mangler en ide til et lille program/spil hvor man bruger
> algoritme(r).
Nu er algoritmer jo et vidt begreb, men jeg har da et par forslag.
Et lille spil:
1) Lad x bolde hoppe rundt i et vindue
2) Lad brugeren styre en boldfanger med piletaster eller mus
3) Når en bold fanges, flytter de resterende bolde sig hurtigere
4) Score er lig den tid det tager at fange alle bolde
Der skal bruges en algoritme til bevægelse af bolde og en til
detektering af kollision.
Et forslag til et program. Hmm... En søger til domænenavne?
Tag to lister: En med samtlige registrerede domænenavne under dk og en
med danske ord, dvs. en ordbog.
Lav et program, der lader brugeren angive hvor langt det ønskede
domænenavn må være (f.eks. 3 tegn) og lad programmet give alle de
ledige domænenavne, der også er ord i ordbogen.
Eksempel: Hvis man beder om domænenavne på 3 tegn får man at vide at
dry, dyp, fhv, flg, gnd, gyd, hyr, hyt, ile, jun, khz, kog, kue, kyl,
lul, mut, myo, naj, nuv, puh, pyh, ril, rub, syr, tig, tov, tyd, tyl,
tys, und, ymt og ynk er ledige.
Algoritmedelen er at lave programmet, så det ikke er to dage om at
udregne resultatet: En liste skal trækkes fra en anden, hvordan gøres
det fornuftigt?
Et andet forslag: Sten, papir, saks i modificeret udgave
Spilleren kan hele tiden vælge at trykke tast A eller tast B.
Programmet prøver at gætte på hvad spilleren trykker. Gætter det
rigtigt, får programmet et point, gætter det forkert, får spilleren et
point.
Lav en algoritme, så programmet vinder efter et stykke tid.
Hint: Selvom vi prøver at gøre ting tilfældigt, laver vi meget hurtigt
mønstre. En simpel algoritme kunne være at kigge på de sidste tre valg
og se samtlige tidligere valg igennem.
Eksempel: Brugeren har tastet AABBABABABBBABBABBABBBAAABABA. Hvad
taster brugeren næste gang?
Programmet kigger på de sidste tre valg: ABA og optæller derefter hvad
udfaldene har været de forgående gange de har været brugt:
AAB: Nej
ABB: Nej
BBA: Nej
BAB: Nej
ABA: Aha! Der var en. Det efterfølgende valg var A
BAB: Nej
ABA: Der var en til. Det efterfølgende valg var B
....
ABA: Efterfølgende valg B.
BAB: Nej
ABA: Ingen efterfølgende, da det er de sidste valg i rækken.
Okay, mønstret blev fundet tre gange: En hvor A var det efterfølgende
valg og to hvor B var. Programmet gætter derfor på at spilleren vil
vælge B.
Jeg lavede selv noget lignende for en del år siden. Det var ikke meget
mere kompliceret end beskrevet ovenfor, men det var sjovt at se det
vinde, når spilleren havde foretaget omkring 100-150 valg.
Man kan udvide søgealgoritmen til også at kigge efter andre længder og
man kan eksperimentere med at lade programmet gætte på det omvendte af
hvad det tror, hvis det detekterer at det gætter forkert mere end
halvdelen af gangene. Osv.
En anden mulighed er at lave et "rigtigt" sten, papir, saks spil. Det
kan laves efter samme princip, men kræver lidt mere tænkearbejde.
--
Toke Eskildsen <URL:
http://ww.daimi.au.dk/~darkwing/>