aadnk Skrevet 14. juli 2007 Del Skrevet 14. juli 2007 (endret) Ettersom det siste problemet tydeligvis ikke falt helt i smak, har jeg besluttet å prøve meg på et problem som er mer i stil med det første problemet i denne tråden. Det er trivielt, men er muligens litt morsom å bryne seg på. Tenk deg at du bygger et funksjonsbibliotek i et C#-liknende språk til støtte for et svært begrenset og primitivt skriptspråk som irriterende nok ikke implementerer vanlige logiske operatorer (selv om det er i stand til å kalle funksjoner og bruke Boolean-datatypen). Oppgaven går da ut på å lage en funksjon som er i stand til å simulere de fleste logiske operatorer på to Boolean-verdier - alt i så få linjer kode (og operatorer) som mulig. Koden bør se noenlunde slik ut: public enum Tables { And = 1, // Logical conjunction Or = 2, // Logical disjunction Imp = 3, // Logical implication Eq = 4, // Logical equality Xor = 5, // Exclusive disjunction NAnd = 6, // Logical NAND Nor = 7, // Logical NOR MImp = 8, // Material nonimplication CImp = 9 // Converse nonimplication } public bool Truth(Tables Table, bool A, bool B) { } Dersom en legger til/endrer/fjerner linjer fra dette standardoppsettet, er det å regne som nye linjer. Det eneste som ikke telles med, er å endre verdiene/rekkefølgen på de ulike elementene/operatorene i Tables-enumerasjonen. Hvordan kan dette gjøres på så få linjer som overhodet mulig? Endret 14. juli 2007 av aadnk Lenke til kommentar https://www.diskusjon.no/topic/691639-n%C3%B8tter-4-int-og-flere/page/6/#findComment-9070587
aadnk Skrevet 14. juli 2007 Del Skrevet 14. juli 2007 Ingen? Er problemet for kjedelig/trivielt til at noen gidder å prøve seg, eller er det for vanskelig? Jeg kan godt komme med hint om det er ønskelig. Lenke til kommentar https://www.diskusjon.no/topic/691639-n%C3%B8tter-4-int-og-flere/page/6/#findComment-9073882
aadnk Skrevet 17. juli 2007 Del Skrevet 17. juli 2007 Siden ingen har meldt seg, akter jeg å komme med en besvarelse i en spoiler-tagg. Dersom noen andre har interessante oppgaver på lager, er det bare å komme med dem. Klikk for å se/fjerne innholdet nedenfor public enum Tables { And = 8, // Logical conjunction Or = 14, // Logical disjunction Imp = 11, // Logical implication Eq = 9, // Logical equality Xor = 6, // Exclusive disjunction NAnd = 7, // Logical NAND Nor = 1, // Logical NOR MImp = 4, // Material nonimplication CImp = 2 // Converse nonimplication } public bool Truth(Tables Table, bool A, bool B) { return ((int)Table & (1 << ((Convert.ToInt32(A) << 1) + Convert.ToInt32(B)))) != 0; } Lenke til kommentar https://www.diskusjon.no/topic/691639-n%C3%B8tter-4-int-og-flere/page/6/#findComment-9091105
misvisning Skrevet 18. juli 2007 Forfatter Del Skrevet 18. juli 2007 Hm, hva blir en boolsk verdi som int i C#? True 1 og false 0 eller? Lenke til kommentar https://www.diskusjon.no/topic/691639-n%C3%B8tter-4-int-og-flere/page/6/#findComment-9093685
aadnk Skrevet 18. juli 2007 Del Skrevet 18. juli 2007 Hm, hva blir en boolsk verdi som int i C#? True 1 og false 0 eller? 9093685[/snapback] Det stemmer. Lenke til kommentar https://www.diskusjon.no/topic/691639-n%C3%B8tter-4-int-og-flere/page/6/#findComment-9093733
GeirGrusom Skrevet 18. juli 2007 Del Skrevet 18. juli 2007 I VB6 ble det -1 for true, dvs. 0xFFFFFFFF for at logiske og binære operasjoner skulle få samme utfall. Men i de fleste andre programmeringsspråk er false = 0, og true != 0 Lenke til kommentar https://www.diskusjon.no/topic/691639-n%C3%B8tter-4-int-og-flere/page/6/#findComment-9094922
anders02 Skrevet 27. september 2007 Del Skrevet 27. september 2007 Denne tråden har ligget død altfor lenge, så jeg vekker den til live med en ny nøtt. Tenk deg at vi har et ubegrenset antall røde kuber i et begrenset antall størrelser (f.eks. ti størrelser), samtidig som vi har et begrenset antall blå kuber (f.eks. hundre stykker) av ulik størrelse. Den største blå kuben får plass inni den største røde. Du får utdelt X antall blå kuber, og har så mange røde du ønsker. Vi skal putte noen av de blå kubene oppi så få av de røde kubene som mulig, samtidig som vi ønsker at totalt volum av de røde kubene skal være så lite som mulig. Fordi antall kuber i begge farger er lite er det heller ønskelig med en treg og god løsning enn en rask og mindre god løsning. Det blir ekstrapoeng hvis løsningen er skrevet i C/C++/C#/Java/VB eller et språk som ligner på et av disse. Lenke til kommentar https://www.diskusjon.no/topic/691639-n%C3%B8tter-4-int-og-flere/page/6/#findComment-9590682
Wattengård Skrevet 28. september 2007 Del Skrevet 28. september 2007 Dette er vel egentlig ikke en programmeringsnøtt men mer en kombinatorikk-nøtt. Hvis du klarer å brette hue rundt kombinatorikken så er det ingen problem å implementere den med grunnleggende forståelse for programmering. -C- Lenke til kommentar https://www.diskusjon.no/topic/691639-n%C3%B8tter-4-int-og-flere/page/6/#findComment-9593090
HDSoftware Skrevet 3. oktober 2007 Del Skrevet 3. oktober 2007 (endret) Hmm. Morsom tråd. Slenger meg på.... I mens dere grubler over den kombinatoriske løsningen så kan dere også gruble litt på denne. Et triviellt programmeringsuttrykk, men dere skal finne det matematiske uttrykket som gir det største tallet av to tall. Altså: int StørstTall = FinnStørst(tallA, tallb) Husk: Ingen tester er tillat, kunn ren matematikk Kansje ikke den vanskeligste oppgaven som finnes, men har flere og tyngre på lager.... Endret 3. oktober 2007 av HDSoftware Lenke til kommentar https://www.diskusjon.no/topic/691639-n%C3%B8tter-4-int-og-flere/page/6/#findComment-9629629
GeirGrusom Skrevet 4. oktober 2007 Del Skrevet 4. oktober 2007 (endret) Den er ikke så lett da :O private static int Max(int a, int b) { return (a + b + (int)Math.Sqrt(Math.Pow((a - b), 2))) / 2; } private static double Max(double a, double b) { return (a + b + Math.Sqrt(Math.Pow((a - b), 2))) / 2; } altså, formelen er a + b + sqrt((a - b)^2) / 2 Endret 4. oktober 2007 av GeirGrusom Lenke til kommentar https://www.diskusjon.no/topic/691639-n%C3%B8tter-4-int-og-flere/page/6/#findComment-9634346
Wattengård Skrevet 4. oktober 2007 Del Skrevet 4. oktober 2007 Jeg kan jo gjenta igjen... Dette er vel heller ikke et programmeringsproblem, men et matteproblem... Eller? -C- Lenke til kommentar https://www.diskusjon.no/topic/691639-n%C3%B8tter-4-int-og-flere/page/6/#findComment-9634519
j000rn Skrevet 4. oktober 2007 Del Skrevet 4. oktober 2007 altså, formelen er a + b + sqrt((a - b)^2) / 2 9634346[/snapback] Det var jo logisk...! Lenke til kommentar https://www.diskusjon.no/topic/691639-n%C3%B8tter-4-int-og-flere/page/6/#findComment-9634803
aadnk Skrevet 12. oktober 2007 Del Skrevet 12. oktober 2007 (endret) Har du testet den formelen, GeirGrusom? Det ser ikke ut til at den fungerer slik den skal: A B Max(A, B) 21 3 33 8 -21 2 -20 27 30 -49 26 14 31 21 57 -45 -9 -36 36 29 68 -13 46 62 37 -44 34 45 -14 60 Nåvel, over til ovenstående oppgave. Mitt forslag blir å benytte Sign()-funksjonen: Max(a,b) = a * Equal(Sign(a - b), 1) + b * Equal(Sign(b - a), 1) + Equal(a, b) Equal(a,b) = (1 - Abs(Sign(A - B))) * A I C# blir dette som følger: public double Max(double A, double B) { return A * Equal(Math.Sign(A - B), 1) + B * Equal(Math.Sign(B - A), 1) + Equal(A, B); } public double Equal(double A, double B) { return (1 - Math.Abs(Math.Sign(A - B))) * A; } For øvrig kan Sign()-funksjonen defineres med Abs()-funksjonen, hvilket i sin tur kan defineres med primitive operasjoner: Sign(a) = a / abs(a) = a / sqrt(a^2) Endret 12. oktober 2007 av aadnk Lenke til kommentar https://www.diskusjon.no/topic/691639-n%C3%B8tter-4-int-og-flere/page/6/#findComment-9691120
Jaffe Skrevet 12. oktober 2007 Del Skrevet 12. oktober 2007 GeirGrusom sin fungerer fint den, i alle fall i min oversetning til Scheme: (define (finn-størst a b) (/ (+ a b (sqrt (expt (- a b) 2))) 2)) Kjøring: > (finn-størst 2 3) 3 > (finn-størst 3 2) 3 > (finn-størst 9 2) 9 > (finn-størst -1 2) 2 Merk at i formelen mente han nok (a + b + sqrt((a - b)2)) / 2. Lenke til kommentar https://www.diskusjon.no/topic/691639-n%C3%B8tter-4-int-og-flere/page/6/#findComment-9692405
GeirGrusom Skrevet 13. oktober 2007 Del Skrevet 13. oktober 2007 Flott at de har fått superscript og subscript i nye versjonen Lenke til kommentar https://www.diskusjon.no/topic/691639-n%C3%B8tter-4-int-og-flere/page/6/#findComment-9696389
MrBone Skrevet 22. oktober 2007 Del Skrevet 22. oktober 2007 (endret) Artig liten nøtt jeg kom på fra skolen: Du har 2 variabler med tall i, bytt innholdet uten å bruke en tredje. Endret 22. oktober 2007 av MrBone Lenke til kommentar https://www.diskusjon.no/topic/691639-n%C3%B8tter-4-int-og-flere/page/6/#findComment-9753692
teflonpanne Skrevet 22. oktober 2007 Del Skrevet 22. oktober 2007 (endret) a ^= b b ^= a a ^= b Endret 22. oktober 2007 av teflonpanne Lenke til kommentar https://www.diskusjon.no/topic/691639-n%C3%B8tter-4-int-og-flere/page/6/#findComment-9753778
j000rn Skrevet 22. oktober 2007 Del Skrevet 22. oktober 2007 (endret) xxx Og nestegang gjømmer vi teksten slik at andre også kan få prøvd seg Endret 22. oktober 2007 av jorn79 Lenke til kommentar https://www.diskusjon.no/topic/691639-n%C3%B8tter-4-int-og-flere/page/6/#findComment-9753930
teflonpanne Skrevet 22. oktober 2007 Del Skrevet 22. oktober 2007 Ja, det burde jeg ha gjort. Sorry Lenke til kommentar https://www.diskusjon.no/topic/691639-n%C3%B8tter-4-int-og-flere/page/6/#findComment-9753993
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå