Page 4 of 9

Re: Rechenaufgaben

Posted: 04.12.2018, 08:19
by giffi marauder
Cybermancer wrote: 03.12.2018, 19:20
giffi marauder wrote: 03.12.2018, 13:28 C=PV(b'teWurzel(a))=PV(a^(1/b))=PV(a)/b=(a1/b,a2/b...)
mit ci€Q
Mit den ci als unechte Brücke, könnte man
zwei Teilvektoren Cg und Cr wie folgt definieren
Cg=Vektor der ganzahligen Anteile der ci
Cr=Vektor der Zähler der Reste der ci (echte Brüche)
Dann wäre wohl a^(1/b) = N(Cg)*N(Cr)^(1/b) , oder?

Das ist meine Frage der Woche. :devil:
Das ist nicht korrekt, da Cr alle a_i mit ggT(a_i,b)=1, b!=1 in der Form a_i/b enthält, ist das, was deine letzte Gleichung zum Ausdruck bringt a_i/b^2.
Machen wir ein Beispiel:
(12)^(1/2) = (2*2*3)^(1/2)=2*(3)^(1/2)
Was du geschrieben hast, ergibt
(12)^(1/2)=N((2,0,0,...))*N((0,1/2,...))^(1/2)=2*(3)^(1/4)!=12
Nun, meine Überlegung war
Cg=Vektor der ganzahligen Anteile der ci (Bsp. 5/3 = 2+1/3) ->2)
Cr=Vektor der Zähler der Reste der ci (echte Brüche) (Bsp. 5/3 = 2+1/3) ->1)
das wär dann für
(12)^(1/2) (Quadratwurzel aus 12)
(4*3)^(1/2)=4^(1/2)*3^(1/2)=2*3^(1/2)
C=PV(b'teWurzel(a))=PV(a^(1/b))=PV(a)/b=(a1/b,a2/b...)
A=PV(12)=(2,1)
C=A/b=(2/2,1/2)=(1+0/2,0+1/2)
Cg=(1,0)
Cr=(0,1)
(12)^(1/2)=N(1,0)*N(0,1)^(1/2)
(12)^(1/2)=2*3^(1/2)

Aber stimmen muss es trotzdem nicht,
war nur sie eine Idee. :-)

Re: Rechenaufgaben

Posted: 04.12.2018, 16:26
by Cybermancer
Das ist aber nicht, was du geschrieben hast.

:devil: :devil: :devil:

Telepathie durch den Bildschirm funktioniert nicht so richtig bei mir.

Deine neue Version ist auch problematisch:

Sei a = 2^3*3^5 und b = 15, dann ist a^(1/15)= 2^(1/5)*3^(1/3).

Offensichtlich ist (2^1*3^1)^(1/15) != a^(1/15).

Re: Rechenaufgaben

Posted: 05.12.2018, 14:11
by giffi marauder
Cybermancer wrote: 04.12.2018, 16:26 Das ist aber nicht, was du geschrieben hast.

:devil: :devil: :devil:

Telepathie durch den Bildschirm funktioniert nicht so richtig bei mir.

Deine neue Version ist auch problematisch:

Sei a = 2^3*3^5 und b = 15, dann ist a^(1/15)= 2^(1/5)*3^(1/3).

Offensichtlich ist (2^1*3^1)^(1/15) != a^(1/15).
Ja sorry, ich schreib das ja nirgends ab, sondern saug mir live aus den Finger. :-D

Dass (2^1*3^1)^(1/15) != a^(1/15) liegt daran,
dass (1/3,1/5) nicht (1,1)^(1/15) ist,
und auch nicht (1,1)^(1/3)
und auch nicht (1,1)^(1/5).

Der Nenner b kann aus dem Gesamtvektor nur dann herausgezogen werden kann,
wenn alle ci den gleichen Nenner haben.
C=PV(b'teWurzel(a))=PV(a^(1/b))=PV(a)/b=(a1/b,a2/b...)

Kürzen ist ok, solange diese Bedingung nicht verletzt wird.
Also entwder nach dem Kürzen auf gemeinsamen Nenner bringe
oder alternativ den Cr je nach unterschiedliche Nenner noch mal aufteilen

Ich dachte das wär offensichtlich. :devil:

Test:
a=1944
b=15
1944^(1/15)=1,6567
A=(3,5)
A/b=(3/15,5/15)=(0+3/15,0+5/15)=(0,0)*(3,5)^(1/15) /*ohne kürzen*/
A/b=(3/15,5/15)=(0+3/15,0+5/15)=(0+1/5,0+1/3)=(0+3/15,0+5/15)=(0,0)*(3,5)^(1/15) /*mit kürzen und gemeinsamen Nenner KGV (3,5)=15 */
A/b=(3/15,5/15)=(0+1/5,0+1/3)=(0,0)*(1,0)^(1/5)*(0,1)^(1/3) /* mit kürzen und aufteilung des Cr nach unterschiedliche Nennern*/
=1*2^(1/5)*3^(1/3)=1,1487*1,4422=1,6567

Re: Rechenaufgaben

Posted: 05.12.2018, 19:57
by Cybermancer
Das ist wie gesagt nicht, was du eingangs geschrieben hast.

Schreib doch das nächste Mal "trivialerweise gilt .....", bei Dingen die du als mathematisch offensichtlich erachtest.

:devil:

Und das hier geht garnicht:
(0,0)*(3,5)^(1/15)
Ich gehe mal davon aus, dass das * die Skalarmultiplikation repräsentieren soll.

Dann gilt aber (a_1,a_2,....)*(b_1,b_2,..) = sum_i=1^infty a_ib_i und das ist für den Nullvektor identisch 0, wie man leicht sieht, wenn man o.B.d.A.
a_i=0 für alle i in N setzt.

Re: Rechenaufgaben

Posted: 06.12.2018, 09:29
by giffi marauder
Cybermancer wrote: 05.12.2018, 19:57 Das ist wie gesagt nicht, was du eingangs geschrieben hast.

Schreib doch das nächste Mal "trivialerweise gilt .....", bei Dingen die du als mathematisch offensichtlich erachtest.

:devil:

Und das hier geht garnicht:
(0,0)*(3,5)^(1/15)
Ich gehe mal davon aus, dass das * die Skalarmultiplikation repräsentieren soll.
Nein das ist bloß ein Tippfehler. :-D
C=PV(a*b)= PV(a)+PV(b) = N(C)=a*b
A/b=(3/15,5/15)=(0+3/15,0+5/15)=(0,0)+(3,5)^(1/15) /*ohne kürzen*/
A/b=(3/15,5/15)=(0+3/15,0+5/15)=(0+1/5,0+1/3)=(0+3/15,0+5/15)=(0,0)+(3,5)^(1/15) /*mit kürzen und gemeinsamen Nenner KGV (3,5)=15 */
A/b=(3/15,5/15)=(0+1/5,0+1/3)=(0,0)+(1,0)^(1/5)+(0,1)^(1/3) /* mit kürzen und aufteilung des Cr nach unterschiedliche Nennern*/

Re: Rechenaufgaben

Posted: 11.03.2019, 11:20
by Cybermancer
Leute, ich bräuchte mal eure Hilfe.

Also ich bin letztens auf folgendes kleines Rätsel gestoßen:

https://fivethirtyeight.com/features/ho ... r-numbers/

Kleines Zahlentheorie-Rätsel dachte ich mir, naja kann man sich mal kurz mit beschäftigen, dachte ich ........

Inzwischen bin ich so verzweifelt, dass ich eben in einem unbeobachten Moment ein Programm geschrieben habe, um das Problem zu brute-forcen (ich weiß, stillos. Ich schäme mich auch entsprechend :blush: )

Kann mich vielleicht jemand von euch an die Hand nehmen und zu einer analytischen Lösung des Problems führen oder zumindest die Zeitkomplexität des Problems reduzieren.

Hier mein Code zum Brute-Force-Ansatz:

Code: Select all

using System;

namespace Inventory_Number
{
    class Program
    {
        static void Main(string[] args)
        {
            for(int i = 10; i < 100000000; i++ )
            {
                if(quersumme(i))
                {
                   if(zaehle(i))
                    {
                        Console.WriteLine(i);
                    }
                }
            }
            Console.ReadKey();
        }

        private static bool zaehle(int i)
        {
            string i_str = i.ToString();
            for (int j = 0; j < i_str.Length; j++)
            {
                if(j % 2 == 0)
                {
                   
                    int count = 0;
                    for(int k = 0; k < i_str.Length; k++)
                    {
                        if (i_str[k] == i_str[j + 1]) { count++; }
                    }
                    if(count != Convert.ToInt32(i_str[j].ToString()))
                    {
                        return false;
                    }
                    count = 0;
                }
            }
            return true;
        }

        private static bool quersumme(int i)
        {
            string i_str = i.ToString();
            int quersumme = 0;
            if (i_str.Length % 2 == 0 )
            {
                for (int j = 0; j < i_str.Length; j++)
                {

                    if (j % 2 == 0)
                    {
                        if (j < i_str.Length && j != 0)
                        {
                            if(Convert.ToInt32(i_str[j + 1]) <= Convert.ToInt32(i_str[j - 1])) { return false; }
                        }
                        if (i_str[j].ToString() == "0") { return false; }
                        quersumme = quersumme + Convert.ToInt32(i_str[j].ToString());
                    }
                }
            }
            if (i_str.Length == quersumme)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }
}

Re: Rechenaufgaben

Posted: 11.03.2019, 13:57
by giffi marauder
Cybermancer wrote: 11.03.2019, 11:20 Leute, ich bräuchte mal eure Hilfe.

Also ich bin letztens auf folgendes kleines Rätsel gestoßen:

https://fivethirtyeight.com/features/ho ... r-numbers/

Kleines Zahlentheorie-Rätsel dachte ich mir, naja kann man sich mal kurz mit beschäftigen, dachte ich ........

Inzwischen bin ich so verzweifelt, dass ich eben in einem unbeobachten Moment ein Programm geschrieben habe, um das Problem zu brute-forcen (ich weiß, stillos. Ich schäme mich auch entsprechend :blush: )

Kann mich vielleicht jemand von euch an die Hand nehmen und zu einer analytischen Lösung des Problems führen oder zumindest die Zeitkomplexität des Problems reduzieren.
Ich hab mir jetzt den Code nicht angesehen.
Aber folgende Regeln fallen sofort ins Auge:
- Die 0 kommt nicht vor
- Die Form ist t1n1t2n... (ti =tully/Anzahl, ni = number/Ziffer)
- Die Länge der Zahlen ist teilbar durch 2
- Maximale Länge der Zahl = 18
- Die Summe der ti ist gleich der Länge der Zahl
- Die möglichen ti beschränken sich auf die Menge der möglichen Summanden der Länge der Zahl (bsp. Länge 4 -> T1=(1,3) T2=(2,2)
- Die zu den ti gehörenden ni N(ti) sind genau Häufigkeit der ti +1 (mit Ausnahme von "22")
- Ein ni das nicht den möglichen Summanden entspricht ist nur einfach vorhanden, da es nicht als ti verwendet wird kann.
- Deren Anahl ist Länge/2 - Anzahl der verschiedenen ti.
- Vermutung: Ein "gültiger" Anfang kann nicht gültig ergänzt werden ("22" ist gültig, "22...." ist immer ungültig)

Länge 2:
T=(2) -> "22" (Sonderfall)

Länge 4:
T=(1,3) -> N(1)=2 (nicht in T.)
T=(2,2)-> N(2)=3 (nicht in T.)

Länge 6:
T=(1,1,4) -> N(1)=3 (nicht in T)
T=(1,2,3)-> N(1)=2, N(2)=2 (nicht (mehr) in T)
T=(2,2,2)-> N(2)=4 (nicht in T)

Länge 8:
T=(1,1,1,5) -> N(1)=4 (nicht in T)
T=(1,1,2,4) -> N(1)=3 (nicht in T)
T=(1,1,3,3) -> N(1)=3, N(3)=3
mögiche Folge: 31 33 1x 1y mit (x,y)=(4,5),(4,6),(4,7),(4,8),(4,9),(5,6),(5,7)....
mögiche Folge: 31 12 33 1y mit x=2, y=4,5,6,7,8,9
T=(1,2,2,3)-> N(1)=2, N(2)=3, N(3)=2
mögliche Folge: 21 32 23 1x mit x=4,5,6,7,8,9
T=(2,2,2,2)-> N(2)=5 (nicht in T)

Länge 10:
T=(1,1,1,1,6)-> N(1)=5 (nicht in T)
T=(1,1,1,2,5)-> N(1)=4 (nicht in T)
T=(1,1,1,3,4)-> N(1)=4, N(3)=2 (nicht in T)
T=(1,1,2,2,4)-> N(1)=3 (nicht in T)
T=(1,1,2,3,3)-> N(1)=3, N(2)=2, N(3)=3
mögliche Folge: 31 22 33 1x 1y mit (x,y)=(4,5),(4,6),(4,7),(4,8),(4,9),(5,6),(5,7)....
T=(1,2,2,2,3)-> N(1)=2, N(2)=4 (nicht in T)
T=(2,2,2,2,2)-> N(2)=5, (nicht in T)

Länge 12:
T=(1,1,1,1,1,7)-> N(1)=6 (nicht in T)
T=(1,1,1,1,2,6)-> N(1)=5 (nicht in T)
T=(1,1,1,1,3,5)-> N(1)=5, N(3)=2 (nicht in T)
T=(1,1,1,1,4,4)-> N(1)=5, (nicht in T)
T=(1,1,1,2,2,5)-> N(1)=4,(nicht in T)
T=(1,1,1,2,3,4)-> N(1)=4,N(2)=2,N(3)=2(nicht mehr in T)
T=(1,1,2,2,2,4)-> N(1)=3 (nicht in T)
T=(1,1,2,2,3,3)-> N(1)=3, N(2)=3, N(3)=3 (nicht mehr in T)
T=(1,2,2,2,2,3)-> N(1)=2, N(2)=5 (nicht in T)
T=(2,2,2,2,2,2)-> N(2)=7

etc... für die Längen 14,16,18 :devil:

Re: Rechenaufgaben

Posted: 11.03.2019, 15:13
by Cybermancer
giffi marauder wrote: 11.03.2019, 13:57 Ich hab mir jetzt den Code nicht angesehen.
Schade.
Aber folgende Regeln fallen sofort ins Auge:
- Die 0 kommt nicht vor
Widerspruch! 10213223 ist eine gültige Lösung. Die t_i können nicht 0 sein, die n_i sehr wohl.
- Die Form ist t1n1t2n... (ti =tully/Anzahl, ni = number/Ziffer)
Ja.
- Die Länge der Zahlen ist teilbar durch 2
Implementiert.
- Maximale Länge der Zahl = 18
Sehe ich genau so, aber hier liegt das Problem. Denn Prozess den ich gestartet habe, als ich das Prog fertiggeschrieben habe, der läuft immer noch.
Ich habe obiges Programm erstmal von long auf int konvertiert, damit man was sieht, wenn das einer mal ausprobiert. Wer macht hier eigentlich hin und wieder mal was in C#?

- Die Summe der ti ist gleich der Länge der Zahl
Implementiert.
- Die möglichen ti beschränken sich auf die Menge der möglichen Summanden der Länge der Zahl (bsp. Länge 4 -> T1=(1,3) T2=(2,2)
Erscheint mir symmetrische zu sein, mit T_1 = (1,3) ist auch T_3 = (3,1) mögliche Aufteilung.

- Die zu den ti gehörenden ni N(ti) sind genau Häufigkeit der ti +1 (mit Ausnahme von "22")
Daran habe ich nicht gedacht.
- Ein ni das nicht den möglichen Summanden entspricht ist nur einfach vorhanden, da es nicht als ti verwendet wird kann.

Den möglichen t_i in sum_i t_i = length? Daran habe ich auch nicht gedacht.
- Deren Anahl ist Länge/2 - Anzahl der verschiedenen ti.
???
- Vermutung: Ein "gültiger" Anfang kann nicht gültig ergänzt werden ("22" ist gültig, "22...." ist immer ungültig)

Länge 2:
T=(2) -> "22" (Sonderfall)

Länge 4:
T=(1,3) -> N(1)=2 (nicht in T.)
T=(2,2)-> N(2)=3 (nicht in T.)

Länge 6:
T=(1,1,4) -> N(1)=3 (nicht in T)
T=(1,2,3)-> N(1)=2, N(2)=2 (nicht (mehr) in T)
T=(2,2,2)-> N(2)=4 (nicht in T)

Länge 8:
T=(1,1,1,5) -> N(1)=4 (nicht in T)
T=(1,1,2,4) -> N(1)=3 (nicht in T)
T=(1,1,3,3) -> N(1)=3, N(3)=3
mögiche Folge: 31 33 1x 1y mit (x,y)=(4,5),(4,6),(4,7),(4,8),(4,9),(5,6),(5,7)....
mögiche Folge: 31 12 33 1y mit x=2, y=4,5,6,7,8,9
T=(1,2,2,3)-> N(1)=2, N(2)=3, N(3)=2
mögliche Folge: 21 32 23 1x mit x=4,5,6,7,8,9
T=(2,2,2,2)-> N(2)=5 (nicht in T)

Länge 10:
T=(1,1,1,1,6)-> N(1)=5 (nicht in T)
T=(1,1,1,2,5)-> N(1)=4 (nicht in T)
T=(1,1,1,3,4)-> N(1)=4, N(3)=2 (nicht in T)
T=(1,1,2,2,4)-> N(1)=3 (nicht in T)
T=(1,1,2,3,3)-> N(1)=3, N(2)=2, N(3)=3
mögliche Folge: 31 22 33 1x 1y mit (x,y)=(4,5),(4,6),(4,7),(4,8),(4,9),(5,6),(5,7)....
T=(1,2,2,2,3)-> N(1)=2, N(2)=4 (nicht in T)
T=(2,2,2,2,2)-> N(2)=5, (nicht in T)

Länge 12:
T=(1,1,1,1,1,7)-> N(1)=6 (nicht in T)
T=(1,1,1,1,2,6)-> N(1)=5 (nicht in T)
T=(1,1,1,1,3,5)-> N(1)=5, N(3)=2 (nicht in T)
T=(1,1,1,1,4,4)-> N(1)=5, (nicht in T)
T=(1,1,1,2,2,5)-> N(1)=4,(nicht in T)
T=(1,1,1,2,3,4)-> N(1)=4,N(2)=2,N(3)=2(nicht mehr in T)
T=(1,1,2,2,2,4)-> N(1)=3 (nicht in T)
T=(1,1,2,2,3,3)-> N(1)=3, N(2)=3, N(3)=3 (nicht mehr in T)
T=(1,2,2,2,2,3)-> N(1)=2, N(2)=5 (nicht in T)
T=(2,2,2,2,2,2)-> N(2)=7

etc... für die Längen 14,16,18 :devil:

Re: Rechenaufgaben

Posted: 11.03.2019, 15:56
by giffi marauder
Cybermancer wrote: 11.03.2019, 15:13
giffi marauder wrote: 11.03.2019, 13:57 Ich hab mir jetzt den Code nicht angesehen.
Schade.
Aber folgende Regeln fallen sofort ins Auge:
- Die 0 kommt nicht vor
Widerspruch! 10213223 ist eine gültige Lösung. Die t_i können nicht 0 sein, die n_i sehr wohl.
dann ab damit in den Topf der möglichen Ni.
Dann werdens unten mehr Lösungen.
- Die Form ist t1n1t2n... (ti =tully/Anzahl, ni = number/Ziffer)
Ja.
- Die Länge der Zahlen ist teilbar durch 2
Implementiert.
- Maximale Länge der Zahl = 18
Sehe ich genau so, aber hier liegt das Problem. Denn Prozess den ich gestartet habe, als ich das Prog fertiggeschrieben habe, der läuft immer noch.
Ich habe obiges Programm erstmal von long auf int konvertiert, damit man was sieht, wenn das einer mal ausprobiert. Wer macht hier eigentlich hin und wieder mal was in C#?

- Die Summe der ti ist gleich der Länge der Zahl
Implementiert.
- Die möglichen ti beschränken sich auf die Menge der möglichen Summanden der Länge der Zahl (bsp. Länge 4 -> T1=(1,3) T2=(2,2)
Erscheint mir symmetrische zu sein, mit T_1 = (1,3) ist auch T_3 = (3,1) mögliche Aufteilung.
Ja schon, aber da T eine Menge ist, gibts da keine "innere" Reihenfolge.
(1,3) und (3,1) führen zur selben Lösungsmenge, da die Reihenfolge der Enthame/Verwendung durch die aufsteigenden ni in der Zahl selber,
bestimmt ist.
Das ist auch der Grund für die radikale Einschränkung der Möglichkeiten unten.
Bis auf T=(2) (für die Lösung "22") enthält die Menge T immer mindestens eine 1,
da alle möglichen (sortieren) T mit maximal (2,2,2,2,...,2) enden, die als Summe (2 x l/2) noch die Länge l der Zahl ergeben.
Jedes weitere T hätte mindestens n-1 2'er und eine Zahl > 2, wäre als in Summe größer als l.

- Die zu den ti gehörenden ni N(ti) sind genau Häufigkeit der ti +1 (mit Ausnahme von "22")
Daran habe ich nicht gedacht.
- Ein ni das nicht den möglichen Summanden entspricht ist nur einfach vorhanden, da es nicht als ti verwendet wird kann.

Den möglichen t_i in sum_i t_i = length? Daran habe ich auch nicht gedacht.
- Deren Anahl ist Länge/2 - Anzahl der verschiedenen ti.
???
Vielleicht blöd ausgedrückt.
Wenn in T n verschiedene Zähler sind (z.B. 3 (1,2,3) von 5 in T(1,2,2,2,3) )
sind 3 der ni damit bestimmt.
Da die ni aber l/2 verschiedene Ziffern sein müssen (in diesem Fall 5) , müssen die restlichen 2 Zahlen welche sein, die in T nicht vorkommen.
Die Häufigkeit dieser ist dann 1.
Damit gilt umgekehrt natürlich auch, dass für jede 1 in T ein ni nicht aus T benötigt wird.
Somit also noch ein kritierium, das man nutzen kann:
Anzahl der verschiedenen ti + Anzahl der 1'en = Länge/2
Bspw.:
T=(1,1,1,5) hat 2 verschieden ti -> 2 ni nicht aus T notwendig -> eine 1 zuviel.
T=(1,2,2,2,3) hat nur 3 verschiedene ti -> 2 ni nicht aus T notwendig -> eine 1 zuwenig.
- Vermutung: Ein "gültiger" Anfang kann nicht gültig ergänzt werden ("22" ist gültig, "22...." ist immer ungültig)

Länge 2:
T=(2) -> "22" (Sonderfall)

Länge 4:
T=(1,3) -> N(1)=2 (nicht in T.)
T=(2,2)-> N(2)=3 (nicht in T.)

Länge 6:
T=(1,1,4) -> N(1)=3 (nicht in T)
T=(1,2,3)-> N(1)=2, N(2)=2 (nicht (mehr) in T)
T=(2,2,2)-> N(2)=4 (nicht in T)

Länge 8:
T=(1,1,1,5) -> N(1)=4 (nicht in T)
T=(1,1,2,4) -> N(1)=3 (nicht in T)
T=(1,1,3,3) -> N(1)=3, N(3)=3
mögiche Folge: 31 33 1x 1y mit (x,y)=(4,5),(4,6),(4,7),(4,8),(4,9),(5,6),(5,7)....
mögiche Folge: 31 12 33 1y mit x=2, y=4,5,6,7,8,9
mit der 0 wärens dann auch noch:
mögiche Folge: 10 31 33 1y mit y=4,5,6,7,8,9
mögiche Folge: 10 31 12 33 mit x=0, y=2
T=(1,2,2,3)-> N(1)=2, N(2)=3, N(3)=2
mögliche Folge: 21 32 23 1x mit x=4,5,6,7,8,9
T=(2,2,2,2)-> N(2)=5 (nicht in T)

Länge 10:
T=(1,1,1,1,6)-> N(1)=5 (nicht in T)
T=(1,1,1,2,5)-> N(1)=4 (nicht in T)
T=(1,1,1,3,4)-> N(1)=4, N(3)=2 (nicht in T)
T=(1,1,2,2,4)-> N(1)=3 (nicht in T)
T=(1,1,2,3,3)-> N(1)=3, N(2)=2, N(3)=3
mögliche Folge: 31 22 33 1x 1y mit (x,y)=(4,5),(4,6),(4,7),(4,8),(4,9),(5,6),(5,7)....
und auch hier mit der 0 zusätzlich
mögliche Folge: 10 31 22 33 1y mit x=0, y=4,5,6,7,8,9
T=(1,2,2,2,3)-> N(1)=2, N(2)=4 (nicht in T)
T=(2,2,2,2,2)-> N(2)=5, (nicht in T)

Länge 12:
T=(1,1,1,1,1,7)-> N(1)=6 (nicht in T)
T=(1,1,1,1,2,6)-> N(1)=5 (nicht in T)
T=(1,1,1,1,3,5)-> N(1)=5, N(3)=2 (nicht in T)
T=(1,1,1,1,4,4)-> N(1)=5, (nicht in T)
T=(1,1,1,2,2,5)-> N(1)=4,(nicht in T)
T=(1,1,1,2,3,4)-> N(1)=4,N(2)=2,N(3)=2(nicht mehr in T)
T=(1,1,2,2,2,4)-> N(1)=3 (nicht in T)
T=(1,1,2,2,3,3)-> N(1)=3, N(2)=3, N(3)=3 (nicht mehr in T)
T=(1,2,2,2,2,3)-> N(1)=2, N(2)=5 (nicht in T)
T=(2,2,2,2,2,2)-> N(2)=7

etc... für die Längen 14,16,18 :devil:

Re: Rechenaufgaben

Posted: 11.03.2019, 16:49
by giffi marauder
So und jetzt ohne Zitat. :-)
Ich würde ein Programm mit Mengenoperationen so designen.

Code: Select all

N_0={0,1,2....9}
Sonderfall "22";
von i=2 bis 9 (also ab l=4)
{
   l=i*2;
   /* Permutionsanfang */
   T={i-1 mal die "1" und "i+1"} /* z.B. {1,3}, {1,1,1,5} ...
   { /* Schleife über die möglichen T */
      Diverse Tests auf T
      Falls mögliche Lösung
      {
        Fixen Lösungsteil bestimmen (ni=ti) falls nicht oben schon als Folge der Test erhalten
        Falls kein 1'er in T /*genau 1 Lösung*/
        {
           Lösung sortieren und ausgeben.
        }
        else /*vaiable Lösungsteile*/
        {
          N=Diffmenge (N_0,T) /* also alle "freien" Zahlen von 0 bis 9 ohne die ti aus T
          Reursiv je nach Anzahl der 1'en in T die Teil-Lösung um die möglichen (sortierten) Teilmengen aus N ergänzen 
          sortieren und ausgeben.
        }
      } 
     else
     {
       keine Löung.
     }
     T=Nachfolger (T)  /* {1,1,1,5} -> {1,1,2,4} -> {1,1,3,3} ....
   } solange T<>{2,2,2....2}
} /* nächstes i*/

Re: Rechenaufgaben

Posted: 12.03.2019, 09:27
by Cybermancer
Sag mal giffi, hast dir das alles selber überlegt, oder kanntest du das Problem schon oder hattest Hilfe?

Re: Rechenaufgaben

Posted: 13.03.2019, 11:32
by giffi marauder
Cybermancer wrote: 12.03.2019, 09:27 Sag mal giffi, hast dir das alles selber überlegt, oder kanntest du das Problem schon oder hattest Hilfe?
Natülich selber überlegt,
wo bleibt sonst der Spass und das Training fürs Gehirn. ;)

Deshalb auch kein Anspruch dass das alles irgend einen Sinn macht. :-))

Ach ja, mit der 0 geht Länge natürlich bis 20,
mit der üblen eigenschaft, dass dann auch ti > 9 theoretisch möglich wären,
(1,1,1,1,1,1,1,1,10) und (1,1,1,1,1,1,1,1,1,11), (1,1,1,1,1,1,1,1,2,10) die aber eh keine gültige Lösung haben.
Der kleinste StartmengeT für l=18 ist also (1,1,1,1,1,1,1,2,9)
Der kleinste Startmenge T für l=20 ist also (1,1,1,1,1,1,1,1,3,9)

Die Testerei wäre ürigend ganz einfach und liefert die Lösung gleich richtig sortiert mit:
Mit gegebener Menge T und L(ösung) als Array von 0 bis 9 wäre eine Möglichkeit:

Code: Select all

T2=T
ti=1
while ti <10
{
    z= Anzahl des ti in T
    wenn z>0
    {
      z=z+1 /* Zahl ist z mal ein Zähler und 1x eine Ziffer)
      falls z nicht in T2
      {
        keine Lösung, exit while
      }
      L[ti]=z;
      lösche z aus T2
    } /* z>0*/      
    ti = ti +1;
    if (ti=10) /* alle ti von 1 bis 9 fehlerfrei in L eingetragen)
    {
      L hat nun die Form (0,n1,0,0,n4,n5,0....) etc...
      also bei allen Zahlen, die als ti vorkommen schon die richtigen ni,
      und an sonsten 0,
      n1-1 ist gleichzeitig die Anzahl der "1", die es noch zu verteilen gibt,
      die 0 in L die möglichen ni, die dafür in Frage kommen.
      is n1 = 0 -> nur eine Lösung (L) /*gibts aber eh nicht, da n(1) mind 2 sind muss*/
      ansonsten
      {
        die (n1-1) 1'er auf die 0'er in L verteilen
        und alle Möglichkeiten ausgeben.
        als für Bspw. L=(0,n1,0,0,n4,n5,0....) und n1 = 3 (2 freie 1'er)
        L1=(1,n1,1,0,n4,n5,0....) =10 (n1)1 12 (n4)4 (n5)5 ...
        L2=(1,n1,0,1,n4,n5,0....) =10 (n1)1 13 (n4)4 (n5)5 ...
        L3=(1,n1,0,0,n4,n5,1....) =10 (n1)1 (n4)4 (n5)5 16...
        ...
        Lx=(0,n1,1,1,n4,n5,0....) =(n1)1 12 13 (n4)4 (n5)5 ...
        Ly=(0,n1,1,0,n4,n5,1....) =(n1)1 12 (n4)4 (n5)5 16...
        ...
      } /* freie 1'en*/
    } /*ti=10*/
} /*while*/
Aber die eigentliche Frage nach einer analytischen Lösung liefert das auch noch nicht.
Da die Anzahl der Möglichkeiten allerdings eher klein ist,
könnte deren Analyse den Weg aufzeigen.

Re: Rechenaufgaben

Posted: 14.03.2019, 10:21
by giffi marauder
So nun eine nicht allzu schwere Rechenaufgabe oder vielmehr Denkaufgabe,
weil die Rechnung dann doch eher einfach ist:

Es waren einmal 4 Bauern (A,B,C,D)
A und B bewirtschaften 2 gleichgroße aneinander angrenzende Felder unter
den gleichen klimatischen Voraussetzungen.
Für die Felder von C und D (auf der anderen Seiten des Berges)
trifft dies ebenfalls zu.
Alle 4 Bauern pflanzen die gesamte Ernte des Vorjahres wieder an
und je nach Jahresverlauf ernten sie dadurch das 1-,das 2-, das 3- oder das 4-fache.
Also aus 1 Korn wird entweder 1 oder 2 oder 3 oder 4 Körner.

Das Klima auf den beisen Seiten des Berges ist unterschiedlich
Die Klimafolge für A und B ist 2,3,1,1,3,1,3,2,1,4
Die Klimafolge für C und D ist 1,3,1,3,1,1,4,1,3,1

Alle 4 Bauern starten mit 10 Körnern.
Bauer A hat dann nach 10 Jahren 4.320 Körner (10,20,60,60....
Bauer D hat dann nach 10 Jahren 1.080 Körner (10,30,30,90....
Bauer B hat unter gleichen Voraussetzungen wie A aber 7.560 Körner.
Bauer C hat unter gleichen Voraussetzungen wie D aber 1.890 Körner.
Wie ist das möglich? :gruebel:

(c)Frei nach "Gier" von Marc Ellsberg

Re: Rechenaufgaben

Posted: 14.03.2019, 11:33
by Cybermancer
Da mit den gleichen Startwerten und dem gleichen Bildungsgesetz sich identische Werte ergeben müssten, schliesse ich auf eine bislang unspezifizierte Verlustfunktion, die für alle Bauern verschieden ist.

Ich hänge aber noch an der vorherigen Aufgabe, da ich bislang wenig Zeit hatte mich ihrer zu widmen, aus diesem Grund habe ich deinen Pseudocode auch noch nicht gelesen, da ich gerne eine eigene Lösung präsentieren würde.

Ich denke am Wochenende habe ich endlich etwas Muse.

Re: Rechenaufgaben

Posted: 14.03.2019, 11:41
by Kapaun
Cybermancer wrote: 14.03.2019, 11:33 Da mit den gleichen Startwerten und dem gleichen Bildungsgesetz sich identische Werte ergeben müssten, schliesse ich auf eine bislang unspezifizierte Verlustfunktion, die für alle Bauern verschieden ist.

Ja. Mäuse. Hunger. Entnahmen aus der Paralleldimension ...