Autor Beitrag
Symbroson
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 382
Erhaltene Danke: 67

Raspbian, Ubuntu, Win10
C, C++, Python, JavaScript, Lazarus, Delphi7, Casio Basic
BeitragVerfasst: Mi 20.12.17 20:24 
Raten ist hier absolut nicht notwendig - man kann Ziffer für Ziffer logisch schlussfolgern

_________________
most good programmers do programming not because they expect to get paid or get adulation by the public, but because it's fun to program. (Linus Torvalds)
pzktupel
Hält's aus hier
Beiträge: 129
Erhaltene Danke: 30



BeitragVerfasst: Mi 20.12.17 22:02 
Heute war es eine Wohltat.

Für diesen Beitrag haben gedankt: Symbroson
Horst_H
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1652
Erhaltene Danke: 243

WIN10,PuppyLinux
FreePascal,Lazarus
BeitragVerfasst: Mi 20.12.17 22:18 
Hallo,

keine Wohltat, wo war die "zurück"-Taste :D

Gruß Horst
pzktupel
Hält's aus hier
Beiträge: 129
Erhaltene Danke: 30



BeitragVerfasst: Mi 20.12.17 22:49 
user profile iconHorst_H hat folgendes geschrieben Zum zitierten Posting springen:
Hallo,

keine Wohltat, wo war die "zurück"-Taste :D

Gruß Horst


Hm. Suchti halt. :roll:
Mathematiker
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1447

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Do 21.12.17 00:06 
Hallo,
im 19.Rätsel war ein Bild (Bitmap) gegeben, in dem der Text eines Buches versteckt war.
Dazu habe ich den Text von "Alice's Adventures in Wonderland" von Lewis Carroll verwendet. Von jedem Zeichen wurde der ASCII-Code n ermittelt und das Bitmap Pixel für Pixel mit der Farbe rgb(n,n,n) gefüllt.
Im Ergebnis entstand dieses merkwürdige graue Gebilde.

Um das gesuchte Buch zu ermitteln, kann man ein kleines Programm schreiben, bei dem man die Pixel nacheinander auswertet. Lässt man sich die Bytes anzeigen, so gibt es eine Häufung ab dem Wert 64. Evtl. kommt man dann auf die Idee des ASCII-Codes.
Der ganze Text kann dann mit folgender Routine ausgelesen werden:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TForm1.ButtonClick(Sender: TObject);
var i,j,farbe:integer; 
     s:string;
begin
   memo1.clear;
   s:='';
   for i:=0 to image1.height-1 do
     for j:=0 to image1.width-1 do begin
       farbe:=image1.canvas.pixels[j,i] mod 256;
       s:=s+chr(farbe);
     end
   memo1.Text:=s;
end;

Ich hänge ein einfaches Programm an, mit dem man einen Text in einem Bild "verstecken" und ihn auch wieder auslesen kann. Ursprünglich hatte ich die Idee als Farbe rgb(n,255,255) zu verwenden. Dann wäre es wohl schwieriger geworden.

Die Lösung der Aufgabe geht aber auch ohne Programmierung.
Das heruntergeladene Bild zieht man z.B. auf notepad. Scrollt man durch die komischen Zeichen oder geht gleich zum Textende (wo die erste Bildzeile zu finden ist), so sieht man

alice

Mit etwas Glück kann man die Großbuchstaben lesen, die dann ALICE'S ADVENTURES IN WONDERLAND bilden.

LG Steffen
Einloggen, um Attachments anzusehen!
_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein

Für diesen Beitrag haben gedankt: Christian S., Gausi, Narses, Symbroson, trm
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8535
Erhaltene Danke: 473

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Do 21.12.17 11:58 
Das Bilderrätsel fand ich ganz besonders schön. Ja, ich gehöre zu denen, die den Anteil an Programmieraufgaben etwas zu gering finden - aber das soll keine Klage sein. So ist das auch sehr gut. :D

Erste Idee war natürlich, die Proportionen des Bildes zu verändern. Unten ist so ein verdächtiger weißer Streifen. Vielleicht ist die Zahl der Nicht-Weißen Pixel ja ein Produkt aus zwei Primzahlen, die die Proportionen des "echten" Bildes ergeben? - Leider nein.

Im oberen Drittel sind auch verdächtige schwarze Blöcke. Wenn man die Bildbreite ändert, und die Pixel weiter der Reihe nach anordnet - verschieben diese Blöcke sich vielleicht zu einem lesbaren Text? - Leider nein.

Und dann habe ich die Aufgabe nochmal gelesen. Da steht ja, dass nicht der Titel des Buches im Bild versteckt ist, sondern der Text. Wenn in so ein "paar" Pixeln der ganze Text eines Buches drinstecken soll, dann muss die "Bild"-Datei eigentlich was anderes sein. Die Information kann dann nicht als "Bild" gespeichert sein.

Also den HxD angeschmissen, Datei reingeladen und lauter Tripel von lesbaren Zeichen gesehen. Damit war die Lösung dann klar - "Ein Pixel = Ein Buchstabe". Die Tripel sind dann die drei Farbkanäle, die Null dazwischen der Transparenzkanal(?) in dem 24-Bit-Bitmap (der aber bei Paint glaube ich nicht wirklich unterstützt wird). Dann war nur noch eine Frage übrig:

ausblenden Delphi-Quelltext
1:
2:
for y:=0 to image1.height-1 do
     for x:=0 to image1.width-1 do begin

oder
ausblenden Delphi-Quelltext
1:
2:
for x:=0 to image1.width-1 do 
    for y:=0 to image1.height-1 do begin


Damit ist dann evtl. auch die Frage geklärt, wofür man so einen Hexeditor gebrauchen kann. Zum Lösen von Adventsgewinnspiel-Rätseln. :think: (Auch wenn Notepad hier ebenfalls funktioniert, aber in der Regel hat der bei Binärdaten arge Probleme).

_________________
We are, we were and will not be.

Für diesen Beitrag haben gedankt: Mathematiker
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Do 21.12.17 12:21 
Japp, hat sich tatsächlich rausgestellt dass es ausreicht das Bild in Notepad++ als Textdatei zu öffnen.

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)


Zuletzt bearbeitet von Hidden am Do 21.12.17 14:21, insgesamt 1-mal bearbeitet
Jann1k
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 866
Erhaltene Danke: 43

Win 7
TurboDelphi, Visual Studio 2010
BeitragVerfasst: Do 21.12.17 13:07 
Ich fand die buchstaben-ähnlichen Artefakte im Bild super. Hab auch erstmal alle möglichen Verzerrungen/Spiegelungen durchprobiert, weil das stark nach lesbarem Text aussah. Da ich letztens erst ein Escape-Spiel hatte, wo ein Schriftzug lesbar war, wenn man ihn entsprechend geneigt hat, hab ich dann auch noch meinen Kopf vor dem Monitor etwas verrenkt...
Horst_H
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1652
Erhaltene Danke: 243

WIN10,PuppyLinux
FreePascal,Lazarus
BeitragVerfasst: Do 21.12.17 15:38 
Hallo,

kein Wunder das user profile iconFiete heute so schnell war.

Gruß Horst
pzktupel
Hält's aus hier
Beiträge: 129
Erhaltene Danke: 30



BeitragVerfasst: Fr 22.12.17 18:21 
Es tauchte die Frage auf, warum 25 Steine reichen , und ich habe 26 erzwungen :roll:
Mathematiker
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1447

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Fr 22.12.17 18:23 
user profile iconpzktupel hat folgendes geschrieben Zum zitierten Posting springen:
Es tauchte die Frage auf, warum 25 Steine reichen , und ich habe 26 erzwungen :roll:

Damit es einfacher wird. :wink:

LG Steffen

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
Mathematiker
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1447

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Fr 22.12.17 23:09 
Lösung vom 21.12.:
Es waren 10 Superdamen zu platzieren. Dabei gibt es genau 4 Lösungen, die allerdings durch Drehung und Spiegelung auseinander hervorgehen.
lösung21

Die Idee für diese Aufgabe geht auf user profile iconFietes schönes Programm N-Superdamen zurück.
siehe www.entwickler-ecke....mp;highlight=n-damen
Dort kann man sich auch für andere Spielfeldgrößen die Lösungen anzeigen lassen.

Die heutige Aufgabe ist offensichtlich doch anspruchsvoller als gedacht.
Kleiner Hinweis: Es müssen nicht unbedingt 26 Diamanten gesammelt werden. Die Hauptsache ist, dass man zum Ausgang gelangt.
Ich befürchte, dass es morgen auch noch einmal anspruchsvoll wird. Kleiner Trost: am 24. lassen wir das AGS wieder mit einem einfachen Puzzle ausklingen.

LG Steffen
Einloggen, um Attachments anzusehen!
_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
3_Qu_A1z
Hält's aus hier
Beiträge: 2
Erhaltene Danke: 2



BeitragVerfasst: Fr 22.12.17 23:35 
Hallo

user profile iconMathematiker hat folgendes geschrieben Zum zitierten Posting springen:

Die heutige Aufgabe ist offensichtlich doch anspruchsvoller als gedacht.

Was heißt amspruchsvoll? Es soll doch Spaß machen? Die Diamantenjagt macht genau das gegenteil, weil die Steuerung ein Bug hat. Manchmal geht er bei einem Tastendruck zwei weiter. Und meine Tastatur prellt nicht!

Und dann soll es ja Menschen geben die könne ihre Aktionen nicht so gut zeitlich Takten. Daher währe es schön wenn man den Wichtel nächstes Jahr durch programieren durch die Gegend schicken kann.

Für diesen Beitrag haben gedankt: Symbroson, trm
trm
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 491
Erhaltene Danke: 19

Windows 7x64
Delphi 7
BeitragVerfasst: Sa 23.12.17 00:01 
user profile icon3_Qu_A1z hat folgendes geschrieben Zum zitierten Posting springen:

Was heißt amspruchsvoll? Es soll doch Spaß machen? Die Diamantenjagt macht genau das gegenteil, weil die Steuerung ein Bug hat. Manchmal geht er bei einem Tastendruck zwei weiter. Und meine Tastatur prellt nicht.


Ich dachte die ganze Zeit, es wäre meine Schuld :-D

Das Rätsel war sehr nervig! ;-)

_________________
In Erfurt gibt es eine Pension, in der es gemütlich ist, Google einfach nach Pension Fiege ;)
Delphi-Laie
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1600
Erhaltene Danke: 232


Delphi 2 - RAD-Studio 10.1 Berlin
BeitragVerfasst: Sa 23.12.17 00:52 
Die Lösung eines Adventsrätsels - nämlich des Superdamenproblems - fand sich hier im Forum. Welch ein Geschenk!

user profile iconMathematiker hat folgendes geschrieben Zum zitierten Posting springen:
Die heutige Aufgabe ist offensichtlich doch anspruchsvoller als gedacht.


In der Tat. Mehr noch: Ich konnte noch nie eines dieser Diamantspielchen erfolgreich beenden. Vielleicht prellen meine Cursortasten auch ein wenig, denn oft genug schießt der Wichtel über das anvisierte Ziel hinaus und verwandelt sich dann in Windeseile mal wieder in (s)ein Skelett. :(

_________________
Ordnung ist das halbe Leben - und sie zu schaffen die andere Hälfte.
pzktupel
Hält's aus hier
Beiträge: 129
Erhaltene Danke: 30



BeitragVerfasst: Sa 23.12.17 06:13 
Ich hab alle 26 Diamanten gesammelt,weil ich den Raum von gannnnnnnnnz früher kannte.
Dennoch ist eines anzumerken,was das Spiel erschwert. In den originalen konnte ich noch kurz nach links oder rechts ausweichen , auch wenn ein Stein oder Diamant auf den Kopf zu viel.
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Sa 23.12.17 12:07 
user profile iconMathematiker hat folgendes geschrieben Zum zitierten Posting springen:
Es waren 10 Superdamen zu platzieren. Dabei gibt es genau 4 Lösungen, die allerdings durch Drehung und Spiegelung auseinander hervorgehen.


Lösung in JS:

ausblenden volle Höhe JavaScript-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
// there can only be one queen in each row or column
// position[i] defines the row of the queen on the i-th column
// 
// recursively attempt to place a queen on each row of the next column
// 
// an area of 5x5 squares around a queen always has to be empty
// .. so skip the five rows around the previous two placements

const solve = (boardSize) => {
  const position = [];
  const solutions = [];

  const humanReadable = () => position.map(
    (row, col) => "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[col] + (row+1)
  ).join();

  const step = (skip, skip2) => {
    const skips = skip < skip2 ?
      [0, skip, skip2, boardSize + 5] :
      [0, skip2, skip, boardSize + 5];

    for (let s = 2; s >= 0; s--) {
      for (let row = skips[s+1] - 6; row >= skips[s]; row--) {
        if (hasCollision(row)) continue;

        position.push(row);
        if (position.length === boardSize) {
          solutions.push(humanReadable());
          position.pop();
          continue;
        }

        step(row + 3, skip);
        position.pop();
      }
    }
  };

  const hasCollision = (row) => {
    const col = position.length;
    for (let i = col - 1; i >= 0; i--) {
      if (
        row === position[i]           ||  // horizontal collision
        row === position[i] + col - i ||  // .. downwards diagonal
        row === position[i] - col + i     // .. upwards diagonal
      ) {
//        console.log(...position, row, "BAM");
        return true;
      }
    }
//    console.log(...position, row, "OK");
    return false;
  };

  step(boardSize + 5, boardSize + 5);
  return solutions;
};


ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
>> solve(10)
<< [
  "A8,B5,C2,D10,E7,F4,G1,H9,I6,J3",
  "A7,B3,C10,D6,E2,F9,G5,H1,I8,J4",
  "A4,B8,C1,D5,E9,F2,G6,H10,I3,J7",
  "A3,B6,C9,D1,E4,F7,G10,H2,I5,J8"
]


Edit: Vielleicht versuche ich später noch, Drehungen und Spiegelungen der selben Stellung zu eliminieren.

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)


Zuletzt bearbeitet von Hidden am Sa 23.12.17 13:31, insgesamt 1-mal bearbeitet

Für diesen Beitrag haben gedankt: Mathematiker
Horst_H
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1652
Erhaltene Danke: 243

WIN10,PuppyLinux
FreePascal,Lazarus
BeitragVerfasst: Sa 23.12.17 12:18 
Hallo,

das Superdamenspiel habe ich doch tatsächlich völlig verdrängt.Keine Erinnerung mehr.
Da hieß die Superdame auch mal Amazone.
Meine neue Version braucht aber die doppelte Laufzeit.Dann erst kam mir die Idee, mal danach zu suchen.
Heute morgen hat das Diamantenspiel mal funktioniert, indem ich ohne die oberen Diamanten ins Ziel ging.
Die Tastaturabfrage ist wohl nicht ohne.Wenn der letzte Tastendruck nach links zum ausweichen war, so war das neue Spiel schon verloren, denn es ging nach links.
Entweder Taste noch gespeichert oder zu schnell neu gestartet.
Bald ist's vollbracht und schon beginnt die Wartezeite ;-)

Gruß Horst
Delphi-Laie
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1600
Erhaltene Danke: 232


Delphi 2 - RAD-Studio 10.1 Berlin
BeitragVerfasst: Sa 23.12.17 19:00 
Das heutige Rätsel hat genau so eine "Zauberlösung" wie das Kisten-Im-Lager-Umherschieben.

Bekam es zwar ohne Nachdenken, nur mit Umhergeschiebe gelöst, und kann mich sogar auch noch dunkel an die letzten Schritte erinnern, bekomme es jedoch - zumindest erstmal - nicht reproduziert.

Auf die Auflösung dieses "Teufelrätsels" bin ich gespannt.

_________________
Ordnung ist das halbe Leben - und sie zu schaffen die andere Hälfte.


Zuletzt bearbeitet von Delphi-Laie am Sa 23.12.17 19:13, insgesamt 1-mal bearbeitet
Symbroson
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 382
Erhaltene Danke: 67

Raspbian, Ubuntu, Win10
C, C++, Python, JavaScript, Lazarus, Delphi7, Casio Basic
BeitragVerfasst: Sa 23.12.17 19:10 
Du kannst noch immer versuchen die Lösung durch Programmierung zu ermitteln...
Das ist zwar etwas übertrieben dafür aber bringt definitiv die Lösung

_________________
most good programmers do programming not because they expect to get paid or get adulation by the public, but because it's fun to program. (Linus Torvalds)