Die Mathe-Redaktion - 13.12.2019 14:30 - 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 792 Gäste und 13 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: in der letzten Woche
Dabei seit: 12.01.2018
Mitteilungen: 257
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
geroyx
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 01.11.2019
Mitteilungen: 68
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: 994
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: in der letzten Woche
Dabei seit: 12.01.2018
Mitteilungen: 257
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: 994
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
geroyx
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 01.11.2019
Mitteilungen: 68
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.45, eingetragen 2019-11-16 18:43


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?  smile



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


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?  smile

Natürlich nicht...

Aber wir sind dran...  wink


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



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


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}$

...

 smile


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



  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-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]