02. februar 2001 - 23:34Der er
5 kommentarer og 1 løsning
Opret en klasse som simulerer en kombinationslås
Jeg har problmer med følgende opgave:
Implementer en klasse som kan bruges i et program, som simulerer en kombinationslås. Låsen har en rund knap, med numrene 0 til 39 markeret på kanten. Øverst over låsen er der en pil. Låsen har en 3 nummeret kombination, som vi kalder X, Y og Z. For at åbne låsen må knappen først drejes med uret mindst én omgang til position X er udfor pilen. Herefter skal det drejses mod uret til position Y, er udfor pilen. Til sidst drejes knappen igen med uret til position Z er udenfor pilen, på dette tidspunkt er det muligt at åbne låsen.
Klassen Laas skal have en konstruktør som initialiserer med en 3 nummeret kombination. Følgende metoder skal også være til stede. A) En metode til at ændre 3 nummer kombination. ( den har jeg lavet)
B) En metode til at dreje knappen i en angiven retning til et specificeret nummer. ( Denne metode har jeg ikke lige kunne gennemskue,)
C) En metode til at låse med. ( lock(){ status = false; }
D) En metode til at prøve at åbne låsen. ( Det har jeg heller ikke kunne gennemskue)
E) En equals og clone metode ( har jeg lavet)
Der udover skal jeg lave en main metode til at teste med.
Problemet ligger i at jeg ikke ved hvordan jeg skal gribe problemstilling an omkring hviklke instans variabler jeg skal bruge, og hvor mange. jeg mangler bare nogle ideer til hvordan man muligvis kunne gribe det an. Især de 2 metoder B og D.
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
da det vel næppe er meningen vi skal lave hele opgaven for dig, vil jeg lade dig selv færdiggøre public move.
mht til variablen lockLevel:
3 vil sige at den er \"helt låst\". 0 vil sige at den er klar til at blive åbnet: Når knappen fra starten er flyttet (i den rigtige retning) til x, sættes lockLevel til 2, hvilket vil sige at det nu er Y der skal findes. Bevæges der i den forkerte retning nulstilles låsen vha. lock. Ellers undersøges om vi er nået målet og lockLevel sænkes evt. Klares den sidste også nås lockLevel == 0 hvilket vil sige at den er klar til at blive åbnet:
(Det skal siges jeg ikek har forsøgt ovenstående i en compiler, og at java ikke ligefrem er mit yndlingssprog, men jeg håber da at ideen sadig er klar :)
hmm.. kan laves på mange måder vil jeg tro - spørgsmålet er hvor elegant det skal gøres. En forholdsvis simpel måde kunne vel være at tilføje et ekstre lockLevel - 4 som den starter på, samt en ekstra variabel - æ. På det tidspunkt låsen låses, sættes lockLevel til 4 og æ sættes til location. og nu skal man så for at komme fra lockLevel 4 til 3 bevæge med uret indtil man når frem til æ.
(hmm nu jeg tænker over det betyder det jo godt nok at man skal dreje og ramme den for at det virker; en lille ændring ville være at kriteriet for at komme videre fra 4 til 3 er at man bevæger sig HEN OVER æ - eksempel:
æ = 10 location = 5 turn(TURN_CLOCKWISE, 12);
så skal du bare undersøge om æ er i intervallet ]location;12]
husk også at der er muligt at gå fra lockLevel 4 til 2 i et hug, hvorfor du skal bruge en if (lockLevel == 3) efter det første check med level 4 - ikke en else if ;-)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.