Det vore lite skoj med fler "veckans nöt" uppgifter. En som vid första anblick kan vara helt självklar, men det finns ett ganska trevligt sätt att lösa den: Jo... Undrar om det var den metod Niklas hade tänkt sig...? Den är grymt bra ut många synpunkter, och även om jag delvis tänkte på någon binär variant var det inte exakt den jag tänkte på. För övrigt en jäkla kul grej med såna tankenötter. Den lösning du presenterade, Niklas, är samma som jag först kom att tänka på. Sedan kom jag på att man kan komprimera den till den jag skrev ovan. Jo, det är ju i princip samma kod, men "min" är väl på sitt sätt lite lättare att justera etc., och jag tror att det är aningen lättare att förstå den. Per, OK det var clever.. :) i produktionskod skulle jag inte välja niklas förslag heller.. I produktionskod skulle jag nog först använda den "uppenbara" lösningen med vanliga jämförelser. Om detta (vilket inte är särskilt troligt) skulle vara för långsamt, skulle jag använda min lösning, men sätta originalkoden och en förklaring av hur min fungerar i ett kommentarsblock.Fler nötter ?
personligen tycker jag att det är skitfränt att se hur folk löser samma sak på olika sätt.
när man sitter och klurar själv så tänker man ofta i samma banor hela tiden och det kan vara kul att få lite nya inspel på hur vissa saker kan lösas.
.. tycker jag iaf :P..
//RogerSv: Fler nötter ?
(valfritt språk)
Du får in ett tal x, mindre än 20, och du ska returnera ett true när vissa villkor är uppfyllda:
3<x<10
eller
x=12
eller
x=14
eller
16<x<20
nåt bra sätt?Sv: Fler nötter ?
Jag hoppas förresten att x skulle vara ett heltal... Annars funkar inte min metod...Sv: Fler nötter ?
Ett problem kunde vara att koden blir ganska svår att förstå och ändra om behov finns.
En metod (som i stort sett är samma sak) är att använda sig av en array, den kan också lätt göras så att den funkar för flyttal. Dess största problem är att det inte heller här är helt uppenbart vad som händer, och att den tar ganska stor plats att skriva
typ:
//i ett specialnamespace, så den där oknumber inte blottas.
bool oknumber [] = {0, 0, 1, 1, 1, ... 0, ... 1}
bool fun()
{
return oknumber[x];
}
Sv: Fler nötter ?
I regel så ger det inte jättestor skillnad, och troligtvis är många speciallösningar (som min och pers i den här tråden) ofta ganska oanvändbara, men det är kul och stimulerande...Sv: Fler nötter ?
Sv: Fler nötter ?
Sv: Fler nötter ?
Men, Niklas förslag skulle jag fördedra i produktionskod.
"En aning" lättare att förstå och justera den.Sv: Fler nötter ?
if x>3 and x<10 or .... then
skulle nog vära mer läsligt...Sv: Fler nötter ?