Alghorimus erklären

JavaForever

Mitglied
hallo community,

ich habe im internet einen alghoritmus zur bildung von anagrammen gefunden, allerdings in worte gefasst:

man nehme jeden buchstaben des wortes einmal als ersten buchstaben. von den restlichen buchstaben bildet man wieder alle anagramme und häng denersten buchstaben davor.
quelle:
Evergreens der Informatik

ich hab schon versucht, das in code umzuwandeln, es aber nie geschafft.
daher meine bitte: könnte mir jemand n stück code draus machen bzw mir erklären, wie das anzustellen ist?
 
M

Marcinek

Gast
Hallo,

in diesem Forum können wir dir Fragen beantworten, die du punktuell hast.

Sagen es geht nicht und macht mal, wird keiner machen.

Du kannst einen Preis nennen, der es dir Wert ist für so ein Algo und dann melden sich die Leute.

Gruß,

Martin
 
J

JohnJay

Gast
Zumal der Quelltext sogar auf der vom Fragesteller genannten Seite gut sichtbar verlinkt ist ...
 

JavaForever

Mitglied
was bitteschön bringt mir pascal?! den quellcode hab ich auch schon entdeckt. da ich aber kein pascal kann, habe ich mich in der hoffnung auf hilfe an dieses forum gewandt... was ja auch falsch war.
 
M

Marcinek

Gast
Also möchtest du eine fertige Lösung haben???

Oder ein Ansatz? - Mit bisschen Menschenverstand bekommt man das Pasacl nach Java portiert. Sind ja die selben Konstrukte.

Fertiges Programm nur gegen Geld. Grundlagen stehen auf der von dir geposteten Seite.

Gruß,
 

JavaForever

Mitglied
ich hab den alghoritmus an sich verstanden. nur das in code umsetzen ist das problem. da ich keine ahnung von pascal habe wirds mit dem portieren nichts. und ja mir reicht vllt ein ansatz. s***** kapitalismus!
 

Fu3L

Top Contributor
Marcinek hat schon recht^^ Ich habe noch nie Pascalcode gelesen und es ist trotzdem verständlich, wenn man weiß, dass Prozedur und Funktion quasie das gleiche sind und anscheinend das letzte begin in der angegebenen Datei den Einstiegspunkt des Programms darstellt^^ if .. then ... else sollte man als Java-Programmierer(-Anfänger) schon übersetzen können ;)

Nimms sportlich und siehs als Knobelaufgabe, die den Geist trainiert ;)

Edit: Landeis Einwand mit fiesen Strings in Pascal war mir natürlich nicht bewusst (siehe zweiter Satz^^).. Aber da hätte vllt auch noch die Erklärung in Worten geholfen^^
 
Zuletzt bearbeitet:

Landei

Top Contributor
Java:
import java.util.Scanner;

public class Anagramm {
    public static String restWort(String s, int i) {
        return s.substring(0, i) + s.substring(i+1, s.length());
    }

    public static void perm(String p, String s) {
        if (s.length() == 1) {
            System.out.println(p + s);
        } else {
            for (int i = 0; i < s.length(); i++) {
                perm(p + s.charAt(i), restWort(s, i));
            }
        }
    }

    public static void main(String... args) {
        String w = null;
        if (args.length == 0) {
            System.out.println("Wort: ");
            w = new Scanner(System.in).nextLine();
        } else {
            w = args[0];
        }
        perm("", w);
    }
}

Die 1-basierten Pascal-[c]Strings[/c] und die Unterschiede zwischen [c]Copy[/c] und [c]substring[/c] machen die Übersetzung tatsächlich etwas frickelig. Die Abbruchbedingung [c]s.length() == 1[/c] ist etwas seltsam, ich hätte es so geschrieben:

Java:
    public static void perm(String p, String s) {
        if (s.length() == 0) {
            System.out.println(p);
        } else {
            for (int i = 0; i < s.length(); i++) {
                perm(p + s.charAt(i), restWort(s, i));
            }
        }
    }
 
Zuletzt bearbeitet:
M

Marcinek

Gast
ich hab den alghoritmus an sich verstanden. nur das in code umsetzen ist das problem. da ich keine ahnung von pascal habe wirds mit dem portieren nichts. und ja mir reicht vllt ein ansatz. s***** kapitalismus!

Und was hat das mit Kapitalismus zu tun? - Tapezierst du meiene Wohnung umsonst? Weswegen lernst du Java? Willst du damit umsonst Software für andere Firmen erstellen?

Leistung gegen Gegenleistung.

Zu deinem Problem: Zu sagen Pascall kann ich nicht kenn ich nicht weiß nicht. Wieso sollte jemand in diesem Forum für dich Zeit investieren? - Du bist nicht mal selbst bereit dafür Zeit zu investieren. Das ist doch das eigentliche Problem hier.
 
Zuletzt bearbeitet von einem Moderator:

Landei

Top Contributor
Beruhigt euch doch bitte. Der TO hat doch geschrieben, dass er es zumindest versucht hat. Normale numerische Algorithmen sind kein Problem, aber Pascal-Strings sind etwas krank.
 

JavaForever

Mitglied
erstens was sind 1basierte strings? zweitens kann ich sehr wohl davon ausgehen, dass leute zeit investieren, da das der sinn dieses forums ist. zumal ich, wie "Landei" erwähnte mir sehr wohl nen kopp gemacht. und danke sehr "Landei" für die umfangreiche Hilfe, ich werde mich sofort näher damit beschäftigen.
 

Ähnliche Java Themen


Oben