Die Mathe-Redaktion - 07.12.2019 02:05 - Registrieren/Login
Auswahl
ListenpunktHome
ListenpunktAktuell und Interessant ai
ListenpunktArtikelübersicht/-suche
ListenpunktAlle Links / Mathe-Links
ListenpunktFach- & Sachbücher
ListenpunktMitglieder / Karte / Top 15
ListenpunktRegistrieren/Login
ListenpunktArbeitsgruppen
Listenpunkt? im neuen Schwätz
ListenpunktWerde Mathe-Millionär!
ListenpunktFormeleditor fedgeo
Schwarzes Brett
Aktion im Forum
Suche
Stichwortsuche in Artikeln und Links von Matheplanet
Suchen im Forum
Suchtipps

Bücher
Englische Bücher
Software
Suchbegriffe:
Mathematik bei amazon
Naturwissenschaft & Technik
In Partnerschaft mit Amazon.de
Kontakt
Mail an Matroid
[Keine Übungsaufgaben!]
Impressum

Bitte beachten Sie unsere Nutzungsbedingungen, die Distanzierung, unsere Datenschutzerklärung und
die Forumregeln.

Sie können Mitglied werden. Mitglieder können den Matheplanet-Newsletter bestellen, der etwa alle 2 Monate erscheint.

Der Newsletter Okt. 2017

Für Mitglieder
Mathematisch für Anfänger
Wer ist Online
Aktuell sind 563 Gäste und 5 Mitglieder online.

Sie können Mitglied werden:
Klick hier.

Über Matheplanet
 
Zum letzten Themenfilter: Themenfilter:
Matroids Matheplanet Forum Index
Moderiert von matroid
Informatik » Algorithmen / Datenstrukturen » Alternativer Collatzalgorithmus
Druckversion
Druckversion
Antworten
Antworten
Seite 1   [1 2]   2 Seiten
Autor
Kein bestimmter Bereich Alternativer Collatzalgorithmus
blindmessenger
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 02.08.2016
Mitteilungen: 993
Aus: Sachsen
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Themenstart: 2019-11-07


Hallo,

ich würde gerne diese Berechnung/Algorithmus aus Excel:


=WENN(REST(C4-3;4)=0;((C4-3)/4)*6+5;WENN(REST(C4-1;8)=0;((C4-1)/8)*6+1;WENN(REST(C4-13;16)=0;((C4-13)/16)*6+5;WENN(REST(C4-5;32)=0;((C4-5)/32)*6+1;WENN(REST(C4-53;64)=0;((C4-53)/64)*6+5;WENN(REST(C4-21;128)=0;((C4-21)/128)*6+1;WENN(REST(C4-213;256)=0;((C4-213)/256)*6+5;WENN(REST(C4-85;512)=0;((C4-85)/512)*6+1;WENN(REST(C4-853;1024)=0;((C4-853)/1024)*6+5;WENN(REST(C4-341;2048)=0;((C4-341)/2048)*6+1;WENN(REST(C4-3413;4096)=0;((C4-3413)/4096)*6+5;WENN(REST(C4-1365;8192)=0;((C4-1365)/8192)*6+1;WENN(REST(C4-13653;16384)=0;((C4-13653)/16384)*6+5;WENN(REST(C4-5461;32768)=0;((C4-5461)/32768)*6+1;WENN(REST(C4-54613;65536)=0;((C4-54613)/65536)*6+5;WENN(REST(C4-21845;131072)=0;((C4-21845)/131072)*6+1;WENN(REST(C4-218453;262144)=0;((C4-218453)/262144)*6+5;WENN(REST(C4-87381;524288)=0;((C4-87381)/524288)*6+1;WENN(REST(C4-873813;1048576)=0;((C4-873813)/1048576)*6+5;WENN(REST(C4-349525;2097152)=0;((C4-349525)/2097152)*6+1;""))))))))))))))))))))


auch für sehr große Zahlen durchführen.

Hat jemand eine Idee dazu?  



-----------------
Gruß blindmessenger



  Profil  Quote  Link auf diesen Beitrag Link
haegar90
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 18.03.2019
Mitteilungen: 163
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.1, eingetragen 2019-11-07


Dafür ist Excel ungeeignet. Aber C, Java, VB etc. bieten alle die Möglichkeit mit theoretisch unendlich großen Zahlen zu rechnen und stehen kostenlos zum download im Web bereit.


-----------------
Gruß haegar90



  Profil  Quote  Link auf diesen Beitrag Link
LukasNiessen
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 30.09.2019
Mitteilungen: 69
Aus: Rheinland-Pfalz, Asbach
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.2, eingetragen 2019-11-07


Java:
BigInteger

(Primitiver Integer klappt wegen Überlauf nicht)


-----------------
Beste Grüße, Lukas Nießen
PS: Schreibt mir gerne bei Fragen. smile



  Profil  Quote  Link auf diesen Beitrag Link
haegar90
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 18.03.2019
Mitteilungen: 163
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.3, eingetragen 2019-11-07


Wieso muss es Java sein ?
Ich spreche von Biginteger, und C, VB, bieten das auch.


-----------------
Gruß haegar90



  Profil  Quote  Link auf diesen Beitrag Link
pzktupel
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 02.09.2017
Mitteilungen: 1045
Aus: Thüringen,Erfurter Raum
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.4, eingetragen 2019-11-07


Da dieses Thema noch einmal aufgegriffen wurde, habe ich in den letzten paar Stunden im Kopf etwas neues herausgefunden.

Die Antwort auf die Frage, was ist die maximale 2er Potenz nach einem 3x+1 Durchgang ?

Ich beobachtete, das 2^2n-1 durch 3 teilbar ist und das die Folgeglieder davon mit 1,5,21,85,...ein Schlüssel darstellen bei der MOD-Bestimmung mit einer 2er Potenz.

Kurzum, stellt man zu einer ungeraden Zahl die duale Zerlegung her und zählt von rechts nach links eine vorhandene 101010...Kombination durch, so hat man sofort die maximale 2er Potenz als Teiler, die nach 3x+1 entsteht.


Bsp.
x=113 , Dual: 1110001: hier ist nach ..01 Schluss, sind 2 stellen, also 2^2=4

113*3+1=4*85

85 selbst hat 01010101 , macht 8 Stellen. 85*3+1=2^8

x=631628361421, Dual ....1001101 , hier ..101, also 3 Stellen ->8

3x+1 MOD 8=0, MOD 16<>0

Weist man nun nach, das die Duale Zerlegung sich verkürzt , hat man das Problem eigentlich gelöst. Ich hatte ja einen anderen Weg mal angedacht...





-----------------
Pech in der Liebe , Glück im Verlieren !!!



  Profil  Quote  Link auf diesen Beitrag Link
blindmessenger
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 02.08.2016
Mitteilungen: 993
Aus: Sachsen
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.5, vom Themenstarter, eingetragen 2019-11-08


2019-11-07 22:25 - haegar90 in Beitrag No. 1 schreibt:
Dafür ist Excel ungeeignet. Aber C, Java, VB etc. bieten alle die Möglichkeit mit theoretisch unendlich großen Zahlen zu rechnen und stehen kostenlos zum download im Web bereit.

Meine Programmierkenntnisse sind leider sehr bescheiden...

Kann mir jemand den Big integer Algorithmus zeigen?


-----------------
Gruß blindmessenger



  Profil  Quote  Link auf diesen Beitrag Link
pzktupel
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 02.09.2017
Mitteilungen: 1045
Aus: Thüringen,Erfurter Raum
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.6, eingetragen 2019-11-08


Als wichtige Ergänzung (auch wenn im Nachhinein fast trival)...

Gegeben sei eine Zahl aus einer Collatzfolge N, so kann man die maximale 2er Potenz von 3N+1 derart bestimmen:

Bsp 1:

N=451

451/2=225 R1
225/2=112 R1:stop

11...1 Stelle  passt, 3N+1 ist durch 2^1=2 teilbar

Bsp 2:

N=277

277/2=138 R1
138/2=069 R0
069/2=034 R1
034/2=017 R0
017/2=008 R1
008/2=004 R0
004/2=002 R0:stop

Es passen 6 Stellen, somit wird 3N+1 durch 2^6=64 teilbar sein.


-----------------
Pech in der Liebe , Glück im Verlieren !!!



  Profil  Quote  Link auf diesen Beitrag Link
pzktupel
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 02.09.2017
Mitteilungen: 1045
Aus: Thüringen,Erfurter Raum
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.7, eingetragen 2019-11-08


@blind

Ich könnte das über große Strings realisieren.

Da hier 2er Potenzen als MOD genommen werden, kann man die Sache teilweise vereinfachen.

Würde man von N=8716847617824687126476128746187641781 den Rest für 2048 bestimmen, reicht aus: 46187641781 MOD 2048 = 949


-----------------
Pech in der Liebe , Glück im Verlieren !!!



  Profil  Quote  Link auf diesen Beitrag Link
pzktupel
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 02.09.2017
Mitteilungen: 1045
Aus: Thüringen,Erfurter Raum
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.8, eingetragen 2019-11-08


Okay blind...

Hab was programmiert , Stellenanzahl offen

Läuft alles über Zeichenketten.

Version 3, mit Speicherung der Zahlenentwicklung und Streichung führender Nullen

www.sendspace.com/file/15vz53



-----------------
Pech in der Liebe , Glück im Verlieren !!!



  Profil  Quote  Link auf diesen Beitrag Link
blindmessenger
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 02.08.2016
Mitteilungen: 993
Aus: Sachsen
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.9, vom Themenstarter, eingetragen 2019-11-08


Danke Dir pzktupel...


-----------------
Gruß blindmessenger



  Profil  Quote  Link auf diesen Beitrag Link
pzktupel
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 02.09.2017
Mitteilungen: 1045
Aus: Thüringen,Erfurter Raum
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.10, eingetragen 2019-11-08


Hoffe der macht das auch richtig bei den riesen Zahlen


Merk gerade, mal nicht über 256 Stellen mit der Version


-----------------
Pech in der Liebe , Glück im Verlieren !!!



  Profil  Quote  Link auf diesen Beitrag Link
blindmessenger
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 02.08.2016
Mitteilungen: 993
Aus: Sachsen
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.11, vom Themenstarter, eingetragen 2019-11-08


passt schon  wink


-----------------
Gruß blindmessenger



  Profil  Quote  Link auf diesen Beitrag Link
geroyx
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 01.11.2019
Mitteilungen: 66
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.12, eingetragen 2019-11-08


Also ich weiß auch nicht, was das Beste oder Schlechteste ist.

Wer JAVA gut kann, empfiehlt JAVA.
Wer C+ gut kann, empfiehlt C+.
...

Ich bin mir nur in einem sicher: Diese Excel-Verschachtelung im Startpost war sicher viel Arbeit; und es war die Mühe nicht wert.

2019-11-08 01:03 - blindmessenger in Beitrag No. 5 schreibt:
Meine Programmierkenntnisse sind leider sehr bescheiden...

Wenn schon in etwas Neues einarbeiten und wenn es sich um ein mathematisches oder zahlentheoretisches Problem handelt, warum nicht auch ein richtiges CAS nehmen, was dafür ausgelegt ist?

Ich weiß auch nicht, ob Sage(math) besser / schlechter ist als Mathematica / Maple / ...; ich weiß aber, dass es kostenlos und frei verfügbar ist ( cocalc.com/ ) ist, und von der Syntax her nicht schwieriger / einfacher ist als die anderen. Und ich kann auch mutmaßen: Sollte Sage -gegenüber den anderen- nicht mehr ausreichen, dann ist bereits viel verloren.

Das hier liefert jedenfalls schonmal diese Co'tz-Folge:
Sage
x = 19 # Startnummer
N=33  # Laufweite
for k in range (0,N):
    if x % 2 ==0:
        x=x/2
    else: 
        x=3*x+1
    print x
x=x+k
In[]
58,   29,   88,   44,   22,   11,   34,   17,   52,   26,   13,   40, 
20,   10,   5,   16,   8,   4,   2,   1,   4,   2,   1,   4,   2,   1,
4,   2,   1,   4,   2,   1,   4,   ......
Out[]

Darauf aufbauend kann man sicher Weiteres ersinnen...

PS: Die Einrückungen oben sind keine Zierde. Da legt er großen Wert drauf...

PPS: Die Leerstellen und die Kommas bei Out[] musste ich selbst einfügen, vielleicht kann mir ja jmd. sagen, wie man das automatisch erhält in Sage.



  Profil  Quote  Link auf diesen Beitrag Link
blindmessenger
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 02.08.2016
Mitteilungen: 993
Aus: Sachsen
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.13, vom Themenstarter, eingetragen 2019-11-08


Hallo Geroyx,

danke für Deine Tipps...

Das Programm von PZKTupel funktioniert schon ganz gut...

Und es lassen sich so wirklich alle ungeraden Collatzelemente erzeugen und das nur mit Restklassen ohne den eigentlichen Collatzalgorithmus zu gebrauchen...


-----------------
Gruß blindmessenger



  Profil  Quote  Link auf diesen Beitrag Link
pzktupel
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 02.09.2017
Mitteilungen: 1045
Aus: Thüringen,Erfurter Raum
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.14, eingetragen 2019-11-08


Update V4

www.sendspace.com/file/u55uef

Ich habe mir die Mühe gemacht, von jedem Collatzmitglied die Duale Zerlegung mit anzuführen.

Somit lassen sich die 101010...-Kombinationen auch erkennen, die ein Indiz sind, durch welche 2er Potenz 3N+1 dann teilbar ist


-----------------
Pech in der Liebe , Glück im Verlieren !!!



  Profil  Quote  Link auf diesen Beitrag Link
geroyx
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 01.11.2019
Mitteilungen: 66
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.15, eingetragen 2019-11-08


2019-11-08 21:19 - blindmessenger in Beitrag No. 13 schreibt:
Hallo Geroyx,

1. danke für Deine Tipps...

2. Das Programm von PZKTupel funktioniert schon ganz gut...

Und es lassen sich so wirklich alle ungeraden Collatzelemente erzeugen und das nur mit Restklassen ohne den eigentlichen Collatzalgorithmus zu gebrauchen...

1. Bitte.
Ich war noch in dieser Debatte, ob Java, ob C+ usw. steckengeblieben.

2. Ja, springen auch sämtliche Virenscanner und Firewalls an, wenn man es runterlädt und startet.  biggrin
Aber, wenn es vom guten PKZTuber kommt...

Aber zurück zu
1. Es ging mir nicht so sehr, um dieses spezielle Problem. Das verstehe ich sowieso nicht bzw. habe ich mich nicht in "Excel-Deluxe" aus dem Startpost reingedacht; um ehrlich zu sein, war ich dazu auch nicht bereit.

Es ging um den weiteren Ausblick.

PKZTuber's exe-Datei mag hier helfen, sein Programm ist aber nicht bearbeitbar (zumindest für mich nicht); und damit auch nicht weiterentwickelbar - außer für ihn selbst natürlich.

Weil ich vermutlich nicht der Einzige bin, der so dachte, sage ich es lieber kurz und schmerzlos:
 Ein zahlentheoretisches Jahrhundertproblem mit Excel angehen - wenn ich sowas schon sehe...
Das kann auf lange Sicht zu keinem Durchbruch führen; dazu ist eine Tabellenkalkulation einfach nicht da.

Also arbeite Dich in eine geeignete Programmiersprache ein; und da empfehle ich eben ein CAS; und da empfehle ich eben Sage(math). Warum habe ich ja begründet.

 



  Profil  Quote  Link auf diesen Beitrag Link
haegar90
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 18.03.2019
Mitteilungen: 163
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.16, eingetragen 2019-11-08


..da eure Gedanken in einer ähnlichen (mir nicht direkt schlüssig - was ist der Gewinn daraus genau ?) Richtung angesiedelt sind, möchte ich dennoch gerne etwas dazu beitragen.  smile

Habe dieses mal vor langer Zeit betrachtet und auch schlüssig geprüft.
Vielleicht könnt ihr das bei euren weiteren Überlegungen verwenden.
Gucke mal ob ich meine Formulierungen dazu noch finde. Wenn nicht, erklären sich diese Zahlen ja mit etwas Überlegung eigentlich von selbst.
...mit deinen gewählten Zahlen
n       3n+1(3n+1)/2^L	L		m=n-2^x	c=3m+1	c/2^y	y
277	832	13	6		21	64	1	6
277	832	13	6		149	448	7	6
277	832	13	6		213	640	5	7
277	832	13	6		245	736	23	5
277	832	13	6		261	784	49	4
277	832	13	6		269	808	101	3
277	832	13	6		273	820	205	2
277	832	13	6		275	826	413	1
 
451	1354	677	1		195	586	293	1
451	1354	677	1		323	970	485	1
451	1354	677	1		387	1162	581	1
451	1354	677	1		419	1258	629	1
451	1354	677	1		435	1306	653	1
451	1354	677	1		443	1330	665	1
451	1354	677	1		447	1342	671	1
451	1354	677	1		449	1348	337	2
 


Wenn man das Collatz-Problem betrachtet, sich damit beschäftigt, so ist es das Karotten-Prinzip was einem widerfährt.  biggrin  ...weitermachen, es macht ja irgendwie auch Spaß.


-----------------
Gruß haegar90



  Profil  Quote  Link auf diesen Beitrag Link
LukasNiessen
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 30.09.2019
Mitteilungen: 69
Aus: Rheinland-Pfalz, Asbach
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.17, eingetragen 2019-11-08


2019-11-07 23:08 - haegar90 in Beitrag No. 3 schreibt:
Wieso muss es Java sein ?
Ich spreche von Biginteger, und C, VB, bieten das auch.

Muss es nicht, die anderen Sprachen kann ich nicht. Ich wollte sagen, dass er Java nehmen kann und dabei BigInteger nutzen sollte.


-----------------
Beste Grüße, Lukas Nießen
PS: Schreibt mir gerne bei Fragen. smile



  Profil  Quote  Link auf diesen Beitrag Link
geroyx
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 01.11.2019
Mitteilungen: 66
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.18, eingetragen 2019-11-12 15:41


2019-11-08 19:48 - geroyx in Beitrag No. 12 schreibt:
Alt:
Das hier liefert jedenfalls schonmal diese Co'tz-Folge:
Sage
x = 19 # Startnummer
N=33  # Laufweite
for k in range (0,N):
    if x % 2 ==0:
        x=x/2
    else: 
        x=3*x+1
    print x
x=x+k
In[]
58,   29,   88,   44,   22,   11,   34,   17,   52,   26,   13,   40, 
20,   10,   5,   16,   8,   4,   2,   1,   4,   2,   1,   4,   2,   1,
4,   2,   1,   4,   2,   1,   4,   ......
Out[]

Darauf aufbauend kann man sicher Weiteres ersinnen...



Neu:
Mit Hilfe der Experten:
Sage
X = 19      # Startwert
N = 5      # Laufweite
def f(x, n):
    yield x
    for k in range(0, n):
        if x % 2 == 0:
            x = x / 2
        else:
            x = 3*x + 1
        yield x
print(", ".join(map(str, f(X, N)))) # kommagetrennte Display-Ausgabe
#print("\n".join(map(str, f(X, N)))) # zeilengetrennte Display-Ausgabe
with open('collatz_{}_{}.txt'.format(X, N), 'w') as file: # Ausgabe als
        file.writelines(str(z) + '\n' for z in f(X, N)) # collatz_19_5.txt
19, 58, 29, 88, 44, 22
Out[] Display
19
58
29
88
44
22
Out[] collatz_19_5.txt

Das einfache Minimalbeispiel könnte vll. der Einstieg in das Sage-CAS sein.
Die letzten 4 Zeilen dienen der Ausgabe des Ergebnisses und sind eher tieferes Python-Wissen; sie sollten sich aber produktiv auf andere Rechnungen anwenden lassen.

In allen Fällen sollte man für komplexere Programme kein umfangreiches Excel-Snippet angeben, sondern ein Ablauf- bzw. Flussdiagramm.




  Profil  Quote  Link auf diesen Beitrag Link
blindmessenger
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 02.08.2016
Mitteilungen: 993
Aus: Sachsen
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.19, vom Themenstarter, eingetragen 2019-11-12 17:53


Hallo Geroyx,

Danke für Deine Tipps... Das wäre die klassische Collatz Bildungsvorschrift...

Bei der mir erdachten Bildungsvorschrift kommen auch die Collatzfolgen heraus allerdings über einen völlig anderen Weg...

Es werden bestimmte Restklassen abgefragt und wenn eine Restklasse passt wird eine bestimmte Multiplikation durchgeführt. So entsteht das nächste Collatzelement... Und dann wieder von vorne: Restklasse finden und multiplizieren...


-----------------
Gruß blindmessenger



  Profil  Quote  Link auf diesen Beitrag Link
geroyx
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 01.11.2019
Mitteilungen: 66
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.20, eingetragen 2019-11-12 18:26


2019-11-12 17:53 - blindmessenger in Beitrag No. 19 schreibt:
1. Das wäre die klassische Collatz Bildungsvorschrift...

2. Bei der mir erdachten Bildungsvorschrift kommen auch die Collatzfolgen heraus allerdings über einen völlig anderen Weg...

1. Das ist richtig und als professionellere Umsetzung von Beitrag No. 12  zu verstehen.

2. Ja, und da sind wir gespannt Deine CAS-Umsetzung von Beitrag No. 0 zu sehen; ich sehe da ifthenelse und Modulo-Rechnungen; das ist funktionell alles in Beitrag No. 18 bzw. 12 enthalten.  



  Profil  Quote  Link auf diesen Beitrag Link
querin
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 12.01.2018
Mitteilungen: 250
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.21, eingetragen 2019-11-12 21:51


Hallo blindmessenger,

in python sieht dein Algorithmus so aus:
python
def collatz(u):        # u = ungerade natürliche Zahl
    r,p=1,2            # Startwerte
    while 1:           # Endlosschleife
        r=(-r)%6       # r ist abwechselnd 1 oder 5
        a=(p*r-1)//3   # die "mystischen Zahlen" 3,1,13,5,53,21,213,...
        p*=2           # nächste Zweierpotenz
        if (u-a)%p==0: # wenn Rest(u-a,p)=0
            return 6*((u-a)//p)+r  # Abbruch und Rückgabe der nächsten
                                   # ungeraden Collatz-Zahl



  Profil  Quote  Link auf diesen Beitrag Link
geroyx
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 01.11.2019
Mitteilungen: 66
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.22, eingetragen 2019-11-12 22:31


2019-11-12 21:51 - querin in Beitrag No. 21 schreibt:
Hallo blindmessenger,

in python sieht dein Algorithmus so aus:
python
def collatz(u):        # u = ungerade natürliche Zahl
    r,p=1,2            # Startwerte
    while 1:           # Endlosschleife
        r=(-r)%6       # r ist abwechselnd 1 oder 5
        a=(p*r-1)//3   # die "mystischen Zahlen" 3,1,13,5,53,21,213,...
        p*=2           # nächste Zweierpotenz
        if (u-a)%p==0: # wenn Rest(u-a,p)=0
            return 6*((u-a)//p)+r  # Abbruch und Rückgabe der nächsten
                                   # ungeraden Collatz-Zahl


Ja interessant, wenn sich das Excel-Monstrum darauf reduzieren lässt, ist ja schonmal viel gewonnen.

Jedoch: Könntest Du bitte entsprechende Ausgabe-Befehle ergänzen?
Ähnlich Beitrag No.18?
--> Ich bin ja da päpstlicher als der Papst: Im brauche das immer einmal im Display; und einmal als Exporttextdatei, mit Hinblick auf evtuelle Weiterverarbeitung (Graph o.ä.).

PS: Für die Laien: Python/Sage-Codes können ohne Weiteres auf  cocalc.com/ getestet werden. Dort einfach ein neues Sage-Worksheet.



  Profil  Quote  Link auf diesen Beitrag Link
geroyx
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 01.11.2019
Mitteilungen: 66
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.23, eingetragen 2019-11-13 16:53


2019-11-12 22:31 - geroyx in Beitrag No. 22 schreibt:
 Könntest Du bitte entsprechende Ausgabe-Befehle ergänzen?

Da vom lieben querin (noch?) nichts kam, versuche ich mich mal an dieser kleinen Ergänzung:
Sage
U = 17 # den Algorithmus durchlaufende Zahl
def collatz(u):        # u = ungerade natürliche Zahl
    r,p=1,2            # Startwerte
    while 1:           # Endlosschleife
        r=(-r)%6       # r ist abwechselnd 1 oder 5
        a=(p*r-1)//3   # die "mystischen Zahlen" 3,1,13,5,53,21,213,...
        p*=2           # nächste Zweierpotenz
        if (u-a)%p==0: # wenn Rest(u-a,p)=0
            return 6*((u-a)//p)+r  # Abbruch und Rückgabe der nächsten
                                   # ungeraden Collatz-Zahl
print collatz(U) # vom Algorithmus hervorgebrachte Zahl
13
Out[]


Ob das jetzt das gesuchte bzw. richtige Ergebnis ist, vermag ich nicht zu sagen; dazu bin ich zu wenig in das Collatz-Problem eingearbeitet.



  Profil  Quote  Link auf diesen Beitrag Link
pzktupel
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 02.09.2017
Mitteilungen: 1045
Aus: Thüringen,Erfurter Raum
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.24, eingetragen 2019-11-13 17:14


Also mal langsam, was hier als Programm dargeboten wird, hat nichts mit dem zutun aus Beitrag 1.

Es ist überhaupt nichts abwechselnd mit +1 oder +5.
Es ist immer eine Bedingungen, die aus der Vielzahl von oben passt.
Die passende Bedingung entsteht erst, wenn das Folgeglied berechnet wurde.

Die Regeln angewandt, ergeben die ungeraden Collatzglieder zu einer Startzahl...die geraden Glieder werden dadurch ausgegrenzt.

Bsp N=155 mit dualer Darstellung, aus dem von mir abgeleiteten Programm
N=155 10011011
233 11101001
175 10101111
263 100000111
395 110001011
593 1001010001
445 110111101
167 10100111
251 11111011
377 101111001
283 100011011
425 110101001
319 100111111
479 111011111
719 1011001111
1079 10000110111
1619 11001010011
2429 100101111101
911 1110001111
1367 10101010111
2051 100000000011
3077 110000000101
577 1001000001
433 110110001
325 101000101
61 111101
23 10111
35 100011
53 110101
5 101
1 1



-----------------
Pech in der Liebe , Glück im Verlieren !!!



  Profil  Quote  Link auf diesen Beitrag Link
geroyx
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 01.11.2019
Mitteilungen: 66
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.25, eingetragen 2019-11-13 17:25


2019-11-13 17:14 - pzktupel in Beitrag No. 24 schreibt:
Also mal langsam, was hier als Programm dargeboten wird, hat nichts mit dem zutun aus Beitrag 1.

Diese Ergebnisangabe (?) ist ja schön, aber nützt mir leider soviel wie Excel aus #0. Könntest Du also zu dem Algorithmus ein Flussdiagramm oder Pseudocode oder ähnliches angeben?
Oder ist der Algorithmus für die Collatzer völlig trivial und offensichtlich? Kann ich, wie gesagt, nicht wissen.
Ich weiß übrigens, aus genannten Gründen, nicht, ob der Code von querin bzw. meine ergänzte Ausgabe dazu das Gesuchte/Richtige ist, das habe ich jetzt einfach mal angenommen.



  Profil  Quote  Link auf diesen Beitrag Link
pzktupel
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 02.09.2017
Mitteilungen: 1045
Aus: Thüringen,Erfurter Raum
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.26, eingetragen 2019-11-13 17:34


Hier mein Basic-Code, der Zahlen mit Überlänge erlaubt.
Für 64bit Zahlen, wäre er weit kürzer, aber so musste ich alles neu
entwerfen. Anbei, ein BigInt liegt nicht vor, oder ich bin zu doof dazu.

DIM AS UINTEGER N0,SU,ii,D,SS,S,NXX
DIM AS INTEGER T1,L,k,p
DIM AS UBYTE i,ad,j,UB
DIM AS STRING N,N6,Nx,DU,NDU,NDD
 
OPEN "Collatz.txt" FOR OUTPUT AS #1
INPUT "N=";N 
PRINT #1,"N=";N;" ";
 
REM Duale Zerlegung
 
NDU=N:DU=""
NDD=""
 
UB=0
WHILE VAL(NDU)<>1
FOR p=1 TO LEN(NDU)
N0=UB*10+VAL(MID(NDU,p,1))
UB=N0 MOD 2 
NDD=NDD+STR(N0\2)
NEXT p
DU=STR(UB)+DU
NDU=NDD
NDD=""
UB=0
WEND
DU="1"+DU
 
PRINT #1,DU
 
BEGIN:
 
SU=349525:i=21
 
N0=0
FOR j=1 TO LEN(N)
N0=(N0*10+VAL(MID(N,j,1))) MOD 2^21
NEXT j
IF N0=349525 THEN GOTO WEITER
 
N0=0
SU=873813:i=20
FOR j=1 TO LEN(N)
N0=(N0*10+VAL(MID(N,j,1))) MOD 2^20
NEXT j
IF N0=873813 THEN GOTO WEITER
 
SU=87381:i=19:N0=VAL(RIGHT(N,19)) MOD 2^19:IF N0=87381 THEN GOTO WEITER
SU=218453:i=18:N0=VAL(RIGHT(N,18)) MOD 2^18:IF N0=218453 THEN GOTO WEITER
SU=21845:i=17:N0=VAL(RIGHT(N,17)) MOD 2^17:IF N0=21845 THEN GOTO WEITER
SU=54613:i=16:N0=VAL(RIGHT(N,16)) MOD 2^16:IF N0=54613 THEN GOTO WEITER
SU=5461:i=15:N0=VAL(RIGHT(N,15)) MOD 2^15:IF N0=5461 THEN GOTO WEITER
SU=13653:i=14:N0=VAL(RIGHT(N,14)) MOD 2^14:IF N0=13653 THEN GOTO WEITER
SU=1365:i=13:N0=VAL(RIGHT(N,13)) MOD 2^13:IF N0=1365 THEN GOTO WEITER
SU=3413:i=12:N0=VAL(RIGHT(N,12)) MOD 2^12:IF N0=3413 THEN GOTO WEITER
SU=341:i=11:N0=VAL(RIGHT(N,11)) MOD 2^11:IF N0=341 THEN GOTO WEITER
SU=853:i=10:N0=VAL(RIGHT(N,10)) MOD 2^10:IF N0=853 THEN GOTO WEITER
SU=85:i=9:N0=VAL(RIGHT(N,9)) MOD 2^9:IF N0=85 THEN GOTO WEITER
SU=213:i=8:N0=VAL(RIGHT(N,8)) MOD 2^8:IF N0=213 THEN GOTO WEITER
SU=21:i=7:N0=VAL(RIGHT(N,7)) MOD 2^7:IF N0=21 THEN GOTO WEITER
SU=53:i=6:N0=VAL(RIGHT(N,6)) MOD 2^6:IF N0=53 THEN GOTO WEITER
SU=5:i=5:N0=VAL(RIGHT(N,5)) MOD 2^5:IF N0=5 THEN GOTO WEITER
SU=13:i=4:N0=VAL(RIGHT(N,4)) MOD 2^4:IF N0=13 THEN GOTO WEITER
SU=1:i=3:N0=VAL(RIGHT(N,3)) MOD 2^3:IF N0=1 THEN GOTO WEITER
SU=3:i=2:N0=VAL(RIGHT(N,2)) MOD 2^2:IF N0=3 THEN GOTO WEITER
 
WEITER:
IF i MOD 2=0 THEN ad=5 else ad=1
 
 
REM Division
 
L=LEN(N)
ii=2^i
NXX=0
Nx=""
 
FOR j=1 TO L
S=NXX*10+VAL(MID(N,j,1))
SS=S\ii:Nx=Nx+STR(SS)
NXX=S-(SS*ii)
NEXT j
 
 
REM mal 6
 
L=LEN(Nx)
UB=0
N6=""
S=VAL(MID(Nx,L,1))*6+ad
UB=S\10
S=S MOD 10
 
N6=STR(S)+N6
FOR j=1 TO L-1 
S=VAL(MID(Nx,L-j,1))*6+UB
UB=S\10
S=S MOD 10
N6=STR(S)+N6
NEXT j
 
IF UB>0 THEN N6=STR(UB)+N6
 
j=1
WHILE MID(N6,j,1)="0"
j+=1
WEND
 
N=RIGHT(N6,LEN(N6)-j+1)
PRINT #1,N;" ";
 
NDU=N:DU=""
NDD=""
 
UB=0
WHILE VAL(NDU)<>1
FOR p=1 TO LEN(NDU)
N0=UB*10+VAL(MID(NDU,p,1))
UB=N0 MOD 2 
NDD=NDD+STR(N0\2)
NEXT p
DU=STR(UB)+DU
NDU=NDD
NDD=""
UB=0
WEND
DU="1"+DU
 
PRINT #1,DU
 
 
 
 
 
IF VAL(N)=1 THEN CLOSE #1:SHELL ("notepad collatz.txt"):SLEEP:STOP
 
GOTO BEGIN



-----------------
Pech in der Liebe , Glück im Verlieren !!!



  Profil  Quote  Link auf diesen Beitrag Link
geroyx
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 01.11.2019
Mitteilungen: 66
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.27, eingetragen 2019-11-13 17:52


2019-11-13 17:34 - pzktupel in Beitrag No. 26 schreibt:
Hier mein Basic-Code, der Zahlen mit Überlänge erlaubt.
Für 64bit Zahlen, wäre er weit kürzer, aber so musste ich alles neu
entwerfen. Anbei, ein BigInt liegt nicht vor, oder ich bin zu doof dazu.

DIM AS UINTEGER N0,SU,ii,D,SS,S,NXX
DIM AS INTEGER T1,L,k,p
DIM AS UBYTE i,ad,j,UB
....


Eieiei... Ok. Vielleicht bin ich ja völlig neben der Kappe, in dem Fall habe ich nichts gesagt.

Für mich sieht das so aus, als habest Du blindmessengers Excel mit Basic umgesetzt, ggf. inhaltlich 1:1? Und das ermöglicht Dir dann die Excel-Grenzen zu verlassen und auch größere Zahlen als Eingangsparameter zu wählen. Das ist ja schon eine Leistung!

Falls dem so ist, vermute ich bzw. bin ich zuversichtlich:
Wenn der Algorithmus in allgemeiner, sprachneutraler Form vorliegt, dann bin ich zuversichtlich, dass er sich in wenigen Zeilen bzw. einfach umsetzen lässt.

Und allgemeine Beschreibungen von Algorithmen gibt man möglichst als Flussdiagramm oder auch Pseudocode an; das hat sich nunmal so bewährt.

Wie gesagt, alles sehr spekulativ. Vielleicht zieht ja querin noch sein Ass aus dem Ärmel.



  Profil  Quote  Link auf diesen Beitrag Link
pzktupel
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 02.09.2017
Mitteilungen: 1045
Aus: Thüringen,Erfurter Raum
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.28, eingetragen 2019-11-13 18:10


Liegst mit den Vermutungen richtig !
Es ist eine Umsetzung der Bedingungen , um sehr große Zahlen durchzutesten ( bis 256 Stellen erstmal )


-----------------
Pech in der Liebe , Glück im Verlieren !!!



  Profil  Quote  Link auf diesen Beitrag Link
querin
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 12.01.2018
Mitteilungen: 250
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.29, eingetragen 2019-11-13 20:39


Hallo geroyx,

collatz(u) ist meine Antwort auf blindmessengers Frage aus dem Startbeitrag für beliebig(!) große ungerade Zahlen u.

Die Testfunktion
python
def f(u):
    c=str(u)
    while u>1:
        u=collatz(u)
        c+=', '+str(u)
    print(c)
    with open('collatz_{}.txt'.format(u), 'w') as fp:
        fp.write(c)

druckt und speichert alle ungeraden Zahlen der Collatzfolge vom Startwert u bis zur abschließenden 1. Zum Beispiel liefert f(155) die Ausgabe

155, 233, 175, 263, 395, 593, 445, 167, 251, 377, 283, 425, 319, 479, 719, 1079, 1619, 2429, 911, 1367, 2051, 3077, 577, 433, 325, 61, 23, 35, 53, 5, 1



  Profil  Quote  Link auf diesen Beitrag Link
geroyx
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 01.11.2019
Mitteilungen: 66
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.30, eingetragen 2019-11-13 21:09


2019-11-13 20:39 - querin in Beitrag No. 29 schreibt:
Hallo geroyx,

collatz(u) ist meine Antwort auf blindmessengers Frage aus dem Startbeitrag für beliebig(!) große ungerade Zahlen u.

Die Testfunktion
python
def f(u):
    c=str(u)
    while u>1:
        u=collatz(u)
        c+=', '+str(u)
    print(c)
    with open('collatz_{}.txt'.format(u), 'w') as fp:
        fp.write(c)

druckt und speichert alle ungeraden Zahlen der Collatzfolge vom Startwert u bis zur abschließenden 1. Zum Beispiel liefert f(155) die Ausgabe

155, 233, 175, 263, 395, 593, 445, 167, 251, 377, 283, 425, 319, 479, 719, 1079, 1619, 2429, 911, 1367, 2051, 3077, 577, 433, 325, 61, 23, 35, 53, 5, 1


Na da simmer doch einen großen Schritt weiter - wollte ich gerade sagen.

Jetzt ist es nur so, das der Code oben bei mir erstmal gar nichts ausgibt.  confused

Bei LaTeX gibt es die schöne Regel, dass man Minimalbeispiele immer vollständig und lauffähig angibt. Bei allem anderen werden grundsätzlich solche Code-Fragmente, -Ausschnitte oder -Futzel angegeben.

Versteh es nicht falsch, aber ich z.B. habe gut 1,5 Std. gebraucht, um alleine diese print-Ausgabe in der gewünschten Form hinzubekommen.

Also sei doch so nett und gib den Code so an, dass er im Display etwas ausgibt und eine txt-Datei schreibt.
Hier ist mir es noch ungefähr klar, wie man das retten könnte. Aber es ist Dein Code und es soll auch Dir gebühren.  wink
(Und, wenn ich ehrlich bin, interessiert mich das Thema eigentlich nur im Sage-einarbeitenden Sinne...)



  Profil  Quote  Link auf diesen Beitrag Link
querin
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 12.01.2018
Mitteilungen: 250
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.31, eingetragen 2019-11-13 21:29


Lieber geroyx, du könntest "das retten", indem du die Funktion aufrufst wink
python
f(155)



  Profil  Quote  Link auf diesen Beitrag Link
geroyx
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 01.11.2019
Mitteilungen: 66
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.32, eingetragen 2019-11-13 21:51


2019-11-13 21:29 - querin in Beitrag No. 31 schreibt:
Lieber geroyx, du könntest "das retten", indem du die Funktion aufrufst wink
python
f(155)


Um ehrlich zu sein -auf die Schnelle- nicht.
Ich kann auch nicht versprechen, dass ich mich da morgen 2h drannsetzen werde, um irgendwelchen Teilaspekte hinzubekommen.  smile
(Also als kleiner Warnhinweis, falls das zu einer pädagogischen Aufgabe werden sollte.)

Ich finde sowieso, dass ich, dafür dass mich das mich das 'Thema' wenig interssiert, relativ überengagiert bin.  smile
Ich dachte nur, dass kann nicht angehen, dass da (wieder und wieder) solche Excel-Monstren kommen. Weil es intuitiv klar ist, das dass mit Sage wenige Zeilen einnimmt.

Ich kann höchstens, wenn der Code mal steht, das schön veranschaulichen - da habe ich schon ein paar Ideen. Das kann ich aus dem Stand, da muss ich nicht erst ewig an einzelnen Zeilen recherchieren.



  Profil  Quote  Link auf diesen Beitrag Link
blindmessenger
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 02.08.2016
Mitteilungen: 993
Aus: Sachsen
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.33, vom Themenstarter, eingetragen 2019-11-13 21:58


2019-11-12 21:51 - querin in Beitrag No. 21 schreibt:
Hallo blindmessenger,

in python sieht dein Algorithmus so aus:
python
def collatz(u):        # u = ungerade natürliche Zahl
    r,p=1,2            # Startwerte
    while 1:           # Endlosschleife
        r=(-r)%6       # r ist abwechselnd 1 oder 5
        a=(p*r-1)//3   # die "mystischen Zahlen" 3,1,13,5,53,21,213,...
        p*=2           # nächste Zweierpotenz
        if (u-a)%p==0: # wenn Rest(u-a,p)=0
            return 6*((u-a)//p)+r  # Abbruch und Rückgabe der nächsten
                                   # ungeraden Collatz-Zahl


Der Unterschied zwischen der Version von mir bzw. pzktupel und der von querin ist, dass querin sein Code vollständig ist... Glaube ich...

Es gibt nämlich bestimmte Zahlen bei denen mein Code bzw. pzktupels Code falsche Ergebnisse liefert während querins Code funktionieren sollte...

Probiert mal die Zahl  1431655765 aus.

Laut Collatzbildungsvorschrift sollte diese Folge nur eine ungerade Zahl haben nämlich die 1.

Der Code von mir ist aber nur näherungsweise und liefert falsche Ergebnisse während querins Code das Bildungsgestz für die Subsequenz 1,13,5,53,21,... eingearbeitet hat daher vermutlich richtige Ergebnisse liefert...
Könntest Du das einmal überprüfen Querin?


-----------------
Gruß blindmessenger



  Profil  Quote  Link auf diesen Beitrag Link
geroyx
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 01.11.2019
Mitteilungen: 66
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.34, eingetragen 2019-11-13 22:28


2019-11-13 21:58 - blindmessenger in Beitrag No. 33 schreibt:
Der Unterschied zwischen der Version von mir bzw. pzktupel und der von querin ist, dass querin sein Code vollständig ist... Glaube ich...

Das verstehe ich nicht wie Du das meinst.
Wenn ich den letzten querin-Code bei cocalc.com in ein Neues Sageworksheet reinkopiere, bekomme ich keine Ausgabe.
Und ich weiß halt gerade nicht, ob dass schaffe, diese (natürlich trivialen) Steine zeitnah aus dem Weg zu räumen.
Also wollen wir hoffen, dass uns der liebe querin liebenswerterweise nötige Ergänzungen schenkt.
Weil sonst wirst Du -wie ich Dich (gut) kenne- das als tollen Einwurf hinnehmen und ansonsten bei Deinem Excel-Wahnsinn bleiben.



  Profil  Quote  Link auf diesen Beitrag Link
blindmessenger
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 02.08.2016
Mitteilungen: 993
Aus: Sachsen
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.35, vom Themenstarter, eingetragen 2019-11-13 22:47


Für Freunde der Dualzahldarstellung... ;-)

\[ \begin{array}{|c|c|}
Dezimal& Dual \\ \hline
0&0\\ \hline
3&11\\\hline
1&1\\\hline
13&1101\\\hline
5&101\\\hline
53&110101\\\hline
21&10101\\\hline
213&11010101\\\hline
85&1010101\\\hline
853&1101010101\\\hline
341&101010101\\ \hline
3413&110101010101\\\hline
1365&10101010101\\\hline
13653&11010101010101\\\hline
5461&1010101010101\\\hline
54613&1101010101010101\\\hline
21845&101010101010101\\\hline
218453&110101010101010101\\\hline
87381&10101010101010101\\\hline
873813&11010101010101010101\\\hline
\end{array} \]
[Die Antwort wurde nach Beitrag No.33 begonnen.]


-----------------
Gruß blindmessenger



  Profil  Quote  Link auf diesen Beitrag Link
blindmessenger
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 02.08.2016
Mitteilungen: 993
Aus: Sachsen
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.36, vom Themenstarter, eingetragen 2019-11-13 22:53


2019-11-13 22:28 - geroyx in Beitrag No. 34 schreibt:
2019-11-13 21:58 - blindmessenger in Beitrag No. 33 schreibt:
Der Unterschied zwischen der Version von mir bzw. pzktupel und der von querin ist, dass querin sein Code vollständig ist... Glaube ich...

Das verstehe ich nicht wie Du das meinst.
Wenn ich den letzten querin-Code bei cocalc.com in ein Neues Sageworksheet reinkopiere, bekomme ich keine Ausgabe.
Und ich weiß halt gerade nicht, ob dass schaffe, diese (natürlich trivialen) Steine zeitnah aus dem Weg zu räumen.
Also wollen wir hoffen, dass uns der liebe querin liebenswerterweise nötige Ergänzungen schenkt.
Weil sonst wirst Du -wie ich Dich (gut) kenne- das als tollen Einwurf hinnehmen und ansonsten bei Deinem Excel-Wahnsinn bleiben.


Innerhalb des Algorithmus wird mit Hilfe einer Subsequenz getestet...

Ich habe  die ersten paar Werte dieser Subsequenz (1,13,5,53,21,213,...) einfach direkt in den Algorithmus eingebunden.

Querin hat aber für diese Subsequenz gleich die Bildungsvorschrift mit eingebracht... Somit ist sein Code vollständig...

Und meiner nur Nährungsweise...

Vermute ich... Kann ich leider auch nicht überprüfen, weil ich mit python leider auch nicht umgehen kann...


-----------------
Gruß blindmessenger



  Profil  Quote  Link auf diesen Beitrag Link
geroyx
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 01.11.2019
Mitteilungen: 66
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.37, eingetragen 2019-11-14 12:23


Ja, was weiß ich...
Sage
U = 155 # den Algorithmus durchlaufende Zahl
def collatz(u):        # u = ungerade natürliche Zahl
    r,p=1,2            # Startwerte
    while 1:           # Endlosschleife
        r=(-r)%6       # r ist abwechselnd 1 oder 5
        a=(p*r-1)//3   # die "mystischen Zahlen" 3,1,13,5,53,21,213,...
        p*=2           # nächste Zweierpotenz
        if (u-a)%p==0: # wenn Rest(u-a,p)=0
            return 6*((u-a)//p)+r  # Abbruch und Rückgabe der nächsten
                                   # ungeraden Collatz-Zahl
#print collatz(U) # vom Algorithmus hervorgebrachte Zahl
def f(u):
    c=str(u)
    while u>1:
        u=collatz(u)
        c+=', '+str(u)
    print(c)
    with open('yyycollatz_{}.txt'.format(U), 'w') as fp:
        #fp.write(c) # alt
        fp.writelines(str(c) + '\n') # neu: juckt ihn einen Scheiß
        return f(c)
print f(U) # gesuchte Zahlenfolge
155, 233, 175, 263, 395, 593, 445, 167, 251, 
377, 283, 425, 319, 479, 719, 1079, 1619, 
2429, 911, 1367, 2051, 3077, 577, 433, 
325, 61, 23, 35, 53, 5, 1
 
+ 12 FEHLERMELDUNGEN.
Ich hatte es kurz ohne Fehlermeldungen. 
Ich suche jetzt da nicht zwei Stunden rum, 
wo da die Leerstelle fehlt. 
Out[]
Zur Sicherheit noch ein 5. Mal: bei cocalc.com in ein neues Sageworksheet reinkopieren, starten.



Der eigentliche Mist ist, was er nicht macht:
· Ausgabe als txt-Datei ---> zeilengetrennt (wie es bereits der Default macht, nichts Besonderes)
· Ausgabe im Display ---> unnötig zwecks Weiterverabeitung, aber anschaulich und dazu ggf. besser kommagetrennt, weil sonst die Konsole mitunter schwubs mit hunderten Zeilen macht.

------------> Warum ist das so schwer nachzuvollziehen? Warum muss man das ständig erklären? Warum muss man das ständig diskutieren?
Das ist doch völlig naheliegend und einfach nur gesunder Menschenverstand.

Ja, aber ist doch furzegal, ist doch sowieso alles furzegal. Wer will den qualitativ arbeiten?
Also bitte rechnet damit in in irgendwelchen Collatzzahlen rum und schiebts euch sonst wo hin. Scheiß Technik!








  Profil  Quote  Link auf diesen Beitrag Link
pzktupel
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 02.09.2017
Mitteilungen: 1045
Aus: Thüringen,Erfurter Raum
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.38, eingetragen 2019-11-14 12:27


Randbemerkung:
Die in Beitrag 1 aufgeführten Bedingungen sind NICHT ausreichend !
D.h. , es lassen sich nicht korrekt die Folgemitglieder berechnen...somit ist eigentlich mein Programm fehlerhaft.

Als Gegenbeispiel führe ich die Zahl 7689557 auf,warum wohl ?

Die Zahl von blind, liefert dies auch

N=1431655765 Dual:01010101010101010101010101010101

...und damit komme ich wieder auf die 101-Geschichte aus Beitrag No.4. Betrachtet man die Kette von rechts 101010....gibt diese Aufschluß über die maximale 2er Potenz als Teiler beim nächsten Glied an. Hier 32 , also 2^32 ist dann Teiler 3N+1
 


-----------------
Pech in der Liebe , Glück im Verlieren !!!



  Profil  Quote  Link auf diesen Beitrag Link
geroyx
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 01.11.2019
Mitteilungen: 66
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.39, eingetragen 2019-11-14 12:47


2019-11-14 12:27 - pzktupel in Beitrag No. 38 schreibt:
N=1431655765 Dual:01010101010101010101010101010101

Ja, Du denkst hier über zahlentheoretische Belange nach...
Viel wichtiger sind doch typographische Feinheiten, oder etwa nicht?  smile

Was muss denn da rauskommen?
Ich teste z.B.
Sage
U = 1025371 # den Algorithmus durchlaufende Zahl
erfolgreich, in dem Sinne, dass etwas ausgegeben wird (nach wie vor teil-beschissen).

Für
Sage
U = 1431655765 # den Algorithmus durchlaufende Zahl
gibt er mir
1431655765, 1
Out[]

Aber das weiß ich doch nicht, ob das das Gewünschte ist.

Edit:
Evtl. schon, weil wenn ich eine 1 ergänze
Sage
U = 14316557651 # den Algorithmus durchlaufende Zahl
liefert er wieder einen Haufen tolle Zahlen.




  Profil  Quote  Link auf diesen Beitrag Link
-->> Fortsetzung auf der nächsten Seite -->>
Seite 1Gehe zur Seite: 1 | 2  
Neues Thema [Neues Thema] Antworten [Antworten]    Druckversion [Druckversion]

 


Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2019 by Matroids Matheplanet
This web site was made with PHP-Nuke, a web portal system written in PHP. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]