Sam I Am

  • 3
  • Gesperrt
Ich weiß nicht, warum Dr. Seuss‘ sadistische Figur Sam-I-Am andere dazu bringen wollte, grüne Eier und Schinken zu essen, aber wir bewundern seine Zähigkeit. Hier im geheimen CodeGym-Zentrum haben wir großen Respekt vor den Klassikern. Und wir haben Respekt vor der Kombinatorik. Deshalb ist das deine Aufgabe: Zeige alle möglichen Kombinationen der Wörter „Sam“, „I“ und „Am“ an.
Du kannst diese Aufgabe nicht abschließen, weil du nicht angemeldet bist.
Kommentare (5)
  • Beliebt
  • Neu
  • Alt
Du musst angemeldet sein, um einen Kommentar schreiben zu können
Kate
Level 5 , Germany
6 Februar, 08:43
ist vielleicht ein Bug hier? dieser Code sollte eigentlich richtig sein und gibt alle 6 unterschiedliche Kombinationen raus, der Punkt "All possible combinations should be displayed." bleibt auf rot.
String a = "Sam";
String b = "I";
String c = "am";
System.out.println(a+b+c);
System.out.println(a+c+b);
System.out.println(c+b+a);
System.out.println(c+a+b);
System.out.println(b+c+a);
System.out.println(b+a+c);
Anonymous #11271621
Level 10 , Ann Arbor, Germany
15 Februar, 09:37
dein am muss "Am" geschrieben werden.
Kate
Level 5 , Germany
27 Februar, 09:27
ah ok, dann macht es Sinn. danke
Peter
Level 4 , Austria
5 Dezember 2021, 20:26
Gibt es keine bessere Lösung als einfach alle Kombinationen händisch einzugeben? Ich habe einmal folgendes probiert, das Problem ist allerdings, dass ich nicht weiß, wie ich die Kombinationen von der Schleifen-Variable ableiten kann.
public static void showCombinations(String[]s)
    {

        int i, combinations;
        combinations= s.length * (s.length-1);

        for (i=0;i<combinations;i++)
        {

        }
    }

    public static void main(String[] args) {
        String []samiam= {"Sam","I","Am"};
        showCombinations(samiam);
    }
Hat jemand eine Idee?
Daniel
Level 4 , Leipzig, Germany
3 Oktober 2022, 18:48
Hatte auch keine Lust, das einfach dreimal einzutippen und habe es so gelöst (also auch mit einem Array). Das sind übrigens Permutationen, keine Kombinationen. Prinzip: Nimm dir für die erste Stelle eine der drei Positionen (das ist die erste for schleife) für die zweite Stelle nimmst du wieder eine der drei möglichen stellen (das ist die zweite for schleife) Die zweite Stelle darf aber nicht das gleiche Wort wie das erste sein (deswegen wird eine solche Schleife übersprungen mit "if (i1 == i2) continue;" für die dritte stelle bleibt nur noch ein Wort übrig, mit 3 - erste stelle - zweite stelle kann man es berechnen. public class Solution { public static void main(String[] args) { String[] s = {"Sam", "I", "Am"}; for (int i1=0; i1<3; i1++) for (int i2=0; i2<3; i2++){ if (i1 == i2) continue; int i3=3-i2-i1; System.out.println(s[i1]+s[i2]+s[i3]); } } }