Autor Beitrag
Horst_H
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1653
Erhaltene Danke: 243

WIN10,PuppyLinux
FreePascal,Lazarus
BeitragVerfasst: Mi 10.12.14 23:47 
Hallo,

die Nachwehen der Nikolaus-Party.....
Dann ist ja richtig viel los in der Lostrommel.
Sehr schön.

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: Do 11.12.14 10:33 
user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:
Wird wohl nichts mit 24 Lösungen - schade...


Teilnahme ist alles... Besser ist es, sich über Erfolge zu freuen, als / statt mit Mißerfolgen zu hadern.

Manche scheinen einen erstaunlichen Ehrgeiz zu entwickeln, wenn die sogar Programme schreiben, die ihnen bei der Lösungssuche helfen.


Zuletzt bearbeitet von Delphi-Laie am Do 11.12.14 15:06, insgesamt 1-mal bearbeitet
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 11.12.14 11:06 
Hallo,
das Rätsel vom 9.12., das Lager des Weihnachtsmanns, war wohl das aufwendigste bisher.

Eigentlich ist es reine Fleißarbeit, wobei man eine gute Idee für den Anfang braucht.
Eine mögliche Lösung wäre:
Zitat:
2223330003330001000300011233111221110033331221030133033222122232221110000002222223330001220000030001121122322222233032212330
1003330012321110120000030001121122322222233032123331100333000001222232111010000300011211223222222333001200000300011211223222
2223303212331003300000132210232221110000331122223333000001222232113300001111222221100000010033033222123323222110120000030001
1211223222222330322123032100033300000122223211100100030001121122322222233300120000030001121122322222233032212300033000001322
2221112110000001003303322232101222220000300001121122322222233032123000010003000332101222123303222232113000011122232222000010
0030000112303222123303222000110011112230103330322212330320110011122111003333303222323322123211330000011112222322200333000012
2000111233032111222221122211103323000000000010333032223332221232113300000111122223220333000012200011123303201100111222222221
2322110323000000000010333032223210122222220110011103323000001033303222321012222220000033332212321133000011112223201000333222
321133000011100011122222110323000010333032223210122222000030001111112332301033303222321012222

mit 0 = hoch, 1 = rechts, 2 = runter, 3 = links.
Diese Lösung ist nicht optimal. Es geht kürzer.
Damit ihr aber nicht Schritt für Schritt es selbst ausprobieren müsst, hänge ich eine Demonstration dieser Lösung als Exe an.

Der Hinweis von user profile iconTh69 auf die Möglichkeit, einen "Zurücknehmen"-Schalter einzubauen, ist berechtigt. Tut mir leid. Ich habe es einfach vergessen. :wink:

Um alle Mitspieler etwas zu trösten: Noch so ein aufwendiges Rätsel kommt nicht mehr. D.h. aber nicht, dass es nur noch einfache Aufgaben werden. :D
Zur Aufgabe vom 10.12. kann ich nichts weiter sagen. Dort hilft nur, solange spielen bis eben eine 512 entsteht. Ich bin bloß froh, dass ich auf 512 gegangen bin. Ursprünglich wollte ich 1024 fordern.

Das heutige Spiel (11.12.) ist relativ einfach. Morgen kommt dann ein reines Matherätsel (ich muss ja meinem Ruf gerecht werden :mrgreen: ). Mit etwas Elementarmathematik findet man die Lösung, denke ich.
24 verschiedene Aufgaben zu konstruieren, bei denen man etwas klicken oder verschieben kann, habe ich nicht geschafft. Also muss Füllstoff her und morgen ist es eben eine Matheaufgabe.

Beste Grüße
Mathematiker
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: Narses, trm
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 11.12.14 14:36 
Also ich fande das Wichtel-Lager-Rätsel im Vergleich zum Vorjahr relativ einfach, sobald man denn Rundgang frei hatte, durfte man einfach nichts mehr in den Weg stellen und konnte die Kistengruppen dann einzeln lösen.

Die 512 ist auch gut zu schaffen, da auch bei "Nicht-Zügen" neue Felder entstehen.

Den Sodukubus von heute fand ich ziemlich genial, wusste ich gar nicht das sowas existiert.

Es ist zwar noch nicht ganz Richtfest, aber an dieser Stelle schonmal ein herzliches Dankeschön an Mathematiker für die Verrätselung der Adventszeit.
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: Do 11.12.14 15:11 
Ich schob wesentlich mehr Kisten in die Lageröffnung unten rechts hinein.
ub60
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 762
Erhaltene Danke: 127



BeitragVerfasst: Do 11.12.14 16:09 
user profile iconDelphi-Laie hat folgendes geschrieben Zum zitierten Posting springen:
Manche scheinen einen erstaunlichen Ehrgeiz zu entwickeln, wenn die sogar Programme schreiben, die ihnen bei der Lösungssuche helfen.

Ist ja auch ein Programmiererforum. :)
Ich bin über jedes Problem froh, bei dem ich wieder ein Programm schreiben "darf".

@mathematiker: Ich hoffe, Du findest weiterhin die Zeit. Schon seit Wochen freue ich mich auf die täglichen Adventsrätsel.

ub60
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Do 11.12.14 16:17 
Wie in der SB angekündigt, war mein Ansatz auch heute wieder mit etwas Prolog-Code ... Geht wunderbar, kann ich ja, wenn alle ihre Lösung haben, mal posten ...

user profile iconDelphi-Laie hat folgendes geschrieben Zum zitierten Posting springen:
Manche scheinen einen erstaunlichen Ehrgeiz zu entwickeln, wenn die sogar Programme schreiben, die ihnen bei der Lösungssuche helfen.

Warum selber denken, wenn man vor sich einen Computer stehen hat? Zumal anhand der bei mir gewählten Programmiersprahe klar sein dürfte, warum ich sie wähle (Und ja, ich könnte auch Haskell nehmen).

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Horst_H
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1653
Erhaltene Danke: 243

WIN10,PuppyLinux
FreePascal,Lazarus
BeitragVerfasst: Fr 12.12.14 00:46 
Hallo,

das heutige Problem kann man auch mittels Programm lösen.
Die Eingabe in eine Konstante in das Konsolenprogramm war etwas umständlich.
Das nächste Mal werde ich die Bereichsprüfung erstmal einschalten, die erste 9 fehlte :nixweiss:
Auch ein leeres Feld hat in Sekundenbruchteilen und 9.807.483 Schritten eine Lösung.

Gruß Horst
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 12.12.14 12:02 
Hallo Mitspieler,
mit dem heutigen Mathe-Rätsel habe ich wohl ein paar Probleme bereitet. :nixweiss:
Ihr dürft mir glauben: Mit nur etwas Elementarmathematik der 9.Klasse kann man es wirklich schnell lösen. Und es geht sogar mit einem kleinen Programm. Wirklich.

user profile iconOliver Marx hat mich darauf hingewiesen (Vielen Dank!), dass folgende Zusatzerklärung noch wichtig ist:
Der größte gemeinsame Teiler ggT von Zähler und Nenner muss 1 sein. :wink:
Hätte ich auch gleich in den Text schreiben können. Hab's aber vergessen. :oops:

Ansonsten wünsche ich weiteres gutes Rätseln.
Morgen gibt's wieder etwas zum Klicken und Verschieben, übermorgen etwas für schnelle Finger. Mathematik kommt erst in ein paar Tagen wieder. :wink:

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein

Für diesen Beitrag haben gedankt: Oliver Marx, trm
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: Fr 12.12.14 22:29 
Das heutige Rätsel ist sogar mit intelligenter Intuition recht einfach und schnell zu lösen - und damit meine ich kein brachiales Ausprobieren.
trm
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 491
Erhaltene Danke: 19

Windows 7x64
Delphi 7
BeitragVerfasst: Fr 12.12.14 22:29 
Ich habe auch diesmal ein kleines Tool geschrieben ;)

_________________
In Erfurt gibt es eine Pension, in der es gemütlich ist, Google einfach nach Pension Fiege ;)
Jann1k
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 866
Erhaltene Danke: 43

Win 7
TurboDelphi, Visual Studio 2010
BeitragVerfasst: Fr 12.12.14 22:32 
Also ich bin da auf die Auflösung gespannt, die Mathematik dahinter ist mir noch nicht allzu klar...
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 12.12.14 23:11 
Hallo,
das Matherätsel von heute war doch schwerer, als ich zuerst angenommen habe. Ich denke, übermorgen kann ich auflösen. Solange müssen wir aber noch warten.

user profile iconDelphi-Laie hat folgendes geschrieben Zum zitierten Posting springen:
Das heutige Rätsel ist sogar mit intelligenter Intuition recht einfach und schnell zu lösen - und damit meine ich kein brachiales Ausprobieren.

Kann ich mir vorstellen. Nach dem offiziellen Ende des Rätsels von heute würde es mich interessieren.

user profile icontrm hat folgendes geschrieben Zum zitierten Posting springen:
Ich habe auch diesmal ein kleines Tool geschrieben ;)

Habe ich auch. Meine "grafische" Lösung werde ich zeigen.

user profile iconJann1k hat folgendes geschrieben Zum zitierten Posting springen:
Also ich bin da auf die Auflösung gespannt, die Mathematik dahinter ist mir noch nicht allzu klar...

Du hast doch aber die Lösung. :D
Da ich mit derartigen Aufgaben öfters zu tun habe, "sehe" ich oft den Lösungsansatz und glaube daher oft, dass es andere auch sofort sehen. Ich werde zuerst die rechnerische Lösung vorstellen. Sie ist, wenn man die richtige Idee hat, nicht kompliziert.
Immerhin gibt es schon 22 Lösungen. Das ist toll und es werden bestimmt noch mehr.

Zum Rätsel vom 11.12., dem Sudokubus:
Alle Freischaltungen für Punkte sind beendet, daher kurz ein paar Bemerkungen.
Selbstverständlich geht es wieder mit BruteForce. Ich weiß, dass einige von euch kleine Programme geschrieben haben. Es wäre schön, wenn sie diese hier zeigen könnten.

Ich bevorzuge bei diesem Spiel das logische Vorgehen. Da bei jedem Start eine neue Ausgangssituation erzeugt wird, versuche ich es allgemein zu erklären.

Zuerst sucht man, welche Ziffern genau 2 mal vorgegeben sind. Für diese ermittelt man die waagerechte Ebene, in der die Ziffer nicht auftritt, sowie die entsprechenden Seitenebenen. Im Schnittpunkt muss die Ziffer eingetragen werden.
Für jede Ziffer, die nur 1 mal vorgegeben wurde, geht man genauso vor. Im Allgemeinen erhält man mehrere Möglichkeiten.
Macht man das für jede dieser Ziffern (z.B. auf Papier!) ergibt sich oft eine eindeutige Zuordnung. Wenn nicht, kann man frei setzen.
Das gilt auch für Ziffern, die gar nicht vorgegeben wurden.

Damit ist ein Sudokubus nicht immer eindeutig lösbar.
Meine Erklärung ist vielleicht etwas wirr. Deshalb findet ihr unter www.entwickler-ecke....ewtopic.php?t=113760 ein kleines Testprogramm für Sudokubus.

Ansonsten haben wir heute Bergfest. 42 aktive Mitspieler und bisher 384 Lösungen sind sehr schön.
Viel Spaß weiterhin. Und lasst euch nicht entmutigen, wenn das eine oder andere nachfolgende Rätsel doch etwas schwerer wird. :wink:

Beste Grüße
Mathematiker

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

WIN10,PuppyLinux
FreePascal,Lazarus
BeitragVerfasst: Fr 12.12.14 23:52 
Hallo,

Ich habe da etwas konfuses komponiert.
Immer noch so langsam mit 88 Takten pro Aufruf CheckInsert.
Das Prinzip ist einfach.Die Koordinaten des Kubus kann man ja nummerieren und man geht ja von einer zur nächsten und braucht also nicht x,y,z mitschleppen, aber dafür muß ich wissen in welcher Ebene der Punkt gerade ist. Deshalb direkt Zeiger darauf.Statt ständiges rechnen.
Das Einfügung eine Wertes verändert die Belegung der betroffenen Ebenen, deshalb brauche ich keine Daten mehr kopieren, ich kenne sie nach dem Init.

ausblenden volle Höhe Delphi-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:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
 {$IFDEF FPC}
  {$MODE DElphi}
{$ENDIF}
//{$R+,O+}
uses
  crt,sysutils;

type
  tDim  = 0..2;
  tValues = LongInt;
  ptValues = ^tValues;

const
  rowCnt = (High(tDim)-Low(tDim)+1);
  EbCnt  = 3*rowCnt;
  CubCnt = rowCnt*rowCnt*rowCnt;
  Maske    : array[1..EbCnt] of tValues =(2,4,8,16,32,64,128,256,512);
  InvMaske : array[1..EbCnt] of tValues =(NOT(2),NOT(4),NOT(8),NOT(16),
                         NOT(32),NOT(64),NOT(128),NOT(256),NOT(512));

type
  // Erleichterte Eingabe der Konstante
  tcbItm  = byte;
  tcube   = array[tDim,tDim,tDim] of tcbItm;
  tKoor = record
            x,y,z,n: tDim;
          end;
  tpKoor =^tKoor;
  tNtoKoor = array[0..CubCnt-1of tKoor;


  tEbenen = array[tDim] of tValues;
  TUebergabe= record
                pX,pY,pZ :ptValues;
                ubWert : tValues;
              end;
  tUebergabeStack = array[0..CubCnt] of TUebergabe;

const
// die Namen der Koordinaten sind egal
// Hauptsache, man kann es wieder uebertragen

               //z= 0 1 2
  cCube : tCube =(((0,2,0), // x= 0,y=0
                   (0,5,0), // x= 0,y=1
                   (3,0,0)),// x= 0,y=29
               //z= 0 1 2
                  ((0,0,3), // x= 1,y=0
                   (2,8,0), // x= 1,y=1
                   (0,0,5)),// x= 1,y=2
               //z= 0 1 2
                  ((5,0,9),  // x= 2,y=0
                   (4,0,0),  // x= 2,y=1
                   (0,0,0)));// x= 2,y=2

var
  gblCount : Int64;
  T1,T0  : tDateTIme;

  gblInsCount,gblloescnt : integer;
  USt : tUebergabeStack;
  EbeneX,
  EbeneY,
  EbeneZ : tEbenen;
  Cube : tCube;
  IntoKoor :tNtoKoor;


procedure Ausgabe;

var
  i : integer;
Begin
  gotoxy(1,3);
  For i := 1 to CubCnt do
  Begin
    write(USt[i-1].ubWert:3);
    IF i Mod 3 = 0then
    begin
      writeln;
      IF i Mod 9 = 0 then
        writeln;
    end;
  end;
end;

procedure AusgabeLoes;
begin
  inc(gblloescnt);
  IF gblloescnt < 1000 then
  Begin
    IF gblloescnt < 10 then
      Ausgabe;
    GotoXy(1,14);
    writeln('Loesungen: ',gblloescnt,' bei ',gblCount,
          ' nach ',FormatDateTime(' NN:SS.ZZZ',Time-T1));
    T1 := time;
  end;
end;

procedure AusgabeGbl;
begin
  GotoXy(1,16);
  write('Loesungen: ',gblloescnt,' bei ',gblCount,
          ' nach ',FormatDateTime(' NN:SS.ZZZ',Time-T1));
  If keypressed then
  Begin
    writeln;
    Halt(0);
  end;
end;

procedure Insert(Wert:integer);
var
  M : tValues;
begin
  WITh USt[gblInsCount] do
  begin
    M := Maske[Wert];
    ubWert := Wert;
    pX^:= pX^ OR M;
    pY^:= pY^ OR M;
    pZ^:= pZ^ OR M;
  end;
  inc(gblInsCount);
end;

procedure remove;
var
  M : integer;
begin
  M:= gblInsCount-1;
  gblInsCount := M;
  with USt[M] do
  Begin
    M := InvMaske[ubWert];
    ubWert := 0;
    pX^:= pX^ AND M;
    pY^:= pY^ AND M;
    pZ^:= pZ^ AND M;
  end;
end;

procedure CheckInsert;
var
  Mask,Wert : integer;
begin
  IF Lo(gblCount) AND (1 shl 25 -1) = 0 then
    AusgabeGbl;
  IF gblInsCount = CubCnt then
     AusgabeLoes
  else
  with USt[gblInsCount] do
  Begin
    inc(gblCount);
    Mask :=pX^ OR pY^ OR pZ^;
    IF ubWert = 0 then
    Begin
      Wert := 1;
      Repeat
        IF (MASk AND Maske[Wert])=0 then
        Begin
          Insert(Wert);
          CheckInsert;
          remove;
        end;
        inc(Wert);
      until Wert > 9;
    end
    else
    //Festes Feld ueberspringen
    Begin
      inc(gblInsCount);
      CheckInsert;
      dec(gblInsCount);
    end;
  end;
end;

procedure ReadKonstCube;
var
  Wert,i: integer;
Begin
  For i := 0 to CubCnt-1 do
    With IntoKoor[i] do
    Begin
      wert := cCube[x,y,z];
      gblInsCount := i;
      IF Wert <> 0 then
         Insert(Wert);
    end;
  gblInsCount := 0;
end;

procedure Init(ReadKonstante:Boolean);
var
  pUst : ^tUebergabe;
  pKoor :tpKoor;
  x,y,z : tDim;

begin
  clrscr;
  fillchar(UST, SizeOf(USt),#0);
  fillchar(EbeneX, SIzeOf(tEbenen),#0);
  fillchar(EbeneY, SIzeOf(tEbenen),#0);
  fillchar(EbeneZ, SIzeOf(tEbenen),#0);
  fillchar(cube, SizeOf(Cube),#0);

  gblInsCount := 0;
  gblCount := 0;

  pUst := @UST[0];
  pKoor := @IntoKoor[0];
  For x := Low(tDim) to high(tDim) do
    For y := Low(tDim) to high(tDim) do
      For z := Low(tDim) to high(tDim) do
      Begin
        with pUst^ do
        Begin
          ubWert:= 0;
          pX := @EbeneX[x];
          pY := @EbeneY[y];
          pZ := @EbeneZ[z];
          pKoor.z := z;
          pKoor.y := y;
          pKoor.x := x;
        end;
        inc(pUst);
        inc(pKoor);
      end;
  IF ReadKonstante then
    ReadKonstCube;

  Ausgabe;

  T0 := time;
  T1 := T0;
end;

begin
  Init(false);
  CheckInsert;
  writeln;
end.
{Leeres Feld:
Loesungen: 14.403.882 bei 1.610.612.736 nach  00:40.436
}

Es gibt auch meist mehrere Lösungen

Gruß Horst

Edit: Ein wenig aufgeräumt

Für diesen Beitrag haben gedankt: Mathematiker
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Sa 13.12.14 16:06 
Den Sudo-Kubus habe ich mit Prolog gelöst:

Wir definieren ein Paar Helfer-Funktionen:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
plane(P11,P12,P13,P21,P22,P23,P31,P32,P33) :-
    permutation([P11,P12,P13,P21,P22,P23,P31,P32,P33],[1,2,3,4,5,6,7,8,9]).

cube(C111,C112,C113,C121,C122,C123,C131,C132,C133,C211,C212,C213,C221,C222,C223,C231,C232,C233,C311,C312,C313,C321,C322,C323,C331,C332,C333) :-
    plane(C111,C112,C113,C121,C122,C123,C131,C132,C133),
    plane(C211,C212,C213,C221,C222,C223,C231,C232,C233),
    plane(C311,C312,C313,C321,C322,C323,C331,C332,C333),

    plane(C111,C112,C113,C211,C212,C213,C311,C312,C313),
    plane(C121,C122,C123,C221,C222,C223,C321,C322,C323),
    plane(C131,C132,C133,C231,C232,C233,C331,C332,C333),

    plane(C111,C121,C131,C211,C221,C231,C311,C321,C331),
    plane(C112,C122,C132,C212,C222,C232,C312,C322,C332),
    plane(C113,C123,C133,C213,C223,C233,C313,C323,C333),

    true.


Und brauchen dann lediglich in der Konsole fragen:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
?- cube(C111,C112,C113,C121,8,C123,C131,C132,C133, 3,C212,1,5,9,C223,C231,6,8, C311,4,6,2,C322,3,C331,C332,5).
C111 = C223, C223 = C332, C332 = 7,
C112 = 5,
C113 = C331, C331 = 9,
C121 = 6,
C123 = C231, C231 = 4,
C131 = C322, C322 = 1,
C132 = 3,
C133 = C212, C212 = 2,
C311 = 8


Die Lösung braucht etwas, aber das stört ja nicht ;-)

Anzumerken sei hierbei, dass die Ziffern immer von vorne oben links nach hinten unten rechts wachsen. Parameter mit einem Buchstaben ersetzt Prolog symbolisch, vorgegebene Werte stehen direkt als Aufruf-Parameter drin.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.

Für diesen Beitrag haben gedankt: Mathematiker, ub60
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: Sa 13.12.14 22:30 
Hallo,
das Matherätsel vom 12.12. wurde zwar von vielen gelöst, bereitete aber scheinbar doch einige Schwierigkeiten.

Die Aufgabe entstammt dem Wasan, der "japanischen Mathematik" während der Edo-Zeit (1603-1867). Eine besondere Form des Wasan ist das Sangaku (de.wikipedia.org/wiki/Sangaku), d.h. Holztafeln, auf denen geometrische Rätsel beschrieben wurden. Diese Tafeln wurden in Tempeln als Dank für eine Shinto-Gottheit ausgehängt.
Es ist faszinierend, welche Probleme gestellt wurden und wie man diese löste. Einige sind auch heute noch extrem anspruchsvoll.

Hier meine Lösungsvorschläge für die Aufgabe vom 12.12.:

1) Rechnerisch
wasanloesung
Zeichnet man in die Darstellung einige Strecken ein, u.a. die Verbindungslinien der Kreismittelpunkte und Senkrechte, so entstehen zwei rechtwinklige Dreiecke. Das untere Dreieck in der Abbildung ermöglicht den Radius der roten Halbkreise zu berechnen.
Sind die Quadratseite = 1 und der rote Kreisradius = a, so wird mit dem Satz des Pythagoras
(1/2 + a)² = (1/2)² + (1-a)²

Mittels binomischer Formeln; das Quadrat a² hebt sich heraus; wird a = 1/3.
Das 2.Dreieck ist schwieriger zu finden. Ist R der gesuchte Kreisradius, so wird für die Hypotenuse R+a = R+1/3 und für die Katheten 1/2 sowie 1/3-R, d.h.
(R+1/3)² = (1/2)² + (1/3-R)²

Diese lineare(!) Gleichung hat nur eine Lösung: R = 3/16.

2) Grafische Näherung
Dazu habe ich das angehängte kleine Programm geschrieben. Über 4 Schalter können die roten Kreise und der weiße gesuchte Kreis in ihrer Größe verändert werden. Das macht man solange, bis sie sich direkt berühren.
Setzt man nun den Radius R mit der Seitenlänge ins Verhältnis, erhält man das Gesuchte. Allerdings müssen die Zahlenwerte vollständig gekürzt werden, d.h. ohne ggT-Berechnung geht es nicht.

Ein Problem ist die Breite b des Quadrates. b sollte möglichst eine Zahl mit vielen Teilern sein, damit man auch für die zwei Kreise möglichst ganzzahlige Werte erhält. Der gesuchte Radius sollte ja eine gebrochene und keine irrationale Zahl sein.
Ich habe 480 gewählt, da sie viele Primfaktoren 2, 3 und 5 enthält. Würde man dort nichts Vernünftiges erhalten, kann man auch 490 (Primfaktor 7) oder irgendein Vielfaches testen. Man braucht etwas Glück.

3) Messung und Raten
Kopiert man die Abbildung in ein Grafikprogramm, so kann man die Quadratbreite zu etwa 330 Pixel messen. Mit etwas Geduld misst man für den Kreisradius 63 Pixel.
Als Ergebnis erhält man R = 21/110. Das wird als falsch zurückgewiesen.
Nun beginnt das Raten. Wahrscheinlich sind die letzten Pixel nicht ganz genau. Es ist 21 = 3*7 und so testet man eben einen naheliegenden Nenner, der durch 3 oder 7 teilbar ist, d.h. 21/111=7/37 (falsch), 21/112 = 3/16 ... und richtig.

Vielleicht gibt es aber auch andere Lösungsideen.

Beste Grüße
Mathematiker
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.
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: So 14.12.14 00:03 
Also ich hab basierend auf den Informationen auf dieser Seite. Unter dem Abschnitt "Lösung" findet man die Angabe für s_1. Weiter oben findet man auf der Seite auch, dass der rechte Kreis den Radius \frac{1}{3} hat. Womit sich die Gleichung für den weißen Kreis recht schnell auflösen lässt. Somit ergibt sich dann für den Weißen Kreis mit wenigen Umformungen \frac{3}{16}.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.


Zuletzt bearbeitet von BenBE am So 14.12.14 01:45, insgesamt 1-mal bearbeitet

Für diesen Beitrag haben gedankt: Mathematiker
Oliver Marx
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 80
Erhaltene Danke: 18

Win 7 Prof.
Delphi XE Prof.
BeitragVerfasst: So 14.12.14 00:41 
Hi,

hier noch meine Lösung nach dem Motto: Warum einfach, wenn es auch kompliziert geht! :roll:

kreise

Pi = (Xi,Yi)

P1 = (1/2;0)

P2 mit Pythagoras:
(X2-X1)^2+(Y2-Y1)^2 = (X1+1-Y2)^2
(0-1/2)^2+(Y2-0)^2 = (1/2+1-Y2)^2
=> Y2 = 2/3
=> P2 = (0;2/3)

=> Y3 = Y2-(1-Y2) = 1/3
=> P3 = (0;1/3)

g2: y = m2*x+n2
mit P3 auf g2:
1/3 = m2*0+n2
=> n2 = 1/3
mit P4 auf g2:
1 = m2*1/2+1/3
=> m2 = 4/3
=> g2: y = 4/3*x+1/3

Schnittpunkt S ist Schnittpunkt von g2 mit Kreis um P2
Daher gilt:
Ys = 4/3*Xs+1/3
(Xs-X2)^2+(Ys-Y2)^2 = (1/3)^2, bzw. (Xs-0)^2+(Ys-2/3)^2 = (1/3)^2
2 Gleichungen, 2 Unbekannte ergibt n.k.t.R.: S = (8/25;57/75)

g3: y = m3*x+n3
mit P2 auf g3:
2/3 = m3*0+n3
=> n3 = 2/3
und S auf g3:
57/75 = m3*8/25+2/3
=> m3 = 7/24
=> g3: y = 7/24*x+2/3

da X0=1/2 und P0 auf g3:
Y0 = 7/24*1/2+2/3
=> Y0 = 39/48

Der gesuchte Radius R ist: R = 1-Y0
=> R = 9/48 = 3/16
Einloggen, um Attachments anzusehen!

Für diesen Beitrag haben gedankt: Mathematiker
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4765
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: So 14.12.14 10:36 
Ich habe dann wohl einfach geraten, denn ich habe einfach geschaut, wie oft der gelbe Kreis in den weißen und dunkelblauen paßt (vertikal) - und angenommen, daß der gelbe Kreis auch gerade zwischen die beiden paßt. Und dann kam das Verhältnis 3:4 raus. d.h. 3/8 für den weißen und 4/8 für den blauen Kreis. Und da aber der Radius gesucht war, also 3/16.

PS: Gestern habe ich leider das Tetris-Weihnachtsbaum-Rätsel nicht geschafft, obwohl ich einige Anläufe unternommen hatte. Ich habe zwar auch ein Programm dafür, aber das wäre Schummeln für mich. ;-)
Heute habe ich aber den Ausgang des Labyrinths auf Anhieb (in 1:40) gefunden, juhu!

Für diesen Beitrag haben gedankt: Mathematiker
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: So 14.12.14 11:19 
user profile iconMathematiker hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconDelphi-Laie hat folgendes geschrieben Zum zitierten Posting springen:
Das heutige Rätsel ist sogar mit intelligenter Intuition recht einfach und schnell zu lösen - und damit meine ich kein brachiales Ausprobieren.

Kann ich mir vorstellen. Nach dem offiziellen Ende des Rätsels von heute würde es mich interessieren.


Das ist rasch erklärt, Mathematiker. Daß es sich um ein rationales Verhältnis handelt, war ja anhand der Aufgabenstellung schon gegeben. Ich hoffte auf ein niedrigzahliges. So vom Augenmaß her nahm ich 2/3 oder eher noch 3/4 an, die der Durchmesser des Kreises die halbe Seitenlänge des Quadrates ausfüllt. Die Seitenlänge ist ja mit 1 normiert. Der Burch mußte dann nur noch zweimal halbiert, der Nenner also zweimal verdoppelt werden, zum einen, weil dieses Verhältnis Kreisdurchmesser zu halber Seitenlänge des Quadrates besteht, zum anderen, weil nur der Radius gesucht war. Schwuppdiwupp war ich bei 3/16 und lag damit sogar richtig, was mich selbst überraschte.

Du siehst also, daß man manchmal auch nur mit Mogeln / Schummeln sich durch das Leben winden kann - aber das kennst Du ja von Deiner Klientel sicher zur Genüge, nicht wahr? ;-)


Zuletzt bearbeitet von Delphi-Laie am So 14.12.14 11:37, insgesamt 1-mal bearbeitet

Für diesen Beitrag haben gedankt: Mathematiker