Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zahlenreihe nach bestimmten Regeln filtern

Zahlenreihe nach bestimmten Regeln filtern
Reinhard
Hallo Wissende,
in einem Rätsel-Forum wo ich häufig bin stiess ich auf dieses:
"Ihr habt alle natürlichen Zahlen von 1 bis 50 (inklusive) zur Verfügung.
Bildet nun aus diesen Zahlen eine möglichst lange Zahlenreihe.
Wobei folgendes gilt:
Jede Zahl muß entweder die Summe oder die Differenz der beiden Nachbarzahlen sein. (mit Ausnahme der ersten und der letzten Zahl der Reihe)
Jede Zahl darf aber nur ein mal vorkommen!"
Eine der dort geposteten Lösungen lautet:
41 25 16 9 7 2 5 3 8 11 19 30 49
Nun dachte ich mir, ich löse das mit Excel, was dort legitim ist, man schreibt im Betreff "Lösung" oder "Spoiler". dann weiß jeder dort wenn er weiter selbst rumrätseln will sollte er den Betreff nicht anklicken.
Aufgrund der Aufgabenstellung dachte ich mir, alle Zahlenreihen fangen mit drei Zahlen an, die den Bedingungen entsprechen, das sind 3600 Kombinationen.
So entstand nachfolgender Code. Leider ist da der Wurm drin, weil als Ergebnis:
10 2 12 1
angezeigt wird :-(
Ich habe den Code schon mehrmals abgeändert aber ich glaube sehr ich habe da einen Grundsatzdenkfehler drinnen und vermute den Fehler in der Funktion CheckBerechnung.
Danke ^ Gruß
Reinhard
Option Explicit
Sub tt()
Dim Anz As Long, arrDrei(3599), a As Integer, b As Integer, c As Integer
Dim N As Integer, NN As Integer, S, Kurz, Max, Gefunden
For a = 1 To 50
For b = 1 To 50
If a  b Then
For c = 1 To 50
If c  a And c  b Then
If b = a + c Or b = Abs(a - c) Then
arrDrei(Anz) = a & " " & b & " " & c
Anz = Anz + 1
'MsgBox arrDrei(Anz - 1)
End If
End If
Next c
End If
Next b
Next a
For N = 0 To 3599
Kurz = arrDrei(N)
For NN = 1 To 50
Kurz = Kurz & " " & NN
If CheckDoppelt(Kurz) = True Then Exit For
If CheckBerechnung(Kurz) = False Then Exit For
S = Split(Kurz)
If Max 

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Zahlenreihe nach bestimmten Regeln filtern
03.04.2010 19:28:50
ChristianM
Hallo Reinhard,
nachdem du die möglichen 3er Kombinationen aufgestellt hast, musst du mit jeder einzeln dieser Kombinationen von vorne starten und zB in einen Loop alle weiteren durchlaufen.
Dabei bilden die letzten beiden Zahlen jeweils die ersten beiden der nächsten anzuhängenden 3er Kombination.
Bei deinem Code sehe ich in dem zweiten Block aber nur eine Doppelschleife:

For N = 0 To 3599
For NN = 1 To 50
und keinen Loop.
statt dem CheckDoppelt würde ich mit Instr auf doppelte prüfen.
Wenn ich das mal so durchteste, dann stimmt die von dir genannte Lösung, das ist die einzige Zahlenreihe mit 13 Zahlen. Eine weitere symetrische Lösung ist der selbe Pattern in umgekehrter Reihenfolge.
Gruß
Christian
Anzeige
AW: Zahlenreihe nach bestimmten Regeln filtern
06.04.2010 21:37:31
Reinhard
Hallo Christian,
danke dir für deine Mühe.
Gruß
Reinhard
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige