BlitzQuiz - AUFLÖSUNG: Geheime Bild-Botschaften
Übersicht

Gehe zu Seite Zurück 1, 2, 3, 4, 5
![]() |
Joel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich kann mich denen mit der Quersumme von 88 anschließen....
wie blöd das ich erst nach einer halben Stunde Rechnen meines Computers auf die richtige Idee kam... ![]() |
||
![]() |
Addi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Kann mir vlt. jemand ein Tipp geben ich komm gerade nicht drauf ![]() Habe auch schon versucht irgendwie mit dem Rest zu arbeiten geht aber nicht. |
||
BP/B3D/BMax : Lerne Java : Früher mal Lite-C : Gewinner BCC 62 |
![]() |
BlitzMoritzBetreff: Auflösung Teiler-Rest-Rätsel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Gesucht wurde die Zahl
219060189739591198 Hinführung: Wenn man sich die ersten Ergebnisse auflisten lässt, also etwa mit den Obergrenzen 4 bis 18, beispielsweise mit diesem (noch nicht optimalen) Algorithmus: BlitzMax: [AUSKLAPPEN] SuperStrictdann sollte man an den aufgelisteten Lösungen mehrere Auffälligkeiten beobachtet haben: 1.) Am Anfang scheint das Ergebnis jedesmal um zwei kleiner zu sein als das Produkt der Zahlen, also 10 = 3*4 - 2 und 58 = 3*4*5 - 2 Die Angelegenheit hat also vielleicht etwas damit zu tun, dass die Zahlen von der 3 bis zur Obergrenze miteinander multipliziert werden müssen ... ? 2.) Es kommen mitunter für mehrere Obergrenzen gleiche Ergebnisse heraus. Schaut man genauer hin, dann ändert sich das Ergebnis immer dann, wenn die nächste Obergrenze eine Primzahl ist oder einen zusätzlichen Primfaktor enthält, der bei den Vorgängerzahlen noch nicht vorhanden war. Die Sache scheint also auch etwas mit Primfaktorzerlegung zu tun zu haben. Nimmt man beide Beobachtungen zusammen, so wird klar, dass es sich um nichts anderes als das kleinste gemeinsame Vielfache (kgV) der Zahlen 3 bis zur Obergrenze handelt, von der man jeweils 2 abzieht. Mathematisch lässt sich das so beweisen: Gesucht sei die Lösung für die Zahlen 3 bis n und sei i gegeben mit 3 <= i <= n In seiner Eigenschaft als kleinstes gemeinsames Vielfaches gilt dann, dass kgV(3, ... , n) durch i teilbar ist und keinen Rest hat. Dann ist aber auch kgV(3, ... , n) - i durch i teilbar ohne Rest. Es soll jedoch der Rest (i-2) übrigbleiben. Addieren wir ihn dazu und erhalten kgV(3, ... , n) - i + (i-2) = kgV(3, ... , n) - 2 Der obige erste Algorithmus ist für Obergrenzen jenseits der 20 oder gar 30 nicht zu gebrauchen, da er viel zu lang dauern würde. Wer dies testen will, beachte bitte, dass vorher Int durch Long und Float durch Double ausgetauscht werden müsste. Mit der jüngst gewonnen Erkenntnis geht es jedoch nur noch darum, einen Code zu schreiben, der den kgV berechnet:BlitzMax: [AUSKLAPPEN] SuperStrict HC bat mich um die zeitgerechte Veröffentlichung seines Beitrags, die nun folgen soll: '________________________________________________________________________________ ![]() BlitzMax: [AUSKLAPPEN] SuperStrict |
||
![]() |
Noobody |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dass die Lösung LCM - 2 sein muss, fiel mir leider erst im Nachhinein auf. Für mich klang das Problem auf den ersten Blick nach einer Anwendung der allgemeineren Form des Chinesischen Restsatzes, der Methode der sukzessiven Vorwärtssubstitution.
Im Prinzip kombiniert die Methode immer zwei Kongruenzen in eine, indem es die allgemeine Lösung der ersten Kongruenz in die zweite einsetzt, die konstanten Teile verrechnet, die Gleichung vereinfacht und dann mithilfe der modularen Inverse (berechnet durch erweiterten GCD) eine Lösung der ersten Kongruenz findet, die die zweite erfüllt. Dann wird diese Lösung rückwärts eingesetzt und man erhält eine Kongruenz, deren Lösungen beide ursprünglichen Kongruenzen erfüllen. Diese neu erhaltene Kongruenz kombiniert man wiederum mit der nächsten Kongruenz und reduziert so Stück für Stück die Anzahl Kongruenzen, bis man nur noch eine übrig hat, welche alle Anfangsbedingungen erfüllt. Damit ist es ein leichtes, alle Lösungen zu erhalten, die diese Kongruenz erfüllen (unter anderem auch die kleinste Lösung). Ist ein wenig mit Kanonen auf Spatzen geschossen ![]() BlitzMax: [AUSKLAPPEN] SuperStrict |
||
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun |
![]() |
Joel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was macht ihr alle das so Kompliziert?
ggT kann man doch viel schöner mit dem Euklidischen Algorithmus ausrechnen. und der kgV ist dann das Produkt der beiden Zahlen durch den ggT... BlitzMax: [AUSKLAPPEN] SuperStrict Aber bis ich auf die Grundidee gekommen bin hat's ne weile gedauert.. Schöne aufgabe! |
||
![]() |
BlitzMoritz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Neues BlitzQuiz:
Geheime Bild-Botschaften Vier gleiche Bilder? Mysteriös ... ?! Bild-0: Bild-1: Bild-2: Bild-3: Für das menschliche Auge mögen diese vier Bilder ja völlig identisch seien, in Wahrheit sind sie es jedoch nicht: In den Bildern 1, 2 und 3 sind drei verschiedene geheime Botschaften verborgen. Das erste Bild-0 enthält für sich allein keine Botschaft, sondern bildet den "Schlüssel". Das Verschlüsslungsverfahren besteht aus zwei Aspekten: 1.) Durch den Vergleich der ARGB-Farbwerte (Alpha, Rot, Grün und Blau) mit denen von Bild-0 können minimale Unterschiede (jeweils kleiner 4) festgestellt werden. Diese vier absoluten Differenzen bilden die vier Ziffern einer 4er-Systemzahl (der Blau-Unterschied bildet also die Einerziffer der 4er-Systemzahl), mit der jedes Byte von 0 bis 255 darstellbar ist, also auch jede Ascii-Nummer. Dadurch kann - für das Auge unbemerkt - pro Pixel ein Buchstabe bzw. Zeichen "verpackt" werden. (Der Text steht im Windows-Ansi-Zeichensatz, auf Unix-Systemen werden daher einige Sonderbuchstaben falsch aussehen.) 2.) Der Text ist, ausgehend vom zentralen Pixel in der Bildmitte, spiralförmig angeordnet, und zwar Pixel für Pixel: Von der Mitte nach Rechts - nach Unten - nach Links - nach Links - nach Oben usw... Folgendes, stark vergrößertes Beispiel möge die Pixel-Textspirale von "Hallo und herzlich Willkommen!" veranschaulichen: Nun viel Spaß beim Entschlüsseln der Texte! Falls ihr alle drei Bilder entschlüsselt habt, verratet bitte nicht den konkreten Inhalt - ein paar allgemeine oder rätselhafte Anspielungen seien aber erlaubt ![]() In einer Woche können dann die konkreten Auflösungen und Code-Beispiele gepostet werden. |
||
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Entweder stell ich mich grad blöd an oder die Aufgabe is mit B3D nicht lösbar?
Alpha is bei mir immer -1, eh klar wegen den 32-bit-signed Integers oder? Also so wie es in der OnlineHilfe zu ReadPixel ![]() Code: [AUSKLAPPEN] col=ReadPixel(x,y,buffer)
a = (col And $FF000000)/$1000000 Vielleicht hab ich auch BB langsam verlernt ![]() mfG, Christoph. |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
![]() |
blackgecko |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Eingeproggt Bist du sicher, dass Alpha immer -1 ist oder vielleicht nur sehr oft? Mit BlitzMax gehts nämlich und dort sind die Integer ja auch 32Bit signed. (es sind 4 Werte, jeder bekommt 8 Bits. Sollte reichen.)
Edit: Schönes Rätsel, allerdings schon fast zu viel verraten. |
||
- Zuletzt bearbeitet von blackgecko am Sa, Jun 16, 2012 13:09, insgesamt einmal bearbeitet
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Gerade nochmal nachgeprüft, ja ich bin mir sicher. | ||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
![]() |
SpionAtomBetreff: Alpha spinnt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Readpixel![]() Hier mal die ersten Werte des Schlüsselbilds und des ersten Verschlüsselungsbildes: Code: [AUSKLAPPEN] 11111111101100101000001101111010, 11111111101100101000001101111011
11111111101111111000110010000011, 11111111110000011000111110000001 11111111110010011001010110010001, 11111111110001111001010110010001 11111111110000001000111010001010, 11111111101111101000110110001001 11111111100100110110010001011111, 11111111100101010110001001011110 11111111101111001000111010000101, 11111111101111101001000110000111 11111111101001010111110001101101, 11111111101001110111101101101110 11111111101001100111110001101101, 11111111101001000111100101101100 11111111110000001001001010000101, 11111111110000101001001010000101 11111111101100101000000101110101, 11111111101100011000000101110010 11111111101001110111001001101010, 11111111101001010111010101101101 11111111110000111000011110000100, 11111111110001011000101010000101 11111111101010010111000001101100, 11111111101010110111001101101011 11111111100111000110100101100011, 11111111100110100110101001100010 11111111101100111000010001111011, 11111111101101101000010001111001 11111111100111110111001101101010, 11111111101000010111011001101011 11111111101011011000000001110001, 11111111101011110111110101110100 11111111100110110110101101100100, 11111111100110000110101101100110 11111111101011000111110101110110, 11111111101010100111110001111001 Die ersten 8 Bits sind stets gesetzt :/. Auch in Java funktioniert der getAlpha()-befehl der Colorklasse nicht richtig. Verrückt ist, dass es funktioniert, wenn ich den Alphawert manuel ausrechne: Code: [AUSKLAPPEN] int d1 = Math.abs(((argb2 >> 24) & 0x000000FF) - ((argb1 >> 24) & 0x000000FF));
int d2 = Math.abs(c2.getRed() - c1.getRed()); int d3 = Math.abs(c2.getGreen() - c1.getGreen()); int d4 = Math.abs(c2.getBlue() - c1.getBlue()); Nungut, die Aufgabe ist gelöst, in Java. Hab gleich alle Bilder auf einen Streich entschlüsselt! |
||
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 |
![]() |
BlitzMoritz |
![]() Antworten mit Zitat ![]() |
---|---|---|
@SpionAtom: Du und dein Java ![]() ![]() Täte mir leid, wenn B3D-ler benachteiligt wären ![]() Also mit der Umrechnung in BlitzMax: [AUSKLAPPEN] Alpha% = (ARGB & $FF000000:Int) / $1000000:Intsollte es keine Probleme geben. |
||
![]() |
SpionAtom |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja ich und mein Java. Hab das Programm aber erst in BB geschrieben und bis auf die Alphageschichte funktionierts auch dort. ![]() Außerdem gehts bei deinen Rätseln ja mehr um die Logik dahinter denn um die Programmiersprache (hoffe ich einfach mal). |
||
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 |
![]() |
ZEVS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mit BlitzMax war das ein Kinderspiel.
So toll wie BlitzMax, gibt es keine Programmiersprache unter der Sonne. ZEVS |
||
![]() |
Nova |
![]() Antworten mit Zitat ![]() |
---|---|---|
Puhh, ich kriege jetzt jedenfalls etwas vernünftiges raus. Naja, fast... Die Rechtschreibung und der Sinn der Geschichte ist noch etwas komisch, da habe ich wohl noch einen Fehler...
Darum kümmere ich mich jetzt. ![]() Edit: Ach, wie schön, es funktioniert jetzt. ![]() Die Geschichte mit Hans habe ich mir ganz durchgelesen, aber die anderen beiden... Ne, keine Lust. ^^ Also, war eine schöne, aber halt auch ein wenig komplizierte Aufgabe. Jedenfalls wenn man nur recht selten viel programmiert. ![]() Eine Sache habe ich dabei falsch gemacht: Ich habe nur die Farbwerte des Original - Farbwerte des codierten Bildes genommen, allerdings sollte man dabei noch den Abs-Befehl nutzen. |
||
AMD Athlon II 4x3,1GHz, 8GB Ram DDR3, ATI Radeon HD 6870, Win 7 64bit |
![]() |
BlitzMoritzBetreff: Auflösung der geheimen Bildbotschaften: |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das Originalbild ist ein verkleinerter Ausschnitt des ehemals geltenden 1000-DM-Scheins und stellt die Gebrüder Grimm dar. Entsprechend enthielten die Bilder 1 bis 3 die kompletten Märchen "Das tapfere Schneiderlein", "Hans im Glück" und "Aschenputtel" - schon erstaunlich, was so in die kleinen Bildchen passte...
Ich wollte mit der Vierersystemzahl die (nicht) erkennbaren Farbunterschiede minimal lassen. Die BB-Irritation mit den Alphawerten wäre vermieden worden, wenn man nur die reinen Farbwerte Rot, Grün, Blau in Verbindung mit einer Sechsersystemzahl manipuliert hätte (nur so als Vorschlag für Nachahmer). Hier noch ein möglicher Entschlüsslungscode: BlitzMax: [AUSKLAPPEN] SuperStrict |
||
![]() |
Joel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wieder schöne aufgabe... ![]() Meine Lösung:BlitzMax: [AUSKLAPPEN] SuperStrict |
||
![]() |
ZEVS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Drei Funktionen. Die erste ermittelt die Differenz zweier Pixmaps für jede Komponente einzeln. Hierbei brauche ich also nicht erst kompliziert umrechnen. Die zweite Funktion macht aus einem spiralförmig gewickelten Text ein eindimensionales Array, wobei sie die dritte verwendet, die aus jedem ARGB-Wert einen schönen ASCII-Wert macht.
BlitzMax: [AUSKLAPPEN] SuperStrict ZEVS |
||
![]() |
Nova |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hier mein Quelltext. Die Dateinamen kann man in der zweiten und dritten Zeile verändern.
BlitzMax: [AUSKLAPPEN] SuperStrict |
||
AMD Athlon II 4x3,1GHz, 8GB Ram DDR3, ATI Radeon HD 6870, Win 7 64bit |
Gehe zu Seite Zurück 1, 2, 3, 4, 5
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group