Autor Beitrag
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: Di 05.12.17 23:18 
Hallo,
das 4.Rätsel mit den Münzen erwies sich als etwas anspruchsvoll. 27 Lösungen sind eingegangen.
Per PN habe ich von user profile iconSymbroson, user profile icontrm und user profile iconpzktupel programmtechnische Lösungen erhalten, die sie vielleicht hier auch noch zeigen werden.
Alle offenen Lösungsversuche sind abgelaufen, daher mein Lösungsvorschlag.

Allgemein bestand die Aufgabe, die Anzahl der Lösungen (a,b,c,d,e) der diophantischen Gleichung
a + 5 b + 10 c + 25 d + 50 e = 100

zu finden, wobei die 5 Variablen alle nichtnegativ sein müssen.
Am einfachsten ist dies mittels Computersimulation möglich.

1. Brute-Force-Lösung

Bei diesem Verfahren werden alle möglichen Tupel (a,b,c,d,e) konstruiert und geprüft, ob die Summe gleich 100 ist.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TForm1.Button1Click(Sender: TObject);
const n=100;
var a1,a5,a10,a25,a50,anz:integer;
begin
   anz:=0;
   for a1:=0 to n do
       for a5:=0 to n div 5 do
           for a10:=0 to n div 10 do
               for a25:=0 to n div 25 do
                   for a50:=0 to n div 50 do
                       if a1+5*a5+10*a10+25*a25+50*a50=n then inc(anz);
   // Ausgabe der Größe von anz
end;


2. Rekursive Lösung

Eleganter ist eine rekursive Programmierung. Dazu werden die Münzwerte in einem Feld m gespeichert und die Funktion anz(n,k) rekursiv aufgerufen.
Der Rekursion erfolgt mit
anz = anz(n,k-1) + anz(n-m[k],k)

d.h. wird die k.te Münze nicht mehr verwendet, der Betrag n und eine Münze weniger (k-1), sowie im Fall, dass die k.te Münze zum Wechsel genutzt wird, der nun um diese Münze reduzierte Restbetrag n-m[k] mit einem weiteren Versuch, die k.te Münze zu nutzen.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
var m : array[1..100of integer;
function anz(n,k: integer): integer;
begin
   if (n < 0or (k = 0then anz := 0
       else if n = 0 then anz := 1
           else anz := anz(n,k-1) + anz(n-m[k],k);
end;
procedure Geldwechsel;
var a,n,k : integer;
begin
   n := 100//Zielwert eingeben
   m[1]:=1; m[2]:=5; m[3]:=10; m[4]:=25; m[5]:=50//evtl. weiter
   k := 5//Anzahl der Münzen
   a := anz(n,k);
   // Ausgabe der Möglichkeiten a
end;


3. Mathematische Lösung

Für eine mathematische Lösung muss die diophantische Gleichung
a + 5 b + 10 c + 25 d + 50 e = 100

untersucht werden. Dies ist mittels Fallunterscheidung möglich.

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
1.Fall e = 2 … ergibt 1 Lösung mit 2 x 50 Kreuzern

2.Fall e = 1 … d.h. a + 5b + 10c + 25d = 50

2.1.  d = 2 … ergibt 1 Lösung mit 1 x 50 und 2 x 25

2.2.  d = 1 … d.h. a + 5b + 10c = 25
  hier kann c die Werte 2,1,0 annehmen.
  für c = 2 wird a + 5b = 5 mit 2 Lösungen für (a,b) = {(5,0),(0,1)}
  für c = 1 wird a + 5b = 15 mit 4 Lösungen für (a,b) = {(15,0),(10,1),(5,2),(0,3)}
  für c = 0 wird a + 5b = 25 analog 6 Lösungen für (a,b) ; b=0,1,2,3,4,5

2.3.  d = 0 … a + 5b + 10c = 50 (analog zu oben)
  mit c = 5,4,…,1,0 und 1, 3, 5, 7, 9, 11 Lösungen für (a,b) = 36 Lösungen

3.Fall e = 0 … a + 5b + 10c + 25 d = 100

3.1.  d = 4 … 1 Lösung (a,b)
3.2.  d = 3 … analog zu oben, 12 Lösungen (a,b)
3.3.  d = 2 … analog zu oben, 36 Lösungen (a,b)
3.4.  d = 1 … analog zu oben, 72 Lösungen (a,b)
3.5.  d = 0 … analog zu oben, 121 Lösungen (a,b)

In der Summe ergeben sich die 292 Lösungen, die auch von den Computerprogrammen ermittelt werden.

Im Anhang befindet sich ein kleines Delphi-Programm mit Quelltext, dass für beliebige Münzen und Zielwerte die Anzahl der Wechselmöglichkeiten berechnet. Zusätzlich ermittelt es die Frobenius-Zahl. Das Programm ist von meinem Kollegen S.Beyer. Danke an ihn.

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


Zuletzt bearbeitet von Mathematiker am Di 05.12.17 23:31, insgesamt 2-mal bearbeitet

Für diesen Beitrag haben gedankt: Narses
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: Di 05.12.17 23:26 
Meine Lösung ähnelt der ersten beschrieben Variante, mit dem Unterschied, dass auf Multiplikation und Division verzichtet wird:
ausblenden C++-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
#include <stdio.h>

int main() {
  int a, b, c, d, e, res = 0;
  for(a=0; a<=100; a+= 1)
  for(b=0; b<=100; b+= 5)
  for(c=0; c<=100; c+=10)
  for(d=0; d<=100; d+=25)
  for(e=0; e<=100; e+=50)
    if( a+b+c+d+e == 100 ) res++;
  printf( "res: %i\n", res );
}

Anspruchsvoll war das meiner Meinung nach nicht. :nixweiss:
Das ist das heutige schon eher - aber auch dafür gibt es eine einfache Strategie das zu lösen

_________________
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)
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: Mi 06.12.17 00:01 
Hm, also die Fallunterscheidung ist ja geradezu prädestiniert dazu, daß man sich verheddert. So mathematisch sauber sie auch ist, so heikel ist sie, insbesondere, wenn man nur dreimal eine Lösung abgeben darf.

Ich erinnere daran, daß selbst der Fürst der Mathematiker Gauß es nicht schaffte, das sog. Damenproblem vollständig zu lösen. Und an zu geringer mathematischer Begabung, ja Genialität lag es bei dem ja nun ganz bestimmt nicht.

Schon ein Computer der Computer-Ur-, spätstens -Frühzeit (?) war hingegen zur lückenlosen Lösung dieses Problems imstande, korrekte Programmierung vorausgesetzt.

Deshalb präferiere ich hier auf jeden Fall den "Rechenknecht". Hier mein (Delphi-)Minimalalgorithmus:


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
TForm1.Button1Click(Sender: TObject);
var anzahl:word;einer,fuenfer,zehner,fuenfundzwanziger,fuenfziger:byte;
begin
anzahl:=0;
for einer:=0 to 100 do
  for fuenfer:=0 to 20 do
    for zehner:=0 to 10 do
      for fuenfundzwanziger:=0 to 4 do
        for fuenfziger:=0 to 2 do
          if einer+5*fuenfer+10*zehner+25*fuenfundzwanziger+50*fuenfziger=100 then
            begin
            inc(Anzahl);
            Caption:=inttostr(Anzahl)
            end
end;


Das geht trotz massiver Schleifenverschachtelung blitzschnell. Sind in der Summe ja "nur" 349.965 Schleifendurchläufe (wenn wenigstens das stimmt).

Ein bißchen grämt mich nur, daß ich etwas mehr als drei Versuche benötigte, um alle Quellcodefehler auszumerzen...


Zuletzt bearbeitet von Delphi-Laie am Mi 06.12.17 00:39, insgesamt 1-mal bearbeitet

Für diesen Beitrag haben gedankt: trm
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 06.12.17 00:06 
richtig. Sry

Soviel zum Thema bearbeiten eines Posts kann eine Konversation sinnlos machen...

_________________
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)


Zuletzt bearbeitet von Symbroson am Mi 06.12.17 00:09, insgesamt 3-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: Mi 06.12.17 00:07 
user profile iconSymbroson hat folgendes geschrieben Zum zitierten Posting springen:
Zitat:
Sind in der Summe ja "nur" 349.965

Ich glaube 100*20*10*4*2 sind 160.000

Es sind 101*21*11*5*3. Du darfst die 0 nicht vergessen.

LG Steffen

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

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: Mi 06.12.17 00:11 
Also doch ein abgefahrenes mathematisches Verfahren :D

Ich hab's damit gelöst:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
static int AnzahlKombinationen(int summe, IEnumerable<int> münzen)
{
    if (summe == 0)
        return 1;

    if (!münzen.Any() || summe < 0)
        return 0;

    return AnzahlKombinationen(summe - münzen.First(), münzen)
        + AnzahlKombinationen(summe, münzen.Skip(1));
}


Das ähnelt stark der rekursiven Lösung, die größten Unterschiede kommen vermutlich von den Sprach-Unterschieden.

@Delphi-Laie:

Ein Kollege hat mir erzählt, dass er eine recht performante Brute-Force-Lösung für das Damen-Problem gefunden hat.

Das Problem - wenn man alle Kombinationen durch gehen will - ist ja die große Menge der Kombinationen und das ständige Prüfen, ob eine Dame eine Andere schlagen kann.
Er hat das binär gelöst, indem er nicht jedem Feld ein Objekt gegeben und dann fleißig durch geprüft hat.
Sein Trick war, eine Reihe als ein Byte darzustellen, immerhin ist ein Brett genau 8 Felder breit.
Dieses Byte darf nur ein Bit auf 1 stehen haben - zumindest wenn ich ihn richtig verstanden haben.
Da dieser Check schneller geht als herkömmliches durch prüfen einzelner Objekte, so konnte er pro Kombination beim Prüfen jeder Reihe etwas Zeit sparen, was die Laufzeit dramatisch reduziert hat.

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

Windows 7x64
Delphi 7
BeitragVerfasst: Mi 06.12.17 00:20 
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:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

const
  mw: array of integer = [15102550];

implementation

{$R *.dfm}

function z(betrag, maxm: integer): integer;
var
  x, zaehler: integer;
  ergebnis: integer;
begin

  // ergebnis := 0;

  if betrag = 0 then
    ergebnis := 1
  else if betrag < 0 then
    ergebnis := 0
  else
  begin

    zaehler := 0;
    x := maxm;
    while true do
    begin
      zaehler := zaehler + z(betrag - mw[x], x);
      if x = 0 then
        break;
      x := x - 1;
    end;
    ergebnis := zaehler;
  end;

  result := ergebnis;

end;

procedure TForm1.FormCreate(Sender: TObject);
begin

  showmessage(inttostr(z(100, high(mw))));
  halt;

end;

end.


Das ist die Minimalversion eines C++ Scripts ( www.c-plusplus.net/forum/p746376#746376 ), welches mir bei der Suche nach einer Rechenlösung angezeigt wurde.

Zuerst hatte ich auch den guten alten KFG in Verdacht, nach zwei falschen Lösungsabgaben schwante mir, dass da irgend etwas im Argen ist. Jedoch die passende Frage für eine Suche zu finden war schon nervenaufreibend. Außerdem war da noch das Problem der Validität der Ausgabe des Programmes. Zum Glück konnte das mittels kleinerer Werte händisch gegengeprüft werden (5, 10, 11, 20). Das war ein geniales Rätsel!

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

Windows 7x64
Delphi 7
BeitragVerfasst: Mi 06.12.17 00:22 
user profile iconDelphi-Laie hat folgendes geschrieben Zum zitierten Posting springen:
Ein bißchen grämt mich nur, daß ich etwas mehr als drei Versuche benötigte, um alle Quellcodefehler auszumerzen...



Dito !!! :-D

_________________
In Erfurt gibt es eine Pension, in der es gemütlich ist, Google einfach nach Pension Fiege ;)

Für diesen Beitrag haben gedankt: Delphi-Laie
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 06.12.17 00:24 
Warum sich auch mit der Rekursion abrackern, wo doch 0-8-15 Bruteforce viel sicherer und einfacher ist ;)

_________________
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)
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: Mi 06.12.17 00:57 
user profile iconJann1k hat folgendes geschrieben Zum zitierten Posting springen:
Super Aufgabe heute, ich war ziemlich oft am verzweifeln...

Wie wärs wenn wir zusammenlegen und den Weihnachtswichteln biegsame Röhren schenken, die man auch übereinander legen kann? Dann muss das nicht immer so knifflig sein.


Nun, ich kam mir heute vor wie bei einer Diplomprüfung für Elektroniker, konkret Leiterplattendesign/-layout.....


Zuletzt bearbeitet von Delphi-Laie am Mi 06.12.17 23:00, insgesamt 1-mal bearbeitet
pzktupel
Hält's aus hier
Beiträge: 129
Erhaltene Danke: 30



BeitragVerfasst: Mi 06.12.17 08:26 
Jo, ich gebe die Thaleraufgabe auch mal frei. Ist ziemlich identisch zu anderen hier.
DIM AS BYTE K50,K25,K10,K5,K1
DIM AS INTEGER KO
KO=0
FOR K50=0 TO 2
FOR K25=0 TO 4
FOR K10=0 TO 10
FOR K5=0 TO 20
FOR K1=0 TO 100
IF K50*50+K25*25+K10*10+K5*5+K1=100 THEN KO+=1
NEXT K1:NEXT K5:NEXT K10:NEXT K25:NEXT K50
PRINT "Kombinationen";KO

Ich hatte aus 2016 ( da ich die nicht kenne ) die Buchaufgabe gelöst.
Auch hier kann der PC viel Zeit einem sparen. Das Ergebnis passte!
Erinnert sich bestimmt noch einer.
DIM AS INTEGER i,j,j1,j2
FOR i=0 TO 10000
j=10000-i
j1=j\100
j2=j MOD 100
IF 2*j+5=j2*100+j1 THEN PRINT i / i ist ja 6837 (in ct)
NEXT i

Anbei das Enten- und das Vogelhauspuzzle waren kniffliger als die Spinne/Kreuz von 2017
-----

ACHSO das mit den Röhren.Das Prinzip kannte ich durch Zufall, deshalb konnte ich was damit anfangen. Die 3. Runde war gemein. Es gibt nämlich ein kostenloses Spiel mit einem Würfel und dort musste man auf der Oberfläche eben diese farbigen linien von Beginn zum Ende ziehen.

Zum Bsp hier ein Bild
www.google.de/search...mgrc=iEcwcWw6TXiYdM:
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Mi 06.12.17 09:00 
(4) Lösung

Ich habe das ganze erst einmal mit elementarer Kombinatorik probiert [1] (txt, 1.31 KB), wobei ich schnell gemerkt habe dass eine Reihe von N Fünfen immer auf N+1 Zerlegungen führt.

Als Kurzschreibweise habe ich ~[] für einen fiktiven Zerlegungsalgorithmus geschrieben, der einer Sequenz von Zahlen die Menge ihrer möglichen Zerlegungen zuordnet.

Zum Beispiel ~[5 5 5] = (555, 55 11111, 5 11111 11111, 11111 11111 11111). Bei einer Reihe von M Zehnen gefolgt von N Fünfen zerlegt man von rechts nach links die Zehnen in Fünfen und erhält z.B. ~[10 10 5] = (10 10 ~5, 10 ~[5 5 5], ~[5 5 5 5 5]) --> 2 + 4 + 6 Zerlegungen.
Allgemein: ~[10#M 5#N] --> sum_{i=0..M} (N + 2i + 1) = (N+M+1)*(M+1) Zerlegungen.

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
~25 = (25, ~[10 10 5])                --> 1 + 4*3 = 13 Zerlegungen
~50 = (50, 25 ~25, ~[10 10 10 10 10]) --> 1 + 13 + 6*6 = 50 Zerlegungen

~100 = (50 ~50,                           (50 Zerlegungen)
        25 25 25 ~25,                     (13 Zerlegungen)
        25 25 ~[10 10 10 10 10],          (6*6 = 36 Zerlegungen)
        25 ~[10 10 10 10 10 10 10 5],     (9*8 = 72 Zerlegungen)
        ~[10 10 10 10 10 10 10 10 10 10]) (11*11 = 121 Zerlegungen)
   --> 50 + 13 + 36 + 72 + 121           = 292 Zerlegungen
Einloggen, um Attachments anzusehen!
_________________
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)

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: Mi 06.12.17 10:38 
Hallo,

was mich nur wundert, das manche die 1
for einer:=0 to 100 do
mit eingebaut haben.Die ergibt sich aus Summe-Rest am Schluss.
Ich habe leider user profile iconHidden Zerlegung nicht hinbekommen.
Ich dachte erst 5 = 5 oder 11111 -> 2 Möglichkeiten
10 = 10 und 2x 5 also 1+2*2 Möglichkeiten, was nicht stimmt, denn 5 5-> wird in
[5 5];[5 11111];[11111 5];[11111 11111] zerlegt und da ist 5 11111 doppelt, da die Reihenfolge keine Rolle spielt-> Kombination statt Permutation...
Die nächste Aufgabe wartet,

Gruß Horst

Für diesen Beitrag haben gedankt: Delphi-Laie
pzktupel
Hält's aus hier
Beiträge: 129
Erhaltene Danke: 30



BeitragVerfasst: Mi 06.12.17 10:51 
user profile iconHorst_H hat folgendes geschrieben Zum zitierten Posting springen:
Hallo,
was mich nur wundert, das manche die 1
mit eingebaut haben.
Gruß Horst


Das kann ich erklären. Damit man aus reiner Systematik nichts vergisst.
Hinterher ist immer optimieren noch möglich, aber man braucht immer ein Richtiges Ergebnis zum vergleichen danach,stimmts? :wink:
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: Mi 06.12.17 16:00 
Hallo,
hier die Lösung des 5.Rätsels für 3 mögliche Aufgaben:
flow1
Jeder Mitspieler erhielt aus 9 Möglichkeiten genau 3 Aufgaben. Allerdings wurden sie auch gespiegelt und/oder gedreht, sowie die Farben gemischt, so dass es mitunter anders aussehen konnte.

LG Steffen

Nachtrag: Text geändert, da ursprünglich nicht korrekt. :autsch:
Einloggen, um Attachments anzusehen!
_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein


Zuletzt bearbeitet von Mathematiker am Mi 06.12.17 17:22, insgesamt 2-mal bearbeitet

Für diesen Beitrag haben gedankt: Narses
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: Mi 06.12.17 16:20 
user profile iconMathematiker hat folgendes geschrieben Zum zitierten Posting springen:
Hallo,
hier die Lösung des 5.Rätsels:


Bemerkenswert ist, daß bei jeder Lösung sämtliche Feldelemente bzw. Teilquadrate bedeckt sind. Ich wollte das schon fragen, ob das die Bedingung ist, sah aber später davon ab, um keine Schwäche zu zeigen.


Zuletzt bearbeitet von Delphi-Laie am Mi 06.12.17 16:32, insgesamt 1-mal bearbeitet
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: Mi 06.12.17 16:25 
user profile iconHorst_H hat folgendes geschrieben Zum zitierten Posting springen:
Hallo,

was mich nur wundert, das manche die 1
for einer:=0 to 100 do
mit eingebaut haben.Die ergibt sich aus Summe-Rest am Schluss.


Mit der kleinen Änderung, daß dann <=100 geprüft werden muß.

Sehr gute Idee!
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: Mi 06.12.17 16:29 
user profile iconDelphi-Laie hat folgendes geschrieben Zum zitierten Posting springen:
Bemerkenswert ist, daß bei jeder Lösung sämtliche Feldelemente bzw. Teilquadrate bedeckt sind. Ich wollte das schon fragen, ob das die Bedingung ist, sah aber später darauf ab, um keine Schwäche zu zeigen.

Im Text zum Rätsel stand links
Zitat:
Um den Level abzuschließen müssen alle Endpunkte verbunden sein und alle Felder eine Röhre oder einen Punkt enthalten.

LG Steffen

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

Für diesen Beitrag haben gedankt: Delphi-Laie
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 07.12.17 08:28 
Hallo,
das gestrige Rätsel 6 war für den einen oder anderen nervig, da zeitaufwendig.
Heute gibt es noch einmal zum "Verschnaufen" eine einfache Aufgabe; die einfachste nach meiner Meinung. :wink:
Vielleicht schaffen wir heute 40 und mehr richtige Lösungen. Schön wäre es.

Viel Erfolg
Steffen

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

Win XP, Win 7
Delphi 7, VS2010 C#
BeitragVerfasst: Do 07.12.17 12:01 
Hallo,

das gestrige Rätsel war schon ein Zeitfresser. Wobei ich die Angabe "es ist in 10 Zügen" machbar noch mit 7 Zügen unterbieten konnte. :D (Die unzähligen vorherigen Versuche blende ich jetzt einfach mal aus! :roll: )

Viele Grüße
Patrick

_________________
Grafische Oberflächen sind wie U-Boote. Kaum macht man ein Fenster auf, fangen die Probleme an!