Informatik – die neusten Beiträge

Welches Betriebssystem für Python (Bitte Beschreibung lesen)?

Hallo an alle Informatiker,

Ich bin noch ziemlicher Neueinsteiger auf dem Gebiet, kann also so gut wie gar nichts. Habe mich aber für Python als erste Programmiersprache entschieden. Nun stellt sich mir natürlich die Frage welches Betriebssystem ich nutzen werde. Da sich die Frage an Informatiker richtet werden natürlich erstmal alle laut Linux schreien und das wäre auch meine Präferenz. Allerdings bin ich bis zum jetzigen Zeitpunkt noch ein absoluter Windows-Nutzer. Daher stellen sich mir jetzt viele unterschiedliche Teilfragen.

  1. Würdet ihr tatsächlich davon abraten Python in Verbindung mit Windows zu nutzen?
  2. Kann man als Laie ohne nennenswerte Informatikkenntnisse überhaupt so eine Linux-Installation meistern?
  3. Gibt es Linuxversionen die weniger oder mehr für Python geeignet sind (z.B. gibt es ja Kali-Linux oder Linux-Mint). Gibt es da relevante Unterschiede?
  4. Habe bisher nur einen Rechner mit Windows den ich für die Uni brauche. Würdet ihr empfehlen Windows und Linux auf einem Rechner zu installieren? Oder sollte ich mir einen separaten Rechner nur für Linux zulegen? (Ich hatte beides schonmal auf einem gemeinsamen Rechner. Habe damit aber schlechte Erfahrungen gemacht weil bei der Linux-Nutzung alles dauernd eingefroren ist.)
  5. Falls ihr getrennte Rechner empfehlt. Was müsste ich beim Kauf eines neuen Computers/Laptops beachten? Geht einfach ein ganz normales ThinkPad? Oder gibt es da Kriterien die für Linux wichtig sind?

Vielen Dank schonmal im Voraus!

Computer, Betriebssystem, Technik, Informatik, Technologie

Pivotwahl bei Quicksort und Quickselect?

Guten Abend,

ich bräuchte mal kurz Hilfe bei folgenden Aufgaben, bitte. Es geht mir darum, dass ich einfach nicht versteh', was zu tun ist. Wir hatten in der Vorlesung den Quicksort-Algorithmus. Ich weiß, dass bei Quicksort das zu sortierende Array in immer kleiner Teilarrays eingeteilt wird, wobei das größere Array zuerst auf den Stack gelegt wird. Das Pivotelement ist entweder das linke oder das rechte und man setzt dann links und rechts einen Pointer am entsprechenden Teilarray. Ist das erste Element des zu sortierenden Teilarrays, welches größer als das Pivotelement ist, gefunden, und es findet sich vom rechten Pointer aus das erste Element, welches kleiner als das Pivotelement ist, so werden diese vertauscht. Bei Überkreuzungen tausche jenes Element auf dass der linke Pointer zeigt mit dem Pivotelement. So hatten wir's zumindest in der Vorlesung (Partitionswahl). Zu den Aufgaben

Aufgabe 1

Ein wichtiger Faktor für die Laufzeit von Quicksort und Quickselect (das Auswahlverfahren des k-kleinsten Elements analog zu Quicksort) ist die Wahl des Pivotelements. Das Pivotelement sollte die zu sortierende Folge in zwei möglichst gleich große Teilfolgen aufspalten.Gegeben sei eine unsortierte Folge mit n paarweise verschiedenen Elementen. Weiterhin sei r(x) die Position des Elements x in der sortierten Folge. Eine mögliche Strategie für die Pivotwahl ist:Wähle uniform zufällig 7 Elemente aus der Eingabefolge und gib das viertkleinste als Pivotelement aus. Dabei können Elemente in der Auswahl mehrmals vorkommen (Ziehen mit Zurücklegen)

.a) Berechne die Wahrscheinlichkeit für das Ereignis: n/4 < r(Pivot) ≤ 3n/4.

b) Nach wie vielen unabhängigen Wiederholungen der Pivotwahl ist zu erwarten, dass der Rang des Pivotelements das erste Mal außerhalb des Intervalls aus Aufgabenteil a) liegt? Hinweis: Du darfst annehmen, dass n= 4·kfür ein k∈N.

Aufgabe 2

Konstruiere eine Folge der Länge7, so dass Quickselect bei Verwendung der Pivotfunktionpivot(links, rechts) =⌈(links+rechts)/2⌉ auf der Suche nach dem viertgrößten Schlüssel die Problemgröße stets nur um 1verringert. Der Algorithmus soll insgesamt also sieben Schritte benötigen, bis er terminiert. Wende Quickselect auf Ihre Folge an, um die Korrektheit zu zeigen

Ansatz Ich verstehe hier nicht, wie n/4 gemeint ist. Wir hatten in der Vorlesung immer das Pivotelement ganz links oder ganz rechts. Jetzt steht hier "Pivot(links,rechts) = [(links+rechts)/2]. Greift man sich also da Element in der Mitte? Das ist bei einer Folge der Länge 7 doch nicht möglich, oder? WIe gehe ich allgemein vor um eine solche Folge zu finden.

LG

Jensek81

Computer, Schule, Mathematik, programmieren, rechnen, Array, Informatik, Theoretische Informatik, Algorithmus, stack, Binomialverteilung, Quicksort, Sortieralgorithmus, Algorithmen und Datenstrukturen

Minecraft 3D Block modden?

Hey Leute,

ich suche momentan nach einer Methode bzw. Code bzw. Tutorial wie man denn einen 3D Block in Minecraft erstellt, da ich gerade an meinem eigenem Mod rumbastle.
Der Name 3D Block ist etwas unpassend gewählt, da jeder Block dreidimensional (also 3D) ist.
Ich suche jedoch nach nicht nur Blöcken mit Overlays, z.B. rock sondern nach der Methode, Blöcke dreidimensional zu bearbeiten, d.h., dass sie z.B wie der cauldron innen drin leer sind und einen andere bzw. "innere" Textur haben.

Ich habe mir schon verschiedene Vorlagen angeschaut, wie z.B. die .json des cauldrons unter assets\minecraft\models\block\

Den Code habe ich auch gescreenshottet und hier nach einem bisschen Schneiden als Bilder eingefügt.

Meine Vermutung lautet, dass from und to im dreidimensionalen Raum die Parameter von 0 0 0 bis 16 16 16 Pixel (?) angeben.
Also x y z Koordinaten.
Mit diesen wird angegeben, von wo bis wo jetzt faces deklariert (?) werden.
faces gibt jetzt irgendwie die Textur drinnen an, aber dies war nicht klar herauszufiltern und somit auch überhaupt nicht nützlich (oder nutzbar?) um einen eigenen Block zu erstellen, der verschiedene Eigenschaften wie quaderförmige Löcher oder ähnliches besitzt.

Ich würde mich deswegen sehr freuen, wenn mir einer von euch ein gutes Tutorial dazu verlinken könnte (hab nach langer Recherche keine richtigen gefunden :c ), also auch wirklich Tutorials die hilfreich sind und keine zwei minütige grobe Recherche.
Natürlich wäre ich auch über eine gute und hilfreiche Erklärung glücklich.

Bitte schreibt vernünftige und richtige Antworten und keinen Kommentar Quatsch.

Danke für das Lesen und die Hilfe im voraus,
LG Xydru

PS:

Ich programmiere natürlich mit Java :)
Das einzige wofür ich Hilfe brauche ist diese (und vielleicht auch andere, weiß es ja noch nicht) .json Datei und möglicherweise den Code der ja vielleicht anders ist wenn man GameRegistry... und Minecraft.getMinecraft()... nutzt.

Bild zum Beitrag
Computer, IT, Java, Minecraft, Informatik, Minecraft Mods

Wieso bekommt die Variabel einen anderen Wert?

Wenn ich den C# Code ausführe wird der Wert der Variabel tief auf eingabe+48 gesetzt.

Wie kann ich das verhindern?

private static void tri()
        {
            Console.Write("Bitte geben sie die breite an: ");
            int tief = Console.Read();
            Console.WriteLine(tief);
            int tiefe = tief + 2;
            Console.WriteLine(tiefe +" "+ tief);
            StringBuilder dreieck = new StringBuilder(string.Empty);
            char[] form = new char[tiefe];
            for (int i = 0; i < tiefe; i++)
            {
                form[i] = ' ';
            }
            for (int it = 0; it <= tiefe/2-1; it++)
            {
                    try
                    {
                        form[(tiefe / 2 + 1) - it] = '#';
                        form[(tiefe / 2 + 1) + it] = '#';
                    }
                    catch
                    {
                        //abbrechen
                    }
                  dreieck.AppendFormat(new String(form)+ "\n");
              }
              Console.WriteLine(dreieck);
        }
Bild zum Beitrag
Programm, programmieren, C Sharp, Informatik, Visual Studio

Gibt es einen effizienten Algorithmus um alle Wortkombination bestimmter Buchstaben zu erstellen?

Ich versuch die Frage mal ein bisschen präziser zu stellen: Man gibt einem Programm n Buchstaben, das Programm gibt jetzt alle möglichen Wortkombinationen aus diesen Buchstaben zurück, sodass für zb 6 Buchstaben 6! = 720 Wörter ausgegeben werden.

Ich habe mir bereits etwas dazu überlegt, aber der Algorithmus ist extrem ineffizient: Ich lasse alle Wörter der Länge von a bis z durch, also bei n=6 zb. aaaaaa, aaaaab, aaaaac, ... usw. und überprüfe dabei den Wert und die Anzahl eines Charakters, wenn Wert und Anzahl mit meinen eingegeben Buchstaben übereinstimmt wird das Wort zurückgegeben, ansonsten wird das nächste Wort betrachtet und dasselbe noch mal überprüft. Da nur n! Wörter gefunden werden können bricht das Programm dann ab wenn n! Wörter gefunden wurden (möglicherweise auch früher, wenn sich unter den eingegeben Buchstaben Dopplungen befinden). Das Problem ist, dass dieser Algorithmus extrem ineffizient ist, da er bis zu 26^n - n! falsche Wörter durchgehen kann bis er fertig wird, die 26 Potenz ist natürlich derbe, deshalb wollte ich fragen, ob es vielleicht einen clevereren Algorithmus gibt der das besser machen kann.

Vielleicht sowas in der Form, dass bestimmte Elemente an bestimmten Indizes auf eine bestimmte Art und Weise mit einem anderen Element vertauscht werden, sodass in jedem Schritt ein neues gesuchtes Wort entsteht und somit nur n! Rechenschritte benötigt werden, gibts sowas?

Mathematik, rechnen, Informatik, Algorithmus

Meistgelesene Beiträge zum Thema Informatik