Display Programmieraufgabe


  • Mod

    Kathrin27 schrieb:

    Wie du auf 6 Moeglichkeiten kommst, weiss ich nicht

    Naja es werden 4 Paramter fuer die Ecken übergeben. Uebergibt einer nur 2 Farben dann koennen die an 2 von 4 moeglichen Positionen stehen.

    Jetzt gilt es erst mal rauszufinden welche Positionen das sind. Und die Behandlung ist dann auch anders.

    z.B. TopLeftCorner und TopRightCorner ist sicherlich die gleiche Behandlung wie
    BottomLeftCorner und BottomRightCorner. Aber TopLeftCorner und BottomRightCorner ist sicherlich anders.

    Nein, da ist nichts anders. Wieso sollte es? Wenn du das 4-Farben Problem gelöst hast, hast du auch das 1-, 2- und 3-Farbenproblem gelöst, weil sich aus die fehlenden Eckfarben aus den gegebenen Eckfarben ergeben.



  • Nee da ich fuer 2 Farben die lineare Interpolation aber für mehr als 2 Farben eine bilineare Interpolation verwenden muss. Also ganz andere Algorithmen.



  • Nee da ich fuer 2 Farben die lineare Interpolation aber für mehr als 2 Farben eine bilineare Interpolation verwenden muss. Also ganz andere Algorithmen.





  • Kathrin27 schrieb:

    Nee da ich fuer 2 Farben die lineare Interpolation aber für mehr als 2 Farben eine bilineare Interpolation verwenden muss. Also ganz andere Algorithmen.

    Das musst du nur anders behandeln wenn du es dir unbedingt kompliziert machen willst.

    Aber erhlich: wenn du das nicht hinbringst, dann solltest du den Job auch nicht bekommen.
    Du wirst dort sowieso keinen unbefristeten Vertrag bekommen, und wenn man so weit weg von den gewünschten Kenntnissen und Fähigkeiten ist auf ne Verlängerung zu hoffen...



  • Um die einzelnen Farbanteile zu bekommen verwende ich Bitmasken.

    um den Rotanteil zu bekommen mache ich .

    unsigned short BitmaskeRot = 0xF800 ;

    unsigned short color;

    int Rotanteil = color & BitmaskeRot ;

    Später setze ich es wieder mit einer Or Verknüpfung wobei ich den Rotanteil erst wieder bei LinksShift geeignet verschiebe.

    Klingt kompliziert oder.



  • Kati27 schrieb:

    Klingt kompliziert oder.

    Das klingt kompliziert?
    Echt jetzt?



  • Naja 🙂

    Wenn einer nur 2 Farben übergibt dann seh ich gerade diese 3 Fälle.

    Rampe geht von links nach rechts (oder umgekehrt)
    Rampe geht von oben nach unten (oder umgekehrt)
    Rampe geht diagonal (das klingt wahnsinnig schwierig )

    Dafür verwende ich lineare Interpolation.

    color = (1-t) *c1 + t * c2 ; //t[0 1]
    

    Kann man das irgendwie durch ein einziges Model abbilden ?



  • Hey Leute also wenn dieser Bewerbungstest nicht schwierig und zeitaufwendig ist dann weiss ich echt nicht mehr. Hier hab ich jetzt mal ein Beispiel für 2 Farben gefunden. Und wie ich schon immer gesagt habe das sind unterschiedliche Fälle.
    Und für 4 Farben das ist wieder ein anderer Fall und anderer Algorithmus !!

    http://www.ucancode.net/Visual_C_Source_Code/Draw_Vertical_Gradient_Horizontal_Gradient_and_Diagonal_gradient_with_vc.htm

    Würde mir jede Firma so was schicken dann könnte ich mich pro Woche nur bei einer Firma bewerben !!



  • Überlege Dir einmal ob das nicht wirklich vielleicht nur ein einziger Fall sein kann? Nämlich eine bilineare Interpolation mit vier Farben an den vier Eckpunkten. So ziemlich jeden genannten Fall kann man wohl darauf zurückführen.

    Aber eigentlich ist das doch hier nur Getrolle, oder nicht? Was sagen die Web-Experten?



  • Und wenn ich jetzt nur mal den Fall diagonal betrachte dann erzeugt dieser auch schon wieder 4 Fälle. nämlich es könnte

    (1) von links oben nach rechts unten
    (2) von links unten nach rechts oben
    (3) von rechts oben nach links unten
    (4) von rechts unten nach links oben

    Für jeden dieser Fälle muss ich wieder anderen Code schreiben. Ich glaub ich sag der Firma ab 🙂



  • Das ist echt kein Getrolle. Wäre das nicht Overkill etwas lineares mit etwas bilineares abzubilden. Das dauert doch viel länger etc.



  • Das einzig "komplizierte" an der ganzen Sache ist wohl eigentlich, dass man vermutlich kein Floating-Point mit späterer Rundung zur Verfügung hat, um die Interpolation zu machen (ich gehe hier jetzt einfach mal von kleinen µCs aus). Darum würde ich also diesen Teil generell halten (bilinear halt) und nur einmal implementieren. Wenn Du für Special-Cases mehr Performance haben willst, kannst Du das später immernoch machen. Der Firma hast Du dann gezeigt, dass Du generalisieren kannst, um Aufwand zu sparen, das Prinzip verstanden hast, etc. pp.

    Aber dass kannst Du ja offenbar alles gar nicht, also würde ich auch vorschlagen, dass Du Dich anderswo für etwas anderes bewirbst.



  • Kati27 schrieb:

    Hey Leute also wenn dieser Bewerbungstest nicht schwierig und zeitaufwendig ist dann weiss ich echt nicht mehr.

    Wenn das für dich so "schwierig und zeitaufwendig" ist, dann bist du für diese Stelle einfach nicht geeignet.
    Es gibt nämlich Leute für die ist das nicht so "schwierig und zeitaufwendig".

    Kleiner Tip: deswegen machen die sowas. Um herauszufinden was die Kandidaten so zusammenbringen. Nen?

    Das einzige was ich bekritteln würde, wenn man davon ausgeht dass du die Vorgaben hier korrekt und vollständig wiedergegeben hast: es ist etwas unklar formuliert.
    Das macht die Sache aber auch nur dann ein kleines bisschen "schwierig und zeitaufwendig", wenn man "die perfekte Lösung (tm)" abgeben möchte.
    Weil man dann u.U. viel Erklärungen in Kommentare schreiben muss und u.U. sogar mehrere Varianten implementieren.



  • Also danke für die zahlreiche Hilfe soweit. Ich hab grad bei der Firma nachgefragt, und sie sagten dass immer 4 Farben übergeben werden. Wenn also einer nur topleft und topright übergibt dann nimmt bottomleft automatisch den Wert von topleft an und bottomright automatisch den Wert von topright an.

    Das beste ist wohl wirklich alles mit bilinear abzubilden. Dann werden aus diesen vielen Fällen nur ein einziger. Hmm.



  • Hier noch ein gutes Beispiel für bilinear . Es ist wirklich nicht so leicht wieviele hier meinen.

    http://supercomputingblog.com/graphics/coding-bilinear-interpolation/2/



  • Kati27 schrieb:

    Es ist wirklich nicht so leicht wieviele hier meinen.

    Doch, ist es. Du kannst es bloss nicht.
    http://psych.colorado.edu/~vanboven/teaching/p7536_heurbias/p7536_readings/kruger_dunning.pdf



  • So auf euren Rat hin, werd ich jetzt nur die bilineare Formel verwenden und hoffen dass ich damit alles abdecken kann.



  • Some example ramps: 16:9
    TL = 0, TR = 3 (BL = 0, BR = 3)

    0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 3
    0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 3
    0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 3
    0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 3
    0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 3
    0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 3
    0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 3
    0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 3
    0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 3



  • noch ein Beispiel

    TL = 0, TR = 0, BL = 2, BR = 2

    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
    2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
    2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
    2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2


Anmelden zum Antworten