Vinnaren i pepparkakshustävlingen!
  • 1
  • 2
2013-04-21, 00:51
  #1
Medlem
BerusadeNisses avatar
Ja, jag satt här och spekulerade och fick en idé om en rolig utmaning. Detta är alltså ingen skoluppgift eller dyl. och jag har själv ett par lösningar.

Utmaningen: Tilldela en integer en slumpgenererat värde, ta sedan reda på värdet utan att på något sätt interagera med datatypen efter initiering.

Kod är välkommen men inte nödvändig, skriv så många lösningar du kan komma på.
Citera
2013-04-21, 00:55
  #2
Medlem
Med "datatypen", menar du då variabeln?

Vad vet man? Spontant känner jag att man måste veta slumpalgoritmen och seeden.
Citera
2013-04-21, 01:00
  #3
Medlem
BerusadeNisses avatar
Citat:
Ursprungligen postat av patwotrik
Med "datatypen", menar du då variabeln?

Vad vet man? Spontant känner jag att man måste veta slumpalgoritmen och seeden.
Ja, variabeln
Och ja, du vet allt förutom vilket värde variabeln blev tilldelad.
Citera
2013-04-21, 01:07
  #4
Medlem
Citat:
Ursprungligen postat av BerusadeNisse
Ja, variabeln
Och ja, du vet allt förutom vilket värde variabeln blev tilldelad.
En slumpgenerator fungerar i princip på så sätt att den är en funktion av föregående slumptal (eller fler)

Man initierar en slumpgenerator med en så kallad seed, och vill man att det ska bli olika varje gång brukar man använda klockan som seed.

Om man vet hur slumpgeneratorn är uppbyggd, hur många gånger den anropats och vilken seed den har är det jättelätt att räkna ut det du undrar.
Citera
2013-04-21, 01:13
  #5
Medlem
BerusadeNisses avatar
Citat:
Ursprungligen postat av patwotrik
En slumpgenerator fungerar i princip på så sätt att den är en funktion av föregående slumptal (eller fler)

Man initierar en slumpgenerator med en så kallad seed, och vill man att det ska bli olika varje gång brukar man använda klockan som seed.

Om man vet hur slumpgeneratorn är uppbyggd, hur många gånger den anropats och vilken seed den har är det jättelätt att räkna ut det du undrar.
Aj tusan, jag tog för givet att man använde time(NULL) som seed. Men ja, du löste problemet! (Hädanäfter skall tidsseeden vara självklar, men ingen av dom lösningarna jag hade tänkt ut hade med själva slumpgenereringen att göra, så man kan lika gärna ge den ett eget värde)
Citera
2013-04-21, 01:36
  #6
Medlem
Citat:
Ursprungligen postat av BerusadeNisse
Aj tusan, jag tog för givet att man använde time(NULL) som seed. Men ja, du löste problemet! (Hädanäfter skall tidsseeden vara självklar, men ingen av dom lösningarna jag hade tänkt ut hade med själva slumpgenereringen att göra, så man kan lika gärna ge den ett eget värde)
Hmmm...

Var ditt egentliga problem att du ville ha samma slumpsekvens varje gång? Ja, då är det ju bara att seeda med vilket heltal som helst.
Citera
2013-04-21, 03:18
  #7
Medlem
BerusadeNisses avatar
Citat:
Ursprungligen postat av patwotrik
Hmmm...

Var ditt egentliga problem att du ville ha samma slumpsekvens varje gång? Ja, då är det ju bara att seeda med vilket heltal som helst.
Nja, utan snarare att man skulle få tag på själva värdet utan direkt kontakt med variabeln, oavsett hur variabeln tilldelades värdet.
Citera
2013-04-21, 03:43
  #8
Medlem
Kod:
(void) printf("%d\n", *&variabelnamnet);
Citera
2013-04-21, 09:52
  #9
Medlem
Citat:
Ursprungligen postat av BerusadeNisse
Nja, utan snarare att man skulle få tag på själva värdet utan direkt kontakt med variabeln, oavsett hur variabeln tilldelades värdet.
Varför? Är det ett reellt problem, eller sitter du och filosoferar om det är möjligt?
Citera
2013-04-21, 14:11
  #10
Medlem
BerusadeNisses avatar
Citat:
Ursprungligen postat av alef-noll
Kod:
(void) printf("%d\n", *&variabelnamnet);

Ja, fast då tar du ju kontakt med variabeln. Du måste få tag på värdet utan att någonsin nämna variabelnamnet efter initieringen.

Citat:
Ursprungligen postat av patwotrik
Varför? Är det ett reellt problem, eller sitter du och filosoferar om det är möjligt?

Nej, det är en utmaning för C/C++'s mästares mästare.
Citera
2013-04-21, 15:03
  #11
Medlem
Citat:
Ursprungligen postat av BerusadeNisse
Ja, fast då tar du ju kontakt med variabeln. Du måste få tag på värdet utan att någonsin nämna variabelnamnet efter initieringen.
Kod:
int* ptr;
int var;
ptr = &var;

var = some_random_generator();

printf("%d", *ptr);

Var försiktig med hur du skriver specar. Det jag citerade är uppfyllt.
Citera
2013-04-21, 15:48
  #12
Medlem
BerusadeNisses avatar
Citat:
Ursprungligen postat av patwotrik
Kod:
int* ptr;
int var;
ptr = &var;

var = some_random_generator();

printf("%d", *ptr);

Var försiktig med hur du skriver specar. Det jag citerade är uppfyllt.

Ja, pga min okunnighet inom ämnet visade det sig finnas flera lösningar än jag hade räknat med. Återkommer med något nytt, nån gång!
Citera
  • 1
  • 2

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback