Die Mathe-Redaktion - 09.04.2020 09:12 - 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 für den MP

Werbung

Bücher zu Naturwissenschaft und Technik bei 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 524 Gäste und 21 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
Thema eröffnet 2019-11-07 19:44 von blindmessenger
Druckversion
Druckversion
Antworten
Antworten
Seite 2   [1 2]   2 Seiten
Autor
Kein bestimmter Bereich Alternativer Collatzalgorithmus
querin
Aktiv Letzter Besuch: im letzten Monat
Dabei seit: 12.01.2018
Mitteilungen: 327
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.40, eingetragen 2019-11-14


Hallo blindmessenger,

meine Funktion liefert korrekte Ergebnisse für alle ungeraden Zahlen. Du kannst selbst testen, indem du folgenden Code kopierst und hier im main.py Fenster einfügst und dann auf "run" klickst.
python
def collatz(u):
    r,p=1,2
    while 1:
        r=(-r)%6
        a=(p*r-1)//3
        p*=2  
        if (u-a)%p==0:
            return 6*((u-a)//p)+r
 
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)
 
#collatz(155)
f(155)

Natürlich ist 155 nur ein Beispiel und kann durch jede andere ungerade Zahl ersetzt werden. Der Funktionsaufruf von collatz(155) ist auskommentiert; bei Bedarf einfach das #-Zeichen entfernen (und vor f(155) setzen).




  Profil  Quote  Link auf diesen Beitrag Link
Ehemaliges_Mitglied
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.41, eingetragen 2019-11-14


Ach, das ist aber nett.

So, diesen Befehl habe ich gesucht print(c.replace("\n",", ")), das heißt, die newline wird durch ein Komma plus Leerstelle ersetzt.

Da zeilengetrennte Ausgabe m.W. der Default ist, müsste in folgendem Code noch eine Vereinfachung möglich sein.

Jedenfalls wird es jetzt so ausgegeben, wie ich mir das vortselle:
Display: kommagetrennt (zwecks Übersicht).
Ausgabe-Datei: zeilengetrennt.


Die Ausgabe-txt ist nicht zum Lesen.... So: "Ach, wie zauberhaft!"
Das ist zum Weiterverarbeiten! Und in der txt-Ausgabedatei macht eine kommagetrennte Liste überhaupt keinen Sinn! Wie soll ich denn da mit einem anderem Programm etwas einfach rauslesen?!

Das habe ich jetzt aber 5-mal vorgetragen, das ist jetzt höffentlich auch mal bei den Zaubärhaftis angekommen.

Noch ein letzter Punkt: Ich finde es grundsätzlich schön, wenn man die Eingangsparameter ganz am Anfang hinschreibt, und nach denen nicht in irgendwelchen längeren Codes ewig suchen muss.
Das sind halt alles solche Minimalansprüche, die man an sich selbst haben kann oder nicht...  

So, jedenfalls danke. Wie gesagt, eine Vereinfachung in der Syntax müsste noch möglich sein.
Sage
U = 155  # Den Algorithmus durchlaufende Zahl
def collatz(u):
    r,p=1,2
    while 1:
        r=(-r)%6
        a=(p*r-1)//3
        p*=2  
        if (u-a)%p==0:
            return 6*((u-a)//p)+r
def f(u):
    c=str(u)
    while u>1:
        u=collatz(u)
        c+='\n'+str(u)
#    print(c)                       # alt
    print(c.replace("\n",", "))     # neu
    with open('collatz_{}.txt'.format(U), 'w') as fp:
        fp.write(c)
#collatz(U)
f(U)
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
Out[Display]
155
233
175
263
395
593
...
 Out[collatz155.txt]










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


@Geroyx und @querin

Danke euch für die Mühe...

Und cool querin dass Dein Code wirklich jede Zahl erwischt...

Kannst Du kurz nochmal die Bildungsvorschrift für die "mystischen Zahlen" mathematisch darstellen?


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



  Profil  Quote  Link auf diesen Beitrag Link
querin
Aktiv Letzter Besuch: im letzten Monat
Dabei seit: 12.01.2018
Mitteilungen: 327
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.43, eingetragen 2019-11-14


2019-11-14 18:24 - blindmessenger in Beitrag No. 42 schreibt:
Kannst Du kurz nochmal die Bildungsvorschrift für die "mystischen Zahlen" mathematisch darstellen?

siehe hier



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


)
2019-11-14 18:32 - querin in Beitrag No. 43 schreibt:
2019-11-14 18:24 - blindmessenger in Beitrag No. 42 schreibt:
Kannst Du kurz nochmal die Bildungsvorschrift für die "mystischen Zahlen" mathematisch darstellen?

siehe hier

Ja genau...


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



  Profil  Quote  Link auf diesen Beitrag Link
Ehemaliges_Mitglied
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.45, eingetragen 2019-11-16


Lieber querin,

es wäre nette, wenn Du die vermutete Vereinfachung in #41 ergänzen könntest, für die Sage-Enthusiasten.


Am Rande: Ja und? Ist jetzt die Collatz-Vermutung damit gelöst, oder was?  😄



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


2019-11-16 18:43 - geroyx in Beitrag No. 45 schreibt:
Lieber querin,

es wäre nette, wenn Du die vermutete Vereinfachung in #41 ergänzen könntest, für die Sage-Enthusiasten.


Am Rande: Ja und? Ist jetzt die Collatz-Vermutung damit gelöst, oder was?  😄

Natürlich nicht...

Aber wir sind dran...  😉


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



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


Wenn man das mal ein bißchen ausformuliert sieht es so aus:

$6(\frac{x-3}{4})+5=\frac{3x+1}{2}$

$6(\frac{x-1}{8})+1=\frac{3x+1}{4}$

$6(\frac{x-13}{16})+5=\frac{3x+1}{8}$

$6(\frac{x-5}{32})+1=\frac{3x+1}{16}$

...

Ergibt:

$\frac{3}{2}x+\frac{1}{2}=\frac{3}{2}x+\frac{1}{2}$

$\frac{3}{4}x+\frac{1}{4}=\frac{3}{4}x+\frac{1}{4}$

$\frac{3}{8}x+\frac{1}{8}=\frac{3}{8}x+\frac{1}{8}$

$\frac{3}{16}x+\frac{1}{16}=\frac{3}{16}x+\frac{1}{16}$

...

 😄


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



  Profil  Quote  Link auf diesen Beitrag Link
juergenX
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 08.07.2019
Mitteilungen: 232
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.48, eingetragen 2020-03-03


2019-11-08 12:03 - pzktupel in Beitrag No. 8 schreibt:
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



Das interessiert mich auch noch mal sehr, aber der Link ist tot oder alt?
Kannste das bitte nochmal einstellen oder PM oder irgendwo zur Verfügung stellen?
danke!



das thema ist immer noch hot 😎



  Profil  Quote  Link auf diesen Beitrag Link
juergenX
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 08.07.2019
Mitteilungen: 232
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.49, eingetragen 2020-03-03


2019-11-07 23:32 - pzktupel in Beitrag No. 4 schreibt:

Ich beobachtete, das 2^2n-1 durch 3 teilbar ist ein Schlüssel darstellen bei der MOD-Bestimmung mit einer 2er Potenz.


solche Beobachtung schau ich mir an und stelle fest $2^{2n}-1= (2^n-1)(2^n+1)$ und $2^n$ ist gerade , also ist einer der beiden Faktoren $\equiv 0 \mod 3$


Zum kopfrechenen-warmbleiben brech ich ab bei sichtbar hohen 2er Potenzen in der Folge.

$2^{2}-1 = 3,10,5,16$
$2^{4}-1 = 15,46,23,70,35,106,53,160$

wenn ich als Praemisse alle Collatzfolgen unterhalb der Startzahl verfolgt habe, kann ich auf aufhören bei Teilbarkeit durch 4.



...und dass die Folgeglieder davon mit 1,5,21,85,......ein Schlüssel darstellen bei der MOD-Bestimmung mit einer 2er Potenz.


versteh ich nicht ganz aber ich les das nochmal alles in Ruhe



  Profil  Quote  Link auf diesen Beitrag Link
pzktupel
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 02.09.2017
Mitteilungen: 1282
Aus: Thüringen
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.50, eingetragen 2020-03-03


V4

www.sendspace.com/file/p36y7r


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



  Profil  Quote  Link auf diesen Beitrag Link
blindmessenger hat die Antworten auf ihre/seine Frage gesehen.
Seite 2Gehe 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-2020 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP, that seems no longer to be maintained or supported. 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]