Display Programmieraufgabe



  • Aber fuer ein Vorstellungsgespräch ist das schon krass oder. Ich brauch da mindestens 8 Stunden dafür.

    Also die Funktion soll so ausschauen .

    ramp.exe TopLeftColor TopRightColor [optional: BottomLeftColor] [BottomRightColor]

    Bei 2 Farben gibt es alleine schon 6 Moeglichkeiten.

    z.B. (1) TopLeftColor und TopRightColor
    (2) TopLeftColor und BottomLeftColor
    (3) TopRightColor und BottomLeftColor

    usw und sofort allein das schon rausfiltern ist schon der Hammer. Das Bedarf ja dann alles einer anderen Behandlung

    Und dann erst bei 4 Farben da muss man ja dann bilineare Interpolation anwenden.
    Gibt es da eine Formel ?


  • Mod

    Kathrin27 schrieb:

    Aber fuer ein Vorstellungsgespräch ist das schon krass oder. Ich brauch da mindestens 8 Stunden dafür.

    Ehrlich gesagt: Nein. Die Aufgabe ist simpel. Ich hätte sogar eher erwartet, dass man solch eine Aufgabe direkt vor Ort löst, in weniger als 30 Minuten (evtl. Vorgabe eines Frameworks zur Ausgabe). Oder wenn es als "Hausaufgabe" ist, dann mit deutlich höherem Anspruch, vielleicht mit Anforderungen, die dein Verständnis für Wahrnehmungstheorie (oder was auch immer für einen Displayhersteller wichtig ist) testen. Ein paar einfache Interpolationsformeln herleiten (oder zur Not im Internet nachschlagen) sollte jeder können.

    Bei 2 Farben gibt es alleine schon 6 Moeglichkeiten.

    z.B. (1) TopLeftColor und TopRightColor
    (2) TopLeftColor und BottomLeftColor
    (3) TopRightColor und BottomLeftColor

    usw und sofort allein das schon rausfiltern ist schon der Hammer. Das Bedarf ja dann alles einer anderen Behandlung

    Wieso denkst du, dass das alles einer Sonderbehandlung bedarf? 😕

    Und dann erst bei 4 Farben da muss man ja dann bilineare Interpolation anwenden.
    Gibt es da eine Formel ?

    Ja.



  • EDIT: zu spaet.

    Du hast doch schon gute, hilfreiche Antworten erhalten. Von dir hingegen kommt fast nur:

    Aber fuer ein Vorstellungsgespräch ist das schon krass oder. Ich brauch da mindestens 8 Stunden dafür.

    Mir erscheint die Aufgabe ziemlich schwierig fuer einen Test und konsumiert viel Zeit.

    usw und sofort allein das schon rausfiltern ist schon der Hammer. Das Bedarf ja dann alles einer anderen Behandlung

    Fuer mehr als 2 farben input soll ich uebrigends Bilinear interpolation verwenden.
    Sagt das jemand etwas ?

    (und spaeter, nachdem auf Wikipedia verwiesen wurde, wo es Formeln gibt:)

    Und dann erst bei 4 Farben da muss man ja dann bilineare Interpolation anwenden.
    Gibt es da eine Formel ?

    Ist dir klar, was das fuer einen Eindruck hinterlaesst? Du hast dich fuer etwas beworben und hast eine Aufgabe bekommen. Wenn du dich da korrekterweise beworben hast, solltest du diese Aufgabe auch loesen koennen. Ich habe nichts mit Farben, Displays und bilinearer Interpolation zu tun, die Aufgabe erscheint aber nicht unmenschlich schwer. 8 Stunden findest du viel? DU klingst zwischendurch, als haettest du noch nir programmiert. Das ist doch nur ein Tag, oder vielleicht drei, wenn du noch einen anderen Job hast, studierst, Kinder hast, was auch immer.

    Um nochmal zusammenzufassen, was ich und andere eh schon gesagt haben: Leg einfach mal los.
    Ist doch egal, was bilineare Interpolation ist. Wenn alles laeuft, kannst du das ja immer noch korrekt umsetzen. Aber du solltest in der Lage sein, Loesungen, die du noch nicht kennst, zu finden. Das wuerde ich als Arbeitgeber von dir erwarten. Das Problem ist auch nicht so schwierig. Beantworte doch mal diese Frage: Auf einer Scala steht links 30, rechts 50. Welcher Wert steht in der Mitte? Woher weisst du das?

    30 --------------- x --------------- 50

    Dann etwas "schwieriger":

    50 ------------- X -------------- 90
    |
    |
    X
    |
    |
    30 ------------- X -------------- 70

    Wie du auf 6 Moeglichkeiten kommst, weiss ich nicht. Ist doch auch egal. Das sind Zahlen, da musst du nicht auf irgendwelche Faelle speziell achten. Du kriegst eine Zahl und rechnest damit. Punkt.



  • 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.


  • 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/


Anmelden zum Antworten