Eddie: Welche Programmiersprache eignet sich hierfür am besten?

Hallo allerseits,

ich habe folgende Anfordung:

stellt euch vor, auf einem Server liegen 676 GIF-Bilder gleicher Größe (also 26x26 Stück). Diese Bilder sollen überlagert werden, womit recht viele Kombinationen denkbar wären[1].

Da ich nur die Original-Bilder, jedoch nicht die Ergebnisse, speichern will/kann, muss das Ganze programmiertechnisch geloest werden. Als Funktionsaufruf schwebt mir dabei einfach nur ein geeigneter Dateiname vor:
bspw. würde
<img src="/a_aa_zz.gif">
dann die Bilder 1, 27 und 676 überlagern, und das Resultat zurückliefern.

Mit welcher Programmiersprache würdet ihr das machen, um maximale Leistung (also viele Zugriffe) zu ermöglichen? Bzw. spricht etwas dagegen, das mit PHP zu lösen?

Danke für eure Hilfe,
Eddie

[1] Weiss jemand spontan die Formel dazu?
Bin mir nicht ganz sicher, glaube aber, es ist
/676\   /676\   /676\         /676\ \676/ + \675/ + \674/ + ... + \ 1 /
wobei das grosse runde Klammern sein sollen, wie auch immer man diese mathematische Notation dann nennt...
Liege ich damit richtig? Waer 'ne ziemlich grosse Zahl...

--
Old men and far travelers may lie with authority.
  1. Glück auf!

    [1] Weiss jemand spontan die Formel dazu?

    Wenn mich jetzt nicht alles täuscht und meine Kombinatorik-Kenntnisse mich nicht verlassen, sind es (2^676)-1 = 3,135285318820699159646624256897e+203 - also tatsächlich ne ganze Menge. Gibt es auch die Kombinationsmöglichkeit "kein Bild", fällt das -1 weg.
    Wie du das am besten programmiertechnisch löst, da kann ich dir (zumindest um diese Uhrzeit *g*) leider nicht weiterhelfen, sorry.

    Gruß,
    der Juve

    --
    http://www.die-blume-in-der-kaffeedose.de
  2. Hi,

    stellt euch vor, auf einem Server liegen 676 GIF-Bilder gleicher Größe (also 26x26 Stück). Diese Bilder sollen überlagert werden, womit recht viele Kombinationen denkbar wären[1].
    [1] Weiss jemand spontan die Formel dazu?

    Hängt von Nebenbedingungen ab.

    Muß jedes Bild genau einmal vorkommen im Stapel? Dann 676!
    Sind n gestapelte Bilder erlaubt, wobei jedes Bild auch mehrfach vorkommen darf? 676^n
    Sind n gestapelte Bilder erlaubt, wobei jedes Bild nur einmal vorkommen darf? 676!/(676 - n - 1)! (n muß dann natürlich kleiner als oder gleich 676 sein)

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    Schreinerei Waechter
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Hallo Andreas,

      Muß jedes Bild genau einmal vorkommen im Stapel? Dann 676!

      Nope!

      Sind n gestapelte Bilder erlaubt, wobei jedes Bild auch mehrfach vorkommen darf? 676^n

      Nope!

      Sind n gestapelte Bilder erlaubt, wobei jedes Bild nur einmal vorkommen darf?

      Genau, es sind n Bilder erlaubt, mit 0 <= n <= 676.

      676!/(676 - n - 1)! (n muß dann natürlich kleiner als oder gleich 676 sein)

      Soweit ich das in meiner Formelsammlung nachvollziehen kann, wäre das die Formel für Tupel - also geordnete Mengen. Da aber die Reihenfolge der Überlagerung keine Rolle spielt (ist so!), müsste glaubich (laut Formelsammlung) gelten:
      676! / n! (676 - n)!
      Und dazu natürlich die Summe über alle möglichen n. Nur per Hand rechne ich das nicht aus...

      Irgendwie kommt mir aber auch der Ansatz von Juve nicht ganz verkehrt vor. Versteh das einer... :-/ Vielleicht ist es ja auch dasselbe?

      Eddie

      --
      Old men and far travelers may lie with authority.
      1. Hallo Eddie,

        Das lässt sich mit dem Binomischen Satz ausrechnen:

        [latex](a + b)^n = \sum_{i=0}^n \binom{n}{i} (a^{n-i} \cdot b^i)[/latex]

        [latex]\sum_{i=1}^n \binom{n}{i} = \sum_{i=1}^n \binom{n}{i} (1^{n-i} \cdot 1^i) = (1 + 1)^n - \binom{n}{0} = 2^n - 1[/latex]

        Der Satz lässt sich mit der rekursiven Darstellung des Binomialkoefizienten (Pascalsches Dreieck) mit vollständiger Induktion zeigen. Man kann natürlich auch nur den hier benötigten Fall mit a und b gleich eins zeigen, das ist vielleicht etwas einfacher.
        Falls Dich das auch noch interessiert, kann ich den Beweis vielleicht raussuchen. Eigentlich müsste ich das noch irgendwo rumfahren haben.

        Grüße

        Daniel

  3. echo $begrüßung;

    Mit welcher Programmiersprache würdet ihr das machen, um maximale Leistung (also viele Zugriffe) zu ermöglichen? Bzw. spricht etwas dagegen, das mit PHP zu lösen?

    Da die von dir am Ende verwendete Programmiersprache diese Aufgabe sicherlich an eine für Grafikaufgaben spezialisierte Funktionsbibliothek weiterdeligieren wird, ist es im Prinzip egal, welche Umgebung du dafür verwendest, solange die nichtgrafische Bearbeitung - also der Rest, der nicht an die Grafikbibliothek deligiert wird - "im Rahmen bleibt".

    echo "$verabschiedung $name";

  4. Hi,

    also ich denke die Programmiersprache ist da ziemlich egal, ich würde mich anderer Mechanismen bedienen. Wie zum Beispiel Caching, und zwar würde ich die letzten 100 (oder mehr) generierten Bilder speichern, und/oder auch eine liste der aufgerufen Kombinationen führen und die z.b. meistgewollten Kombinationen cachen.

    gruss

    --
    no strict;
    no warnings;
    79.78 cups of Coffee (Brewed) + Me = Death
    Terrorific!
    1. Hallo Eternius,

      Wie zum Beispiel Caching, und zwar würde ich die letzten 100 (oder mehr) generierten Bilder speichern, und/oder auch eine liste der aufgerufen Kombinationen führen und die z.b. meistgewollten Kombinationen cachen.

      Sehr gute Idee!!!

      Eddie

      --
      Old men and far travelers may lie with authority.
      1. Hi,

        das traurige an der ganzen Sache ist, das leute das sogar als feature bewerben:

        Modern caching. Typo only creates the xml files when needed and serves static copies to your subscribers.

        Wow. Vielleicht sehe ich das ja falsch, aber für mich ist das doch eine Selbstverständlichkeit. Wenn eine Seite/rss/bilder/.. keine (serverseitig generierten) dynamischen Inhalte (mit dynamisch meine ich, wenn die Seite bei jedem Aufruf unterschiedlichen Inhalt enthält) enthält, warum sollte man sie dann dynamisch ausliefern, es reicht die Inhalte zu generieren, statisch auszuliefern, und bei bedarf (änderung, etc) diese neu zu generieren.

        gruss

        p.s. ein Weblog ist für mich auch statisch.

        --
        no strict;
        no warnings;
        79.78 cups of Coffee (Brewed) + Me = Death
        Terrorific!